什麼是 控制網路(ControlNet)?

ControlNet 是一種神經網路結構,用於控制大型擴散模型,例如 Stable Diffusion,以實現更精確的圖像生成控制,例如基於草圖或邊緣圖生成圖像。

核心概念

ControlNet 是一種神經網路結構,其核心目標是為現有的、預訓練的大型擴散模型(例如 Stable Diffusion)提供額外的控制能力。傳統的文本到圖像生成模型,雖然強大,但往往缺乏對生成圖像細節的精確控制。ControlNet 的出現,旨在彌補這一缺陷,讓使用者能夠基於更豐富的輸入條件,例如草圖、邊緣圖、深度圖、分割圖等,來引導圖像生成過程,從而實現更精確、更可控的圖像生成。

  • 鎖定權重 (Locked Weights): ControlNet 的一個關鍵設計是「鎖定權重」。它首先複製預訓練擴散模型的權重,然後將原始權重保持凍結(不可訓練)。
  • 可訓練副本 (Trainable Copies): 與鎖定權重相對應的是「可訓練副本」。ControlNet 在擴散模型的基礎上,並行地添加了一組可訓練的權重副本。這些副本負責學習如何根據輸入的控制條件來調整擴散過程。
  • 零卷積 (Zero Convolutions): ControlNet 使用特殊的「零卷積」層來連接可訓練副本和鎖定權重。零卷積層的初始權重為零,這確保了在訓練初期,ControlNet 不會對原始擴散模型的生成能力產生干擾。隨著訓練的進行,零卷積層逐漸學習如何將控制條件的信息融入到擴散過程中。
  • 控制條件 (Control Signals): ControlNet 接受各種控制條件作為輸入,例如草圖、邊緣圖、深度圖、分割圖、姿勢估計等。這些控制條件提供了關於目標圖像結構、形狀和內容的額外信息。

運作原理

ControlNet 的運作流程可以概括為以下幾個步驟:

  1. 輸入控制條件: 使用者提供一個控制條件,例如一張草圖或一張邊緣圖。
  2. 預處理控制條件: ControlNet 對輸入的控制條件進行預處理,例如將草圖轉換為灰度圖像,或將邊緣圖進行二值化。
  3. 輸入到 ControlNet: 預處理後的控制條件被輸入到 ControlNet 的可訓練副本中。
  4. 調整擴散過程: ControlNet 的可訓練副本根據輸入的控制條件,學習如何調整擴散模型的逆擴散過程。具體來說,ControlNet 會生成一些中間特徵圖,這些特徵圖會被添加到擴散模型的相應層中。
  5. 生成圖像: 經過調整的擴散模型根據文本提示詞和 ControlNet 提供的控制信息,生成最終的圖像。

ControlNet 的訓練過程主要包括以下步驟:

  1. 準備訓練資料: 準備包含圖像和對應控制條件的訓練資料集。例如,如果使用草圖作為控制條件,則訓練資料集需要包含大量的圖像和對應的草圖。
  2. 鎖定原始權重: 鎖定預訓練擴散模型的原始權重,使其在訓練過程中保持不變。
  3. 訓練可訓練副本: 訓練 ControlNet 的可訓練副本,使其能夠根據輸入的控制條件,調整擴散模型的逆擴散過程。訓練目標是最小化生成圖像與目標圖像之間的差異。
  4. 使用零卷積: 使用零卷積層來連接可訓練副本和鎖定權重,以確保在訓練初期,ControlNet 不會對原始擴散模型的生成能力產生干擾。

實際應用

ControlNet 在圖像生成領域具有廣泛的應用前景,包括:

  • 基於草圖生成圖像 (Sketch-to-Image): 使用者可以通過繪製草圖來指定生成圖像的結構和內容。ControlNet 可以根據草圖生成逼真的圖像。
  • 基於邊緣圖生成圖像 (Edge-to-Image): 使用者可以通過提供邊緣圖來控制生成圖像的形狀和輪廓。ControlNet 可以根據邊緣圖生成具有清晰邊緣的圖像。
  • 基於深度圖生成圖像 (Depth-to-Image): 使用者可以通過提供深度圖來控制生成圖像的 3D 結構。ControlNet 可以根據深度圖生成具有真實 3D 感知的圖像。
  • 基於分割圖生成圖像 (Segmentation-to-Image): 使用者可以通過提供分割圖來控制生成圖像中不同區域的內容。ControlNet 可以根據分割圖生成具有精確區域劃分的圖像。
  • 姿勢控制 (Pose Control): 使用者可以通過提供人物的姿勢信息來控制生成圖像中人物的姿態。ControlNet 可以根據姿勢信息生成具有特定姿態的人物圖像。
  • 圖像編輯 (Image Editing): ControlNet 可以用於圖像編輯任務,例如,修改圖像的結構、形狀和內容。

常見誤區

  • ControlNet 是一個獨立的生成模型: ControlNet 本身並不是一個獨立的生成模型,它需要與一個預訓練的擴散模型(例如 Stable Diffusion)結合使用。ControlNet 的作用是為擴散模型提供額外的控制能力。
  • ControlNet 可以完全控制生成圖像的每一個細節: 雖然 ControlNet 可以提供更精確的控制,但它仍然受到擴散模型本身能力的限制。ControlNet 無法完全控制生成圖像的每一個細節,例如紋理和光照。
  • ControlNet 的訓練非常困難: 由於 ControlNet 使用了鎖定權重和零卷積等技術,因此其訓練過程相對穩定,不容易出現訓練崩潰的問題。然而,仍然需要大量的訓練資料和計算資源才能獲得良好的效果。
  • ControlNet 只能用於圖像生成: 雖然 ControlNet 最初是為圖像生成而設計的,但其核心思想也可以應用於其他生成任務,例如視訊生成和 3D 模型生成。

相關術語

常見問題

← 回到 控制網路 快查頁

延伸學習

想看 控制網路 的完整影片教學?前往 美第奇 AI 學院