更新於 2023/05/18閱讀時間約 4 分鐘

Stable Diffusion進階 -- 臉崩修復

正文

通常我們在Stable Diffusion用特化的模組輸出人物正面肖像圖時,會得到很好的結果,例如一個典型的512X512圖片,只要正面提示詞用得夠多,就能產生出不錯的正面大臉:
512x512臉部肖像
512x512臉部肖像
但如果我們想要用這些模組來輸出人物的全身像,人物的臉過小,在畫面上會呈現崩潰的型態,例如下面這張,我用了一模一樣的面部提示詞,但讓人物騎在馬上,畫面就變成了:
 512X768的全身像,臉崩了
很明顯,整張畫面馬匹沒問題,衣服沒問題,光影沒問題,但是臉怎麼像是被流星鎚打過一樣呢?
這其實是因為,人腦是一個高超的面部判別器,可以在0.1秒之內辨別這張臉的瑕疵與不對稱。但是生成AI在訓練時並沒有針對遠方的臉做太多對抗訓練,對AI來說,臉上五官偏移一兩個像素一樣可以通過判別器的檢驗,但是這並逃不過人眼的美感鑑別。
那麼我們要怎麼修補這些崩掉的人臉呢?

解法

最簡單的方法就是將那些臉崩的圖片拉進Automatic1111的Extras標籤,裡面有個智慧放大功能,只要選擇適當的放大模組,就能自動修臉,而且也不用放太大,只要兩倍就效果卓越:
放大圖片功能
各種放大模組都有自己的強項,而我個人最喜歡的是很著名的4x-UltraSharp這個模組,可以在這個網址下載:
下載之後放進models/ESRGAN/目錄底下,再重新啟動Automatic1111就能選擇了。
之前臉崩的圖片智慧放大之後,效果就好了不少:
兩倍放大之後,臉好了不少
但是這樣的放大,其實並沒有照著你的提示詞來修改,而是靠模組自己的特性發揮,所以進化的美顏不一定符合你的想法,在這種時候,就要請出Inpaint來精細發揮了!
將圖傳進Inpaint標籤中,將你指定的正反面提示詞都打上去,用圈選工具將整張臉都選起來,在選單裡面選擇Inpaint Area: Only Masked,將Denoising strength調整在0.4以下,按下Generate來生成。
由於Inpaint Area被限制在Only Masked,Stable Diffusion會將面部先特意放大,再開始依照你的提示詞重繪。由於此時面部被放大到跟肖像畫一樣的程度,所以可以用最精細的方法繪畫,畫完之後再縮小鑲嵌回原畫中,就能做到非常高畫質的面部細節:
inpaint之後,眼睛與光影更細緻了
在這樣的修正下,不只是眼睛顏色重新還原到我指定的顏色,光影也更加仔細,面部線條更柔和,連斗篷上的打結也完美呈現出來。
本方法修正面部的效果卓越,但是用在其他肢體,例如手指或腳趾就完全不行,通常越修越糟糕,還不如自己拿起Photoshop或GIMP修圖來得快。
祝大家算圖快樂!

參照


進階技巧目錄:
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.