【擴散模型】LCM LoRA:一個通用的Stable Diffusion加速模塊

潛在一致性模型:[2310.04378] Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference (arxiv.org)

原文:Paper page - Latent Consistency Models: Synthesizing High-Resolution Images with Few-Step Inference (huggingface.co)

簡介:LCM 只需 4,000 個訓練步驟(約 32 個 A100 GPU/小時)即可從任何預訓練的穩定擴散 (SD) 中提取出來,只需 2~4 個步驟甚至一步即可生成高質量的 768 x 768 分辨率圖像,從而顯著加速文本轉換 -圖像生成。?

潛在一致性模型

介紹

潛在擴散模型(Latent Diffusion models, ldm)在高分辨率圖像合成方面取得了顯著的成果。然而,迭代采樣過程計算量大,導致生成速度慢。受一致性模型的啟發,我們提出了潛在一致性模型(Latent Consistency Models, lcm),能夠在任何預訓練的ldm上以最小的步驟進行快速推理,包括穩定擴散。

原理:將引導反向擴散過程視為求解增強概率流ODE (PF-ODE), lcm設計用于直接預測潛在空間中此類ODE的解,從而減少了多次迭代的需要,并允許快速,高保真采樣。有效地從預訓練的無分類器引導擴散模型中提取,高質量的768×768 2 ~ 4步LCM僅需32 A100 GPU小時即可進行訓練。此外,引入了潛在一致性微調(LCF),這是一種針對自定義圖像數據集微調LCF的新方法。

一致性模型(CMs):作為一種新型生成模型顯示出巨大的潛力,可以在保持生成質量的同時加快采樣速度。一致性模型采用一致性映射,直接將ODE軌跡中的任意點映射到原點,實現快速一步生成。可以通過提取預訓練的擴散模型或作為獨立的生成模型進行訓練。

原理

潛在空間中的一致性蒸餾

在諸如穩定擴散(Stable Diffusion, SD)(Rombach et al, 2022)等大規模擴散模型中,利用圖像的潛在空間有效地提高了圖像生成質量并減少了計算負載。在SD中,首先訓練一個自編碼器(E, D)來將高維圖像數據壓縮為低維潛在向量 𝑧=𝐸(𝑥)z=E(x),然后解碼以重建圖像 𝑥?=𝐷(𝑧)x?=D(z)。在潛在空間中訓練擴散模型與基于像素的模型相比,大大降低了計算成本并加快了推理過程;潛在擴散模型(LDMs)使得在筆記本電腦的GPU上生成高分辨率圖像成為可能。

對于潛在一致性模型(LCMs),我們利用潛在空間的一致性蒸餾優勢,與一致性模型(CMs)(Song et al, 2023)中使用的像素空間形成對比。這種方法被稱為潛在一致性蒸餾(LCD),應用于預訓練的SD,允許在1至4步內合成高分辨率的768×768圖像。我們專注于條件生成。回顧一下逆擴散過程的PF-ODE:

其中𝑧𝑡是圖像潛在變量,𝜖𝜃(𝑧𝑡,𝑐,𝑡) 是噪聲預測模型,𝑐 是給定的條件(例如文本)。通過從 𝑇 到 0?解決 PF-ODE 可以抽取樣本。為了執行潛在一致性蒸餾(LCD),我們引入一致性函數 𝑓𝜃:(𝑧𝑡,𝑐,𝑡)→𝑧0?,直接預測 𝑡=0 時 PF-ODE 的解(公式8)。通過噪聲預測模型 𝜖^𝜃參數化 𝑓𝜃,如下所示:

其中 𝑐skip(0)=1,𝑐out(0)=0,且 𝜖^𝜃(𝑧,𝑐,𝑡) 是噪聲預測模型,其初始參數與教師擴散模型相同。假設有一個高效的ODE求解器 Ψ(𝑧𝑡,𝑡,𝑠,𝑐),用于近似積分公式8的右側,從時間 𝑡 到 𝑠。在實際操作中,可以使用DDIM,DPM-Solver或DPM-Solver++ 作為 Ψ(?,?,?,?)。

只在訓練/蒸餾中使用這些求解器,而不是在推理中。潛在一致性模型(LCM)旨在通過最小化一致性蒸餾損失來預測PF-ODE的解:

通過求解增強的PF-ODE進行單階段引導蒸餾

無分類器引導(Classifier-free guidance, CFG)對于在穩定擴散(SD)中合成高質量的文本對齊圖像至關重要,通常需要大于6的CFG比例 𝜔。因此,將CFG集成到蒸餾方法中變得不可或缺。之前的方法 Guided-Distill引入了一個兩階段蒸餾以支持從引導擴散模型中進行少步采樣。然而,這種方法計算密集估計,2步推理至少需要45個A100 GPU天)。相比之下,潛在一致性模型(LCM)僅需要32個A100 GPU小時的訓練時間來進行2步推理,如圖1所示。此外,兩階段引導蒸餾可能導致累積誤差,導致性能不佳。相反,LCM通過求解增強的PF-ODE采用高效的單階段引導蒸餾。回顧在逆擴散過程中使用的CFG:

其中用條件噪聲和無條件噪聲的線性組合代替原有的噪聲預測,ω稱為引導標度。為了從引導逆向過程中采樣,我們需要求解以下增廣的PF-ODE(即,與ω相關的項增廣):

為了有效地進行一級導向蒸餾,我們引入增廣一致性函數fθ:(zt, ω, c, t)→z0來直接預測t = 0時增廣PF-ODE (Eq. 13)的解。我們以與Eq. 9相同的方式參數化fθ,除了λ θ(z, c, t)被λ ?θ(z, ω, c, t)取代,這是一個用與教師擴散模型相同的參數初始化的噪聲預測模型,但還包含額外的可訓練參數,用于ω的調節。一致性損失與Eq. 10相同,只是我們使用增廣一致性函數fθ(zt, ω, c, t)。

跳過時間步加速蒸餾

離散擴散模型通常通過長時間步長計劃 {𝑡𝑖}𝑖(也稱為離散化計劃或時間計劃)訓練噪聲預測模型,以實現高質量的生成結果。例如,穩定擴散(SD)有一個長度為1000的時間計劃。然而,直接將潛在一致性蒸餾(LCD)應用于具有如此長時間計劃的SD可能會有問題。模型需要在所有1000個時間步長上進行采樣,而一致性損失試圖使LCM模型 𝑓𝜃(𝑧𝑡𝑛+1,𝑐,𝑡𝑛+1) 的預測與在相同軌跡上下一步 𝑓𝜃(𝑧𝑡𝑛,𝑐,𝑡𝑛) 的預測對齊。由于 𝑡𝑛 ? 𝑡𝑛+1? 很小,𝑧𝑡𝑛 和 𝑧𝑡𝑛+1(因此 𝑓𝜃(𝑧𝑡𝑛+1,𝑐,𝑡𝑛+1)和 𝑓𝜃(𝑧𝑡𝑛,𝑐,𝑡𝑛))已經彼此接近,導致一致性損失很小,因此收斂速度慢。

為了解決這個問題,我們引入了跳步方法(SKIPPING-STEP),大大縮短了時間計劃的長度(從數千縮短到幾十),以實現快速收斂,同時保持生成質量。

一致性模型(CMs)使用EDM連續時間計劃,并使用歐拉或Heun求解器作為數值連續PF-ODE求解器。對于LCMs,為了適應穩定擴散中的離散時間計劃,我們使用DDIM,DPM-Solver或DPM-Solver++作為ODE求解器。

現在,我們介紹潛在一致性蒸餾(LCD)中的跳步方法。與確保相鄰時間步長 𝑡𝑛+1→𝑡𝑛 之間的一致性不同,LCMs旨在確保當前時間步長和相隔 𝑘?步的時間步長 𝑡𝑛+𝑘→𝑡𝑛之間的一致性。注意,設置 𝑘=1k=1 會恢復到中的原始計劃,導致收斂速度慢,而非常大的 𝑘 可能會導致ODE求解器的大近似誤差。在我們的主要實驗中,我們設置 𝑘=20,將時間計劃的長度從數千減少到幾十。第5.2節的結果顯示了不同 k 值的效果,并揭示跳步方法在加速LCD過程中的重要性。具體來說,公式14中的一致性蒸餾損失被修改為確保從 𝑡𝑛+𝑘 到 𝑡𝑛 的一致性:

?上述推導類似于公式15。對于LCM,我們在此使用三種可能的ODE求解器:DDIM (Song et al, 2020a)、DPM-Solver (Lu et al, 2022a)、DPM-Solver++。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/40788.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40788.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40788.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ELK優化之Filebeat部署

目錄 1.安裝配置Nginx 2.安裝 Filebeat 3.設置 filebeat 的主配置文件 4.修改Logstash配置 5.啟動配置 6.kibana驗證 主機名ip地址主要軟件es01192.168.9.114ElasticSearches02192.168.9.115ElasticSearches03192.168.9.116ElasticSearch、Kibananginx01192.168.9.113ng…

【鎖】各種鎖的概念

解釋一下什么是樂觀鎖、悲觀鎖、自旋鎖、互斥鎖、讀寫鎖、排他鎖、共享鎖、統一鎖、分段鎖? 定義角度不同,通常把(樂觀鎖、悲觀鎖)、(自旋鎖、互斥鎖)、(讀寫鎖、排他鎖、共享鎖)、…

Redis---9---集群(cluster)

將新增的6387節點(空槽號)作為master節點加入原集群 Redis—9—集群(cluster) 是什么 定義 ? 由于數據量過大,單個Master復制集難以承擔,因此需要對多個復制集進行集群,形成水平擴展每個復…

Selenium 切換窗口

環境: Python 3.8 selenium3.141.0 urllib31.26.19說明: driver.current_window_handle # 返回當前窗口的句柄 driver.window_handles # 返回當前由driver啟動所有窗口句柄,是個列表 driver.switch_to.window(handle) # 根據 handle 切換窗口…

5個實用的文章生成器,高效輸出優質文章

在自媒體時代,優質內容的持續輸出是吸引讀者、提升影響力的關鍵。然而,對于許多自媒體創作者來說,頻繁的創作難免會遭遇靈感枯竭、創作不出文章的困擾。此時,文章生成器便成為了得力的助手。文章生成器的優勢能夠快速自動生成高質…

代碼隨想錄算法訓練營第13天|二叉樹的遞歸遍歷、二叉樹的迭代遍歷、二叉樹的統一迭代法、102.二叉樹的層序遍歷

打卡Day13 1.理論基礎2.二叉樹的遞歸遍歷3.二叉樹的迭代遍歷3.二叉樹的統一迭代法4.102.二叉樹的層序遍歷擴展107. 二叉樹的層序遍歷 II199.二叉樹的右視圖637.二叉樹的層平均值429.N叉樹的層序遍歷515.在每個樹行中找最大值116.填充每個節點的下一個右側節點指針117. 填充每個…

如何保證接口冪等性

如何保證接口冪等性 1、冪等性是什么? 接口冪等性是指用戶對于同一操作發起的一次請求或者多次請求的結果是一致的,不會因為多次點擊而產生了不同的結果。 2、使用冪等性的場景有哪些? 頁面點擊保存按鈕時,不小心快速點了兩次…

Python面試題-6

1. 請解釋Python中的動態類型。 Python中的動態類型 Python是一種動態類型語言,這意味著你不需要在編程時聲明變量的類型,而是在運行時自動推斷類型。在Python中,變量的類型是在程序運行時決定的,這意味著同一個變量可以在不改變…

上萬組風電,光伏,用戶負荷數據分享

上萬組風電,光伏,用戶負荷數據分享 可用于風光負荷預測等研究 獲取鏈接🔗 https://pan.baidu.com/s/1izpymx6R3Y8JsFdx42rL0A 提取碼:381i 獲取鏈接🔗 https://pan.baidu.com/s/1izpymx6R3Y8JsFdx42rL0A 提取…

一行代碼用git新建分支

1.在本地創建分支 dev git branch dev2.切換分支 git checkout devwebstorm操作如下: 3.推送新分支到遠程 git push --set-upstream origin 分支名webstorm操作如下:提交代碼的時候會自動推送到遠程 4.到git上面可以看看剛剛推送的內容 dev多推送…

Proxmox VE 8虛擬機直通USB磁盤

作者:田逸(fromyz) 今天有個兄弟發消息,咨詢怎么讓插在服務器上的U盾被Proxmox VE上的虛擬機識別。在很久很久以前,我嘗試過在Proxmox VE 5以前的版本創建windows虛擬機,并把插在Proxmox VE宿主機上的銀行U…

基于STM32設計的智能喂養系統(ESP8266+微信小程序)175

基于STM32設計的牛羊喂養系統(微信小程序)(175) 文章目錄 一、前言1.1 項目介紹【1】項目功能介紹【2】項目硬件模塊組成【3】ESP8266工作模式配置【4】上位機開發【5】項目模塊劃分1.2 項目功能需求1.3 項目開發背景1.4 開發工具的選擇1.5 系統框架圖1.6 系統原理圖1.7 硬件實…

Android ViewPostImeInputStage輸入事件處理

InputDispatcher向InputChannel使用socket寫入輸入事件,觸發InputEventReceiver調用來接收輸入事件。 ViewPostImeInputStage處理view控件的事件 frameworks/base/core/java/android/view/InputEventReceiver.java dispatchInputEvent frameworks/base/core/jav…

SwinTransformer的相對位置索引的原理以及源碼分析

文章目錄 1. 理論分析2. 完整代碼 引用:參考博客鏈接 1. 理論分析 根據論文中提供的公式可知是在 Q Q Q和 K K K進行匹配并除以 d \sqrt d d ? 后加上了相對位置偏執 B B B。 A t t e n t i o n ( Q , K , V ) S o f t m a x ( Q K T d B ) V \begin{aligned} &…

絕了,華為伸縮攝像頭如何突破影像邊界?

自華為Pura70 Ultra超聚光伸縮鏡頭誕生以來,備受大家的關注,聽說這顆鏡頭打破了傳統手機的攝像頭體積與鏡頭的設計,為我們帶來了不一樣的拍照體驗。 智能手機飛速發展的今天,影像功能已經成為我們衡量一款手機性能的重要指標。想…

MySQL中mycat與mha應用

目錄 一.Mycat代理服務器 1.Mycat應用場景 2.mycat安裝目錄結構說明 3.Mycat的常用配置文件 4.Mycat日志 5.mycat 實現讀寫分離 二.MySQL高可用 1.原理過程 2.MHA軟件 3.實現MHA 一.Mycat代理服務器 1.Mycat應用場景 Mycat適用的場景很豐富,以下是幾個典型…

進程輸入輸出及終端屬性學習

進程的標準輸入輸出 當主進程fork或exec子進程,文件描述符被繼承,因此0,1,2句柄也被繼承,從而使得telnet等服務,可以做到間接調用別的shell或程序。比如如果是遠程登錄使用的zsh,那么其會重定向到相應的pts $ ps|gre…

滬上繁花:上海電信的5G-A之躍

2024年6月18日下午,在上海舉行的3GPP RAN第104次會議上,3GPP正式宣布R18標準凍結。R18是無線網絡面向5G-A的第一個版本,其成功凍結正式宣布了5G發展迎來新機遇,5G-A商用已進入全新的發展階段。 在5G-A滾滾而來的時代洪流中&#x…

C#實戰|賬號管理系統:通用登錄窗體的實現。

哈嘍,你好啊,我是雷工! 本節記錄登錄窗體的實現方法,比較有通用性,所有的項目登錄窗體實現基本都是這個實現思路。 一通百通,以下為學習筆記。 01 登錄窗體的邏輯 用戶在登錄窗輸入賬號和密碼,如果輸入賬號和密碼信息正確,點擊【登錄】按鈕,則跳轉顯示主窗體,同時在固…

Vue3項目初始化:

緊接著前面的文章:https://blog.csdn.net/weixin_51416826/article/details/138679863?spm1001.2014.3001.5502 當我們生成一個Vue3項目后必須要增加一些依賴和配置,比如安裝組件庫、配置ESLint和Prettier、接下來咱一步步推進~ 安裝組件庫 一般開發…