熱評 離家出走的帆高

干貨滿滿,感謝分享

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

ControlNet 的作用是通過添加額外控制條件,來引導 Stable Diffusion 按照創作者的創作思路生成圖像,從而提升 AI 圖像生成的可控性和精度。在使用 ControlNet 前,需要確保已經正確安裝 Stable DiffusionControlNet 插件。如還未安裝,可以參考這篇文章中的教程進行安裝部署:

目前 ControlNet 已經更新到 1.1 版本,相較于 1.0 版本,ControlNet1.1 新增了更多的預處理器和模型,原有的模型也通過更好的數據訓練獲得了更優的性能。以下我做簡要梳理,想要了解更多內容可以參考作者的文檔: https://github.com/lllyasviel/ControlNet-v1-1-nightly

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

ControlNet 的使用方式非常靈活,既可以單模型應用,也可以多模型組合應用。清楚 ControlNet 的一些原理方法后,可以幫助我們更好的提升出圖效果。以下通過一些示例,簡要介紹 ControlNet 的實際用法。

一、ControlNet 單模型應用

1. 線稿上色

方法:通過 ControlNet 邊緣檢測模型或線稿模型提取線稿(可提取參考圖片線稿,或者手繪線稿),再根據提示詞和風格模型對圖像進行著色和風格化。

應用模型:Canny、SoftEdge、Lineart。

Canny 邊緣檢測:

Canny 是比較常用的一種線稿提取方式,該模型能夠很好的識別出圖像內各對象的邊緣輪廓。

使用說明(以下其它模型同理):

  1. 展開 ControlNet 面板,上傳參考圖,勾選 Enable 啟用(如果顯存小于等于 4G,勾選低顯存模式)。
  2. 預處理器選擇 Canny(注意:如果上傳的是已經經過預處理的線稿圖片,則預處理器選擇 none,不進行預處理),模型選擇對應的 control_v11p_sd15_canny 模型。
  3. 勾選 Allow Preview 允許預覽,點擊預處理器旁的??按鈕生成預覽。

其它參數說明:

  1. Control Weight:使用 ControlNet 生成圖片的權重占比影響(多個 ControlNet 組合使用時,需要調整權重占比)。
  2. Starting Control Step:ControlNet 開始參與生圖的步數。
  3. Ending Control Step:ControlNet 結束參與生圖的步數。
  4. Preprocessor resolution:預處理器分辨率,默認 512,數值越高線條越精細,數值越低線條越粗糙。
  5. Canny 低閾值/高閾值:數值越低線條越復雜,數值越高線條越簡單。

Canny 示例:(保留結構,再進行著色和風格化)

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

SoftEdge 軟邊緣檢測:

SoftEdge 可以理解為是 ControlNet1.0 中 HED 邊緣檢測的升級版。ControlNet1.1 版本中 4 個預處理器按結果質量排序:SoftEdge_HED > SoftEdge_PIDI > SoftEdge_HED_safe > SoftEdge_PIDI_safe,其中帶 safe 的預處理器可以防止生成的圖像帶有不良內容。相較于 Canny,SoftEdge 邊緣能夠保留更多細節。

SoftEdge 示例:(保留結構,再進行著色和風格化)

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

Lineart 精細線稿提取:

Lineart 精細線稿提取是 ControlNet1.1 版本中新增的模型,相較于 Canny,Lineart 提取的線稿更加精細,細節更加豐富。

Lineart 的預處理器有三種模式:lineart_coarse(粗略模式),lineart_realistic(詳細模式),lineart_standard(標準模式),處理效果有所不同,對比如下:

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

Lineart 示例:(保留結構,再進行著色和風格化)

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

2. 涂鴉成圖

方法:通過 ControlNet 的 Scribble 模型提取涂鴉圖(可提取參考圖涂鴉,或者手繪涂鴉圖),再根據提示詞和風格模型對圖像進行著色和風格化。

應用模型:Scribble。

Scribble 比 Canny、SoftEdge 和 Lineart 的自由發揮度要更高,也可以用于對手繪稿進行著色和風格處理。Scribble 的預處理器有三種模式:Scribble_hed,Scribble_pidinet,Scribble_Xdog,對比如下,可以看到 Scribble_Xdog 的處理細節更為豐富:

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

Scribble 參考圖提取示例(保留大致結構,再進行著色和風格化):

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

Scribble 手動涂鴉示例(根據手繪草圖,生成圖像):

也可以不用參考圖,直接創建空白畫布,手繪涂鴉成圖。

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

3. 建筑/室內設計

方法:通過 ControlNet 的 MLSD 模型提取建筑的線條結構和幾何形狀,構建出建筑線框(可提取參考圖線條,或者手繪線條),再配合提示詞和建筑/室內設計風格模型來生成圖像。

應用模型:MLSD。

建筑/室內設計風格模型下載:

  1. https://civitai.com/?query=Interior
  2. https://civitai.com/?query=building

MLSD 示例:(毛坯變精裝)

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

4. 顏色控制畫面

方法:通過 ControlNet 的 Segmentation 語義分割模型,標注畫面中的不同區塊顏色和結構(不同顏色代表不同類型對象),從而控制畫面的構圖和內容。

應用模型:Seg。

Seg 語義參考: https://docs.qq.com/sheet/DYmtkWG5taWxhVkx2?tab=BB08J2

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

Seg 示例:(提取參考圖內容和結構,再進行著色和風格化)

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

如果還想在車前面加一個人,只需在 Seg 預處理圖上對應人物色值,添加人物色塊再生成圖像即可。

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

5. 背景替換

方法:在 img2img 圖生圖模式中,通過 ControlNet 的 Depth_leres 模型中的 remove background 功能移除背景,再通過提示詞更換想要的背景。

應用模型:Depth,預處理器 Depth_leres。

要點:如果想要比較完美的替換背景,可以在圖生圖的 Inpaint 模式中,對需要保留的圖片內容添加蒙版,remove background 值可以設置在 70-80%。

Depth_leres 示例:(將原圖背景替換為辦公室背景)

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

6. 圖片指令

方法:通過 ControlNet 的 Pix2Pix 模型(ip2p),可以對圖片進行指令式變換。

應用模型:ip2p,預處理器選擇 none。

要點:采用指令式提示詞(make Y into X),如下圖示例中的 make it snow,讓非洲草原下雪。

Pix2Pix 示例:(讓非洲草原下雪)

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

7. 風格遷移

方法:通過 ControlNet 的 Shuffle 模型提取出參考圖的風格,再配合提示詞將風格遷移到生成圖上。

應用模型:Shuffle。

Shuffle 示例:(根據魔獸道具風格,重新生成一個寶箱道具)

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

8. 色彩繼承

方法:通過 ControlNet 的 t2iaColor 模型提取出參考圖的色彩分布情況,再配合提示詞和風格模型將色彩應用到生成圖上。

應用模型:Color。

Color 示例:(把參考圖色彩分布應用到生成圖上)

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

9. 角色三視圖

方法:通過 ControlNet 的 Openpose 模型精準識別出人物姿態,再配合提示詞和風格模型生成同樣姿態的圖片。

應用模型:OpenPose。在 ControlNet1.1 版本中,提供了多種姿態檢測方式,包含:openpose 身體、openpose_face 身體+臉、openpose_faceonly 只有臉、openpose_full 身體+手+臉、openpose_hand 手,可以根據實際需要靈活應用。

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

OpenPose 角色三視圖示例:

要點:上傳 openpose 三視圖,加載 charturner 風格模型( https://civitai.com/?query=charturner ),添加提示詞保持背景干凈 (simple background, white background:1.3), multiple views

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

10. 圖片光源控制

方法:如果想對生成的圖片進行打光,可以在 img2img 模式下,把光源圖片上傳到圖生圖區域,ControlNet 中放置需要打光的原圖,ControlNet 模型選擇 Depth。

應用模型:Depth。

要點:圖生圖中的所有參數和提示詞信息需要與原圖生成時的參數一樣,具體原圖參數可以在 PNG Info 面板中查看并復制。

示例:

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

二、ControlNet 多模型組合應用

ControlNet 還支持多個模型的組合使用,從而對圖像進行多條件控制。ControlNet 的多模型控制可以在設置面板中的 ControlNet 模塊中開啟:

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

1. 人物和背景分別控制

方法:設置 2 個 ControlNet,第一個 ControlNet 通過 OpenPose 控制人物姿態,第二個 ControlNet 通過 Seg 或 Depth 控制背景構成。調整 ControlNet 權重,如 OpenPose 權重高于 Depth 權重,以確保人物姿態被正確識別,再通過提示詞和風格模型進行內容和風格控制。

應用模型:OpenPose、Seg(自定義背景內容和結構)、Depth。

示例:

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

2. 三維重建

方法:通過 Depth 深度檢測和 Normalbae 法線貼圖模型,識別三維目標。再配合提示詞和風格模型,重新構建出三維物體和場景。

應用模型:Depth、Normalbae。

示例:

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

3. 更精準的圖片風格化

方法:在 img2img 圖生圖中,通過疊加 Lineart 和 Depth 模型,可以更加精準的提取圖像結構,最大程度保留原圖細節,再配合提示詞和風格模型重新生成圖像。

應用模型:Lineart、Depth。

示例:

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

4. 更精準的圖片局部重繪

方法:在 img2img 圖生圖的局部重繪中,通過疊加 Canny 和 Inpaint 模型,可以更加精準的對圖像進行局部重繪。

應用模型:Canny、Inpaint。

示例:

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

歡迎關注作者微信公眾號:「DUX Design Center」

Stable Diffusion進階教程!超詳細的 ControlNet 實用入門指南

收藏 360
點贊 137

復制本文鏈接 文章為作者獨立觀點不代表優設網立場,未經允許不得轉載。