快轉到主要內容

ControlNet 讓AI按照骨架動作繪圖!Stable Diffusion WebUI擴充功能使用教學

分類   開源AI人工智慧應用 Stable Diffusion教學
標籤   ControlNet Stable Diffusion WebUI Depth Estimation Object Detection
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字

戳這裡看Stable Diffusion WebUI擴充功能安裝方法

目前版本:ControlNet v1.1

ControlNet是通過加入額外條件來控制擴散模型的神經網路結構,它可以讓AI參考給定圖片的動作/線條/景深,更精準的生成圖片。

跟內建的「圖生圖」技術比起來,ControlNet的效果更好,能讓AI以指定動作生圖;再搭配3D建模作為輔助,能緩解單純用文生圖手腳、臉部表情畫不好的問題。

ControlNet的用法還有:上傳人體骨架線條,ControlNet就能按骨架的動作生成完稿的人物圖片。或是上傳素色的3D建模,讓ControlNet彩現成為室內佈置家具。

Lvmin Zhang是ControlNet原始程式的開發者,Mikubill則是開發擴充功能,讓我們可以在Stable Diffusion WebUI用ControlNet生圖。

1. 安裝ControlNet與下載模型
#

  1. 切換至Extensions頁面,點選Install From URL,URL輸入https://github.com/Mikubill/sd-webui-controlnet.git,按下Install,接著從終端機按CTRL+C,關閉Stable Diffusion WebUI。

  2. lllyasviel/ControlNet v1.1下載以.pth結尾的模型檔,全部檔案加起來約18GB。.yaml檔不需要下載。

  3. 將這些模型檔放到stable-diffusion-webui/extensions/sd-webui-controlnet/models資料夾

  4. 重新啟動Stable Diffusion WebUI。

2. 各個模型的用途
#

ControlNet現有以下模型,您可以按照需求只下載需要的模型。

Anime Lineart:偵測線條,生成的圖片亦會保留原始的線條,適合處理動漫圖像

Canny:偵測圖片邊緣,比較模糊,不如Scribbles完整。

Depth:偵測輸入圖片的深度圖(depth map)。

Illumination:偵測輸入圖片的光源與照明效果。

Inpaint:功能類似「內補繪製」,使用50%隨機遮罩+50%隨機光流遮罩訓練而成。

Instruct Pix2Pix:模型檔名為ip2p,類似「圖生圖」,但是使用訓練50%的指示(instruction)提示詞和50%的敘述(description)提示詞訓練而成。因為是ControlNet,使用此模型時不需要調整CFG Scale。根據原作者的說法,此模型在下「使其成為X」的提示詞所生成的圖,效果比「使Y成為X」要好。 (Also, it seems that instructions like "make it into X" works better than "make Y into X".)

Lineart:偵測線條,適合處理線稿,生成的圖片亦會保留原始的線條。

M-LSD:偵測輸入圖片的直線。

Normalbae

Openpose:使用OpenPose技術偵測輸入圖片人物的動作,不一定會保留線條。

Scribbles:偵測線條,偵測到的線條品質介於Soft Edge和Lineart之間。

Segmentation:模型檔名為seg,將偵測的圖片物件切成一個一個色塊處理,例如房子一個色塊,後面的天空一個色塊。

Shuffle:把輸入圖片的概念轉移到生成的圖片。作者給的例子:輸入灰色裝甲圖片,生成的鋼鐵人盔甲也會是灰色的。

Soft Edge:偵測圖片邊緣,效果較為柔和,像用炭筆塗過。

Tile:輸入圖片,選取一個區域,使其變清晰的模型。

3. 實際操作方法
#

此處以改繪一個人物姿勢為例子。

  1. 在安裝之後,WebUI的界面會多出"ControlNet"的按鈕。

  1. 進入文生圖的頁面填入提示詞,接著點開下面ControlNet的界面,勾選Enabled啟用ControlNet,上傳圖片。勾選LowVRAM可降低VRAM佔用。

  1. 接著選取要使用的Preprocessor和Model,二者要一致。

Preprocessor是先將上傳的圖片處理過一輪,例如Scribbles會將彩色圖片轉成線稿。如果你的圖片不需要處理,則Preprocessor可留空。

  1. 以Scribbles為例,選取後點選右上角Generate即會生成出結果,並附上偵測到的線條。如下圖所示,右邊貞德的姿勢確實跟左邊的02十分類似。

4. 參數解說
#

在安裝之後,WebUI的界面會多出"ControlNet"的按鈕。

點開會看到以下選項:

Single Image
#

上傳單張圖片。

Batch
#

處理多張圖片。Input Directory填寫的是待處理的圖片所在路徑。

Open New Canvas
#

清除圖片,開一張新畫布。

使用電腦鏡頭
#

在Open New Canvas的選項下面有四個按鈕。

由左到右:新增畫布;使用電腦鏡頭拍照上傳;未知;還原上次算圖設定。

Enable
#

在生圖時啟用ControlNet,必選。

Low VRAM
#

生圖使用ControlNet會吃更多VRAM,此選項可降低VRAM使用量。

Pixel Perfect
#

由ControlNet自動決定Preprocessor解析度。

Allow Preview
#

允許預覽生圖結果,會顯示該模型偵測的線條或骨架。

Preprocessor 預處理器
#

通常Preprocessor和Model二者要一致。

Preprocessor是先將上傳的圖片處理過一輪,例如Scribbles會將彩色圖片轉成線稿。若圖片的線條是白底黑線,且不是用WebUI畫布所繪製,則Preprocessor必須選取"Invert"。

如果你的圖片不需要處理,Preprocessor可留空。

Run Preprocessor (爆炸圖示)
#

執行預處理器,預先處理圖片。

Model 模型
#

設定生圖的時候使用哪個ControlNet模型。

Control Weight
#

ControlNet在生圖時的權重。

Starting Control Step
#

要讓ControlNet開始參與生圖的步數。

Ending Control Step
#

讓ControlNet結束參與生圖的步數。

Preprocessor Resolution
#

預處理器的解析度。

如果不知道要設多少,請勾選"Pixel Perfect"讓ControlNet自動為您決定。

Control Mode (Guess Mode)
#

控制生圖時,要AI平衡二者(Balanced),或是偏重你的提示詞(My prompt is more important),還是偏重ControlNet (ControlNet is more important)。

[Loopback] Automatically send generated images to this ControlNet unit
#

自動將生成的圖片傳回此ControlNet運算單元(unit)。

是的,如果您的電腦VRAM夠大,您可以在Settings → ControlNet啟用多個ControlNet運算單元。

Multi ControlNet
#

一個ControlNet效果不夠,您有沒有想過啟用第二、第三個ControlNet!?

預設安裝後只會使用一個ControlNet,但是疊加多個有助於生成更好的圖片。比方說同時使用Open Pose和Depth生成人體,並防止手畫歪。

要啟用Multi ControlNet,請進入Settings → ControlNet,拖動拉桿,設定要啟用的ControlNet數量。

相關文章

Stable Diffusion WebUI擴充功能:骨架人偶 PoseX
分類   開源AI人工智慧應用 Stable Diffusion教學
標籤   Stable Diffusion WebUI
Stable Diffusion WebUI 用文生圖 + ControlNet + Latent Couple生成指定位置的多個人物
分類   開源AI人工智慧應用 Stable Diffusion教學
標籤   Stable Diffusion WebUI
Stable Diffusion WebUI 介紹|Stable Diffusion WebUI使用手冊
分類   開源AI人工智慧應用 Stable Diffusion教學
標籤   Stable Diffusion WebUI Stable Diffusion

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。