碼字不易,SD 保姆教程,從原理功能到案例輸出展示,最后簡(jiǎn)述 ControlNet 的使用技巧,圖文約 1 萬 5 千字左右,閱讀時(shí)長(zhǎng)約 20 分鐘~
Stable Diffusion 的基本介紹
首先官方給出的解釋是:
這和 MJ 有什么區(qū)別
為了更方便的理解我們將 Stable Diffusion 與 Midjourney 做一個(gè)對(duì)比
1. 提示詞:
提示詞分為兩個(gè)部分
正向提示詞:
生成圖像時(shí),我們可以使用正向提示詞來指定想要生成的圖像。正向提示詞可以是腦子里想到的圖片或一句話,將其拆分成不同的關(guān)鍵詞,并用逗號(hào)隔開作為輸入。
需要注意的是,相同的指令在不同的模型庫(kù)和參數(shù)下,生成的輸出圖像可能會(huì)不一樣。此外,提示詞的順序也非常重要,因?yàn)樗鼈兊捻樞驎?huì)影響到生成圖像的權(quán)重。通常情況下,越靠前的提示詞權(quán)重越大,越靠后的提示詞權(quán)重越小。
排除詞:
輸入框內(nèi)輸入的標(biāo)簽內(nèi)容就是你畫面中不想要出現(xiàn)的東西,如:低質(zhì)量的,缺手指,五官不齊等等
下圖給大家做一個(gè)案例演示
提示詞拆分:
①對(duì)于使用提示詞生成圖像生成的小伙伴來說,當(dāng)看到喜歡的圖像或腦海中想到很多畫面,但卻不知道如何用提示詞準(zhǔn)確描述,現(xiàn)在有三種方法可以幫助大家快速拆分和生成圖像。
Stable Diffusion 中自帶反推功能,可以通過將想要拆分的圖像拖入反推,點(diǎn)擊按鈕來獲得生成該圖像的提示詞。第一次使用可能會(huì)有些慢,需要稍等片刻。需要注意的是,這些提示詞需要進(jìn)行后期的優(yōu)化,常用的方法是通過百度翻譯后進(jìn)行增刪改,或者輸入到 GPT 中進(jìn)行優(yōu)化,優(yōu)化后將提示詞放入相應(yīng)的框內(nèi)進(jìn)行圖像輸出。
②第二種方法我們可以借助三方網(wǎng)站:https://replicate.com/
來進(jìn)行拆分,拆分好后,同第一條一樣,進(jìn)行一個(gè)增刪改,然后我們對(duì)兩種方法進(jìn)行比較,通過比較后,我們可以進(jìn)行詞匯的篩選與合并
③利用 gpt 或文心等相關(guān)工具,將想要描述的長(zhǎng)句輸入,最后加一句描述,請(qǐng)將這句話拆分為 Stable Diffusion 的提示詞,如果不滿意可以繼續(xù)恢復(fù)優(yōu)化提示詞,或者換一批相關(guān)描述,然后將轉(zhuǎn)換好的提示詞同 ①一樣增刪改
2. 符號(hào)的使用
正如前文所述,詞匯在提示中的位置越靠前,其所占的權(quán)重就越大。為了進(jìn)一步調(diào)整提示關(guān)鍵詞的權(quán)重,我們可以通過以下語法來設(shè)置關(guān)鍵詞的權(quán)重:在選中關(guān)鍵詞的同時(shí),按下鍵盤上的 Ctrl+?? ??來快速調(diào)整權(quán)重。每次調(diào)整的權(quán)重值為0.1,建議將權(quán)重值控制在0.7-1.4之間。簡(jiǎn)單來說,將每個(gè)提示詞看作一個(gè)獨(dú)立的個(gè)體,權(quán)重默認(rèn)為1,而后面的數(shù)值就相當(dāng)于在修改這個(gè)默認(rèn)值。當(dāng)然,我們也可以將權(quán)重調(diào)整為負(fù)數(shù),從而在提示中產(chǎn)生與原意相反的影響。
通過這種方法,我們可以更加精確地控制提示關(guān)鍵詞的權(quán)重,以達(dá)到更好的提示效果。同時(shí),我們也需要注意保持提示內(nèi)容的流暢性和自然性,避免過度的修改導(dǎo)致提示內(nèi)容的語義不連貫或不符合實(shí)際情況。
3. 圖像的輸出
畫面的信息量取決于輸出圖片的大小。在全身構(gòu)圖中,一些細(xì)節(jié),例如臉部、飾品和復(fù)雜的紋樣,只有在較大的圖像中才能得到充分的展示空間,如圖像太小,臉部,手部,一些細(xì)節(jié)就會(huì)被壓縮成一團(tuán),無法得到充分的表現(xiàn),以下圖的風(fēng)景為例,當(dāng)畫幅越大時(shí),展示的內(nèi)容越多。
1. 采樣迭代步數(shù)
輸出畫面需要的步數(shù),每一次采樣步數(shù)都是在上一次的迭代步驟基礎(chǔ)上繪制生成一個(gè)新的圖片,一般來說采樣迭代步數(shù)保持在 18-30 左右即可,低的采樣步數(shù)會(huì)導(dǎo)致畫面計(jì)算不完整,高的采樣步數(shù)僅在細(xì)節(jié)處進(jìn)行優(yōu)化,對(duì)比輸出速度得不償失。
2. 采樣方法的介紹
常用的有三種,分別是 Euler a,DPM++2S a Karras 和 DDI
Euler a:
①Euler a 是一種用于控制時(shí)間步長(zhǎng)大小的可調(diào)參數(shù),在 Stable Diffusion 中采用 Euler 時(shí)間步長(zhǎng)采樣方法。適當(dāng)?shù)?Euler a 值能夠捕捉到細(xì)節(jié)和紋理,但如果值太大會(huì)導(dǎo)致過度擬合,生成圖像出現(xiàn)噪點(diǎn)等不良效果。
②一句話概括:采樣生成速度最快,但是如果說在高細(xì)節(jié)圖增加采樣步數(shù)時(shí),會(huì)產(chǎn)生不可控突變(如人物臉扭曲,細(xì)節(jié)扭曲等)
適合:ICON,二次元圖像,小場(chǎng)景
下圖為大家展示同提示詞不同步幅
DPM++2S a Karras:
①采用 DPM++2S a Karras 采樣方法生成高質(zhì)量圖像,該方法在每個(gè)時(shí)間步長(zhǎng)中執(zhí)行多次操作,同等分辨率下細(xì)節(jié)會(huì)更多,比如可以在小圖下塞進(jìn)全身,代價(jià)是采樣速度更慢
②適合:寫實(shí)人像,復(fù)雜場(chǎng)景刻畫
下圖展示 elura a 同提示詞不同步幅下的輸出圖像,可以看到步幅越高,細(xì)節(jié)刻畫越好
DDIM
①DDIM 采樣方法可以快速生成高質(zhì)量的圖像,相比其他采樣方法具有更高的效率,想嘗試超高步數(shù)時(shí)可以使用,隨著步數(shù)增加可以疊加細(xì)節(jié)
②適合:寫實(shí)人像,復(fù)雜場(chǎng)景刻畫
下圖為大家展示 DDIM 同提示詞不同步幅下的輸出圖像,可以看到隨著步幅的提高,細(xì)節(jié)和豐富度逐漸提高
3. 提示詞相關(guān)性
Stable Diffusion 中的提示詞相關(guān)性指的是輸入提示詞對(duì)生成圖像的影響程度。當(dāng)我們提高提示詞相關(guān)性時(shí),生成的圖像將更符合提示信息的樣子;相反,如果提示詞相關(guān)性較低,對(duì)應(yīng)的權(quán)重也較小,則生成的圖像會(huì)更加隨機(jī)。因此,通過調(diào)整提示詞相關(guān)性,可以引導(dǎo)模型生成更符合預(yù)期的樣本,從而提高生成的樣本質(zhì)量。
①在具體應(yīng)用中,對(duì)于人物類的提示詞,一般將提示詞相關(guān)性控制在 7-15 之間;
②而對(duì)于建筑等大場(chǎng)景類的提示詞,一般控制在 3-7 左右。這樣可以在一定程度上突出隨機(jī)性,同時(shí)又不會(huì)影響生成圖像的可視化效果。因此,提示詞相關(guān)性可以幫助我們通過引導(dǎo)模型生成更符合預(yù)期的樣本,從而提高生成的樣本質(zhì)量。
4. 隨機(jī)種子
隨機(jī)種子是一個(gè)可以鎖定生成圖像的初始狀態(tài)的值。當(dāng)使用相同的隨機(jī)種子和其他參數(shù),我們可以生成完全相同的圖像。設(shè)置隨機(jī)種子可以增加模型的可比性和可重復(fù)性,同時(shí)也可以用于調(diào)試和優(yōu)化模型,以觀察不同參數(shù)對(duì)圖像的影響。
在 Stable Diffusion 中,常用的隨機(jī)種子有-1 和其他數(shù)值。當(dāng)輸入-1 或點(diǎn)擊旁邊的骰子按鈕時(shí),生成的圖像是完全隨機(jī)的,沒有任何規(guī)律可言。而當(dāng)輸入其他隨機(jī)數(shù)值時(shí),就相當(dāng)于鎖定了隨機(jī)種子對(duì)畫面的影響,這樣每次生成的圖像只會(huì)有微小的變化。因此,使用隨機(jī)種子可以控制生成圖像的變化程度,從而更好地探索模型的性能和參數(shù)的影響。
在工作產(chǎn)出中,如果細(xì)微調(diào)整,我們將會(huì)固定某個(gè)種子參數(shù)然后進(jìn)行批量生成
Checkpoint,VAE,embedding 和 lora 的使用詳解
2. Checkpoint 的介紹
對(duì)于模型作者而言,訓(xùn)練模型通常指生成 Checkpoint 文件。這些文件包含了模型參數(shù)和優(yōu)化器狀態(tài)等信息,是訓(xùn)練過程中定期保存的狀態(tài)快照。
對(duì)于使用者而言,可以將 Checkpoint 文件理解為一種風(fēng)格濾鏡,例如油畫、漫畫、寫實(shí)風(fēng)等。通過選擇對(duì)應(yīng)的 Checkpoint 文件,您可以將 Stable Diffusion 模型生成的結(jié)果轉(zhuǎn)換為您所選擇的特定風(fēng)格。需要注意的是,一些 Checkpoint 文件可能需要與特定的低碼率編碼器(如 Lora)配合使用,以獲得更好的效果。
在下載 Checkpoint 文件時(shí),您可以查看相應(yīng)的模型簡(jiǎn)介,通常作者會(huì)提供相應(yīng)的文件和說明事項(xiàng),以幫助您更好地使用和理解該文件。
總之,Checkpoint 文件是 Stable Diffusion 模型訓(xùn)練過程中定期保存的狀態(tài)快照,使用者可以將其理解為一種風(fēng)格濾鏡,用于將模型輸出結(jié)果轉(zhuǎn)換為特定的風(fēng)格。在使用 Checkpoint 文件時(shí),需要注意文件的匹配和相應(yīng)的使用說明。
3. VAE 的介紹
可以將 VAE 理解為對(duì)模型的濾鏡加微調(diào),不同的 VAE 可能有一些細(xì)節(jié)上的差異,但不會(huì)影響輸出的效果。
它可以增強(qiáng)模型的表現(xiàn),有些模型文件已經(jīng)自帶了 VAE 效果,因此不需要盲目地去掛載,可以選擇自動(dòng)模式來簡(jiǎn)化日常使用。
4. embedding 的介紹
如果你有做過 UI 的經(jīng)驗(yàn),那么你應(yīng)該知道組件的概念。在 Stable Diffusion 中,embedding 技術(shù)就可以被理解為一種組件,它可以將輸入數(shù)據(jù)轉(zhuǎn)換成向量表示,方便模型進(jìn)行處理和生成。
舉個(gè)例子,如果我們想要生成一個(gè)開心的皮卡丘,通常需要輸入很多描述詞,如黃毛、老鼠、長(zhǎng)耳朵、腮紅等等。但是,如果引入皮卡丘的 embedding,我們只需要輸入兩個(gè)詞:皮卡丘和開心。皮卡丘的 embedding 打包了所有皮卡丘的特征描述,這樣我們就不用每次輸入很多單詞來控制生成的畫面了。
在日常使用中,embedding 技術(shù)通常用于控制人物的動(dòng)作和特征,或者生成特定的畫風(fēng)。相比于其他模型(如 LORA),embedding 的大小只有幾十 KB,而不是幾百兆或幾 GB,除了還原度對(duì)比 lora 差一些但在存儲(chǔ)和使用上更加方便。
總之,embedding 技術(shù)將輸入數(shù)據(jù)轉(zhuǎn)換為向量表示,為模型的處理和生成提供了便利。通過使用 embedding,我們可以更加輕松地生成符合預(yù)期的樣本,而不需要手動(dòng)輸入大量的描述詞匯。
5. LORA 的介紹
LORA 與 embedding 在本質(zhì)上類似,因?yàn)閿y帶著大量的訓(xùn)練數(shù)據(jù),所以 LORA 對(duì)人物和細(xì)節(jié)特征的復(fù)刻更加細(xì)膩
使用技巧:
通常來說,每個(gè) LORA 模型都有對(duì)應(yīng)的底膜和觸發(fā)詞匯。我們可以查看 LORA 作者產(chǎn)出的相關(guān)圖片,從中獲取模型信息,并從中選擇一些提示詞和排除詞來指定生成圖像的方向。需要注意的是,每個(gè) LORA 模型對(duì)輸出圖像的權(quán)重設(shè)置是非常重要的。權(quán)重設(shè)置越大,對(duì)畫面的影響因素就越淺。通常情況下,權(quán)重應(yīng)該控制在 0.7-1 之間。如果權(quán)重過高,會(huì)大幅度影響出圖的質(zhì)量。
為了獲得最佳效果,我們可以根據(jù)不同的 LORA 模型選擇適當(dāng)?shù)奶崾驹~和排除詞,并在設(shè)置權(quán)重時(shí)進(jìn)行調(diào)整。同時(shí),我們還可以參考其他作者的經(jīng)驗(yàn)和技巧,以便更好地利用 LORA 生成圖像。
簡(jiǎn)介:
是一種生成圖像的方法,它可以通過對(duì)已有的圖像進(jìn)行修改或變形,生成新的圖像。在 Stable Diffusion 中,我們可以將墊圖的圖像看作是一張“初始圖像”,通過多次迭代,對(duì)其進(jìn)行修改和變形,逐步生成與墊圖風(fēng)格類似想要的圖片。
需注意的是圖生圖相對(duì)于文生圖多出兩個(gè)功能
重繪幅度:
指的是每次迭代中圖像被重新繪制的程度或幅度,也就是新生成的圖像與上一次迭代生成的圖像之間的差異程度。
它的取值范圍在 0 到 1 之間。當(dāng) 值等于 0 時(shí),新生成的圖像與上一次迭代生成的圖像完全一致,即沒有重新繪制;
當(dāng)值等于 1 時(shí),新生成的圖像與上一次迭代生成的圖像完全不同,即完全重新繪制。
需要注意的是,重繪幅度的大小會(huì)影響生成圖像的質(zhì)量和逼真程度。當(dāng)重繪幅度較小時(shí),生成的圖像可能會(huì)比較模糊或粗糙;
當(dāng)重繪幅度較大時(shí),生成的圖像可能會(huì)出現(xiàn)明顯的噪點(diǎn)或瑕疵。
縮放模式:
拉伸:不改變寬高比的前提下將圖片拉伸,寬度高度充滿畫面空間的 100%
裁剪:保留寬高比的基礎(chǔ)上,然后裁剪掉超出去的部分,使用時(shí)我們可以提前調(diào)整好輸出圖片的寬高比例
填充:它指在縮放圖像時(shí),將原始圖像放置在目標(biāo)尺寸的中心位置,多出去的部分用一定的顏色值(通常為黑色)填充周圍的空白區(qū)域。
直接縮放:
①指對(duì)圖像進(jìn)行簡(jiǎn)單的縮放處理,即直接將原始圖像縮放到目標(biāo)尺寸。
②在 Stable Diffusion 中,如果生成的圖像尺寸與原始圖像尺寸不一致,就需要進(jìn)行縮放處理。直接縮放是一種簡(jiǎn)單粗暴的縮放方式,它直接將原始圖像縮放到目標(biāo)尺寸,不進(jìn)行任何額外的處理。這種縮放方式的優(yōu)點(diǎn)是簡(jiǎn)單快速,但缺點(diǎn)是可能會(huì)導(dǎo)致圖像失真或模糊,特別是當(dāng)縮放比例較大時(shí)。
1. 圖生圖
主要用來做圖片放大和造型背景的變化,或者三次元改二次元時(shí)用的,通常配合著 ControlNet 來使用
2. 繪圖
通過手動(dòng)繪制或修改圖像的局部區(qū)域,來指導(dǎo)生成器生成更加符合用戶期望的圖像,使用時(shí)可以利用繪圖工具,如筆刷、橡皮擦等,對(duì)圖像的局部區(qū)域進(jìn)行修改。修改后的圖像會(huì)被作為下一次迭代的初始圖像,從而影響后續(xù)的圖像生成過程。
通過繪圖,可以更加精細(xì)地控制生成圖像的細(xì)節(jié)和特征,從而獲得更符合預(yù)期輸出
3. 局部重繪
也稱為上傳蒙版法,提前在作圖軟件里用畫筆涂抹好需要重新繪制的區(qū)域,黑色區(qū)域表示需要修復(fù)的區(qū)域,白色區(qū)域表示不需要修復(fù)的區(qū)域
(注意:因此只需要在需要修復(fù)的區(qū)域涂黑色,其他區(qū)域可以涂白或保留原始顏色。上傳蒙版的話也只需在繪圖軟件里把需要修復(fù)的區(qū)域涂黑即可)
局部重繪的目的是盡可能地保留原始圖像的結(jié)構(gòu)和紋理特征,使修復(fù)后的圖像更加自然和真實(shí)。
4. 批量處理
指使用已有的圖像生成新的圖像。而圖生圖的批量處理是指同時(shí)對(duì)多張輸入圖像進(jìn)行圖生圖操作,生成對(duì)應(yīng)的多張輸出圖像。
相關(guān)教程:
1. ControlNet 基礎(chǔ)知識(shí)
一圖搞定插件安裝
權(quán)重:
ControlNet 的權(quán)重與圖生圖權(quán)重的對(duì)比關(guān)系時(shí)
- 低重繪強(qiáng)度配高權(quán)重,可以鎖定圖片的細(xì)節(jié),更改畫風(fēng)上的展現(xiàn),拓展延伸推薦
- 高重回強(qiáng)度配低權(quán)重,修改圖片細(xì)節(jié),定風(fēng)格圖后小修改推薦
預(yù)處理器與模型的關(guān)系:
使用預(yù)處理器時(shí)要與模型一一對(duì)應(yīng)起來,如與處理器選擇 canny,則相對(duì)應(yīng)的模型也要選擇 canny
預(yù)處理器和模型在 Stable Diffusion 中是相輔相成的,預(yù)處理器通過對(duì)輸入圖像進(jìn)行預(yù)處理和數(shù)據(jù)增強(qiáng),為模型提供了更好的輸入,而模型則通過對(duì)輸入進(jìn)行特征提取和生成高質(zhì)量圖像,為預(yù)處理器提供了更好的反饋
介入時(shí)機(jī)和退出時(shí)機(jī):
介入時(shí)機(jī):代表第幾步介入對(duì)畫面的影響退出時(shí)機(jī):代表第幾步退出對(duì)畫面的影響
如,現(xiàn)在是一個(gè)生成步幅為 30 步的圖像
現(xiàn)在介入時(shí)機(jī)為 0.2,則從 30x0.2=6,第六步的時(shí)候 ControlNet 開始介入
現(xiàn)在退出時(shí)機(jī)為 0.8,則從 30x0.8=24,第二十四步的時(shí)候 ControlNet 退出對(duì)輸出的介入
2. Canny 邊緣檢測(cè)
Canny 是一種經(jīng)典的邊緣檢測(cè)算法,能夠很好地識(shí)別出圖像中的邊緣信息,對(duì)于圖像生成任務(wù)來說,可以幫助模型更好地生成具有清晰邊緣的圖像
處理圖片的方式是將圖片專為線稿,對(duì)于畫面細(xì)節(jié)不復(fù)雜的圖像來說很好;但處理復(fù)雜圖像時(shí),主體會(huì)容易被除主題元素以外的元素影響
細(xì)節(jié)刻畫上,一種是分辨率越高,線條越清晰;閾值越少,對(duì)應(yīng)的細(xì)節(jié)也越多
3. Hed 邊緣檢測(cè),細(xì)節(jié)保留
該算法的特點(diǎn)是能夠同時(shí)預(yù)測(cè)多個(gè)尺度的邊緣,從而提高了邊緣檢測(cè)的精度,對(duì)邊緣清晰的圖像生成效果更好
當(dāng)用草圖轉(zhuǎn)上色時(shí),可以在繪圖軟件將描邊加粗加深一些,從而能更方便獲取邊緣
4. MLSD 線性檢測(cè)
mlsd 模型,可以進(jìn)行直線檢測(cè),通過分析圖片的線條結(jié)構(gòu)來構(gòu)建出建筑外框,適合建筑設(shè)計(jì)的使用
可以配合 canny 一起使用,效果更佳
5. Open pose-人物擺 pose
判斷主圖的主體動(dòng)作,然后將動(dòng)作附加在主圖上 一般配合著 open pose editer
6. LeRes 深度信息估算
對(duì)有場(chǎng)景深度的圖片效果更佳,生成的圖像景深更易區(qū)分
隨著 AI 技術(shù)的快速發(fā)展,圖像生成領(lǐng)域的大型模型正在成為研究的熱點(diǎn),但是由于該領(lǐng)域的相對(duì)新穎和復(fù)雜性,相關(guān)的教程和資源目前還相對(duì)匱乏。希望本文可以幫助大家快速入門 Stable Diffusion,并為您提供一些有用的參考資料。
相信在不久的將來,一些真正具有商業(yè)價(jià)值的大模型將會(huì)涌現(xiàn)出來,為設(shè)計(jì)和其他領(lǐng)域帶來更多的創(chuàng)新和效益,最后,希望大家能不斷探索和學(xué)習(xí),掌握更多的技能和知識(shí),為設(shè)計(jì)賦能!
復(fù)制本文鏈接 文章為作者獨(dú)立觀點(diǎn)不代表優(yōu)設(shè)網(wǎng)立場(chǎng),未經(jīng)允許不得轉(zhuǎn)載。
熱評(píng) 離家出走的帆高