Stable diffusion中Sampler(采樣器)簡明介紹

本文目標(biāo)人群:
希望了解webUI中提供的諸多Sampler(采樣器)究竟有什么不同,并想知道如何選用合適采樣器以進(jìn)一步提高出圖水平的人群。
缺乏AI基礎(chǔ)知識,但想要進(jìn)一步了解AI繪圖基本原理的人群。
對stable diffusionAI繪圖感興趣的人群。
太長不看的總結(jié)與推薦:
兼顧生成耗時、重現(xiàn)性、圖片質(zhì)量:DPM++ 2M Karras,20-30步;UniPC,20-30步;
注重質(zhì)量,且不關(guān)心重現(xiàn)性:DPM++SDE Karras,10-15步;DDIM,10-15步;
注重重現(xiàn)性:不要使用任何ancestral采樣器(名字里面帶a或SDE)
簡單、快速、直接:Euler,或Heun,縮短步數(shù)。

正文內(nèi)容:
intro:
本文內(nèi)容直接來自于https://stable-diffusion-art.com/samplers/。該文章很好地介紹了stable diffusion中sampler的作用、分類、原理、區(qū)別等等,解釋了我在sampler方面的疑惑,因此結(jié)合個人使用體會加以翻譯,以饗讀者。
之前看到過幾篇中文的sampler介紹,但沒有一個這么深入淺出,看到這種好東西真的很難忍住分享。
如有看到類似的優(yōu)秀文章,可以在評論區(qū)告訴我一聲,我會酌情進(jìn)行翻譯整理等工作。
本人非AI行業(yè)從業(yè)人士,全憑愛好翻譯,因此可能存在專有名詞的直譯等情況,如有專業(yè)知識的謬誤,還請指正。
1.原理概述:
1.1采樣與噪聲。
在生成圖像的過程中,SD會先在潛空間生成完全隨機(jī)的噪聲。隨后,噪聲預(yù)測器會估計圖像中的噪聲,然后將預(yù)測出的噪聲從圖像中減去。重復(fù)該過程即可獲得越來越清晰的圖像。過程如下圖所示。

去噪的整個過程,被稱為采樣(因為每經(jīng)歷一次去噪都會生成新的樣本圖像)。采樣過程僅僅是整個SD模型的一部分,采樣過程中采用的方法,就叫做**sampler,采樣器。**具體的采樣方法多種多樣,通常只是速度和準(zhǔn)確性各有不同。
1.2噪聲時間表Noise schedule
在采樣過程中,采樣器并不是在每一步都以均勻的“力度”(噪聲水平)來改變整個圖像的。在初期的時候,預(yù)測的噪聲強(qiáng)度較大,以較大的方式改變畫面。在后期,噪聲強(qiáng)度較低,僅對畫面做出微調(diào)。如下圖所示。

在每一步,采樣器都負(fù)責(zé)產(chǎn)生一個與時間表所預(yù)期的噪聲水平匹配的噪聲圖像。
采樣步數(shù)會影響每一步間需要降低的噪聲強(qiáng)度。較高的步數(shù)有助于減小采樣用力過猛導(dǎo)致的截斷誤差。下圖是一個30步的噪聲時間表。

2.sampler概述
下面將分不同的部分,簡單敘述下幾類不同的sampler。
由經(jīng)典的常微分方程求解方法命名的sampler
不要害怕這個小標(biāo)題,sampler實際上要做的就是求解常微分方程(ODE),以下是幾個可能比你我年紀(jì)都大的經(jīng)典求解方法。
Euler-可能是最簡單的求解方法,用歐拉法求解常微分方程
Heun-比Euler更精確但更慢
LMS(Linear multi-step method,線性多步求解)-速度與Euler相同,可能會更準(zhǔn)確
Ancestral系列
有些sampler的名字里會帶一個a,這就代表他們是Ancestral sampler祖先采樣器,祖先采樣器會在每一步之間向圖片添加隨機(jī)的噪聲,因而采樣結(jié)果具有一定的隨機(jī)性,難以穩(wěn)定復(fù)現(xiàn)結(jié)果。
有些采樣器名字里沒有帶a,但是也會添加隨機(jī)噪聲(例如DDIM)。
采用祖先采樣器生成的過程中,即便到了最后幾個采樣步驟,圖像也在發(fā)生一定的變化(因為有新的噪聲添加進(jìn)來)。(即結(jié)果不收斂)
如果想在圖片里引入一定的變化,更可控的方式是采用variation seed。
Karras系列
名字中帶有karras的sampler是采用了karras論文中的噪聲時間表(noise schedule)。它在前期噪聲強(qiáng)度更高,而在末期噪聲強(qiáng)度更低,如下圖所示。這一定程度上有利于提高出圖質(zhì)量。

DDIM (Denoising Diffusion Implicit Model,去噪擴(kuò)散隱式模型)和PLMS (Pseudo Linear Multi-Step method,偽線性多步法)是初始的1.0版本SD自帶的采樣器。
一般被認(rèn)為是過時的而不再使用。
DPM系列
DPM?(Diffusion probabilistic model solver,擴(kuò)散概率模型求解器)是2022年發(fā)布的為擴(kuò)散模型而設(shè)計的一系列采樣器。
DPM++是DPM的改進(jìn)版。
DPM2是二階版本的DPM,更準(zhǔn)確,但更慢。
DPM++SDE和DPM++SDE Karras有與祖先采樣器相同的缺點,不會收斂,而且采樣步數(shù)會顯著影響圖像內(nèi)容。
DPM adaptive會自適應(yīng)地改變采樣步長,因而它不能保證在你所設(shè)定的步驟內(nèi)完成采樣任務(wù),可能會很慢。
UniPC
UniPC?(Unified Predictor-Corrector,統(tǒng)一預(yù)測-校正器)是2023年新發(fā)布的采樣器,受到同名的常微分方程求解法思路的影響??梢栽?strong>5-10個步驟中實現(xiàn)高質(zhì)量圖像生成。
k-diffusion
這個詞并不指某一個采樣器,它指的是Katherine Crowson的k-diffusion Github庫和與之相關(guān)的采樣器,正是這個庫實現(xiàn)了karras2022年論文中的采樣方法,基本上除了DDIM、PLMS、UniPC的其他采樣器都部分衍生自k-diffusion。
3.收斂性、渲染時間、出圖質(zhì)量
關(guān)于收斂性,圖表較多且專業(yè)性較強(qiáng),感興趣的可以順著文首鏈接去看原文,不感興趣的可以看一句話總結(jié):除了名字里帶a的和帶SDE的,其他的在一定步數(shù)后基本都能正常收斂,區(qū)別不算特別大。
渲染時間見下圖

以Euler為標(biāo)桿,基本而言可以分為三組:
與Euler類似的一階采樣器(時間與Euler相同)
需要對去噪U-Net進(jìn)行兩次評估的二階采樣器(時間是Euler的兩倍)
DPM adaptive(會自適應(yīng)改變采樣步數(shù)因而格外慢,但他在收斂性方面也表現(xiàn)更好)
出圖質(zhì)量


在各種參數(shù)都一致的情況下,結(jié)果也能分成大概三組:
不帶a或SDE的出圖結(jié)果差異極小。
帶了a或SDE的差異明顯要大得多。
DPM++ fast就是bullshit。
此外,各位也可以自己試著用xyplot跑一下不同sampler的圖像,這是直觀、綜合地比較不同sampler的最簡單方式之一。
4.其他
在原網(wǎng)頁的后文中,還有更深奧的討論與介紹,其中詳細(xì)介紹了采樣步驟、如何用確定性抽樣的常微分方程求解隨機(jī)的采樣問題等專業(yè)內(nèi)容,受限于本人相關(guān)專業(yè)知識,暫不搬運。