教學

ControlNet 功能 – 用 14 個模型掌控人物姿勢、轉換風格!- Stable Diffusion 教學

ControlNet 功能

ControNet 是 Stable Diffusion 下的一款插件,可以幫助創作者來控制圖像中人物的姿勢和表情。目前 ControlNet 1.1 有款模型,40餘款預處理器。ControlNet 功能是在幫助創作者根據自己的思路添加額外的控制條件,引導 AI 生成圖像,快速生成高品質的圖像。所以 ControlNet 常用於繪畫、修圖、影視特效等領域。

如果想要精準控制生成圖像的身體姿勢、表情、手勢,或是要轉換圖片的風格,可以使用 ControlNet 來做,ControlNet 是一款位於Stable Diffusion WebUI底下的繪圖插件。其主要功能是調整圖片中的人物姿勢或轉換風格,並能生成新的圖片。今天我們就來教大家認識ControlNet所有的模型。

1、ControlNet 功能說明

先來了解在 AI 生成圖片時會遇到的問題,以下常見到的問題:

  1. 圖像精確性不足:在AI繪圖中,我們常常會遇到生成的圖像不夠精準,不夠接近我們想要的結果。無論是風格、構圖,或者是細節,都可能與我們的期望有出入。
  2. 圖片風格單一:AI生成的圖片風格可能過於單一,缺少變化和創新。這可能讓人感覺結果缺乏想像力和創造力。
  3. 無法控制人物姿態:我們想要AI幫忙生成的圖片,有時候會包括特定的人物姿態。但是,在一般的生成對抗網路(GAN)下,這些細節可能無法精準地被控制。
  4. 圖片缺乏真實感:AI生成的圖片,雖然在視覺上可能看起來還不錯,但是往往會缺少一種真實感。這也是我們想透過ControlNet去解決的問題。

ControlNet透過提供更多的控制選項,提高了AI圖像生成的精確性,讓使用者可以根據自己的需求去調整生成的圖像,解決上述的問題。

Controlnet 1.1 openpose 使用圖示
ControlNet 功能圖示

ControlNet 功能主要有 3 個:

  1. 精準控制圖像內容和風格:ControlNet 可以根據使用者需求,精確調整生成圖像的內容和風格。例如,使用者可以控制生成一幅現代風格的風景圖,或者調整人物姿態並生成符合特定風格的人物圖像。
  2. 提供解析度調整和縮放模式:ControlNet 支持自動調整解析度和多種縮放模式,讓使用者能夠根據需要調整生成圖像的大小和解析度。例如,使用者可以輕鬆調整生成圖像的尺寸,適應不同的應用場景。
  3. 增強 AI 圖像生成的可控性和精度:ControlNet 提升了 AI 圖像生成的可控性和精度,使使用者能更方便地創作出符合需求的圖像。例如,使用者可以通過平衡權重或控制模式,精準地控制生成圖像和提示詞之間的權重關係,獲得更貼近自己需求的圖像。

ControlNet是個相當實用的工具,它已是 Stable Diffusion的必裝插件之一。ControlNet提供了一種強大且精確的方式來控制AI生成的圖像,無論是在內容、風格、解析度還是構圖等方面,都能讓創作者和設計師的工作變得更有效率、更有質感。

2、ControlNet 的運作原理及運作方式

ControlNet 功能強大,更要了解它的運作原理,要了解它要分以下幾個部分:

運作原理

ControlNet主要運用了稱為”Conditional Generative Adversarial Networks”(條件生成對抗網路)的技術來生成圖像。這與傳統的生成對抗網路有所不同,ControlNet 允許使用者對生成的圖像進行細緻的控制,例如上傳線稿讓AI協助我們填色渲染、控制人物的姿態等等。再者,ControlNet通過添加額外的控制條件,如annotation(標記)和提示詞,來引導Stable Diffusion按照創作者的創作思路生成圖像。

運作方式

ControlNet的運作方式需要先在Stable Diffusion平台下安裝ControlNet及相關模型。之後在操作界面中設定相對應的模型和參數,通過生成圖像的預覽和修改,達到對生成圖像進行細緻控制的目的。具體來說,運作步驟包括:

  1. 確保已經正確安裝Stable Diffusion和ControlNet插件。
  2. 使用者將修改好的參考圖片輸入ControlNet,並指定生成圖片的解析度、構圖、姿勢等參數。
  3. ControlNet會根據這些參數生成一個控制模型,並將其與Stable Diffusion結合起來。
  4. 當用戶開始進行AI圖像生成時,ControlNet會根據控制模型引導Stable Diffusion生成符合用戶需求的圖像。
  5. 用戶可以通過調整控制模型中的參數,來進一步精確地控制AI圖像生成的結果。

標記圖 Annotation

在ControlNet中,annotation是對圖像中特定區域進行標記或標示的過程,通常用於指定圖像中的人物姿勢、身體部位、面部表情等信息。這些標記能幫助ControlNet更好地理解用戶對人物姿勢和動作的需求,從而生成更符合用戶需求的圖像。

3、ControlNet 1.1 模型分類

ControlNet 1.1 包含以下 14 個模型,這些模型的結合使得使用者能夠更靈活地控制圖像的各個層面,創造出更具藝術性和創意性的作品。

AI 召喚師這邊把 14 個模型分成 4 大類:

  1. 線稿類:以線稿為 Annotation,有Canny, Lineart, Lineart Anime, Scribber, SoftEdge, MLSD 等
  2. 色塊類:以大面積色塊做 Annotation,有 Depth, Normal, Segmenttion
  3. 精細控製類: 圖要精修的時候用的 Tile, Inpaint, Openpose
  4. 風格轉換類:用於風格轉換,如 ip2p, Shuffle,

4、線稿類

模型01:Canny 模型

Canny模型是一種老牌但又相當實用的圖像邊緣檢測方法。它跟 Lineart 線稿模型有些相似,都是把圖片換成線稿的模式,然後根據你給的提示和風格模型來重新上色和繪製。跟 Lineart 模型比起來,雖然他們都能產生線稿圖像,但是 Canny 模型更著重在提取和保留圖像邊緣的訊息,而不太在意細節和紋理的處理。

比較詳細的說明,請參考這一篇: 模型探索系列:模型01 — ControlNet Canny 模型

模型02:Lineart 模型

Lineart 模型是 ControlNet 中的一種模型,用於提取圖片中的線稿,使得圖片更加精細和豐富。相較於其他模型如 Canny,lineart 模型提取的線稿更加詳細,可以保留更多的細節。使用者可以選擇 lineart 的不同預處理模式(如粗略模式、詳細模式、標準模式)以達到不同的處理效果。

Lineart 模型是 ControlNet 中的一種模型,主要用於提取圖像中的線稿,使得圖像看起來更加清晰和精細。它可以根據不同的參數設置,提取出不同程度的線條和紋理,以達到不同的效果。在使用時需要選擇不同的模式以達到最佳效果。在 ControlNet 中還有其他模型如 SoftEdge 和 Scribble 等,它們也可以提取圖像中的線條和紋理,但是和 Lineart 模型相比,它們更加注重對圖像中細節和紋理的處理。因此,在需要提取線稿時,Lineart 模型是一個非常好用且有效的工具。

模型03:Lineart Anime 模型

lineart anime 模型是用於處理動漫圖像的模型,可以根據動漫線稿生成特定風格的圖像。它主要對應的預處理器是 lineart_anime。相較於寫實線稿,lineart anime 在動漫圖像上的表現會更好。如果想要使用這個模型,一定要記得選擇 anything-v3-full 這個模型,並且使用長提示詞生成的圖片效果會更好。

模型04:Scribble 模型

Scribble 模型是可以根據手繪或參考圖片中的涂鴉(草圖)生成精美的圖像。使用者可以在空白畫布上手繪涂鴉,或者提供參考圖片中的涂鴉,再根據提示詞和風格模型對圖像進行著色和風格化。相比於其他模型,scribble 模型更加自由,使用者可以根據自己的想法進行創作。scribble 模型還有三種預處理器模式可供選擇,分別是 Scribble_hed、Scribble_pidinet 和 Scribble_Xdog,使用不同的預處理器可以達到不同的效果。

模型05:Softedge 模型

SoftEdge 模型是 ControlNet 中的一種模型,專注於將圖片轉換為柔和的邊緣風格。相較於其他模型,SoftEdge 模型更加注重圖像的柔和度和自然度,通常用於生成風景、人物等柔和風格的圖片。在 ControlNet 1.1 版本中,SoftEdge 是 ControlNet 1.0 版本中 HED 的升級版。SoftEdge 模型有四種預處理器,按照結果品質排序分別是 SoftEdge_HED、SoftEdge_PIDI、SoftEdge_HED_safe、SoftEdge_PIDI_safe。SoftEdge 模型相對於傳統的邊緣模型(如 Canny),更注重保留圖像的細節,提取的線條更精細,細節更豐富。

模型06:MLSD 模型

MLSD 模型是一個專門用來描繪建築物的模型。主要負責提取建築物的線條結構和幾何形狀,並生成對應的建築線框圖像。相較於 ControlNet 中的其他模型,MLSD 模型更加專注於提取和保留建築物的結構和形狀,而不太關注細節和紋理的處理。對於從事建築或室內設計的人來說,這個模型非常有幫助。另外,在 ControlNet 中還有其他模型也可以產生線稿,例如 Lineart 和 Scribble,但它們主要用於上色和風格化處理,這和 MLSD 模型不同。

5、大色塊類

模型07:Depth 模型

Depth 模型的優點在於它能夠捕捉圖像中物體的深度,使圖片呈現出更立體的感覺,不再只是平面圖片。在 ControlNet 中還有其他類似的模型,如 Normal 擅長法向量圖像和 Openpose 擅長生成人體姿勢圖像,但 Depth 模型更加專注於提取和保留圖像的深度資訊,而不太關注細節和紋理的處理。而在 ControlNet 1.1 版本中,depth 模型的名稱被改為 depth_midas,以實現與舊版模型的相容性,並且進行了進一步的改進。

最近又有用depth 指導手指修復的新模型 depth_hand_refiner ,效果可以看我們的 用 ControNet 的 depth hand refiner 模型來修復手指 – Stable Diffusion 修手 – 示範案例

模型08:Normal 模型

Normal 模型是 ControlNet 中的一種模型,因為它會計算圖片中物體的表面法向量,所以可以記錄物體表面的方向,利用表面的方向和光影還原原圖的立體感。類似的模型有 Depth ,但 Depth 著重實現景深效果造成立體感,而非表現物體的表面立體效果。

模型09:Segmentation 模型

Segmentation 模型是 ControlNet 中的一種模型,主要用於對圖像進行分割,即將圖像中的不同區域進行標記和區分。它可以將圖像中的不同物體或區域分開,方便後續的處理和應用。在使用時需要選擇不同的參數設置以達到不同的效果。和 ControlNet 中的其他模型相比,它更加注重對圖像中物體或區域的分割和識別,而不是細節和紋理的處理。

6、精修控制類

模型10:Tile 模型

Tile 模型主要用於圖片的放大和提高清晰度。它在有限的像素基礎上,對圖像細節進行分塊擴散處理,生成與原圖相似且極為清晰的圖片。相似的模型包括 RealSR 和 ESRGAN 等,它們也用於圖像放大和提高清晰度。不同之處在於 Tile 模型更注重細節和紋理的處理,而 RealSR 和 ESRGAN 則更注重整體效果和風格轉換。使用者可以根據需要選擇不同的預處理器模式,例如 tile_resample,以實現不同的效果。

Tile 模型還有一個獨特的功能,可以自動識別圖塊內容並進行處理,生成與原圖相似且清晰的圖像。與其他類似模型相比,不需要準備草稿或塗鴉稿等基底,Tile 模型能夠直接在有限的像素基礎上進行處理,增加了識別提詞的影響。這使得 Tile 模型能夠生成與圖塊相似的圖像。

關於 Tile 模型,可以 AI 召喚師寫的另一篇文章: 「不再擔心放大圖片模糊!只要3步驟,ControlNet Tile 讓你的大圖更清晰」,這一篇文章專門討論專門討 Tile 模型。另外,我在我的頻道影片「如何生成高畫質照片」裡,也有提到如何使用 Tile 模型和 Ultimate SD upscale 一起生成高畫質照片。

模型11:Inpaint 模型

inpaint 模型是 ControlNet 1.1 版新推出的一種模型,可以根據圖像中已有的信息,對於圖像上缺失或損壞的部分進行圖像修復和重繪,使得圖像看起來更加完整和自然。它與 SDW 原生的 inpaint 功能類似,可以針對特定範圍進行重繪修圖,但是比起之前版本的 inpaint,它更加智慧化,操作邏輯與 SDW 內建的 inpaint 功能雷同。

模型12:Openpose 模型

OpenPose 模型是一種常用的 AI 模型,用於檢測圖片中的人體姿勢。它能夠準確檢測出人體的各個部位,包括身體、臉部和手部等,並提供相應的位置和角度資訊。使用者可以根據需要選擇不同的組合,例如身體姿勢、臉部表情和手部姿勢,以實現不同的效果。

7、風格轉換類

模型13:Shuffle 模型

Shuffle 模型可以將圖片轉換為具有特殊風格的圖像。相較於其他模型,Shuffle 模型更加注重圖像的細節和紋理,通常用於生成具有特殊風格的圖片,例如卡通風格、水彩風格等。使用者可以選擇不同的預處理器模式(如 shuffle_hed、shuffle_pidinet 等)以達到不同的效果。

模型14:Instruct Pix2Pix (ip2p) 模型

IP2P 模型是 ControlNet 中的一種模型,可以通過指令式提示詞(如 make Y into X)對圖片進行指令式變換。相較於其他模型,IP2P 模型更加注重圖像的轉換和變形,通常用於生成具有特殊效果的圖片,例如將一張晴天的照片變成下雪的場景。

8、額外的預處理器

Reference only 預處理器

Reference-only preprocessor 是 ControlNet 中的一種預處理器模式,主要用於對圖片進行預處理。它可以根據提供的圖片和提示詞,識別圖片中的人物或場景,並對圖片進行微調和生成。舉個例子來說,如果你提供一張狗的圖片,然後給出提示詞說「狗在跑」,reference-only 將生成一張圖片,呈現你的狗正在奔跑的場景。

關於這個預處理器,可以看這篇:ControlNet 1.1 的 Reference only 功能,只要一張照片,不必訓練 Lora,就可以生成特定人物的不同動作

9、常見問題

問題1、ControlNet 1.1 比起 ControlNet 1.0 有哪些改進?

ControlNet 1.1 則是目前最新版本,包括 ControlNet 以前的所有模型,除了比之前有更強的穩定性外,還新增了數個新的模型。

  1. 新版本的介面中有一個特別方便的新功能叫Pixel Perfect,不再需要手動調整ControlNet的解析尺寸大小,並且也已經移除了尺寸調整功能。只需要勾選Pixel Perfect即可自動將解析尺寸設置為出圖尺寸大小。
  2. Canny 模型的改進:修復了訓練數據集中存在的問題,使得模型更加合理和準確。
  3. Inpaint 模型的新增:新增了 Inpaint 操作邏輯,可以針對特定範圍進行重繪修圖。
  4. Tile 模型的新增:新增了 Tile Resample 功能,可以對單一圖片進行瘋狂研磨、精修、放大和美化等操作。
  5. ControlNet 1.1 的 openpose 效果更加出色,可以直接控制人物表情等內容。
  6. 更新方式更加方便,只需要在 SDW 介面中點擊 Check for updates 按鈕即可完成更新。
  7. 新版安裝方式更加清晰明確,避免了一些更新後出現的問題。
  8. 整體性能提升,運算速度更快、效率更高。

問題2、ControlNet 1.1 有什麼模型值得推薦?

在 ControlNet 1.1 中,以下幾個模型值得推薦:

  1. ControlNet 1.1 Canny: Canny模型是 ControlNet 中最重要、最常用的模型,它主要用於圖像邊緣檢測和圖像分割。相比於其他模型,Canny 模型在處理圖像邊緣時更加精確、鮮明,並且可以有效地避免邊緣模糊或者出現斷裂等問題。
  2. ControlNet 1.1 Tile:這是一個用於忠實放大、增添細節的模型。它適合用於對單一圖片精修、放大和美化等情況。如果你需要對單張圖片進行高質量處理,那麼這個模型值得一試。
  3. ControlNet 1.1 Inpaint:這是一個用於重繪修圖的模型,可以針對特定範圍進行重繪修圖。它與 SDW 內建的 inpaint 功能雷同,但是在使用上更加方便且效果更好。此外,它還可以用於 txt2img 或 img2img 等多種情況下。

問題3、Lineart, Lineart Anime, Canny, Softedge, Scribble, MLSD 都是在做線稿,有什麼不同,他們各自擅長什麼?

Lineart, Lineart Anime, Canny, Softedge, Scribble, MLSD 都是 ControlNet 中用於提取圖像線稿的模型,但它們各自有不同的特點和擅長的領域。

  1. Lineart 模型可以提取出更加精細和豐富的線條和紋理,適用於需要強調圖像結構和細節的場景。
  2. Lineart Anime模型則更適合處理動漫風格的線稿。
  3. Canny 模型注重對圖像中物體邊緣的提取,因提取的線條較為簡單,適用於需要強調物體輪廓和形狀的場景。
  4. SoftEdge 模型則可以提取出更加柔和和平滑的線條,適用於需要表現柔和氛圍或者光影效果的場景。
  5. Scribble 模型則可以更好地處理手繪涂鴉等複雜紋理,適用於需要表現手繪風格或者複雜紋理效果的場景。
  6. MLSD 主要用於對圖像進行分割和邊界提取等操作,適用於提取建築物的線條結構和幾何形狀,並生成對應的建築線框。

問題4、Normal, Depth 不同的點是什麼?他們各自擅長什麼?

Normal 和 Depth 共同的點是都可以提取出圖像中物體的資訊,使得 Normal 和 Depth 非常像,以下是它們的區別:

  1. Normal 模型作法是提取出物體表面的法向量資訊,使得在表現物體表面的光照效果非常好。
  2. Depth 模型則可以提取出物體的深度資訊,關注物體的空間位置和距離,用於實現景深效果。

10、參考資料

  1. 如果想要了解 ControNet 1.1 如何安裝,請看這篇: 如何安裝 ControlNet 1.1 以及安裝模型?
  2. ControlNet 1.1 官方頁面
  3. 一篇講 ControlNet 很清楚的教學:ControlNet v1.1: A complete guide

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *