目錄

ComfyUI ControlNet 教學:用線稿、姿勢、深度控制構圖

只靠提示詞很難精確控制「人物擺什麼姿勢」、「建築物的透視」、「畫面的構圖」。ControlNet 讓你提供一張參考圖,從中擷取結構資訊(線條、姿勢、深度),讓生成的圖片照著這個結構來畫。

常見的控制類型

類型從參考圖擷取適合
Canny邊緣線條保留輪廓與細節,例如產品、建築
Lineart線稿把線稿上色、變成完整插畫
OpenPose人體骨架(姿勢、手、臉)指定人物姿勢
Depth深度(遠近)保留空間結構與透視
Scribble簡單塗鴉用隨手畫的草圖控制構圖
Tile圖片本身的細節放大時保持一致、增加細節

需要準備

  1. ControlNet 模型:放到 models/controlnet/。必須對應基礎模型的版本(SD 1.5、SDXL、Flux 各有不同的 ControlNet)。現在也有「Union」類型的模型,一個檔案支援多種控制類型。
  2. 前處理器(Preprocessor):把參考照片轉成 ControlNet 需要的圖(例如把照片轉成線條或骨架)。Canny 有內建節點;其他類型通常需要安裝 comfyui_controlnet_aux 自訂節點(見 自訂節點與 Manager)。

建立工作流程(以 Canny 為例)

[Load Image] ─▶ [Canny] ─IMAGE────────────────┐
                                              ▼
[CLIP Text Encode 正向] ─CONDITIONING─▶ [Apply ControlNet] ─positive─▶ [KSampler]
[CLIP Text Encode 負向] ─CONDITIONING─▶                    ─negative─▶
[Load ControlNet Model] ─CONTROL_NET──▶
                         vae ─────────▶

步驟:

  1. 從文生圖工作流程開始。
  2. 新增 Load Image,載入參考圖。
  3. 新增 Canny 節點,接上參考圖。執行一次,用 Preview Image 確認擷取出的線條。
執行後 Preview Image 顯示結果
按 Run 執行後,結果直接顯示在 Preview Image / Save Image 節點上(此例為 Canny 邊緣偵測)
  1. 新增 Load ControlNet Model,選擇 Canny 模型。
  2. 新增 Apply ControlNet:
    • positive、negative 接兩個 CLIP Text Encode 的輸出
    • control_net 接 Load ControlNet Model
    • image 接 Canny 的輸出
    • vae 接模型的 VAE(部分 ControlNet 需要)
  3. Apply ControlNet 輸出的 positive、negative 接到 KSampler。
  4. Empty Latent Image 的尺寸設成和參考圖相同比例。
ComfyUI ControlNet Canny 工作流程
ControlNet(Canny):參考圖經 Detect Edges (Canny) 取出線條,Apply ControlNet 修改正負向提示詞後再接到 KSampler

參數

參數說明建議
strength控制強度0.5~1.0。太高會讓畫面僵硬、細節不自然
start_percent從生成過程的哪個階段開始控制0
end_percent在哪個階段停止控制0.6~1.0

技巧:end_percent 設為 0.5~0.7,前半段由 ControlNet 決定構圖,後半段讓模型自由發揮細節,結果通常更自然。

OpenPose:控制人物姿勢

  1. 用 DWPose Estimator 或 OpenPose Pose 前處理器(來自 controlnet_aux),從一張人物照片擷取骨架。
  2. 用 Preview Image 確認骨架正確。
  3. 接上 OpenPose ControlNet 模型。

生成的人物會擺出和照片相同的姿勢,但長相、服裝、場景由提示詞決定。

Depth:保留空間結構

用 Depth Anything 等前處理器產生深度圖。適合:

  • 把室內照片重新設計成不同的裝潢風格
  • 保留建築或場景的透視,改變季節、時間、畫風

組合多個 ControlNet

把多個 Apply ControlNet 串接:第一個的 positive / negative 輸出接到第二個的輸入。例如 OpenPose 控制姿勢 + Depth 控制場景。每個的強度要適度降低,避免互相衝突。

常見問題

狀況原因
錯誤或完全沒效果ControlNet 模型與基礎模型版本不符(例如 SD 1.5 的 ControlNet 用在 SDXL)
畫面僵硬、有線條痕跡strength 太高,或 end_percent 太晚
人物變形參考圖和輸出的比例不同,或骨架擷取錯誤
找不到前處理器節點尚未安裝 comfyui_controlnet_aux

更新於 2026年10月12日