8天狂收6100顆星東京工業、麻省理工等開源StreamDiffusion 可商用
加州大學柏克萊分校、東洋大學、東京工業大學、麻省理工學院和筑波大學等研究人員,共同開源了一款創新性即時互動影像生成框架-Stream Diffusion。Stream Diffusion的技術創新點在於,將傳統的順序去噪變成串流批次去噪,消除了漫長的等待、互動生成方式,實現了流暢且吞吐量超高的影像產生方法。
同時引入了「殘差無分類器指導」方法,進一步提升了流批處理的效率和影像品質。
根據Stream Diffusion在Github上的專案提交歷史記錄顯示,僅花了8天的時間就收到6100顆星成為霸榜開源產品,其性能和歡迎程度可見一斑。允許開發者商用。
開源位址:https://github.com/cumulo-autumn/StreamDiffusion
論文網址:https://arxiv.org/abs/2312.12491
Demo展示:https://github.com/cumulo-autumn/StreamDiffusion/blob/main/assets/demo_03.gif
目前,擴散模型在影像生成方面獲得了廣泛應用並成功實現商業化落地,例如,該領域的標竿產品Midjourney。
但在即時互動方面表現不佳需要漫長的等待,尤其是涉及連續輸入的場景中尤其明顯。
為了解決這些難題,研究人員設計了一種新穎的輸出、輸入方法,就是將原始的順序去噪轉換為批次去噪製程。
簡單來說,Stream Diffusion相當於大模型領域的機械化流水作業,將單一、繁瑣的去噪、推理流程改成批次處理。
串流批式去噪方法
串流批式去噪是Stream Diffusion的核心功能之一,也是實現即時互動的關鍵所在。
傳統的互動式擴散模型都是順序執行:一次輸入一張圖片,走完全部的去噪步驟後,再輸出一張結果影像。然後不斷重複這個過程,產生完成更多的影像處理。
這樣就造成一個很大的問題速度和品質難以同時得到保證。為了產生高品質的影像,需要設定較多的去噪步驟,導致生成影像的效率較慢,無法做到「魚與熊掌」兼得。
流批式去噪的核心思想是:當輸入第一張圖像開始去噪步時,不必等待它完成,就可以接收第二張圖像,以實現批量方式處理。
這樣,U-Net只需要不斷調用,處理一個批量的特徵,就可以高效實現圖像生成流水線的批量推進。
此外,流批式去噪方法的好處在於,每次調用U-Net就可以使多個圖像同時推進一步,而U-Net的批量運算非常適合GPU並行計算,所以整體運算效率非常高。
最終可以在保證品質的同時,顯著縮短單張影像的生成時間。
殘差無分類器指導
為了強化提示條件對結果的影響,擴散模型通常使用一種叫做「無分類器指導」的策略。
在傳統方法中,計算負條件向量時需要對每個輸入潛向量配對負條件嵌入,每次推理都要調用U-Net算力消耗巨大。
為了解決這個問題,研究人員提出了「殘差無分類器指導」方法。其核心方法是,假定存在一個「虛擬殘差雜訊」向量,用來逼近負條件向量。
先計算「正條件」向量,再用正條件向量反推這個虛擬負條件向量。這樣就避免了每次都要額外呼叫U-Net來計算真實的負條件向量,從而大幅減少了算力。
簡單來說,就是用原始的輸入影像編碼作為負樣本,無需調用U-Net就可以計算。稍微複雜一點的「一次負條件」,是在第一步使用U-Net計算一次負向量,然後重複使用這個向量近似後面的所有負向量。
管線作業
此模組的功能是使整個系統的瓶頸不再是資料格式的轉換,而是基於模型本身的推理時間。
通常,輸入的圖片需要縮放、轉換格式等預處理才能成為模型可用的張量;輸出的張量也需要後處理恢復為圖片格式,整個流程消耗大量時間和算力。
流水線作業將預/後處理與模型推理完全分開,置於不同的線程中並行執行。輸入影像經過預處理進入輸入佇列快取;
輸出張量從輸出佇列發出,再後處理為圖片。這樣兩者就可以不互相等待,從而優化了整體流程速度。
此外,該方法也起到平滑資料流的作用。當輸入來源故障或通訊錯誤導致暫時無法傳入新影像時,佇列可以繼續提供先前快取的影像,保證模型的流暢運作。
隨機相似度過濾
此模組的功能是顯著減少GPU算力消耗。當輸入的圖片連續相同或高度相似時,反覆推理是沒有任何意義的。
所以,相似度濾波模組計算輸入圖與歷史參考影格的相似度。如果高於設定閾值,則以一定機率跳過後續的模型推理;
如果低於閾值,則正常進行模型推理並更新參考幀。這種機率取樣機制使得濾波策略可以平滑且自然地對系統進行節流,降低平均GPU使用率。
在靜態輸入下濾波效果明顯,動態變化大時自動降低濾波率,系統可以自適應場景動態。
這樣,複雜度動態變化的連續流輸入下也可以自動調節系統推理負載,節省GPU算力消耗。
實驗數據
為了測試Stream Diffusion的效能,研究人員在RTX3060、RTX4090上進行了測試。
效率方面,實現了超過91 FPS的生成幀率,是當前最先進的AutoPipeline的近60倍,並極大減少去噪步驟。
在功耗方面,靜態輸入下,RTX3060和RTX4090的平均功率分別降低了2.39倍和1.99倍。