2023-05-25|閱讀時間 ‧ 約 4 分鐘

兩階段解決 Stable Diffusion 臉部問題

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

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

以下這一張用 Stable Diffusion 畫出小朋友與老師的畢業合照,整張圖的解析度為 784 x 512。因為每個人臉所佔畫面(解析度)過小,就算我們 prompt 下再多 beautiful face 等關鍵字,Stable Diffusion 還是兩手一攤擺爛亂畫。
既然是解析度問題,我們設法增加臉部解析度試試能不能好轉,我們可以使用 img2img 將整張圖的解析度增加。
給定與原圖一樣的 prompt,denoising strength 可以調 0.5 附近,讓算圖結果與原圖差異不要太大。
下圖採用 denoising strength = 0.65,長寬 1568 x 1024,其他參數則與原圖相同。同時開啟 ControlNet openpose 固定人物肢體與排列 ,結果如下:
雖然人物的衣服改變了,但整體來說比之更好,衣服的質感也比較自然。同時發現臉部已經好很多,但還是偏呆滯,接下來我們用 Inpaint 來解決這個問題。

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

Inpaint 原理是,我們在圖片上塗抹一個區域,告訴 AI 只需要幫我們重繪被遮住的區塊。如此即能在不動整個畫面的情況下,微調 AI 畫不好的小地方。
一樣在 img2img 頁面:
  • 切換子 tab 為 Inpaint
  • 將剛剛放大的圖片拖入 source
  • Mask mode 選擇 Inpaint masked
  • Mask content 選擇 original
  • Inpaint area 選擇 Only masked
  • Width、Height 都設定為 512
選擇 only masked 的原因是,我們讓 Stable Diffusion 用給定的長寬 畫被遮住的部分,好處是...
延伸閱讀
分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.