淺談stable diffusion (二又五分之一)
本系列的第三篇,如果你看過(guò)前倆篇,想必已經(jīng)對(duì)stable diffuison原理和優(yōu)勢(shì)與劣勢(shì)甚至未來(lái)的發(fā)展方向有了一定了解。
stable diffuison發(fā)展至今,商業(yè)(實(shí)用)屬性已經(jīng)相當(dāng)高了,所以我們對(duì)stable diffusion剩下的細(xì)枝末節(jié)就從實(shí)際操作的角度講起。
那么便從stable diffusion webUI講起......
如果你不想了解任何和原理有關(guān)的東西,你甚至能把這篇文章當(dāng)做新手教程,hhh~
Stable Diffusion web UI
A browser interface based on Gradio library for Stable Diffusion.
整體介紹
webui是基于gradio庫(kù)搭建的圖形界面,可以實(shí)現(xiàn)stable diffusion原始的txt2img和img2img模式,并提供了一鍵安裝并運(yùn)行的腳本。此外,webui還集成了許多二次開發(fā)功能,如outpainting、inpainting、color sketch等。它還提供了X/Y/Z圖等腳本生成方式以及文本反轉(zhuǎn)、超網(wǎng)絡(luò)等圖形界面訓(xùn)練按鈕,以及一系列Extras方法的快捷使用。
雖然webui自稱為stable diffusion的web圖形界面,但實(shí)際上它是AI圖像生成的綜合工具。由于基于gradio的優(yōu)勢(shì),它在搭建、擴(kuò)展、多平臺(tái)適配上都非常方便和實(shí)用。然而,受限于gradio和圖形界面,一些精細(xì)的調(diào)整或者對(duì)生成流程的微調(diào)無(wú)法進(jìn)行精細(xì)操作。雖然其中一些流程可以通過(guò)添加插件彌補(bǔ),但仍有一些限制。
總的來(lái)說(shuō),stable diffusion web ui是初次接觸擴(kuò)散模型甚至是生成模型的新手最適合的圖形化操作界面。接下來(lái),我將按照webui的界面一一分析其中的原理、使用方法、效果和影響。此外,還可以通過(guò)webui進(jìn)行許多擴(kuò)展和調(diào)整,使其更適合個(gè)人的需求和喜好。

webui 原版樣式
Stable Diffusion checkpoint

位置在webui的右上角,也是最重要的選項(xiàng),可以在此處選擇你的stable diffusion模型。
checkpoint(權(quán)重點(diǎn)),意味著里面存放著模型的權(quán)重參數(shù),checkpoint 文件本質(zhì)是一個(gè)變量名-變量值的詞典。
一些疑問(wèn)的解答
是否選擇帶ema的版本
如果你在很早期就親自部署webUI或者經(jīng)歷或novelai的leak模型,你通常會(huì)有疑問(wèn),我究竟該選用animefull-latest的7G版本還是final-pruned的4G版本。
4G版本其實(shí)是7G版本的修剪版本,因?yàn)閚ovelai在訓(xùn)練模型時(shí)使用了ema算法,試圖提升模型最終生成的效果。
Ema是一種算法,可以近似獲得近n步權(quán)重的平均值。該算法基于一個(gè)假設(shè),即在訓(xùn)練的最后階段,權(quán)重會(huì)在實(shí)際的最優(yōu)點(diǎn)附近波動(dòng)。通過(guò)取最近n步權(quán)重的平均值,可以使得模型更穩(wěn)定。
早期一些人有一個(gè)誤區(qū),認(rèn)為修剪版本的模型刪除了ema部分的權(quán)重,事實(shí)上恰恰相反,修剪模型刪除了所有非ema的權(quán)重。而且由于啟用ema后運(yùn)行非修剪版本時(shí)等同于運(yùn)行修剪模型,所以單純從生成的角度來(lái)說(shuō),倆個(gè)模型的效果是一致的。
泄露文件里模型對(duì)應(yīng)的config文件可以控制是否啟用ema
但是由于修剪版本的模型刪除了非ema的權(quán)重,所以相比真實(shí)訓(xùn)練出的權(quán)重有失真,所以筆者認(rèn)為如果你有數(shù)據(jù)潔癖或者堅(jiān)持某種心理玄學(xué)在進(jìn)行基于novelai leak模型進(jìn)行二次訓(xùn)練時(shí)最好選擇非修剪版本,但是筆者認(rèn)為ema對(duì)于擴(kuò)散模型來(lái)說(shuō)不是很重要(相對(duì)于GAN)。
所以答案很明顯:
如果單純用于生成應(yīng)該選用不帶ema的修剪模型,這樣會(huì)節(jié)省內(nèi)存和顯存消耗。
如果用于二次訓(xùn)練,如果顯卡不錯(cuò)可以考慮基于帶ema的版本(這里指的是非修剪版本,因?yàn)閚one-ema通常指修剪版本)進(jìn)行二次訓(xùn)練。
該選擇float16還是float32版本
float16和float32代表模型的權(quán)重保存的精度,float32的長(zhǎng)度是float16近一倍,與之帶來(lái)的是float32版本的模型文件通常要大很多。通常而言我們將float32成為單精度,float16成為單精度,float64為雙精度。
神經(jīng)網(wǎng)絡(luò)訓(xùn)練對(duì)精度降低的容忍度非常高
在實(shí)際生成的過(guò)程中,精度帶來(lái)的影響微乎其微,筆者這里推薦是使用float16的版本作為生成使用,節(jié)省內(nèi)存和顯存。
在實(shí)際訓(xùn)練的過(guò)程中,對(duì)于stable diffusion來(lái)說(shuō)精度帶來(lái)的影響也是較小,當(dāng)然實(shí)際訓(xùn)練過(guò)程中通常采用混合精度訓(xùn)練,最后使用float32的形式保存,財(cái)大氣粗直接以float32的形式訓(xùn)練也行。
至于float16和float32版本對(duì)你來(lái)說(shuō)誰(shuí)更快,你應(yīng)該參照你的N卡參數(shù)來(lái)判斷。
說(shuō)的就是你,T4
是否應(yīng)該加載vae
模型文件即checkpoint是已經(jīng)包含了vae(用于從隱空間解碼,詳見(jiàn)第一篇)相關(guān)參數(shù),但是stable diffusion官方和novelai泄露出來(lái)的文件都有額外的vae,因?yàn)檫@些vae針對(duì)面部或者其他一些細(xì)節(jié)做了改良,所以加載vae文件實(shí)際是替換了模型文件中原有的與vae相關(guān)的參數(shù)。
當(dāng)然由此引發(fā)的問(wèn)題就是,如果你的模型原本的效果就很好,盲目加載vae可能弄巧成拙。或者如果你的模型文件已經(jīng)注入過(guò)vae,你再加載同樣的vae只是浪費(fèi)時(shí)間。
我一直認(rèn)為vae文件應(yīng)該被稱為vad(decoder,解碼器)......
模型文件的后綴
模型文件的后綴為.ckpt
或者.safetensors
.ckpt
文件是用 pickle 序列化的,這意味著它們可能包含惡意代碼,如果你不信任模型來(lái)源,加載 .ckpt 文件可能會(huì)危及你的安全。
.safetensors
文件是用 numpy 保存的,這意味著它們只包含張量數(shù)據(jù),沒(méi)有任何代碼,加載 .safetensors 文件更安全和快速。
其中風(fēng)險(xiǎn)利弊自行衡量
模型文件后面[]內(nèi)的hash值
hash值通常來(lái)標(biāo)注模型的唯一性,但是由于位數(shù)較短存在撞車可能,不是很實(shí)用。
stable diffusion算hash的算法經(jīng)過(guò)變動(dòng),最近算16位hash的算法更改為了sha256,但是由于位數(shù)較低,撞車概率還是很高,如果遇到了相同hash的模型想要判斷是否相同還請(qǐng)自行算更多位數(shù)的hash值來(lái)進(jìn)行比較。
文生圖/txt2img

Prompt/Negative prompt
正向和反向提示詞,用于文本條件生成。
正向提示詞用于引導(dǎo)你想生成什么,反向提示詞用于反向引導(dǎo)你不想生成的東西。
如果你閱讀過(guò)前倆篇,你可能疑惑我之前沒(méi)有提到過(guò)Negative prompt,那么我就在這里進(jìn)行一并講解
第一篇我們講到在包含文本條件生成時(shí),文本提示詞被轉(zhuǎn)換成語(yǔ)義向量,而語(yǔ)義向量則被送入U(xiǎn)-Net進(jìn)行噪聲預(yù)測(cè)。在stable diffusion中實(shí)際上有倆組語(yǔ)義向量,一種用于正向提示,一組用于反向提示。那么這些提示究竟是怎么工作的呢?
我們先觀看只有正向提示時(shí)的工作流程:
在stable diffusion進(jìn)行采樣時(shí),算法首先使用由正向提示引導(dǎo)的條件采樣對(duì)原始的圖像(噪聲)進(jìn)行降噪,然后采樣器再使用無(wú)條件采樣再對(duì)同一圖像(噪聲)進(jìn)行一些去噪(該過(guò)程不受文本提示影響),但是就算是無(wú)條件采樣同樣會(huì)是朝著一個(gè)具體的畫面擴(kuò)散,就像下圖的籃球或酒杯(可以是任何東西,不過(guò)我們拿酒杯和籃球舉例)。
在這樣的一個(gè)過(guò)程中,你實(shí)際得到的圖像是最開始的有條件采樣得到的圖像減去無(wú)條件采樣的圖像后的差異,這個(gè)過(guò)程重復(fù)數(shù)次最終獲得你的成品圖。過(guò)程如下圖:

Without negative prompt, a diffusion step is a step towards the prompt and away from random images.
那么如果我們攜帶反向提示會(huì)發(fā)生什么(該過(guò)程將胡子作為反向提示詞)?
反向提示實(shí)際上是劫持了無(wú)條件采樣,我們的無(wú)條件采樣過(guò)程變成了使用反向提示進(jìn)行采樣,那我們的圖像(噪聲)就向著反向提示擴(kuò)散,然后我們用正向提示得到的圖減去反向提示得到的圖,然后如此重復(fù),不就減少了負(fù)面提示詞代表的內(nèi)容出現(xiàn)的可能嗎。過(guò)程如下圖

When using negative prompt, a diffusion step is a step towards the positive prompt and away from the negative prompt.
以上的例子只是為了幫助理解而已圖像的形式進(jìn)行說(shuō)明,實(shí)際stable diffusion的生成過(guò)程是在隱空間(latent space)進(jìn)行,所以本例子并非真實(shí)的生成流程,但是本質(zhì)是一致的
程序正義黨不要噴我,嚶嚶嚶~
prompt的語(yǔ)法
如果你看到不同版本的說(shuō)法,當(dāng)你使用webui進(jìn)行生成時(shí)請(qǐng)以筆者為準(zhǔn)(從源碼中整理出來(lái),希望有人打臉)。
注意:通常有人認(rèn)為|
也是一種特殊語(yǔ)法,但是很遺憾webUI里是沒(méi)有|
這種語(yǔ)法的(我沒(méi)有從代碼中找到),這個(gè)語(yǔ)法僅用于novelai,用于混合不同元素,不過(guò)webui也提供了其他語(yǔ)法來(lái)變相實(shí)現(xiàn)這一過(guò)程(AND
)。
增強(qiáng)/減弱(emphasized)
通常有如下語(yǔ)法來(lái)影響一個(gè)提示詞的影響程度:
() 強(qiáng)度變?yōu)?.1倍
[] 強(qiáng)度變?yōu)?.9倍
(keyword:XX) 強(qiáng)度變?yōu)閄X倍
以下倆個(gè)例子都是強(qiáng)度變?yōu)?.1倍
(keyword)
(keyword:1.1)
以下倆個(gè)例子都是強(qiáng)度變?yōu)?.9倍
[keyword]
(keyword:0.9)
可以使用多個(gè)()或[]來(lái)影響強(qiáng)度
例如,多個(gè)使用時(shí)就是簡(jiǎn)單的相乘
(keyword): 1.1倍
((keyword)): 1.21倍
(((keyword))): 1.33倍
[keyword]: 0.9倍
[[keyword]]: 0.81倍
[[[keyword]]]: 0.73倍
那么假如我是大聰明,我偏要用以下寫法會(huì)發(fā)生什么
[keyword:1.9]
可莉也不知道哦~.jpg
影響程度的范圍在0.1到100之間
這種增強(qiáng)/減弱是如何實(shí)現(xiàn)的呢?你如果看過(guò)第一章,我們的單詞其實(shí)是轉(zhuǎn)化為了語(yǔ)義向量(768維空間中),那么縮放這個(gè)向量就能使得相關(guān)概念變強(qiáng)或減弱
注意當(dāng)你不想使用emphasized而是想用()
作為字符串時(shí),你可以這樣輸入:
\(word\)
漸變/調(diào)整作用時(shí)機(jī)(scheduled)
通常有如下語(yǔ)法來(lái)進(jìn)行漸變(混合)倆個(gè)提示詞:
[keyword1 : keyword2: amount]
可以理解為[from:to:when]
amount
的范圍是0到1,代表混合強(qiáng)度,如何實(shí)現(xiàn)? 舉個(gè)例子:如果你的amount
為0.75,而采樣步驟是40步,那么會(huì)有40*0.75=30步的過(guò)程,提示詞為keyword1
,剩下10步提示詞為keyword2
所以如果你試圖均勻混合,最好將amount
調(diào)為0.5左右
示例如下圖:

所以由此誕生了一個(gè)非常有用的技巧,如下
我們將(ear:1.9)作為正向提示詞
然后我們將這個(gè)放入反向提示詞
[the: (ear:1.9): 0.5]
第一個(gè)關(guān)鍵詞為一個(gè)毫無(wú)意義的詞,第二個(gè)關(guān)鍵詞為(ear:1.9)代表我們想要生成耳朵
假如你的采樣步驟為20步,則前10步會(huì)減少一個(gè)毫無(wú)意義的東西出現(xiàn)的概率,后10則會(huì)執(zhí)行(ear:1.9)來(lái)減少耳朵出現(xiàn)的概率
我們就得到了一張類似上圖一般頭發(fā)遮住耳朵的圖
究其原因是在擴(kuò)散的過(guò)程中最開始的步驟往往更重要,后面的步驟則是對(duì)細(xì)節(jié)進(jìn)行了更精細(xì)的調(diào)整
通過(guò)這個(gè)技巧我們可以將一些提示詞只作用于后面的步驟或者只作用于前面的步驟
值得注意的是這個(gè)語(yǔ)法有簡(jiǎn)寫方式如下:
[to:when] - 在某步后添加某個(gè)詞條(to)
[from::when] - 在某步前使用某個(gè)詞條(from)
理解了,讓我們來(lái)看個(gè)復(fù)雜例子
fantasy landscape with a [mountain:lake:0.25] and [an oak:a christmas tree:0.75][ in foreground::0.6][ in background:0.25] [shoddy:masterful:0.5]
以上例子采用100步采樣
下方為某步數(shù)后我們實(shí)際的prompt
最開始, fantasy landscape with a mountain and an oak in foreground shoddy
25步后, fantasy landscape with a lake and an oak in foreground in background shoddy
50步后, fantasy landscape with a lake and an oak in foreground in background masterful
60步后, fantasy landscape with a lake and an oak in background masterful
75步后, fantasy landscape with a lake and a christmas tree in background masterful
交替(alternate)
一個(gè)很有意思的語(yǔ)法,也可以用來(lái)混合一些提示,示例如下:
[keyword1|keyword2] keyword1和keyword2在采樣時(shí)被交替使用
[A|B|C|D] A,B,C,D按順序被交替使用
比如接下來(lái)的例子
[red hair|yellow hair], long hair, 1girl
在使用DPM++ 2M Karras采樣時(shí)
第10步,頭發(fā)偏向黃色(使用不同種子,多次生成)

第11步,頭發(fā)偏向紅色(使用不同種子,多次生成)

第13步,頭發(fā)偏向黃色(使用不同種子,多次生成)

如上面所說(shuō),擴(kuò)散的過(guò)程中最開始的步驟往往更重要,所以在逐漸收斂的后,你的交替詞往往也會(huì)效果減弱,最終發(fā)色也會(huì)其中偏向一種,不會(huì)在下一步產(chǎn)生大變。
組合/混合(composable)
組合的關(guān)鍵詞是AND
,注意要大寫以區(qū)分(我們實(shí)際短語(yǔ)的and應(yīng)該是小寫,筆者認(rèn)為這樣做是為了將prompt語(yǔ)法和實(shí)際自然語(yǔ)言進(jìn)行區(qū)別),這個(gè)AND
關(guān)鍵詞允許組合(混合)多個(gè)提示的方法(對(duì)novelai的|
的webui版實(shí)現(xiàn))。
a cat AND a dog
效果如下圖

值得注意的是,你可以像novelai中一般可以為每個(gè)詞提供權(quán)重,默認(rèn)為1,比如:
a cat :1.2 AND a dog AND a penguin :2.2
如果你的某個(gè)提示詞權(quán)重低于0.1,那么該提示詞對(duì)應(yīng)的要素就很難產(chǎn)生影響
詞匯的具體解析
stable diffusion使用Clip作為文本的編碼器(詳見(jiàn)第一篇),Clip 的標(biāo)記器在標(biāo)記之前將所有單詞小寫。
得益于Clip的強(qiáng)大,你可以在提示詞里使用自然語(yǔ)言(主要是英語(yǔ),看模型訓(xùn)練時(shí)的情況),也可以使用類標(biāo)記語(yǔ)言。
提示詞中開頭和結(jié)尾的額外空格會(huì)被直接丟棄,詞與詞之間的多余空格也會(huì)被丟棄。
支持顏文字 和 emoji ,Unicode 字符(如日語(yǔ)字符)。
拼寫錯(cuò)誤或罕見(jiàn)詞
提示單詞可以由一個(gè)或多個(gè)符號(hào)組成,常用詞通常被解析為具有共同含義或少量含義的單個(gè)標(biāo)記。而拼寫錯(cuò)誤和不常見(jiàn)的單詞被解析為多個(gè)可以被識(shí)別的標(biāo)記,示例如下:
bank,bankk會(huì)被識(shí)別為bank,而bonk不會(huì)被識(shí)別為bank
_ 通常不會(huì)被轉(zhuǎn)換成空格
筆者這個(gè)拼寫錯(cuò)誤被識(shí)別是很大原因因?yàn)镃lip在訓(xùn)練過(guò)程中,人類也有拼寫錯(cuò)誤(人總會(huì)犯錯(cuò),機(jī)械飛升吧~)然后聯(lián)系上下文同樣能產(chǎn)生識(shí)別這個(gè)詞的效果。
而對(duì)于罕見(jiàn)詞,他們的信息量(不準(zhǔn)確的描述)太低會(huì)被理解為其他的詞語(yǔ),這也解釋了顏文字和emoji的作用性相比自然語(yǔ)言更強(qiáng),因?yàn)轭佄淖趾蚭moji對(duì)特定的含義信息是強(qiáng)綁定的關(guān)系而且字符數(shù)短,而自然語(yǔ)言通常會(huì)有歧義。
詞匯順序/數(shù)量/位置影響
這是個(gè)好問(wèn)題,以筆者對(duì)Clip淺薄的理解,詞匯們被轉(zhuǎn)化成語(yǔ)義向量輸入到U-Net時(shí)利用了attention機(jī)制(詳見(jiàn)第一篇),而語(yǔ)義向量將會(huì)添加到一個(gè)位置標(biāo)記上( a position embedding token),早期的標(biāo)記具有更一致的位置,因此神經(jīng)網(wǎng)絡(luò)更容易預(yù)測(cè)它們的相關(guān)性。而且由于attention機(jī)制的特殊性,每次訓(xùn)練時(shí),開始的標(biāo)記和結(jié)束的標(biāo)記總會(huì)被注意到(attention)。而且由于標(biāo)記越多,單個(gè)標(biāo)記被被注意到的概率越低。
基于以上特性,筆者認(rèn)為有以下幾點(diǎn)需要注意:
開頭與結(jié)尾的詞往往作用性更強(qiáng)
提示詞數(shù)量越多,單個(gè)提示詞的作用性越低
開頭的數(shù)個(gè)提示詞的作用較強(qiáng),有更強(qiáng)的相關(guān)
關(guān)于數(shù)量,你可能已經(jīng)注意到了,當(dāng)你寫prompt時(shí)會(huì)有數(shù)量限制

但是在 webui中,你是可以寫 75 個(gè)詞匯以上的提示的。webui會(huì)自動(dòng)通過(guò)對(duì)提示詞進(jìn)行分組。當(dāng)提示超過(guò) 75 個(gè) token
(可以理解token代表你的提示詞),提交多組 75 個(gè) token
。單個(gè)token
只具有同一組中其他內(nèi)容的上下文。
每一組都會(huì)被補(bǔ)充至(1,77,768)的張量,然后進(jìn)行合并,比如倆組就會(huì)合并為(1,154,768)的張量,然后被送入U(xiǎn)-Net。
值得注意的是
為了避免將你的短語(yǔ)分成倆組,在分組時(shí)會(huì)查看附近是否有
,
來(lái)盡量還原你想要的輸入然后你還能通過(guò)輸入
BREAK
來(lái)快速分組,BREAK
必須為大寫
emoji和顏文字
對(duì)emoji的表現(xiàn)良好,對(duì)熱門的顏文字表現(xiàn)良好(歐美環(huán)境),而且作用力很強(qiáng)
[red hair|yellow hair], long hair, 1girl,??

采樣方法/Sampling method

如果你閱讀過(guò)第一篇或第二篇,想必對(duì)采樣方法已經(jīng)有了自己的理解。
webui中集成了很多不同的采樣方法,這里結(jié)合設(shè)置中提供的選項(xiàng),簡(jiǎn)單粗略的介紹下它們(不含數(shù)學(xué),放心食用)。
Euler
基于Karras論文,在K-diffusion實(shí)現(xiàn)
20-30steps就能生成效果不錯(cuò)的圖片
采樣器設(shè)置頁(yè)面中的 sigma noise,sigma tmin和sigma churn會(huì)影響
Euler a
使用了祖先采樣(Ancestral sampling)的Euler方法
受采樣器設(shè)置中的eta參數(shù)影響
LMS
線性多步調(diào)度器(Linear multistep scheduler)源于K-diffusion
heun
基于Karras論文,在K-diffusion實(shí)現(xiàn)
受采樣器設(shè)置頁(yè)面中的 sigma參數(shù)影響
DPM2
Katherine Crowson在K-diffusion實(shí)現(xiàn)
受采樣器設(shè)置頁(yè)面中的 sigma參數(shù)影響
DPM2 a
使用了祖先采樣(Ancestral sampling)的DPM2方法
受采樣器設(shè)置中的ETA參數(shù)影響
DPM++ 2S a
基于
,在K-diffusion實(shí)現(xiàn)的2階單步并使用了祖先采樣(Ancestral sampling)的方法受采樣器設(shè)置中的eta參數(shù)影響
Cheng Lu的github](https://github.com/LuChengTHU/dpm-solver)中也提供已經(jīng)實(shí)現(xiàn)的代碼,并且可以自定義,1、2、3階,和單步多步的選擇
webui使用的是K-diffusion中已經(jīng)固定好的版本
DPM++ 2M
基于
的論文,在K-diffusion實(shí)現(xiàn)的2階多步采樣方法被社區(qū)玩家稱為最強(qiáng)采樣器,速度和質(zhì)量平衡優(yōu)秀
比上方版本更優(yōu)秀也更復(fù)雜
DPM++ SDE
基于
的,DPM++的SDE版本(隨機(jī)微分方程),DPM++原本是ODE(常微分方程)在K-diffusion實(shí)現(xiàn)的版本中調(diào)用了祖先采樣(Ancestral sampling)方法,所以受采樣器設(shè)置中的ETA參數(shù)影響
DPM fast
基于
,在K-diffusion實(shí)現(xiàn)的固定步長(zhǎng)采樣方法,用于steps小于20的情況受采樣器設(shè)置中的ETA參數(shù)影響
DPM adaptive
基于
,在K-diffusion實(shí)現(xiàn)的自適應(yīng)步長(zhǎng)采樣方法受采樣器設(shè)置中的ETA參數(shù)影響
LMS Karras
,運(yùn)用了相關(guān)Karras的noise schedule的方法,可以算作是LMS使用Karras noise schedule的版本
DPM2 Karras
使用Karras noise schedule的版本
DPM2 a Karras
使用Karras noise schedule的版本
DPM++ 2S a Karras
使用Karras noise schedule的版本
DPM++ 2M Karras
使用Karras noise schedule的版本
DPM++ SDE Karras
使用Karras noise schedule的版本
DDIM
隨latent diffusion的最初repository一起出現(xiàn), 基于Jiaming Song等人的論文
目前最容易被當(dāng)作對(duì)比對(duì)象的采樣方法
在采樣器設(shè)置界面有自己的ETA
PLMS
元老級(jí),隨latent diffusion的最初repository一起出現(xiàn)
UniPC
目前最新采樣器,基于
的論文理論上目前最快采樣器,10步即可獲得高質(zhì)量結(jié)果
以上采樣器,讀者可以從字體大小中看出筆者的偏心,字體稍大的采樣器在采樣方法的發(fā)展史(雖然很短)中發(fā)揮了更大的作用,筆者也比較推薦用字體更大的那幾種采樣器(魔法師們開心就好,不要在意)。
與采樣器相關(guān)的有倆個(gè)參數(shù)
eta參數(shù)
eta (noise multiplier) for DDIM只作用DDIM,不為零時(shí)DDIM在推理時(shí)圖像會(huì)一直改變,生成的圖像不會(huì)最終收斂
換句話說(shuō),即使跑了數(shù)百步,圖像依舊可能產(chǎn)生大變化。
你可能主要到了上面很多款采樣器提到了祖先采樣,而且它們中的大多數(shù)名稱內(nèi)含有
a
,或者SDE
eta (noise multiplier) for ancestral samplers 作用于名字后綴帶a和SDE的所有采樣器,不為零時(shí)生成的圖像也不會(huì)收斂
eta noise seed delta,在該值不為零時(shí)起到固定初始值的作用,這樣你就可以使用相同值還原某些其它人使用了對(duì)應(yīng)eta值的圖片(通過(guò)相同的seed)
對(duì)于魔法師而言,要注意eta(前倆者)不要為0,否則可能會(huì)“失去”多樣性和創(chuàng)造性,要注意eta(第三個(gè))要和你準(zhǔn)備復(fù)制的“法術(shù)”的eta相同,不然無(wú)法完美復(fù)制。
sigma參數(shù)
sigma包含:sigma churn,sigma tmin,sigma noise,僅對(duì)euler, heun和dpm2這三個(gè)采樣器有效
sigma churn:決定sigma noise值如何被使用,如果churn值為0,即使noise值不為0,也沒(méi)有任何效果。
sigma tmin:決定最小值范圍的限制,可以為0
sigma noise:噪聲本身的數(shù)值大小(注意,churn>0時(shí),噪聲值本身才有意義)
對(duì)于魔法師而言,sigma值也與多樣性和創(chuàng)造性有關(guān)。
采樣步數(shù)/Sampling steps


慢慢寫,敬請(qǐng)期待