Stable Diffusion進階 -- Loopback手部修復

2023/07/06閱讀時間約 3 分鐘

前言

本篇要解說一個用ControlNet加上Loopback來達到修正壞掉的手部姿勢的方法。這個方法與之前寫過的 Stable Diffusion進階 -- 手部修復 最大的不同點是,要求更高一些的繪圖軟體技巧,以及使用ControlNet來監控修復的完成度。
由於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專注在手部區域:
以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算圖愉快!
為什麼會看到廣告
8.1K會員
226內容數
寫奇幻小說,畫圖,心得,各式各樣作品的故鄉。
留言0
查看全部
發表第一個留言支持創作者!