Stable Diffusion的Inpaint應用

導入:(實例部分可跳至正文)
首先用取自網(wǎng)絡的一張梗圖開篇吧。

我覺得這張圖非常微妙地點明了當前大多數(shù)人應用擴散模型進行圖像生成的尷尬境地:限制stable diffusion生產(chǎn)力的不是AI的算法,而是人的知識面。AI知道的攝影、繪畫、影視劇、打光、構圖、藝術歷史等方面的專業(yè)術語tag,可以說超過了絕大多數(shù)個體的知識面,因而普通人只能用模糊、抽象、概念性的prompt(描述詞,或曰咒語)去給AI描述畫面,然后不停地generate生成圖像來抽卡,希望從無數(shù)概率中抽出自己想要的圖像。
這顯然是低效的。(雖然開盲盒的快感也是SD有趣的一部分)
下圖是比較高效、成品率更高的SD應用方法。SD能做的遠比抽盲盒要多,合理借助其Inpaint部分重繪功能和外界工具(如PS),將會(在腦中有明確的目標構圖的情況下)大大提高成品率,同時讓我們有辦法處理AI畫出的小小瑕疵,而不至于忍痛割愛,丟棄那些明明瑕不掩瑜的好圖。

下面這篇文章就來講述inpaint的基礎用法。本文內(nèi)容基于個人實踐與網(wǎng)址(https://rentry.org/inpainting-guide-SD)中的指導。(原文配圖nsfw,但是配圖由于網(wǎng)絡原因打不開,故一般情況下可以安心點開。)

正文:
本文基于stable diffusion-webUI開源項目與stable diffusion1.4模型。
什么是inpaint:可理解為局部重繪,將畫面中被手工遮罩的部分重新繪制。
基本設置:在SD繪圖過程中,如果你發(fā)現(xiàn)了一張整體尚可、細節(jié)崩壞的圖,就可以使用“send to inpaint”按鈕開始局部重繪。
下面我們以這張圖為例,圖是自己偶然跑出來的。

單擊WebUI中的send to inpaint, 或者在inpaint界面中插入該圖片均可。
在網(wǎng)頁下方的設置中,勾選inpaint at full resolution, 同時將右側滑塊滑到一個不為零的數(shù)值。

然后,繪制遮罩,使用黑色遮罩將右側多出來的手臂蓋住,以備重繪。注意,如果是想用背景遮蓋瑕疵,應當在遮罩中涵蓋部分背景,寧多勿少,詳見下圖。即如果想重繪出和上下文相關的部分,需要把部分相關元素一起遮罩住。

隨后,我又以右下角的圖為基礎,對右側手臂部分進行了重繪。換了個不那么扭曲的手部。圖略。
最后解決手臂飛離問題,借助PS的魔棒工具選中手臂以及右半邊背景,向左側拖動即可。

拖動后,背景的煙霧等部分過渡有些不自然,可以再次通過inpaint解決,遮罩如圖所示,蓋住拖動后的邊緣即可:(或者也可借助PS的模糊、仿制圖章工具等,看個人喜好)

最終,得到的結果如圖所示。
