前言
由於AI算圖的隨機性,在訓練時比較少見的手部姿勢與角度,常常讓AI算出奇怪的扭曲的或多餘的手指,例如下面這個範例圖:
在範例圖中,右手是常見的姿勢,所以AI可以很輕鬆地算出來,但是左手是一個 ControlNet線稿轉換成圖的時候不常見的姿勢,AI無法正確推論這個手部姿勢的立體空間方位與手指前後順序,就變成了一個怪怪的樣子。
方法
為了修正這個壞掉的手勢,我們除了用之前敘述的漸進Inpaint之外,還有一個方法可以較快速修正。
首先,一樣要到提供手部姿勢的人偶網站,例如
PoseMy.Art這個網站,將人偶的手部調整到想要的角度與姿勢,然後將它輸出成圖片:
將它導入一個支援圖層的繪圖軟體,例如GIMP、Photoshop或
Photopea,然後匯入有問題的圖片,新增圖層,把好的手臂放到新圖層上,移動到預定的位置,然後將有問題的手塗抹掉,再將好的手大致補上相似的膚色與陰影,這邊會考驗到我們的繪圖能力,但不用繪製到十分細緻,只要能大致表明正確的前後關係就好:
接著,將這張修正過的圖導入Inpaint,使用簡單的提示詞來表明我們要修正的是手,並圈選要修正的部位:
(extremely detailed CG unity 8k wallpaper), best quality, masterpiece , hdr, ultra highres, hand
然後使用非常低的Denoising strength權重,例如0.2來開始,並且使用Only masked讓AI專注在手部區域:
接著使用ControlNet的openpose_hand,輸入修正過的圖,並且偵測他是否有認得修正過的圖的手部姿勢:
ControlNet的openpose_hand設定
這一步非常重要,如果openpose_hand無法認出手指的大致位置,代表修圖是失敗的,需要重新修圖直到openponse_hand能正確標定手指位置。
當ControlNet設定完成時,打開Loopback的設定,將回合數規定到10以上的數字,Final denoising strength設定到依然是低權重的0.25左右,確保整個十回合的週期都是低強度的重繪:
當一切都設定完成之後,就能開始算圖了:
由於算圖的變化細微,所以能防止AI偏轉太大讓手又變形了。在算出來的圖之中,出現正確的手部姿勢機會應該很大,同時間算圖的速度又快(因為Denoising strength權重越低,算圖的速度越快)。
在這裡,我挑選了一張修復結果還算滿意的圖來當成果圖:
希望大家AI算圖愉快!