ControlNet的Depth可以提取出畫面中人物/物體的前後關系/前景後景的分別,而Normal(法線)則可以紀錄出畫面中物體的凹凸面訊息。透過這兩種ControlNet約束類型,就可以幫助我們對成像的空間深度關係與物體的凹凸立體感/亮面暗面的光影效果進行約束控制。
Depth各預處理器效果如下圖,所產生出來的預處理圖,畫面愈近處愈白,畫面愈遠處則顏色漸深/至全黑。
(下圖提示詞 : street view in Korea at night, rainny day)
在depth_leres 與 depth_leres++ 預處理器下,可透過Remove Near% 與 Remove Background%調整,對預處理圖的深度效果進行增減。
Remove Near% : 數值從0~100,由最近處(白色)往最遠處開始逐漸將畫面中不同深度的人/物去除深度,直至全白(平面沒有深度)為止。
Remove Background% : 數值從0~100,由最遠處(黑色)往近處開始逐漸將畫面中不同深度的人/物去除深度,直至全黑(平面沒有深度)為止。
Depth只能提供深度的訊息,在生成圖片時無法很好的掌控物體的內容與細節,成像效果通常再加上prompt描述或是搭配其它ContronlNet的特徵約束一起使用會比較理想。
Depth + (提示詞空白)。SD沒有自行腦補出每人手裡拿的是手機,有些該畫人臉的地方也被不知何物的物體所取代~
Depth + (提示詞:crowd of people taking piture with smart phone in the party at night)
雖然Depth無法掌控物體的內容與細節,但大家可以比對一下下面2種ControlNet約束成像方式(Depth與Lineart)的差別。最後畫面都是同樣的主題構圖,但經過Depth約束處理後的成像看起來會更立體/生動(感覺得出畫面的遠近深度)。
而從Lineart的線條約束中,常理透過線條輪廓所畫出的人臉比例大小,人類能理解腦補出畫面遠近的深度感。但對SD來說只有線條特徵並無法有效理解畫面的深淺前後關係,因此所畫出來的圖也就會少了該有的透視感,畫面整體看起來會很平面。
Depth與Lineart對比 ,(提示詞都是:crowd of people taking piture with smart phone in the party at night)
(PS.上圖畫面中各種人手畸形的部分就先忽略它吧,對AI繪圖來說,畫手本來就是弱項了,畫面中又出現這麼多小面積要畫手的構圖,要整個畫面沒有bug完全畫得正常,不管怎麼調整也實在是為難了現在的SD與自己。這種時後就會很有感,同樣的主題畫面,相機攝影完勝AI繪圖~ 這張圖相機按下快門就能完成的事,我拿SD狂刷圖+細節一個個想辦法修正可能要花更多的時間吧~ 有些圖,用拍照的比較省事,有些圖用AI畫比較快~)
有學過3D的人對Normal map(法線貼圖)一定不陌生,它是一種模擬凹凸處光照效果的技術。經過ControlNet Normal預處理器提取出原圖畫面中物體的凹凸面/光影亮面暗面方向訊息後,就能用來約束新生成圖像中物體的立體度與光影方向效果。
Normal的預處理器有2個,一個是Normal_bae,另一個是Normal_midas。目前為止,我都只有用Normal_bae,測試過許多圖用Normal_midas讀取出來的效果與後續生成的圖片都是不太理想與成像會有許多奇怪的紋理。
(提示詞 : black hair, white dress)
另外當我們在使用OpenPose,遇到特定姿勢如果一直無法正確提取出來時,Normal圖也能很好彌補這部份的缺失。
如下圖左邊男人坐在椅子上翹腳的姿勢,由於OpenPose所提取的姿勢骨架圖是平面的沒有深度,對於這種畫面角度需要考慮到深度效果的姿勢時,很大機率就會無法順利生成。但如果改用Normal則可以比較容易正確還原出原圖人物的動作姿勢。
(提示詞 : a man and a woman sitting on chair talking to each other)
不過Normal的預處理圖又會控制住畫面中過多姿勢以外我不需要的細節訊息特徵(邊桌、椅子造型樣式…等),這時如果是本身有使用3D軟體的人,當SD與ControlNet一直無法調整出理想效果時,也許就可以直接用3D軟體產出一張去除不必要細節的Normal圖來讓SD在限定的人物動作以外其它細節都自由發揮變化。
AI繪圖不是用來取代誰,小孩子才做選擇,多種工具交互截長補短,最終目的是用最快的速度達到所需出圖品質就好。過去已經學過2D、3D繪圖的人,玩SD一開始就有一定基礎的優勢在,對於現有AI繪圖與各種外掛功能的參數都很難調整出理想畫面結果的時後就沒必要死嗑在這上面一直刷圖或放棄,稍微借用一下別的工具輔助,問題就能快速解決了~