淺談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~

A browser interface based on Gradio library for Stable Diffusion.
整體介紹
webui是基于gradio庫(kù)搭建的圖形界面,可以實(shí)現(xiàn)stable diffusion原始的txt2img和img2img模式,并提供了一鍵安裝并運(yùn)行的腳本。此外,webui還集成了許多二次開(kāi)發(fā)功能,如outpainting、inpainting、color sketch等。它還提供了X/Y/Z圖等腳本生成方式以及文本反轉(zhuǎn)、超網(wǎng)絡(luò)等圖形界面訓(xùn)練按鈕,以及一系列Extras方法的快捷使用。
雖然webui自稱(chēng)為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稱(chēng)為單精度,float16稱(chēng)為半精度,float64稱(chēng)為雙精度。
神經(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可能弄巧成拙?;蛘呷绻愕哪P臀募呀?jīng)注入過(guò)vae,你再加載同樣的vae只是浪費(fèi)時(shí)間。
我一直認(rèn)為vae文件應(yīng)該被稱(chēng)為vad(decoder,解碼器)......
這里額外提一下設(shè)置,在setting里填入sd_vae,會(huì)在webui上方顯示你價(jià)值的vae模型

如圖

模型文件的后綴
模型文件的后綴為.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ù)較短存在撞車(chē)可能,不是很實(shí)用。
stable diffusion算hash的算法經(jīng)過(guò)變動(dòng),最近算16位hash的算法更改為了sha256,但是由于位數(shù)較低,撞車(chē)概率還是很高,如果遇到了相同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è)具體的畫(huà)面擴(kuò)散,就像下圖的籃球或酒杯(可以是任何東西,不過(guò)我們拿酒杯和籃球舉例)。
在這樣的一個(gè)過(guò)程中,你實(shí)際得到的圖像是最開(kāi)始的有條件采樣得到的圖像減去無(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è)提示詞的影響程度:
影響程度的范圍在0.1到100之間
這種增強(qiáng)/減弱是如何實(shí)現(xiàn)的呢?你如果看過(guò)第一章,我們的單詞其實(shí)是轉(zhuǎn)化為了語(yǔ)義向量(768維空間中),那么縮放這個(gè)向量就能使得相關(guān)概念變強(qiáng)或減弱
注意當(dāng)你不想使用emphasized而是想用()
作為字符串時(shí),你可以這樣輸入:
這里有個(gè)有關(guān)setting是默認(rèn)被打開(kāi)的

漸變/調(diào)整作用時(shí)機(jī)(scheduled)
通常有如下語(yǔ)法來(lái)進(jìn)行漸變(混合)倆個(gè)提示詞:
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左右
示例如下圖:

注意當(dāng)amount
的大小>1時(shí),amount
指的就是特定步數(shù)切換
這個(gè)例子在第16步后變?yōu)?a cyberpunk landscape
所以由此誕生了一個(gè)非常有用的技巧,如下

我們就得到了一張類(lèi)似上圖一般頭發(fā)遮住耳朵的圖
究其原因是在擴(kuò)散的過(guò)程中最開(kāi)始的步驟往往更重要,后面的步驟則是對(duì)細(xì)節(jié)進(jìn)行了更精細(xì)的調(diào)整
通過(guò)這個(gè)技巧我們可以將一些提示詞只作用于后面的步驟或者只作用于前面的步驟
值得注意的是這個(gè)語(yǔ)法有簡(jiǎn)寫(xiě)方式如下:
理解了,讓我們來(lái)看個(gè)復(fù)雜例子
交替(alternate)
一個(gè)很有意思的語(yǔ)法,也可以用來(lái)混合一些提示,示例如下:
比如接下來(lái)的例子
在使用DPM++ 2M Karras采樣時(shí)
第10步,頭發(fā)偏向黃色(使用不同種子,多次生成)

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

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

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

值得注意的是,你可以像novelai中一般可以為每個(gè)詞提供權(quán)重,默認(rèn)為1,比如:
如果你的某個(gè)提示詞權(quán)重低于0.1,那么該提示詞對(duì)應(yīng)的要素就很難產(chǎn)生影響
斷開(kāi)/打斷(BREAK)
斷開(kāi)的關(guān)鍵詞是BREAK
,注意要大寫(xiě)。這個(gè)關(guān)鍵詞會(huì)打斷上下文的聯(lián)系,強(qiáng)行進(jìn)行再次分組(詳見(jiàn)下文)。
詞匯的具體解析
stable diffusion使用Clip作為文本的編碼器(詳見(jiàn)第一篇),Clip 的標(biāo)記器在標(biāo)記之前將所有單詞小寫(xiě)。
得益于Clip的強(qiáng)大,你可以在提示詞里使用自然語(yǔ)言(主要是英語(yǔ),看模型訓(xùn)練時(shí)的情況),也可以使用類(lèi)標(biāo)記語(yǔ)言。
提示詞中開(kāi)頭和結(jié)尾的額外空格會(huì)被直接丟棄,詞與詞之間的多余空格也會(huì)被丟棄。
支持顏文字 和 emoji ,Unicode 字符(如日語(yǔ)字符)。
拼寫(xiě)錯(cuò)誤或罕見(jiàn)詞
提示單詞可以由一個(gè)或多個(gè)符號(hào)組成,常用詞通常被解析為具有共同含義或少量含義的單個(gè)標(biāo)記。而拼寫(xiě)錯(cuò)誤和不常見(jiàn)的單詞被解析為多個(gè)可以被識(shí)別的標(biāo)記,示例如下:
筆者認(rèn)為這個(gè)拼寫(xiě)錯(cuò)誤被識(shí)別是很大原因因?yàn)镃lip在訓(xùn)練過(guò)程中,人類(lèi)也有拼寫(xiě)錯(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í),開(kāi)始的標(biāo)記和結(jié)束的標(biāo)記總會(huì)被注意到(attention)。而且由于標(biāo)記越多,單個(gè)標(biāo)記被被注意到的概率越低。
基于以上特性,筆者認(rèn)為有以下幾點(diǎn)需要注意:
開(kāi)頭與結(jié)尾的詞往往作用性更強(qiáng)
提示詞數(shù)量越多,單個(gè)提示詞的作用性越低
開(kāi)頭的數(shù)個(gè)提示詞的作用較強(qiáng),有更強(qiáng)的相關(guān)
關(guān)于數(shù)量,你可能已經(jīng)注意到了,當(dāng)你寫(xiě)prompt時(shí)會(huì)有數(shù)量限制

但是在 webui中,你是可以寫(xiě) 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
必須為大寫(xiě)
emoji和顏文字
對(duì)emoji的表現(xiàn)良好,對(duì)熱門(mén)的顏文字表現(xiàn)良好(歐美環(huán)境),而且作用力很強(qiáng)

采樣方法/Sampling method

如果你閱讀過(guò)第一篇或第二篇,想必對(duì)采樣方法已經(jīng)有了自己的理解,我們可簡(jiǎn)單的將采樣過(guò)程理解為一步一步將原有圖片(噪聲)去噪得到我們想要圖片的過(guò)程。
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ū)玩家稱(chēng)為最強(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
基于固定步長(zhǎng)采樣方法,用于steps小于20的情況
,在K-diffusion實(shí)現(xiàn)的受采樣器設(shè)置中的ETA參數(shù)影響
DPM adaptive
基于自適應(yīng)步長(zhǎng)采樣方法
,在K-diffusion實(shí)現(xiàn)的受采樣器設(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ā)揮了更大的作用,筆者也比較推薦用字體更大的那幾種采樣器(魔法師們開(kāi)心就好,不要在意)。
倆個(gè)參數(shù)
eta參數(shù)
eta (noise multiplier) for DDIM只作用DDIM,不為零時(shí)DDIM在推理時(shí)圖像會(huì)一直改變,生成的圖像不會(huì)最終收斂
換句話說(shuō),即使跑了數(shù)百步,圖像依舊可能產(chǎn)生大變化。
你可能主要到了上面很多款采樣器提到了祖先采樣,而且它們中的大多數(shù)名稱(chēng)內(nèi)含有a
,或者SDE
eta (noise multiplier) for ancestral samplers 作用于名字后綴帶a和SDE的所有采樣器,不為零時(shí)生成的圖像也不會(huì)收斂(而且同種種子同樣參數(shù)也可能會(huì)不同)
eta noise seed delta,在該值不為零時(shí)起到固定初始值的作用,這樣你就可以使用相同值還原某些其它人使用了對(duì)應(yīng)eta值的圖片(通過(guò)相同的seed)
相關(guān)設(shè)置:

對(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
采樣步驟與采樣方法息息相關(guān),每次采樣相當(dāng)于對(duì)原始圖像(噪聲)進(jìn)行了一次去噪
最初的DDPM采樣步數(shù)需要上千步才能獲得高質(zhì)量的圖片,其消耗的算力和時(shí)間成本不可接受(隔壁GAN推理圖片只要0.5秒內(nèi))
在犧牲準(zhǔn)確和多樣性的情況下,我們選用了效率更高的采樣方式DDIM,獲得高質(zhì)量的圖片只需要五十到上百步
后來(lái)如DPM++ 2M之類(lèi)的采樣算法更是將采樣步驟縮進(jìn)至20步,UniPC更是只需要10步左右就能獲取高質(zhì)量的圖片,與之帶來(lái)的是采樣的時(shí)間和算力消耗大幅下降,生成出的作品能更多。
至于其中的犧牲,就筆者而言認(rèn)為是微不足道的(無(wú)法誕生于世的東西是沒(méi)有意義的)
對(duì)于魔法師來(lái)說(shuō),可能最好用的是Euler a或者DDIM或者PM++ 2M,請(qǐng)自行權(quán)衡。
注意一下,上述的eta參數(shù)和sigma參數(shù)會(huì)影響不同步數(shù)下的多樣性
寬 高/Width Height
上面三個(gè)可選參數(shù)我們選擇在后面再講
非常明顯,這倆按鈕用來(lái)指定圖片的寬和高
但是值得注意的是,stable diffusion 在2.0之前都是在原有的用256X256的latent diffusion model上用512X512的數(shù)據(jù)集進(jìn)行訓(xùn)練,2.0后使用768X768的圖片在繼續(xù)進(jìn)行訓(xùn)練
所以根據(jù)原理,stable diffusion 生成512X512左右的圖片效果更好,當(dāng)然stable diffusion在2.0后的模型版本至少將一側(cè)設(shè)置為768像素更好
根據(jù)前倆篇文章我們知道,我們?cè)谏蓵r(shí)先是產(chǎn)生隨機(jī)噪聲,在隱空間中反映為一個(gè)張量,這個(gè)張量受到我們想生成的圖片分辨率大小影響,比如我們隱空間圖片張量大小為4X64X64時(shí)對(duì)應(yīng)著外面的512X512圖像,隱空間圖片大小為4X96X96時(shí)對(duì)應(yīng)著外面的768X512圖像。
根據(jù)筆者自己從零訓(xùn)練的latent模型來(lái)看,數(shù)據(jù)集采用512的圖片而去生成256尺寸的圖片時(shí)只會(huì)生成圖片的部分,而stable diffusion耗費(fèi)巨資在訓(xùn)練時(shí)不斷加入不同分辨率的數(shù)據(jù)集估計(jì)會(huì)減弱這一過(guò)程(大模型的黑盒)
但是就目前的stable diffusion來(lái)看生成過(guò)大圖片還是會(huì)出現(xiàn)問(wèn)題,比如:
生成圖片如下,產(chǎn)生了倆個(gè)女孩(筆者認(rèn)為在生成時(shí)局部空間內(nèi)達(dá)到收斂,導(dǎo)致最后的圖片看著像是倆張圖片拼接)

正確的生成圖片大小策略
基于以上討論,我們認(rèn)為以下是生成圖片大小是應(yīng)選擇的策略
在使用stable diffusion 2.0以前的模型時(shí),圖片一側(cè)大小應(yīng)該盡量接近512,圖片整體靠近512X512;同理對(duì)于stable diffusion 2.0后的模型,圖片一側(cè)大小應(yīng)該盡量接近768,圖片整體靠近768X768
圖片如果需要更高的分辨率則請(qǐng)選擇使用超分辨率的手段(后面再講)

看到了這個(gè)按鈕嗎,這個(gè)按鈕能輕松將寬和高進(jìn)行數(shù)值交換
CFG指數(shù)/CFG Scale
這是個(gè)很重要的概念,前倆篇沒(méi)講,我這里具體講一下(偏直觀,不含數(shù)學(xué)推理)。
如果你看過(guò)前倆篇,我們知道擴(kuò)散模型的前向擴(kuò)散和反向去噪都可以用隨機(jī)方程來(lái)進(jìn)行描述,對(duì)于反向去噪過(guò)程我們通過(guò)神經(jīng)網(wǎng)絡(luò)來(lái)擬合當(dāng)前輸入關(guān)于原數(shù)據(jù)分布的梯度(噪聲預(yù)測(cè)過(guò)程)。問(wèn)題是原有的噪聲預(yù)測(cè)適用于隨機(jī)生成圖像,單單有這個(gè)我們無(wú)法做到條件生成。
但是根據(jù)一些數(shù)學(xué)推論,我們推出看分類(lèi)器來(lái)指導(dǎo)條件生成。
對(duì)于一個(gè)先驗(yàn)分布,我們想要再次獲得數(shù)據(jù)分布里在條件約束下的數(shù)據(jù)點(diǎn)時(shí),我們實(shí)際只要在原來(lái)往數(shù)據(jù)方向的梯度方向上再額外添加一個(gè)分類(lèi)器的梯度方向即可。
那么我們?nèi)绾稳?gòu)造一個(gè)分類(lèi)器呢?
構(gòu)造顯式分類(lèi)器存在許多問(wèn)題。首先,您需要額外訓(xùn)練一個(gè)能夠在噪聲圖像上進(jìn)行分類(lèi)判別的分類(lèi)器,這需要耗費(fèi)很多時(shí)間和精力。其次,該分類(lèi)器的質(zhì)量將決定您按類(lèi)別生成的效果。實(shí)際上,將圖像的判別梯度更新到分類(lèi)器上是一種經(jīng)典的圖像界對(duì)分類(lèi)模型進(jìn)行對(duì)抗攻擊的方法,然而,騙過(guò)一個(gè)并不健壯的分類(lèi)器并不代表我們確實(shí)逼近了條件分布。
GAN表示......
為了避免顯式分類(lèi)器的一些缺陷,我們推出了classifier-free,其核心是對(duì)無(wú)條件生成的網(wǎng)絡(luò)以omega+1的強(qiáng)度進(jìn)行有分類(lèi)器引導(dǎo)的擴(kuò)散生成等價(jià)于對(duì)有條件生成的網(wǎng)絡(luò)以omega的強(qiáng)度進(jìn)行有分類(lèi)器引導(dǎo),所以我們可以在diffusion里構(gòu)造構(gòu)建一個(gè)隱式的分類(lèi)器梯度,使用隱式分類(lèi)器引導(dǎo)的最終解析式要求我們只需要訓(xùn)練兩個(gè)梯度預(yù)估模型,其中一個(gè)是無(wú)條件生成的梯度預(yù)估模型(例如常規(guī)的DDPM),另一個(gè)是基于條件的梯度預(yù)估模型。
一方面這大大減輕了條件生成的訓(xùn)練代價(jià)(無(wú)需訓(xùn)練額外的分類(lèi)器,只需要在訓(xùn)練時(shí)進(jìn)行隨機(jī)drop out condition來(lái)同時(shí)訓(xùn)練兩個(gè)目標(biāo)),另一方面這樣的條件生成并不是以一個(gè)類(lèi)似于對(duì)抗攻擊的方式進(jìn)行的,本質(zhì)上是它是兩個(gè)梯度的差值所形成的。
如果你想到了我們上文提到的Prompt/Negative prompt的作用方式,恭喜你,你想對(duì)了,Prompt/Negative prompt處給的例子其實(shí)就是就是classifier-free過(guò)程造成的。
classifier-free guidance(無(wú)分類(lèi)器引導(dǎo)生成)簡(jiǎn)稱(chēng)CGF堪稱(chēng)stable diffusion的奠基工作,以前說(shuō)到跨模態(tài)我們通常只會(huì)想到clip,對(duì)生成的圖像和文本的距離做一個(gè)損失差值來(lái)引導(dǎo)圖像生成(詳見(jiàn)第一篇),現(xiàn)在我們有了無(wú)分類(lèi)引導(dǎo)生成,讓文生圖更加高效和自然。
實(shí)際使用時(shí)的CFG Scale
Classifier-free guidance (CFG) scale(CGF指數(shù))用來(lái)調(diào)節(jié)文本提示對(duì)擴(kuò)散過(guò)程的引導(dǎo)程度。
當(dāng)數(shù)值為0時(shí),圖像生成是無(wú)條件的,數(shù)值較高時(shí)會(huì)向你的提示進(jìn)行生成。
具體的數(shù)值應(yīng)當(dāng)與你的模型息息相關(guān),但是鑒于市面上很少有像筆者這邊從零練了latent diffusion model(至少需要一張A100),我們通過(guò)實(shí)驗(yàn)獲得的CFG Scale參數(shù)經(jīng)驗(yàn)基本是通用的,以下可能是對(duì)你有用的經(jīng)驗(yàn)之談:
我們通常認(rèn)為CFG scale的數(shù)值選為7-10是一個(gè)非常平衡的區(qū)間,既有創(chuàng)意也有能遵循我們的文本提示
CFG處于2-6時(shí)會(huì)創(chuàng)意力(不可控性)提高
CFG處于10-15時(shí),你的作品受到你的提示的良性影響
CFG處于16-20時(shí),你得確定你的提示真的是你想要的,否則效果不會(huì)太好
CFG高于20時(shí),可能會(huì)產(chǎn)生一些奇怪的現(xiàn)象(建議魔法師來(lái)解釋解釋...)
生成/Gennerate

如果你有好好理解我前面所說(shuō)的,就可以大膽按下這個(gè)按鈕生成你想要的圖像了
接下來(lái)我會(huì)講解更加進(jìn)階的操作
面部修復(fù)/Restore faces
我只所以說(shuō)webui是AI圖像生成的綜合工具,是因?yàn)樗€集成了許多與diffusion關(guān)系不大的東西
比如我們現(xiàn)在講的面部修復(fù),面部修復(fù)是額外的模型,所以如果你初次使用可能會(huì)自動(dòng)進(jìn)行下載。
默認(rèn)的面部修復(fù)模型是CoderFormer,此外還有GFPGAN,你可以在setting內(nèi)進(jìn)行更改。

下面的數(shù)值條可以控制CoderFormer的影響力度,為0時(shí)效果最強(qiáng)。
眾所周知面部修復(fù)模型是用來(lái)修復(fù)面部的面部修復(fù)模型是用來(lái)修復(fù)面部的面部修復(fù)模型
可能對(duì)你生成的畫(huà)風(fēng)和細(xì)節(jié)產(chǎn)生一些不可預(yù)知的影響,筆者對(duì)這個(gè)選項(xiàng)不是很感興趣,魔法師請(qǐng)自行確認(rèn)效果。
這個(gè)功能可以說(shuō)是設(shè)計(jì)師狂喜了,比如生成這樣的圖像,輕易突破想象極限(

高清修復(fù)/Hires. fix
這個(gè)功能也是重量級(jí)了,盡管和diffusion模型的關(guān)系不大,但是根據(jù)上文,我們stable diffusion最好是生成512X512或者768X768附近大小的圖片,但是顯然這種像素級(jí)別對(duì)于現(xiàn)代24K鈦晶眼來(lái)說(shuō)不太夠用,那么我們就可以通過(guò)高清修復(fù)(超分辨率/圖像增強(qiáng))來(lái)達(dá)到我們的目的。
我們點(diǎn)擊該選項(xiàng)出現(xiàn)如下界面,按照慣例我們一個(gè)一個(gè)講

圖像放大器/Upscaler

點(diǎn)開(kāi)的列表是一系列放大算法,由于大部分和stable diffusion無(wú)關(guān),所以我們只講部分
首先要講的是
Lanczos插值和Nearest插值算法,這倆位是計(jì)算機(jī)圖形學(xué)成果,是用于超分圖像的傳統(tǒng)算法,純靠數(shù)學(xué)運(yùn)算,充滿了原始而自然的風(fēng)味。
bicubic插值算法也被稱(chēng)作雙三次插值算法,如果從信號(hào)與系統(tǒng)的角度講,bicubic其作用原理接近一個(gè)低通濾波器,屬于sa信號(hào)重建函數(shù),是常見(jiàn)的視頻圖片質(zhì)量增強(qiáng)算法。
而前綴有Latent
的情況代表他們工作在隱空間(詳見(jiàn)第一二篇)。
那么是什么現(xiàn)代的做法呢,我們的做法是講算法和人工智能結(jié)合,這里我簡(jiǎn)單介紹一下與人工智能有關(guān)的放大器的通用原理。我們首先拿到高質(zhì)量的圖像數(shù)據(jù),然后我們?nèi)藶槠茐膶D片分辨率降低,然后嘗試通過(guò)訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型用來(lái)恢復(fù)原始圖像。筆者認(rèn)為以信息論的角度講,一張圖片單純想要通過(guò)某種數(shù)學(xué)算法來(lái)增加信息是很難的,而神經(jīng)網(wǎng)絡(luò)模型本身蘊(yùn)含巨量信息,可以對(duì)圖片增加其信息。
LDSR
中文名為潛在擴(kuò)散超分辨率模型,放大器們中唯一和diffusion模型靠邊的,它出現(xiàn)于stable diffusion的v1.4版本。如果你讀過(guò)前倆篇,我們知道擴(kuò)散模型的前向過(guò)程是對(duì)圖像的破壞,而反向過(guò)程是對(duì)圖像的復(fù)原,你馬上就聯(lián)想到了上文我們提到的人工智能有關(guān)的放大器的通用原理,可以說(shuō)擴(kuò)散模型是天生適合干這件事的。但是基于diffusion的超分辨率相關(guān)工作還不是很成熟,目前存在一些缺點(diǎn)。
LDSR雖然能提供不錯(cuò)的放大效果(寫(xiě)實(shí)類(lèi)),但是非常緩慢,不是很推薦。
R-ESRGAN 4x+
中文名為真實(shí)-增強(qiáng)型超分辨率生成對(duì)抗網(wǎng)絡(luò)模型(R-ESRGAN),R-ESRGAN 4x是ESRGAN的增強(qiáng)版。GAN在這方面發(fā)展很早,所以效果出色,能保留精細(xì)的細(xì)節(jié)并產(chǎn)生清晰銳利的圖像。而R-ESRGAN 4x在恢復(fù)各種真實(shí)世界圖像時(shí)有更強(qiáng)效果,能產(chǎn)生更平滑的圖像。
R-ESRGAN 4x+ Anime6B
上面的模型在6百萬(wàn)參數(shù)的動(dòng)漫數(shù)據(jù)集上訓(xùn)練的結(jié)果,理論上相對(duì)上面能在二次元風(fēng)格的圖片上產(chǎn)生更優(yōu)秀的效果。
以上倆個(gè)放大模型你可能需要前往設(shè)置進(jìn)行添加

SwinIR_4x
基于,但是各方面性能打不過(guò)上面?zhèn)z
放大步數(shù)/Hires steps

你可以理解為我們?cè)趫D像進(jìn)行放大后基于該圖像進(jìn)行了二次生成
這個(gè)Hires steps就是我們二次生成時(shí)的步數(shù),如果數(shù)值保持為0,就代表和原有步數(shù)相同。
步數(shù)對(duì)最終圖像影響很大,所以生成圖片時(shí)還請(qǐng)自行嘗試對(duì)你模型和提示詞和采樣方法比較適合的步數(shù)。
如果你是個(gè)懶人直接置0即可。
去噪強(qiáng)度/Denoising strength
這個(gè)選項(xiàng)只使用于latent
系列的放大器,也就是說(shuō)如果你用ESRGAN就可以忽略本項(xiàng)。它將控制我們?cè)谶M(jìn)行Hires步數(shù)前,往latent
空間的圖像信息添加的噪聲強(qiáng)度,通常該值處于0.5-0.8時(shí)效果較好。
放大倍數(shù)/Upscale by

注意一下這個(gè),表示你最終圖片的像素大小
放大至/Resize width height to
如果啟用這個(gè),上面的方法倍數(shù)就會(huì)失效,方便微調(diào)

經(jīng)驗(yàn)總結(jié)
當(dāng)我們?cè)噲D生成高像素級(jí)別圖片時(shí),我們?nèi)匀蛔宻table diffusion生成一張512X768附近的圖片,然后通過(guò)高清修復(fù)再次生成至更大的圖片
當(dāng)我們生成真實(shí)圖片時(shí),我們一般采用R-ESRGAN 4x+,當(dāng)我們生成二次元圖片時(shí)我們一般采用R-ESRGAN 4x+ Anime6B

這是個(gè)非常有用的功能,設(shè)計(jì)到對(duì)圖像的微調(diào)
Seed影響你生成時(shí)潛在空間生成的隨機(jī)圖像(噪聲),理論上同樣的Seed和然后其他參數(shù)不變時(shí)會(huì)產(chǎn)生一樣的結(jié)果。(生成看似在玄學(xué)抽卡,實(shí)際每一步都有數(shù)學(xué)支撐)
注意Seed受到eta noise seed delta影響
在該值不為零時(shí)起到固定初始值的作用,這樣你就可以使用相同值還原某些其它人使用了對(duì)應(yīng)eta值的圖片(通過(guò)相同的seed)
注意使用了祖先采樣的采樣器(ancestral samplers)同樣的seed可能產(chǎn)生差別
Seed值在為-1
時(shí)代表隨機(jī)生成一個(gè)Seed
示例:
我們以-1為seed生成一張圖

下方出現(xiàn)的圖片信息表示這張圖的seed為632817208


為什么說(shuō)它很有用呢?
因?yàn)槟憧梢栽谶@個(gè)seed的基礎(chǔ)上采用不同prompt或者采樣步數(shù)或者超分來(lái)得到你想要的差異化結(jié)果。

上圖倆按鈕,一個(gè)用于隨機(jī)生成種子(骰子),一個(gè)用于獲取上張圖的種子(回收)
附加/Extra
如果你點(diǎn)擊了附加/Extra
就會(huì)看到擴(kuò)展欄

種子變異/Variation seed
你想使用的變異種子,規(guī)則和seed一致
變異強(qiáng)度/Variation strength
變異種子和原種子的差異強(qiáng)度,為0時(shí)為原種子,為1時(shí)是新種子
這里有個(gè)技巧,首先我們seed設(shè)置為1進(jìn)行生成,我的提示詞里有red eyes

然后我們seed修改為3,進(jìn)行生成,發(fā)現(xiàn)姿勢(shì)變化了


然后我們?cè)诜N子變異欄里填上1,變異強(qiáng)度設(shè)置為1,便得到了和第一張一樣的圖


那我們把變異強(qiáng)度修改為0.5又會(huì)如何,得到了貌似是倆者之間的圖(至少與兩者有所關(guān)聯(lián))


調(diào)整種子大小
這個(gè)功能挺有用,其原理與上文提到調(diào)整圖片大小類(lèi)似,將隱空間大小進(jìn)行改變,但是我們生成的圖片的尺寸沒(méi)有變化。通常,當(dāng)改變分辨率時(shí),圖像會(huì)完全改變,即使保留了包括種子在內(nèi)的所有其他參數(shù)。通過(guò)調(diào)整種子大小,可以指定原始圖像的分辨率,而且模型很可能會(huì)產(chǎn)生與之非常相似的結(jié)果,即使在不同的分辨率下也是如此。
例子:
Seed resize not enabled

Seed resized from 512x512

批量生成

上面的按鈕是生成次數(shù),下面的按鈕是每次數(shù)量
理論上講,顯存夠的話每次數(shù)量越高總體生成數(shù)量越快,但是每增加每次數(shù)量都會(huì)加大顯存消耗
一些值得注意的是
批量生成時(shí)指定種子后,第二張圖將會(huì)是當(dāng)前種子數(shù)+1,第三張以此類(lèi)推
批量生成時(shí)如果指定了種子變異,第二張圖將會(huì)是當(dāng)前種子變異數(shù)+1,第三張以此類(lèi)推
通過(guò)批量生成+指定種子或種子變異可以在一個(gè)可控的范圍內(nèi)不斷修改畫(huà)面,方便使用者達(dá)到想要的效果。
腳本/Script

webui提供了一系列腳本來(lái)方便生成,該功能非常好用,建議魔法師一定要學(xué)會(huì)。
描述詞矩陣/Prompt matrix
使用|
分離多個(gè)提示詞,系統(tǒng)將會(huì)組合每個(gè)提示詞用來(lái)生成圖像。
例子:
a busy city street in a modern city|illustration|cinematic lighting
會(huì)生成四幅圖像,分別為
a busy city street in a modern city
a busy city street in a modern city, illustration
a busy city street in a modern city, cinematic lighting
a busy city street in a modern city, illustration, cinematic lighting

生成圖片:

載入描述詞/Prompts from file or textbox
可以通過(guò)此腳本創(chuàng)建一個(gè)列表用于順序生成
例子
輸出:
以下參數(shù)受到支持:
創(chuàng)建具有不同參數(shù)的多個(gè)圖像網(wǎng)格。X 和 Y 用作行和列,而 Z 網(wǎng)格用作批處理維度(次數(shù))。

使用X類(lèi)型、Y類(lèi)型和Z類(lèi)型字段選擇應(yīng)由行、列和批次使用的參數(shù),并將這些參數(shù)以逗號(hào)分隔輸入到X/Y/Z值字段中。
范圍:
括號(hào)中帶有增量的范圍:
方括號(hào)內(nèi)包含計(jì)數(shù)的范圍:

第一個(gè)按鈕用于回收上次的prompt
第二個(gè)按鈕用于清除prompt
第三個(gè)按鈕用于展示額外網(wǎng)絡(luò)結(jié)構(gòu)(之后再講)
第五個(gè)按鈕用于將當(dāng)前prompt保存為預(yù)設(shè),可以從styles中調(diào)用
第四個(gè)按鈕則是啟用當(dāng)前styles,也就是啟用預(yù)設(shè)
生成圖片下方的按鈕

想必大家一看便懂,不多贅述
由于圖生圖與文生圖有很多功能和選項(xiàng)是一致的,所以下文只列出有差異的選項(xiàng)

詢(xún)問(wèn)/Interrogate
webui提供了倆種詢(xún)問(wèn)途徑,分別是詢(xún)問(wèn)CLIP和詢(xún)問(wèn)DeepBooru,這里涉及到了CLIP和DeepBooru倆個(gè)熱門(mén)的模型,有必要詳細(xì)講講。
詢(xún)問(wèn)CLIP
模態(tài)是指數(shù)據(jù)的存在形式,簡(jiǎn)單的來(lái)說(shuō),文本和視覺(jué)各自是一種模態(tài)。讀過(guò)第一篇的朋友已經(jīng)知道,CLIP模型是一個(gè)結(jié)合人類(lèi)語(yǔ)言和計(jì)算機(jī)視覺(jué)的模型,它的存在意義就是為了幫助我們進(jìn)行跨模態(tài),即是從文本到圖片,或者從圖片到文本進(jìn)行對(duì)應(yīng)。
那么其中的一種應(yīng)用是一張圖片交給CLIP就能輕松地被CLIP判別給對(duì)應(yīng)的文本,這也就是詢(xún)問(wèn)CLIP的本質(zhì)。
例子:
首先上傳圖片

點(diǎn)擊

獲得

詢(xún)問(wèn)DeepBooru
DeepBooru則是動(dòng)漫風(fēng)格的女孩圖像標(biāo)簽估計(jì)系統(tǒng)(DeepDanbooru)
專(zhuān)用于二次元,專(zhuān)用于二次元圖片生成標(biāo)簽,二次元專(zhuān)業(yè)戶
上圖的對(duì)應(yīng)結(jié)果:

clip注重畫(huà)面內(nèi)的聯(lián)系,生成的自然語(yǔ)言描述
DeepBooru則是對(duì)二次元圖片生成標(biāo)簽,對(duì)二次元的各種元素把握很好
注意如果你沒(méi)有使用基于novelai泄露的模型(該模型在訓(xùn)練時(shí)大量使用了DeepBooru的數(shù)據(jù)和對(duì)應(yīng)的二次元圖片),使用DeepBooru似乎不是明智的行為。

四種圖像處理方式
拉伸 --簡(jiǎn)單的將圖片縮放至指定比例,不保證原圖尺寸比
裁剪--將圖片按比例進(jìn)行縮放,多余的直接裁剪掉
填充--將圖片按比例進(jìn)行縮放,缺少的部分填充
直接縮放(放大)--其實(shí)與前面三個(gè)不同,這個(gè)是用于圖像超分辨率的快捷選項(xiàng),低顯存謹(jǐn)慎使用
去噪強(qiáng)度/Denoising strength

換了一個(gè)漢化腳本,翻譯成了重繪程度,雖然意思到了,但明顯翻譯沒(méi)按詞來(lái)
這里的去噪強(qiáng)度和之前我們?cè)谖纳鷪D里高清修復(fù)里的重繪強(qiáng)度是一致的
范圍0-1,數(shù)值越大代表離原圖距離越遠(yuǎn)
采樣步數(shù)/Sampling steps
基本與文生圖相同
值得注意的是,在默認(rèn)情況下重繪程度低的時(shí)候,實(shí)際采樣步數(shù)會(huì)下降
具體公式為采樣步數(shù)X去噪強(qiáng)度=實(shí)際采樣強(qiáng)度
我認(rèn)為這是十分合理的調(diào)整,如果不喜歡可以在設(shè)置里進(jìn)行更改
相關(guān)設(shè)置

腳本/Script

圖生圖的替代測(cè)試/img2img alternative test
一個(gè)非常雞肋的功能,用于prompt微調(diào),可以看看你的圖片如果換了某個(gè)prompt大概的效果是什么樣
其過(guò)程是對(duì)原圖進(jìn)行加噪破壞然后進(jìn)行減噪生成

我直接上例子吧

生成結(jié)果(生成的圖的prompt的提示詞被覆寫(xiě)為a girl ,yellow eyes)

也是一個(gè)相當(dāng)雞肋的功能

相當(dāng)于用腳本幫你多次回環(huán)生成(上次生成的結(jié)果作為輸入再次進(jìn)行生成)
可以調(diào)整迭代次數(shù)和降噪系數(shù)
降噪系數(shù)的調(diào)整范圍為0.9-1.1,相當(dāng)于把上的降噪系數(shù)乘上這個(gè)調(diào)整值獲得當(dāng)前的調(diào)整系數(shù)

效果稍差的向外繪制/Poor man's outpainting

和圖示相同用于一張圖片向外拓展像素,蒙版我認(rèn)為是沒(méi)啥影響的,如果選用原圖作為蒙版也許會(huì)色彩更豐富,用噪聲的話也許有驚喜。
例子如下:

需要注意的是,與正常生成不同,outpainting似乎非常依賴(lài)高步數(shù),如下圖


上面的outpainting的改進(jìn)版,翻譯把我該干的事干完了,直接看圖吧
使用SD放大/SD upscale

非常雞肋的功能
運(yùn)行后的步驟為
將圖像進(jìn)行放大2,3,4倍
將圖像按指定的寬高進(jìn)行分割成數(shù)個(gè)片段
將每個(gè)片段都做一次圖生圖
然后將片段拼回,達(dá)成放大效果
可以說(shuō)是非常具有自覺(jué)性的放大方式,但是直覺(jué)要是有用的話還要數(shù)學(xué)干什么?
由于這種操作要計(jì)算每次分割的塊,否則會(huì)造成重疊過(guò)多,但是重疊過(guò)少連貫性也會(huì)下降
所以產(chǎn)生了如下例子

作用后

草繪/Sketch
局部繪制/Inpaint
局部草繪/Inpaint sketch
Inpaint upload
這幾個(gè)屬于img2img的二次開(kāi)發(fā),如果理解img2img這些也沒(méi)有難度
Batch
img2img的快捷批量處理
圖像增強(qiáng)/Extras
翻譯顯然對(duì)相關(guān)領(lǐng)域理解不夠深入,翻譯成了附加功能(雖然可能理解錯(cuò)誤的是我)

前面文生圖高清修復(fù)和前面圖生圖放大的非隱空間版
當(dāng)然,放大器自然也去掉了Latent系列

基本上所有的按鈕前面都有講解,所以略過(guò)
圖片信息/PNG Info

凡是webui或者novelai生成出來(lái)的圖都在元文件信息位置詳細(xì)介紹了這張圖的生成信息
值得注意的是,生成信息還包括了是否來(lái)自webui還是novelai,只不過(guò)webui沒(méi)有把這部分信息展現(xiàn)出來(lái),建議用相關(guān)軟件查看
模型合并/Checkpoint Merger

該區(qū)域用來(lái)合并模型,其規(guī)則都有些,如果你前面的部分都看過(guò)了,對(duì)這里應(yīng)該沒(méi)有理解難度
設(shè)置/setting

如果你看完了本篇文章和前面的倆篇文章,我可以保證setting
里的選項(xiàng)對(duì)你來(lái)說(shuō)毫無(wú)理解難度,現(xiàn)在就打開(kāi)setting
自定義你的webui吧

本篇從webui的按鈕入手,算是直接把前面兩篇的內(nèi)容串起來(lái)了,不知道有沒(méi)有增進(jìn)你們的理解呢~
至于訓(xùn)練相關(guān)和拓展相關(guān)就第四篇見(jiàn)面吧~