Stable Diffusion 算圖時,有時算出來的人臉都像是被揍過一樣!這其實是解析度過小的問題,我們可以透過 img2img upscale 加 inpaint 的手法來解決,只需要兩階段,一起來看看怎麼做吧!

第一階段:增加圖面解析度

以下這一張用 Stable Diffusion 畫出小朋友與老師的畢業合照,整張圖的解析度為 784 x 512。因為每個人臉所佔畫面(解析度)過小,就算我們 prompt 下再多 beautiful face 等關鍵字,Stable Diffusion 還是兩手一攤擺爛亂畫。

兩階段解決 Stable Diffusion 臉部問題

既然是解析度問題,我們設法增加臉部解析度試試能不能好轉,我們可以使用 img2img 將整張圖的解析度增加。

給定與原圖一樣的 prompt,denoising strength 可以調 0.5 附近,讓算圖結果與原圖差異不要太大。

延伸閱讀:如何用 Stable Diffusion 產生高解析度的圖?

下圖採用 denoising strength = 0.65,長寬 1568 x 1024,其他參數則與原圖相同。同時開啟 ControlNet openpose 固定人物肢體與排列 ,結果如下:

兩階段解決 Stable Diffusion 臉部問題

兩階段解決 Stable Diffusion 臉部問題

雖然人物的衣服改變了,但整體來說比之更好,衣服的質感也比較自然。同時發現臉部已經好很多,但還是偏呆滯,接下來我們用 Inpaint 來解決這個問題。

第二階段:使用 Inpaint 重繪臉部

Inpaint 原理是,我們在圖片上塗抹一個區域,告訴 AI 只需要幫我們重繪被遮住的區塊。如此即能在不動整個畫面的情況下,微調 AI 畫不好的小地方。

一樣在 img2img 頁面:

  • 切換子 tab 為 Inpaint
  • 將剛剛放大的圖片拖入 source
  • Mask mode 選擇 Inpaint masked
  • Mask content 選擇 original
  • Inpaint area 選擇 Only masked
  • Width、Height 都設定為 512
兩階段解決 Stable Diffusion 臉部問題

選擇 only masked 的原因是,我們讓 Stable Diffusion 用給定的長寬被遮住的部分,好處是:

  • 增加局部解析度:讓需要修改的地方,保證至少有 512x512 的解析度。如果選擇 all xxx,則會依照給定的長寬下去整張重畫,因為整個解析度分散到整張圖片上,反而需要修改的地方分到的解析度不夠高,並不能解決問題。
  • 節省算圖時間:當修改的地方不大時,只需要 512 ~ 768 等解析度就足夠修復區域問題,避免算整張圖耗費時間

如同上述,為了確保每張臉的解析度是足夠的,我們一次僅塗抹一張臉。

兩階段解決 Stable Diffusion 臉部問題

按下 Generate,就能修復好一張臉。

兩階段解決 Stable Diffusion 臉部問題

這邊有個小技巧,塗抹的面積要比臉部稍微大一點點,這樣重繪後的五官比較不會發生偏移而看起來怪怪的

兩階段解決 Stable Diffusion 臉部問題
左圖 mask 覆蓋範圍略大於臉部,讓 AI 重繪時能夠正確定位五官位置和外圍輪廓。右圖只有塗抹五官區域,因此整體位置發生偏移,很像古早的迷因 youtube hey apple

把修好一張臉的圖拖入 source,再塗抹下一張臉,不斷重複直到每張臉都修復完成!(這張圖臉實在有點多……)

兩階段解決 Stable Diffusion 臉部問題

重複多次後就能得到修復完成的圖了!會發現每張臉都長得一樣XD!若要得到有差異性的五官,每次修復時微調 prompt 即可!

兩階段解決 Stable Diffusion 臉部問題

與原始圖對比一下,進步非常多!

兩階段解決 Stable Diffusion 臉部問題

最後可以透過 Tiled Upscaling 的手法將圖再次放大,即能輸出高解析度的結果。大家試試看吧!

延伸閱讀

如何用 Stable Diffusion 產生高解析度的圖?
LoRA 是什麼?如何使用?| Stable Diffusion
最詳細的 Stable diffusion WebUI 操作教學 – txt2img
免費用 Google Colab 玩 Stable Diffusion WebUI
如何在 M1 Macbook 上跑 Stable Diffusion?

Written by J
雖然大學唸的是生物,但持著興趣與熱情自學,畢業後轉戰硬體工程師,與宅宅工程師們一起過著沒日沒夜的生活,做著台灣最薄的 intel 筆電,要與 macbook air 比拼。 離開後,憑著一股傻勁與朋友創業,再度轉戰軟體工程師,一手扛起前後端、雙平台 app 開發,過程中雖跌跌撞撞,卻也累計不少經驗。 可惜不是那 1% 的成功人士,於是加入其他成功人士的新創公司,專職開發後端。沒想到卻在採前人坑的過程中,拓寬了眼界,得到了深層的領悟。