前言
本篇要解說一個用ControlNet加上Loopback來達到修正壞掉的手部姿勢的方法。這個方法與之前寫過的 Stable Diffusion進階 -- 手部修復 最大的不同點是,要求更高一些的繪圖軟體技巧,以及使用ControlNet來監控修復的完成度。
由於AI算圖的隨機性,在訓練時比較少見的手部姿勢與角度,常常讓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專注在手部區域:

以0.2的低權重開始重繪
接著使用ControlNet的openpose_hand,輸入修正過的圖,並且偵測他是否有認得修正過的圖的手部姿勢:

ControlNet的openpose_hand設定
這一步非常重要,如果openpose_hand無法認出手指的大致位置,代表修圖是失敗的,需要重新修圖直到openponse_hand能正確標定手指位置。
當ControlNet設定完成時,打開Loopback的設定,將回合數規定到10以上的數字,Final denoising strength設定到依然是低權重的0.25左右,確保整個十回合的週期都是低強度的重繪:

Loopback的設定
當一切都設定完成之後,就能開始算圖了:

算圖過程
由於算圖的變化細微,所以能防止AI偏轉太大讓手又變形了。在算出來的圖之中,出現正確的手部姿勢機會應該很大,同時間算圖的速度又快(因為Denoising strength權重越低,算圖的速度越快)。
在這裡,我挑選了一張修復結果還算滿意的圖來當成果圖:

成果圖
希望大家AI算圖愉快!