大家好,我是風雨無阻。
本文適合人群:
-
希望了解stable Diffusion WebUI中提供的Sampler究竟有什么不同,想知道如何選用合適采樣器以進一步提高出圖質量的朋友。
-
想要進一步了解AI繪圖基本原理的朋友。
-
對stable diffusion AI繪圖感興趣的朋友。
本期內容:
- 什么是采樣方法 ?
- 采樣方法的分類有哪些?
- 采樣方法詳細介紹
- 哪個采樣器最好?我們該如何選擇?
在 Stable Diffusion中目前已經有22種 Sampling method 采樣方法 ,不同的采樣方法對出圖效果有不同的影響。今天,我將詳細介紹這22種采樣方法,以及如何選擇合適的采樣方法。
一、什么是采樣 ?
在了解采樣之前,我們得先了解 一下Stable Diffusion webui 是如何工作的,建議看看我之前的AI 繪畫Stable Diffusion 研究(七)sd webui如何工作這篇文章。
我們知道 sd webui 生成圖像,大致會經過以下過程:
1、為了生成圖像, Stable Diffusion 會在潛在空間中生成一個完全隨機的圖像
2、噪聲預測器會估算圖像的噪聲
3、噪聲預測器從圖像中減去預測的噪聲
4、這個過程反復重復 N 次以后,會得到一個干凈準確的圖像
這個去噪的過程,就被稱為采樣。
Stable Diffusion 在這個去噪過程中,會生成一個新的樣本圖像。
采樣中使用的方法 被稱為 Sampling method (采樣方法或者是采樣器)。
增加采樣步驟 Sampling steps 有什么影響呢?
步驟越多,每個步驟降噪越小 。這樣可以減少采樣過程中的截斷誤差。
目前Stable Diffusion 中有 22 個采樣器可以使用 。
二、采樣器的分類
這些采樣器有什么區別呢?
為了便于使用和理解,我們可以將這些采樣方法進行分類:
(1)、傳統的常微分方程求解器(ODE solvers )
包含:Euler \Heun \LMS
這三個方法歷史悠久,被認為是最簡單,但是不太準確的采樣器。
(2)、祖先采樣器 (名稱中有一個字母 a 的)
包含 :Euler a \ DPM2 a \DPM++2S a \DPM2 a Karras \DPM++2S a Karras
這些采樣器會在每個采樣步驟中,向圖像添加噪聲 ,這些是祖先采樣器,因為在采樣結果中
具有一定的隨機性。
這些采樣器的缺點是,圖像不會收斂。
(3)、最初官方采樣器 (最初隨sd v1版本發布的采樣器)
DDIM、PLMS
DDIM 是為擴散模型設計的第一個采樣器, PLMS 則是DDIM 更快速的替代品
(4)、DPM 和 DPM++ 系列
DPM 和 DPM++ 系列 是2022年發布的用于擴散模型的新采樣器 ,它們具有相似的結構,但DPM2比DPM 更準確,不過速度較慢。
DPM++ 是對DPM 的改進,可以自適應地調整步長,但可能會很慢,并且不能保證在規定數量的采樣步驟內完成。
(5)、帶有Karras字樣的采樣器
這些采樣器使用了噪聲時間表 (noise schedule ),控制每個采樣步驟中的噪聲水平,并隨著采樣步驟的增加,減少了截斷誤差。
(6)、UniPC采樣器
這UniPC采樣器是2023年發布的新采樣器,根據 ode 求解器中預測校正方法的啟發,可在5-10步內實現高質量圖像生成。
了解了以上采樣器的分類,相信大家對選擇采樣器,已經可以縮小選擇的范圍了。
三、采樣器方法詳解
接下來我們根據 Stable Diffusion WebUI 中采樣器的順序,對每個采樣器進行詳細介紹。
1、Euler a
祖先采樣器的一種 , 類似于 Euler ,但在每個步驟中它會減去比“應該”更多的噪聲。并添加一些隨機噪聲以匹配噪聲計劃。去噪圖像取決于前面步驟中添加的特定噪聲。
2、Euler
最簡單的采樣器,在采樣過程中不添加隨機噪聲,通過噪聲計劃告訴采樣器,每個步驟中應該有多少噪聲。并使用歐拉方法減少恰當數量的噪聲。以匹配噪聲計劃,直到最后一步為0 為止。
3、LMS 解決常微分方程的標準方法
LMS采樣速度與Euler 相同 。
4、Heum
Heum 是對Euler 更精確的改進,但是需要在每個步驟中預測兩次噪聲。
因此速度比Euler 慢2倍。
5、DPM2
dpm2 是Katherine Crowson在K-diffusion項目中自創的 ,靈感來源Karras論文中的DPM-Solver-2和算法2 ,受采樣器設置頁面中的 sigma參數影響。
6、DPM2 a
祖先采樣器的一種,使用 DPM2 方法 ,受采樣器設置中的ETA參數影響 。
7、DPM++2S a
隨機采樣器一種
在K-diffusion實現的2階單步并受采樣器設置中的ETA參數影響。
8、 DPM++2M
在Kdiffusion實現的2階多步采樣方法,在Hagging face Diffusers中被稱作已知最強調度器。在速度和質量的平衡最好。這個代表m的多步比上面的s單步,在采樣時會參考更多步,而非當前步,所以能提供更好的質量,但是也更復雜。
9、 DPM++SDE
DPM++的SDE版本,DPM++ 原本是0DE 求解器及常微分方程在Ktifusion實現的版本,代碼中調用了隨機采樣方法,所以受采樣器設置中的ETA參數影響。
10、 DPM fast
在Ktifusion實現的固定步長采樣方法 ,用于steps小于20的情況。受采樣器設置中的ETA參數影響。
11、 DPM adaptive
在K-diffusion 實現的自適應步長采樣方法,DPM-Solver-12 和23,受采樣器設置中的ETA參數影響。
12、帶有Karras字樣的6種采樣器
LMS karras 、DPM2 karras 、DPM2 a karras 、DPM++ 2S a karras 、DPM++2M karras、DPM++ SDE karras 、DPM++2M SDE karras
這些含有Karras名字的采樣方法 都是相當于 Karras噪聲時間表的版本。
13 、DDIM
官方采樣器之一,使用去噪后的圖像來近似最終圖像,并使用噪聲預測器估計的噪聲,來近似圖像方向。
14、PLMS
官方采樣器之一,PLMS則是DDIM的新版且更快速的替代品。
15、unipc
最新添加的采樣器,應該是目前最快最新的采樣方法,10步內實現高質量圖像。
四、哪個采樣器最好?我們該如何選擇?
以下是我的建議:
- 如果想快速生成質量不錯的圖片,建議選擇 DPM++ 2M Karras (20 -30步) 、UNIPC (15-25步)
- 如果想要高質量的圖,不關心重現性,建議選擇 DPM++ SDE Karras (10-15步 較慢) ,DDIM(10-15步 較快)
- 如果想要簡單的圖,建議選擇 Euler,Heun(可以減少步驟以節省時間)
- 如果想要穩定可重現的圖像,請避免選擇任何祖先采樣器(名字里面帶a或SDE)
- 相反,如果想要每次生成不一樣的圖像,可以選擇不收斂的祖先采樣器(名字里面帶a或SDE)