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

Stable Diffusion進階 -- 糊臉清晰化

前言

偶而會碰到一種例子,就是在算圖時發現了一個很不錯的全身人物圖,當我將它放大之後,又想要抓個臉部特寫,卻發現人物的臉已經糊掉了。通常人物臉糊掉時,可以將面部的圖畫單獨剪出來,用幾種方法簡單修復看看:
  1. 使用Extra的Scale by,將人臉圖繼續放大,看看放大演算法能否修復模糊的線條。
  2. 使用ControlNet的Tile功能重新產生臉部細節。
  3. 用inpaint配合ControlNet的openpose以及depth一步一步慢慢修。
我以這張圖為例:
整個糊在一起的臉
整個糊在一起的臉
在這種情況下,我試過單純的Upscale,由於線條邊緣太過模糊,單純的AI放大演算法沒有辦法改善這張模糊的臉。
這時候還有兩種方法可以銳利化這張臉:

ControlNet Tile + Inpaint

本節實作細節由 修正細節:Inpaint + Tile Resample - Stable Diffusion 啟發,ControlNet的Tile Resample實在非常強大。
首先,在Inpaint將想要銳利化的地方選起來:
選取要銳利化的部分
此時的Inpaint設定為
  • Masked content: original
  • Inpaint area: Only masked
  • Denoising strength: 0.3到0.5之間
Inpaint設定
然後啟動ControlNet,選擇Tile resample,將Control Weight降到0.5,但是Down Sampling Rate開到最大的8(也就是說,演算法會先將圖縮到八倍小,然後開始使用AI放大)。要注意到,這時候不用選圖放入ControlNet。
Tile Reasmple的設定
然後跑起來,有很大的機率會得到很不錯的結果!
效果非常良好的五官

ControlNet openpose/depth + Inpaint

當上述方法都沒用時,還有最原始的inpaint加上img2img的手工修臉法。
首先,將這張圖丟進Inpaint頁面下,然後把五官都選起來:
把臉選起來
接著在Inpaint設定中,使用:
  • Masked content: original
  • Inpaint area: Only masked
  • Denoising strength: 0.45到0.6之間
Inpaint設定
在這個高的Denoising strength之下,角色的臉部可能會完全改變,為了不要讓她變臉,必須使用ControlNet的openpose和depth來鎖住角色的五官位置與大致輪廓:
ControlNet的openpose設定
ControlNet的depth設定
在這邊還不要使用萬能Canny,因為這時角色的面部特徵還太模糊,既使用上Canny也抓不到角色完整的五官線條,反而會導致AI亂畫,弄出歪掉的五官。
接著開始算圖,每完成一張就檢查是否比上一張更接近自己想要的五官,同時不斷變動Inpaint的選取範圍以及Denosing strength。這邊就很像傳統的電繪藝術家,必須靠自己的判斷來決定是否算圖成功,以及下一步要改變哪些部位和力道強弱。
當面部清晰到一個程度之後,我們可以將第一個ControlNet的openpose設定改成canny,以得到更好的五官掌控:
openpose換成canny
此時可以降低Denoising strength到0.25到0.3之間,縮小inpaint的範圍到五官等需要細緻調整的範圍。
這樣再跑幾回,然後將完成圖拿到img2img再跑個幾次,將整張圖因為inpaint選取範圍變動造成的色差弭平,就能得到完成圖了:
面部清晰化的成果
比較一下之前與之後的五官,尤其是眼珠上的反光與上下睫毛,就會發現效果相當明顯。
這是一招非常耗費時間與專注力的方法,是在Upscale與ControlNet Tile都無法修補時的最終手段。
祝大家AI算圖愉快!

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