前言
這篇討論一個常見的問題:如何修復修補錯亂的手部姿勢。
眾所周知,AI繪畫目前在複雜的肢體跟手腳趾上,常常有很恐怖的表現,最主要的原因是因為手跟手指其實非常非常難畫,就算是人類,想要畫出正常的手部與手指也是很困難的。
對於人類來說,手就是由手腕,指骨、指關節、指甲與皮膚構成的器官,有固定的選轉角度,手指屈伸範圍。任何一點不符合經驗的手部姿勢就代表受傷、骨折或畸形,馬上就會引發不適感。但是對AI來說,它沒有手的概念。事實上擴散式的AI其實沒有形成任何概念。對於人類來說是手掌的地方,對AI來說是一個銜接大塊肢體(前臂)與好幾根小肢體(手指)的銜接點。至於手指的數目跟彎曲方向,更是只能靠機率來算。
所以在很多靜態姿勢,例如女性坐著把手放在身側的圖,由於AI在訓練時,99%的機率都是出現在一樣的地方,所以在算圖的時候,AI就能很肯定地畫出手部。至於不常見的姿勢,以及動態高的姿勢,例如跳舞。由於這些地方手的姿態可以千變萬化,所以AI往往都是隨機挑一種姿態跟數量來拼過關。
其實AI在很多地方都用類似的方法,所以上下衣可以在奇怪的地方銜接在一起,花草的形狀可以完全不現實,但是人類其實不是很在意。不過同一招用在人類肢體上就逃不過人類法眼了。
當我們碰到AI畫出畸形手指或手部動作的時候,除了純粹使用inpaint重跑碰碰運氣之外,人類其實可以藉由某些輔助強化來提高AI重畫的成功率。這次就來提提使用人體姿勢生成網站加上繪圖軟體修正肢體後,再用inpaint來重繪的手部修復術。
問題
以我自己的練習作品為例:
這個男角的左手基本上是不對的,原本的手指頭數量是很經典的AI六根指頭,加上一隻手有手套,一隻手沒有,只是後來用了Inpaint把女角的披肩挪過來遮住壞掉的手指部分。但其實仔細一看,還是能看出問題。
現在就來用綜合技巧來試試看修復這個壞掉的手。
手部採樣與置換
首先,要修復壞掉的手,就要先找到正確的手部形狀。
網路上有許多非常完整的姿勢生成網站可以讓大家建立角色的姿勢,我個人常用的是
PoseMy.Art這個網站,它的免費版就已經預設了許多動漫構圖常用的人物姿勢,從這邊可以輕易找到公主抱這個經典動漫姿勢。將這個姿勢調整到與練習畫作差不多的角度,然後就可以截圖:
找到自己要的手部姿勢圖之後,開啟自己常用的繪圖或修圖軟體,將手部單獨選取出來。
然後用修圖軟體,將練習圖打開,把原本壞掉的手用塗抹工具或噴槍,用背景色或衣物的顏色遮蓋掉,開一個新圖層在上面,把我們要修復的手部貼在新圖層,再移動、縮放、旋轉、換色,合併圖層之後產生一個新的圖:
這張圖的手部姿勢大體上是正確的,現在要靠AI來幫我處理光影、色彩與材質。
AI算圖補正
將要補正的手跟附近的女角肩膀、衣物與斗篷附近都選擇起來,因為在補正手部姿勢時,會連帶影響附近衣物的皺褶與光影。
接下來Inpaint的設定是:
- Inpaint area: Only masked
- Denoising strength: 0.4到0.45,超過0.5就有可能讓整個手消失。
ControlNet部分,如果canny的預覽中,手部線條夠清晰,就可以使用canny配上權重0.5來試試看。否則寧可不開啟,避免干擾Inpaint發揮創意。
接著在正面提示詞中集中描述這個手的特徵:
best quality, masterpiece , hdr, ultra highres, hand wearing black leather gloves holding the back of the girl
在這個場景中,由於是公主抱,所以不能只描述手,而且最好同時描述手跟附近物品的互動關係,這樣可以讓AI在算圖時有更多線索,才不會把女角的衣物算成其他東西,或者把男角的手拉離女角的背。
在這邊,一樣需要漸進補正,每次Inpaint後評量成果。圖A跑出圖B後,如果更靠近自己想要的效果,就繼續把成果圖B再傳入Inpaint後調整選取範圍,再跑一次圖。如果成果不理想則重新對圖A重新執行Inpaint。當然如果時間與硬體允許,可以將Batch count開大一點,多圖比較擇優向前。
幾輪Inpaint下來,得到一個滿意的成果,就能收工了!
對比半成品圖,就能發現AI不只是幫我將人物的手變換成黑手套的材質與光影,連手指的姿勢都變了一下,以更吻合手「抓住」女角背部的姿態。同時女角披肩的皺褶與光影都能符合該有的物理特性。這就是AI算圖強大的地方。只要有適合的指引,在細部的地方它能輕易做到人類畫手需要非常多經驗,花費許多時間才能做到的細節處理。
祝大家AI算圖愉快!
進階技巧目錄: