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

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」參數。

在啟動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」。

在安裝與使用ControlNet外掛軟體之前,須先確定RunSD.bat檔案內已加入「--enable-insecure-extension-access」參數。

接著進入Stable Diffusion WebUI網頁介面,依序點選Extensions、Available、Load from等按鈕,並且搜尋controlnet,然後點選sd-webui-controlnet右方的Install。

安裝完成後,回到Installed標籤頁面下,可以看到sd-webui-controlnet顯示於列表中。 ▲ 接著至ControlNet於Huggingface的頁面,下載「control_v11p_sd15_openpose.pth」模型。

將檔案儲存至「stable-diffusion-webui」資料夾下的「extensionssd-webui-controlnetmodels」。

利用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更重要。

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

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

完成安裝手續後,可以在Stable Diffusion WebUI網頁介面看到ControlNet設定項目,點擊右方三角形將其展開。

先點擊「Click to upload」,選擇想要輸入做為姿勢參加的圖片。

接著依照圖中建議進行各項設定,點擊綠色箭頭所指的「爆炸圖示」,即可預覽姿勢骨架,點擊「向上箭頭」可將參考圖片的解析度匯出至生成圖片解析度。

筆者以自己踢球時拍攝的帥氣照片作為參考圖片,透過ControlNet讓生成圖片的外芙也擺出相同姿勢。真帥!

另外筆者也以openpose_full進行示範,從預覽骨架可以看到臉部表情與手部動做。

生成圖片的表情比較接近參考圖片了,但是手指還是AI算圖的弱項,還原度並不高。

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

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

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

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

在這個範例中,我們將左方的圖片修改為右方的狀態,以滿足生成解析度為1456 x 760圖片的需求。

透過動態圖片,能更深入瞭解修改圖片的流程。

將修改好的參考圖片輸入ControlNet,就能更精準指定生成圖片的解析度、構圖、姿勢。

使用同樣的參考圖片,搭配不同提示詞,就能生成姿勢相同但風格不同的圖片,相當有趣。

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

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

國寶大師 李文恩
作者

電腦王特約作者,專門負責硬派內容,從處理器、主機板到開發板、零組件,尖端科技都一手包辦,最近的研究計畫則包括Windows 98復活與AI圖像生成。

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則