之前曾經碰過一個有趣的問題:如何替人物的肢體加上纏繞的魔法效果。
這個問題困難的地方在於, 這種類型的動作通常不在AI訓練圖的範圍內,所以它對於很多奇幻世界的概念是一無所知的。在這種情況下,創作者與AI其實有點像是在一艘在迷霧中的海洋航行的船,創作者身為船長,必須下指令給各個AI船員,在霧中穿過暗礁,靠著船長自己的記憶與想像來策劃航行路徑。
基本上,產生奇幻世界構圖與特效的方法,除了用已有的圖來做借圖生圖 之外,另一種就是在ControlNet的控制下,用img2img與inpaint互相切換的控制漸變法 。
這種方法的好處是,不只是運用在奇幻世界上,這種方法也可以用在大部分引導AI產生特定效果的情況。
我們從這張圖開始:
我希望可以將雷電條紋纏繞在法師的手臂上,這時候要先從將圖傳入inpaint開始,將整條手臂選起來,然後設定inpaint:
這邊我們將Denoising strength弄到0.7以上,然後將正面提示詞刪除乾淨,只留下我們想要的雷電元素:
(electrical arc:1.5), (lightning:1.5)
(extremely detailed CG unity 8k wallpaper), best quality, masterpiece , hdr, ultra highres
接著,為了將手跟手指等肢體固定下來,我們必須使用ControlNet的openpose_hand跟depth來固定手,以及手的輪廓:
這時我使用的depth模型,我只給了0.5的權重,這樣才不會對畫面上的物件帶來太多的限制。
當一切都設置好之後,開始試跑幾張圖,會發現大部分的圖都毫無雷電的痕跡,因為對AI來說,這種要求真的沒聽過。有時候必須將Denoising strength開到0.9才會出現一些效果:
如果就這樣滿足的話,效果其實一點也不明顯,這時候就到了「漸進」的步驟了。我們用Send to Inpaint 按鈕將完成圖重新送進inpaint面板,然後用undo按鈕將之前選取的區域取消,重新選取其他我們想要增加雷電紋路的地方,繼續一樣的步驟。
在這一部分,人類的創意非常重要 。因為在這種地方,很多概念是AI在訓練時沒有經歷的,有些甚至是人類都沒有經歷過的藝術創作,在這時候必須依靠人類腦海裡的想像來揀選過濾產出的圖,把稍微靠近自己想像的圖丟進去下一輪產圖,不斷修改inpaint的選取範圍,以引導AI達到目標。
在這個時候,我必須不斷調整提示詞的權重,變更inpaint的範圍,有些已經產生雷電纏繞的地方必須移出選取區,否則下一回合雷電可能消失,有些地方衣服樣式崩毀,必須退回上幾張圖加入提示衣物樣式與顏色的提示詞重算,有時候改變不想太大,還要調整Denoising strength。不斷地試錯、回朔重算,慢慢推向自己想要的效果。
在經過幾輪的漸進算圖後,我得到了這個成果:
此時,我們已經有了足夠的雷電紋路,問題是畫面上許多被inpaint選取過的地方,也改變了圖片的背景,而新增的雷電是新的光源,因此許多地方的陰影與色彩也需要相應的改變。
這時就是控制漸變法的最後打磨階段。把圖傳進inpaint之後,將原本的算圖的提示詞全部還原回去,再將不想被變動的地方選取起來,然後使用inpaint not masked選項 來重繪整張圖,以我為例,我選取了眼睛與手臂的部分,讓AI知道我需要微調整張圖的光影效果,然後以Denoising strength在0.2到0.3的低權重下限制重繪的幅度。
再得到滿意的效果並經由 Stable Diffusion進階 -- 臉崩修復 提到的4x-UltraSharp來提升畫質,我們得到了這樣的成果圖:
祝大家算圖愉快!
進階技巧目錄: