在我們使用SD web UI的過程中,有很多采樣器可以選擇,那么什么是采樣器?它們是如何工作的?它們之間有什么區別?你應該使用哪一個?這篇文章將會給你想要的答案。
什么是采樣?
Stable Diffusion模型通過一種稱為“去噪”的過程來生成圖像,這個過程涉及到在潛在空間中逐步從隨機噪聲中提取出有意義的圖像特征。
- 模型首先在潛在空間中生成一個完全隨機的噪聲圖像。這個圖像是隨機的,不包含任何有意義的信息。
- 噪聲預測器(也稱為去噪函數)估計這個隨機圖像中的噪聲。這個預測器是模型的一部分,它學習如何從噪聲中恢復出清晰的圖像。
- 模型從初始的隨機噪聲圖像中減去預測的噪聲,以便逐步揭示出隱藏在噪聲下的圖像內容。
- 這個過程會重復多次(通常是十幾次),每一步都會生成一個新的采樣圖像。這些采樣圖像逐漸從隨機噪聲轉變為越來越清晰的圖像。
- 經過多次迭代后,最終得到的圖像是一個干凈的、去噪后的圖像,它反映了文本提示中描述的內容。
下面是一個實際的采樣過程。采樣器逐漸產生越來越干凈的圖像。
Noise schedule
在Stable Diffusion模型的去噪過程中,噪聲表(noise schedule)扮演著至關重要的角色。
噪聲表是一個預先定義的計劃,它決定了在每一步采樣過程中應用的噪聲水平。
- 在去噪過程的第一步,圖像充滿了高噪聲,這是因為初始圖像是完全隨機的噪聲圖像。在這個階段,噪聲水平最高,圖像看起來是不連貫和隨機的。
- 隨著去噪過程的進行,噪聲表會逐步降低每個采樣步驟中的噪聲水平。這種降低是按照預定的計劃進行的,旨在逐漸從噪聲中提取出有意義的圖像特征。
- 在去噪過程的最后一步,噪聲水平降低到零,此時圖像應該是清晰且與文本提示相匹配的。理想情況下,最終圖像應該幾乎沒有噪聲,且細節豐富,準確地反映了文本描述的內容。
下面是一個Noise schedule的基本工作原理:
如果我們增加采樣步驟數,那么每個步驟之間的降噪幅將會變小。這有助于減少采樣的截斷誤差。
可以比較一下 15 個步驟和 30 個步驟的噪音時間表。
不同的采樣器
webUI自帶了很多不同的采樣器,并且這個采樣器的個數還在不停的增加,那么這些采樣器都有些什么不同呢?
老式ODE solvers
讓我們看一下最簡單采樣器。這些采樣器算法已經被發明很久很久了。它們是常微分方程 (ODE) 的老式采樣器。
Euler– 最簡單的采樣器。
Heun– 更準確但更慢的 Euler 版本。
LMS(線性多步法) – 與 Euler 的速度相同,但(據說)更準確。
Ancestral采樣器
如果你注意觀察的話,可以看到某些采樣器的名稱上帶有一個字母’a’。 比如:
-
Euler a
-
DPM2 a
-
DPM++ 2S a
-
DPM++ 2S a Karras
他們是Ancestral采樣器。Ancestral采樣器在每個采樣步驟中都會向圖像添加噪聲。它們是隨機采樣器,因為采樣結果具有一定的隨機性。
當然也有很多隨機采樣器的名字上是不帶a的。
使用Ancestral采樣器的缺點是圖像不會收斂。也就是說你有可能不會得到相同的結果。
還是剛剛的例子,我們比較一下使用 Euler a 和 Euler 生成的圖像。(為了便于對比,我們加入了另外一個收斂的采樣器)
可以看到Euler和DMP++ 2M Karras最終生成的圖片其實是大致一樣的,但是他們兩個跟Euler a的結果不太相同。
所以為了可重復性,那就用收斂采樣器。如果要生成細微的變化,那么可以考慮使用隨機采樣器。
Karras noise schedule
帶有“Karras”標簽的采樣器使用 Karras 文章中推薦的 noise schedule。和傳統的采樣器相比,你會發現噪聲步長在接近尾聲時變小了。這樣的變化據說可以提高圖像的質量。
DDIM 和 PLMS
DDIM(去噪擴散隱式模型)和 PLMS(偽線性多步法)是原始 Stable Diffusion v1 附帶的采樣器。DDIM是首批為擴散模型設計的采樣器之一。PLMS 是 DDIM 的更新、更快的替代方案。
這兩個采樣器已經過時了,我們通常不會使用他們。
DPM 和 DPM++
DPM(擴散概率模型求解器)和 DPM++ 是專為 2022 年發布的擴散模型設計的新采樣器。它們表示具有類似體系結構的求解器系列。DPM 和 DPM2 相似,但 DPM2 是二階的(更準確但更慢)。DPM++ 是對 DPM 的改進。
DPM adaptive是自適應調整步長。所以它可能很慢,并且不能保證在采樣步驟數內完成。
UniPC
UniPC(統一預測器校正器)是 2023 年發布的新采樣器。受常微分方程求解器中預測變量-校正器方法的啟發,它可以在 5-10 個步驟內實現高質量的圖像生成。
怎么選擇采樣器
那么這么多的采樣器,我們應該如何選擇呢?我想我們可以從采樣算法是否收斂,采樣的速度和最終生成圖片的質量這幾個方面來具體考量需要使用什么樣的采樣器。
是否收斂
首先,對Euler、DDIM、PLMS、LMS Karras 和 Heun這些老式的常微分方程求解器或原始擴散求解器來說,PLMS和LMS Karras收斂效果不佳。Heun收斂得更快。
對于所有的Ancestral采樣器來說,都是不收斂的。這些采樣器有:Euler a, DPM2 a, DPM++ 2S a, DPM2 a Karras, DPM++ 2S a Karras。
DPM++ SDE 和 DPM++ SDE Karras 與Ancestral采樣器存在相同的缺點。它們不僅不會收斂,而且圖像也會隨著步數的變化而顯著波動。
DPM++ 2M 和 DPM++ 2M Karras 表現良好。當步數足夠高時,karras變體收斂得更快。
UniPC 收斂速度比 Euler 慢一點,但還不錯。
采樣速度
下圖是使用不同采樣器的采樣速度:
雖然 DPM adaptive在收斂方面表現良好,但它也是最慢的。
其余的渲染時間可以分為兩組,第一組花費的時間大致相同(約 1 倍),另一組花費的時間大約是兩倍(約 2 倍)。時間花費2倍的是因為他們用的是2階求解器。
二階求解器雖然更準確,但需要對去U-Net進行兩次評估,所以它們花費的時間大概是2倍。
質量
當然,前面講的收斂和速度都是次要的,如果最終生成的圖片質量不好,那么收斂和速度也就無從談起了。
我們比較一下常用的一些采樣器的最終圖片效果:
大家覺得哪幅圖更好?事實上,哪幅圖更好是一個主觀上的標準,每個人的審美觀點不同,最后可能選出來不同的結果。
所以…哪一個是最好的?
我不能說哪個是最好的,但是我可以給點我的建議。
如果您想快速、有創造力并且質量不錯,那么可以這樣選擇:
- DPM++ 2M Karras,20-30 步
- UniPC,20-30 步。
如果您想要高質量的圖像并且不關心收斂性,那么可以這樣選擇:
-
DPM++ SDE Karras,10-15 步(注意:這是一個較慢的采樣器)
-
DDIM,10-15 步。
如果您喜歡穩定、可重現的圖像,請避免使用任何Ancestral采樣器。
Euler和Heun也是不錯的選擇.
點我查看更多精彩內容:www.flydean.com