2023.05.09 09:00

Stable Diffusion AI算圖使用手冊(5-1):透過ControlNet控制角色姿勢

ADVERTISEMENT

在熟悉Stable Diffusion與各種小模型的使用之後,你是不是覺得AI生成圖像的人物動作太過單調?沒關係,就讓我們透過ControlNet來控制角色所擺出的姿勢。

截稿後更新:更新ControlNet V1.1.125版本介紹

文章目錄

ControlNet功能說明與安裝

ControlNet是款整合多種功能的外掛軟體,在這邊筆者將介紹透過其中的OpenPose,來控制Stable Diffusion生成圖片中的角色姿勢。

為了要安裝與使用外掛軟體,請參考教學文章的2-1章節,確定在RunSD.bat檔案的set COMMANDLINE_ARGS項目中,加入「--enable-insecure-extension-access」參數。

ADVERTISEMENT

在啟動Stable Diffusion WebUI網頁介面之後,點選Extensions與下方的Available標籤,這時候外掛軟體的索引網址應該已經自動填入,只需要點擊Load from按鈕,並且搜尋controlnet,然後點選sd-webui-controlnet右方的Install按鈕,就能安裝外掛軟體。

接下來我們還需要到ControlNet於Huggingface的頁面,下載「control_v11p_sd15_openpose.pth」模型,並儲存至「stable-diffusion-webui」資料夾下的「extensionssd-webui-controlnetmodels」。

ADVERTISEMENT

ADVERTISEMENT

利用OpenPose控制角色姿勢

安裝好ControlNet與OpenPose的模型之後,重新啟動Stable Diffusion WebUI網頁介面,就可以看到ControlNet設定項目,它預設是收合狀態,需點擊右方三角形將其展開。

展開ControlNet後,我們需要先點擊「Click to upload」,選擇想要輸入做為姿勢參考的圖片,接著依序點擊「Enable」方塊,然後在Preprocessor選擇代表基本功能的openpose、強調手部動作的openpose_hand,或完整功能的openpose_full,Model則選擇 control_v11p_sd15_openpose,並在Preprocessor Resolution輸入辨識處理之解析度(建議設定為與來源圖片之短長邊相同),點擊「向上箭頭」將參考圖片的解析度匯出至生成圖片解析度,然後選擇Control Mode控制模式與,最後點擊「爆炸圖示」,即可預覽姿勢骨架。

Control Mode中的Balance代表平衡ControlNet與提示詞的權重,My prompt is more important代表提示詞更重要,ControlNet is more important則代表ControlNet更重要。

ADVERTISEMENT

Resize Mode設定項目提供3種縮放模式,如果讀者發現生成圖片的效果不如預期,可以嘗試使用不同縮放方式,或參考後方段落手動調整參考圖片。其中Just Resize為直接縮放至符合輸出尺寸,容易造成畫面中人物變型,Crop and Resize為裁切後縮放,可能會讓構圖變的比較怪異,Resize and Fill為縮放並填滿,有時會造成人物被切除的問題。

確定沒骨架問題的話,則可開始照正常流程進行設定步驟,如此一來生成圖像中的人物就會擺出與輸入照片相近的姿勢。

手動調整預覽圖片提高準確度

根據筆者個人的使用經驗與實驗心得,發現若要更精細控制生成圖像中人物的構圖,或是指定特定解析度的話,最好的方式便是透過繪圖軟體調整輸入的參考圖片。

而Openpose模型在分析圖片時,可能會「忽略」參考圖片中白色的部分,所以建議透過拉伸原始圖片的背景部分來改變構圖,如此一來便能有效提高生成圖片與參考圖片之間姿勢與構圖的準確度。

舉例來說,如果我們想要生成圖片的解析度指定為1456 x 760,並且指定人物姿勢為在坐在畫面右方,就可以根據上述原則編輯原始參考圖片,詳情請看下方動態範例。

ControlNet還有許多值得深入研究的功能,想要更精細調整人物姿勢的話,也可以嘗試Online 3D Openpose Editor等工具,如果未來有機會,筆者也可能追加介紹章節。

回到Stable Diffusion AI算圖系列文章目錄

ADVERTISEMENT