單張4090,1秒100張二次元小姐姐!UC伯克利等新模型霸榜Github,吞吐量提升近60倍
10毫秒生成一張圖像,1分鐘6000張圖像,這是什么概念?
下圖中,就可以深刻感受到AI的超能力。
甚至,當(dāng)你在二次元小姐姐圖片生成的提示中,不斷加入新的元素,各種風(fēng)格的圖片更迭也是瞬間閃過。
如此驚人的圖片實時生成速度,便是來自UC伯克利、日本筑波大學(xué)等研究人員提出StreamDiffusion帶來的結(jié)果。
這個全新的解決方案是一種擴散模型流程,能夠以超過100fps的速度,實現(xiàn)實時交互式圖像生成。
論文地址:https://arxiv.org/abs/2312.12491
StreamDiffusion開源后直接霸榜GitHub,狂攬3.7k星。
StreamDiffusion創(chuàng)新性采用了批處理策略,而非序列去噪,比傳統(tǒng)方法快大約1.5倍。而且作者提出的新型剩余無分類器引導(dǎo)(RCFG)算法能夠比傳統(tǒng)無分類引導(dǎo)快2.05倍。
最值得一提的是,新方法在RTX 4090上,圖像到圖像的生成速度可達(dá)91.07fps。
未來,在元宇宙、視頻游戲圖形渲染、直播視頻流等不同場景中,StreamDiffusion快速生成能夠滿足這些應(yīng)用的高吞吐量的需求。
尤其,實時的圖像生成,能夠為那些游戲開發(fā)、視頻渲染的打工人們,提供了強大的編輯和創(chuàng)作能力。
專為實時圖像生成設(shè)計
當(dāng)前,擴散模型在不同領(lǐng)域的應(yīng)用,需要高吞吐量和低延遲的擴散管道,以確保高效的人機交互。
一個典型的例子是,用擴散模型創(chuàng)建虛擬角色VTuber——能夠?qū)τ脩舻妮斎胱龀隽鲿车姆磻?yīng)。
為了提高高吞吐量和實時交互能力,目前研究的方向主要集中在,減少去噪迭代次數(shù),比如從50次迭代減少到幾次,甚至一次。
常見的策略是將多步擴散模型提煉成幾個步驟,用神經(jīng)常微分方程(ODE)重新構(gòu)建擴散過程。為提高效率,也有人對擴散模型進(jìn)行了量化。
最新論文中,研究人員從正交方向(orthogonal direction)開始,引入了StreamDiffusion——一種實時擴散管道,專為互動式圖像生成的高吞吐量而設(shè)計。
現(xiàn)有的模型設(shè)計工作仍然可以與StreamDiffusion集成。另外,它還可以在保持高吞吐量的同時,使用N步去噪擴散模型,并為用戶提供更靈活的選擇。
實時圖像生成|第一列和第二列:AI輔助實時繪圖的示例,第三列:從3D頭像實時渲染2D插圖。第四列和第五列:實時相機濾鏡
具體是如何實現(xiàn)的?
StreamDiffusion架構(gòu)
StreamDiffusion是一種新的擴散管道,旨在提高吞吐量。
它由若干關(guān)鍵部分組成:
流批處理策略、剩余無分類器引導(dǎo)(RCFG)、輸入輸出隊列、隨機相似濾波(Stochastic Similarity Filter)、預(yù)計算程序、微型自動編碼器的模型加速工具。
批處理去噪
在擴散模型中,去噪步驟是按順序進(jìn)行的,這就導(dǎo)致了U-Net的處理時間,與步驟數(shù)成比例增加。
然而,為了生成高保真的圖像,就不得不增加步數(shù)。
為了解決交互式擴散中的高延遲生成的問題,研究人員提出了一種叫做Stream Batch的方法。
如下圖所示,在最新的方法中,在處理下一個輸入圖像之前,不會等待單個圖像完全去噪,而是在每個去噪步驟后接受下一個輸入圖像。
這樣就形成了一個去噪批次,每個圖像的去噪步驟交錯進(jìn)行。
通過將這些交錯的去噪步驟串聯(lián)成一個批次,研究人員就能使用U-Net高效地處理連續(xù)輸入的批次。
在時間步t處編碼的輸入圖像在時間步t+n處生成并解碼,其中n是去噪步驟的數(shù)目。
剩余無分類器引導(dǎo)(RCFG)
常見的無分類器指導(dǎo)(CFG)是一種,通過在無條件或否定條件項和原條件項之間執(zhí)行向量計算。來增強原條件的效果的算法。
這可以帶來諸如加強提示的效果之類的好處。
然而,為了計算負(fù)條件剩余噪聲,需要將每個輸入潛變量與負(fù)條件嵌入配對,并在每個推理時間將其傳遞給U-Net。
為了解決這一問題,作者引入了創(chuàng)新的剩余無分類器引導(dǎo)(RCFG) 。
該方法利用虛擬剩余噪聲來逼近負(fù)條件,使得只需在過程的初始階段就可以計算負(fù)條件噪聲,大大降低了負(fù)條件嵌入時額外U-Net推理的計算成本。
輸入輸出隊列
將輸入圖像轉(zhuǎn)換為管道可管理的張量數(shù)據(jù)格式,反過來,將解碼后的張量轉(zhuǎn)換回輸出圖像,都需要不可忽略的額外處理時間。
為了避免將這些圖像處理時間添加到神經(jīng)網(wǎng)絡(luò)推理流程中,我們將圖像預(yù)處理和后處理分離到不同的線程中,從而實現(xiàn)并行處理。
此外,通過使用輸入張量隊列,還能應(yīng)對因設(shè)備故障或通信錯誤造成的輸入圖像臨時中斷,從而實現(xiàn)流暢的流式傳輸。
隨機相似濾波(Stochastic Similarity Filter)
如下圖是,核心擴散推理管道,包含VAE和U-Net。
通過引入去噪批處理和預(yù)先計算的提示嵌入緩存、采樣噪聲緩存和調(diào)度器值緩存,提高了推理流水線的速度,實現(xiàn)了實時圖像生成。
隨機相似濾波(SSF)是為了節(jié)省GPU功耗而設(shè)計的,可以動態(tài)關(guān)閉擴散模型管道,進(jìn)而實現(xiàn)了快速高效的實時推理。
預(yù)計算
U-Net架構(gòu)既需要輸入潛在變量,也需要條件嵌入。
通常情況下,條件嵌入來源于「提示嵌入」,在不同幀之間保持不變。
為了優(yōu)化這一點,研究人員預(yù)先計算提示嵌入,并將其存儲在緩存中。在交互或流模式下,這個預(yù)先計算的提示嵌入緩存會被召回。
在U-Net中,每一幀的鍵和值都是根據(jù)預(yù)先計算的提示嵌入計算的。
因此,研究人員對U-Net進(jìn)行修改,以存儲這些鍵和值對,使其可以重復(fù)使用。每當(dāng)輸入提示更新時,研究人員都會在U-Net內(nèi)重新計算和更新這些鍵和值對。
模型加速和微型自動編碼器
為了優(yōu)化速度,我們將系統(tǒng)配置為使用靜態(tài)批大小和固定輸入大小(高度和寬度)。
這種方法確保計算圖和內(nèi)存分配針對特定的輸入大小進(jìn)行優(yōu)化,從而加快處理速度。
然而,這意味著如果需要處理不同形狀的圖像(即不同的高度和寬度),使用不同的批大小(包括去噪步驟的批次大小)。
實驗評估
去噪批的定量評估
圖8顯示了批去噪和原始順序U-Net循環(huán)的效率比較。
在實施批去噪策略時,研究人員發(fā)現(xiàn)處理時間有了顯著改善。與順序去噪步驟的傳統(tǒng)U-Net循環(huán)相比,減少了一半的時間。
即使應(yīng)用了神經(jīng)模塊加速工具TensorRT,研究人員提出的流批處理在不同的去噪步驟中仍能大幅提高原始順序擴散管道的效率。
此外,研究人員還將最新方法與Huggingface Diffusers開發(fā)的AutoPipeline-ForImage2Image管道進(jìn)行了比較。
平均推理時間比較見表1,最新管道顯示速度有了大幅提升。
當(dāng)使用TensorRT時,StreamDiffusion在運行10個去噪步驟時,實現(xiàn)了13倍的速度提升。而在涉及單個去噪步驟的情況下,速度提升可達(dá)59.6倍。
即使沒有TensorRT,StreamDiffusion在使用單步去噪時也比AutoPipeline提高了29.7倍,在使用10步去噪時提高了8.3倍。
表2比較了使用RCFG和常規(guī)CFG的流擴散管道的推理時間。
在單步去噪的情況下,Onetime-Negative RCFG和傳統(tǒng)CFG的推理時間幾乎相同。
所以O(shè)ne-time RCFG和傳統(tǒng)CFG在單步去噪時推理時間差不多。但是隨著去噪步驟增加,從傳統(tǒng)CFG到RCFG的推理速度提升變得更明顯。
在第5步去噪時,Self-Negative RCFG比傳統(tǒng)CFG快2.05倍,Onetime-Negative RCFG比傳統(tǒng)CFG快1.79倍。
然后,研究人員對所提出的SSF的能耗進(jìn)行了全面評估,如圖6和圖7所示。
這些圖提供了將 SSF(閾值η設(shè)為0.98)應(yīng)用于包含周期性靜態(tài)特征場景的輸入視頻時GPU的使用模式。
對比分析表明,在輸入圖像主要是靜態(tài)圖像且具有高度相似性的情況下,采用SSF可以顯著降低GPU的使用率。
消融研究
不同模塊對不同去噪步驟下平均推理時間的影響如表3??梢钥吹靡姡煌K的消減在圖像到圖像的生成過程中得到了驗證。
定性結(jié)果
圖10展示了使用剩余無分類器導(dǎo)引(RCFG)對生成的圖像進(jìn)行快速條件調(diào)整的對齊過程。
生成的圖像,沒有使用任何形式的CFG,顯示弱對齊提示,特別是在方面,如顏色變化或添加不存在的元素,這是沒有得到有效實現(xiàn)。
相比之下,CFG或RCFG的使用增強了修改原始圖像的能力,例如改變頭發(fā)顏色,添加身體模式,甚至包含像眼鏡這樣的物體。值得注意的是,與標(biāo)準(zhǔn)CFG相比,RCFG的使用可以加強提示的影響。
最后,標(biāo)準(zhǔn)文本到圖像生成結(jié)果的質(zhì)量如圖11所示。
使用sd-turbo模型,只需一步就可以生成像圖11所示的那樣的高質(zhì)量圖像。
當(dāng)在 GPU: RTX 4090,CPU: Core i9-13900K,OS: Ubuntu 22.04.3 LTS的環(huán)境中,使用研究人員提出的流擴散管道和sd-turbo模型生成圖像時,以超100fps的速率生成這種高質(zhì)量的圖像是可行的。
網(wǎng)友上手,一大波二次元小姐姐來了
最新項目的代碼已經(jīng)開源,在Github已經(jīng)收攬3.7k星。
項目地址:https://github.com/cumulo-autumn/StreamDiffusion
許多網(wǎng)友已經(jīng)開始生成自己的二次元老婆了。
還有真人變實時動畫。
感興趣的童鞋們,不如自己動手吧。