前言
這篇來探索一下目前在Automatic1111底下如何控制畫面的光影。光影在AI算圖中其實難度不小,尤其是想要產生特定位置或特定效果的光影,往往要用到很多綜合手段才能做到。最近在
STABLE DIFFUSION ART出爐了一個關於光影的文章,提到了好幾個不同的方法,這邊就依照我的使用經驗來整理分享這些方法。
提示詞與進階
最簡單的操縱光影方法就是使用光影類的提示詞,例如:
Stable Diffusion提示詞 -- 光影
裡面提到的光影相關提示詞來為AI指示需要的光影類型。但是這種方法的一個問題是,很多光影提示詞是與其他提示詞有互相關係的,例如在戶外的白天場景,就難以產出灰暗的光影。另外,很多模型使用的素材圖都是同一類型的光影,例如大部分都是真人白天的照片,那就算使用夜晚的提示詞,角色也會出現不自然的高光,彷彿是使用棚拍燈光拍出來的。這種情況下很多提示詞是無法產生效果的。另外,有很多提示詞在訓練時會與其他提示詞產生不必要的關聯,例如背光(backlighting)因為有了「背」,所以算出的圖,角色會背朝鏡頭。
遇到這種情況,一種可行的解法就是配合ControlNet的Canny,Depth或Normal等固定角色的功能來執行局部重繪。
例如下圖,左邊是原始圖。我們想要改成背光效果,就要在img2img中原本的提示詞上額外加入backlighting,然後在ControlNet使用Depth或Canny來固定人物的輪廓,接下來就是生許多圖來找到自己喜歡的背光圖,如右圖所示:
圖片提示法
圖片提示法是個很有趣的方法,它使用了Stable Diffusion的一個特色,就是在img2img中使用特製的黑白原始圖,搭配ControlNet的許多模型固定形狀之後,可以使用高強度的Denoising strength追求圖片的最大變化時,對特定區域提示AI要使用特定光影,舉例如下:
我以下面的圖片當範例,這個角色的光影是從右上方來的自然光:
(best quality), (masterpiece), 17 years old Germany handsome young man with blonde long hair, (low ponytail hairstyle:1.2), (green eyes:1.2), slight smile
如果我想要將圖換成一個正上方來的光源,且將整個畫面的光度降低,就可以在任意的繪圖軟體中新開一個圖,以黑色為底,然後在想要出現光亮的地方圖白,例如下圖:
將這個光源樣板放置到img2img的圖片區,然後提示詞直接複製到img2img的提示詞,並且將Denoising strength提高到0.9甚至0.95的高強度。接著在ControlNet裡面將原始圖放入,然後選擇Depth或Canny功能。
跑出圖之後,會看到人物的光源已經變成正上方了。而圖片的其他位置因為原本是黑色,所以AI會偏向將這些位置畫成低光度區域。這也是一個降低整體亮度的方法。
另外還有利用Inpaint調換局部光影,使用Inpaint Sketch增加其他顏色的光影,也是可以局部更改光影的手法。
祝大家AI算圖快樂!
參照