首頁

目前文章總數:249 篇

  

最後更新:2026年 09月 12日

0011. 告別特徵崩壞!Qwen-Image 2509 延伸擴充 ControlNet「單階段合成」ComfyUI 工作流全解析

日期:2026年 09月 12日

標籤: Linux Ubuntu Docker Docker-Compose Container ComfyUI WSL 2.2 Qwen-Image Qwen-Image-Edit-2509 Image Editing ControlNet LoRA Qwen-Image-Lightning

摘要:生成式AI


應用所需:1. 已安裝 Windows 的 Docker Desktop (Use WSL 2 instead of Hyper-V)
     2. 已安裝並可正常執行 ComfyUI
     3. 建議使用 NVIDIA 顯示卡;本篇實測規格為 RTX 5070 + 12 GB VRAM
解決問題:1. Qwen-Image-Edit-2509 融合圖片後,更進一步控制合成結果預期的人物姿勢、動作
官方參考:Qwen / Qwen-Image-Edit-2509
官方參考:ControlNet 模型本身的官方來源:InstantX
相關文章:0010. 超越單圖 Edit!Qwen-Image-Edit-2509 在 ComfyUI 的多圖融合與 4 步極速實戰教學
本篇工作流載點:點擊下載
本篇分為 4 大部分。
第一部分:問題描述
第二部分:Qwen-Image-Edit + ControlNet ComfyUI工作流
第三部分:驗證成果
第四部分:分析、遺留問題探討






第一部分:問題描述

Step 1:多圖融合成功,姿勢卻還是不可控

上一篇使用 Qwen-Image-Edit-2509 將人物、服裝與場景放進同一次編輯, 已經可以明確告訴模型「誰、穿什麼、在哪裡」。

但當 Prompt 進一步要求人物做出指定動作,問題就會出現:

1. 將人物改成側身回頭
2. 右手高舉商品、左手放在腰間
3. 雙腳呈跑步姿勢
4. 鏡頭維持正面、臉部仍看向鏡頭
5. 其他特徵完全不要改變


文字能描述動作,卻無法 精確的指定動作姿勢。本篇要解決這最終動作問題。

Step 2:特徵崩壞從哪裡來?

人物姿勢變化越大,模型需要重新生成的像素越多。
因此原本的臉部、服裝皺褶、商品位置與背景遮擋關係,都可能被一起重新解釋,例如:

常見問題 表面現象 可能原因
臉部漂移 五官、年齡或髮型改變 姿勢變化讓模型重新建立人物身分
手腳錯位 多手、多指、關節反折 Prompt 沒有提供精確骨架條件
服裝改款 顏色相近,但剪裁與圖案不同 身體輪廓改變後需要重畫衣服
商品變形 Logo、按鍵或包裝比例錯誤 手部接觸與遮擋關係重新生成
背景重畫 招牌、家具與線條偏移 模型把整張圖視為可編輯範圍
人物位置漂移 主體突然放大、縮小或被裁切 缺少空間與構圖約束


因此這篇要提供一張模型能理解的「動作姿勢圖」。來解決上述問題

Step 3:補充 ControlNet 說明

ControlNet 將邊緣、深度或人體骨架等結構資訊加入生成過程。
Prompt 負責內容與語意,ControlNet 則提供 東西應該放在哪裡 的約束

控制類型 條件圖 適合用途
Canny 黑底白線的硬邊緣 鎖定商品輪廓、建築線條與大構圖
Soft Edge 較柔和、連續的物體邊界 保留輪廓但允許材質與細節變化
Depth 表示前後距離的灰階深度圖 鎖定空間、鏡頭與前後層次
Pose / OpenPose 人體骨架與關節點 改變或複製人物姿勢


InstantX 的 Qwen-Image-ControlNet-Union 整合上述四種模式在 3.54 GB 的 ControlNet 模型權重中

Step 4:什麼是「單階段合成」?

傳統兩階段流程可能先使用 Qwen Edit 產生新人物,再將生成圖送入第二個 ControlNet 工作流改變姿勢。
但是兩階段會導致:每一次重新編碼、加噪與採樣,都可能讓臉部、衣服與商品再次漂移

兩階段:
原圖 → Qwen Edit 生成中間圖 → ControlNet 再生成最終圖
       第一次重畫             第二次重畫


單階段:
原圖外觀條件 ─┐
Prompt ───────┼→ 同一個 KSampler → 最終圖
ControlNet ───┘


本篇的 單階段 是指人物參考、文字指令與 ControlNet 結構在同一次採樣前整合。
只執行一次主要 KSampler。姿勢預處理仍然會先產生骨架圖。

Step 5:本篇說明 - 對應規格

以下是本次預計測試的環境:

項目 本次環境
GPU NVIDIA GeForce RTX 5070(12 GB VRAM)
CPU Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz,3192 Mhz,6 個核心,12 個邏輯處理器
RAM 48 GB
OS Microsoft Windows 10 專業版
主模型 qwen_image_edit_2509_fp8_e4m3fn.safetensors
加速模型 Qwen-Image-Edit-2509-Lightning-4steps-V1.0-bf16.safetensors
ControlNet Qwen-Image-InstantX-ControlNet-Union.safetensors


※Lightning LoRA 能減少採樣步數,但不會讓主模型與 ControlNet 的權重消失。

第二部分:Qwen-Image-Edit + ControlNet ComfyUI工作流

Step 1:延續上一篇的 Qwen-Image-Edit 工作流

本篇是基於上一篇的 Qwen-Image-Edit-2509 工作流中插入 ControlNet 所需工作節點的分支工作流。
上一篇的工作流 Json 下載檔案

Step 2:完整工作流 - 大綱

本篇只會延續上篇的工作流說明有新增的節點與原本的工作流如何調整節點串接:

工作流區塊 功能
Model links 新增 ControlNet 模型來源
ControlNet 姿勢設定 加載 ControlNet 模型、DWPOse Estimator、應用ControlNet、預覽圖像


調整後完整的工作流如圖


Step 3:額外下載擴充 - controlNet(已安裝可跳過)

為了要能在 ComfyUI 中使用 ControlNet 需要先下載擴充
開啟 ComfyUI -> 自定義節點管理器 -> 輸入以下文字 -> 安裝

comfyui_controlnet_aux




Step 4:Model Links - 下載必要模型

若上一篇模型都已下載,這次主要新增 InstantX ControlNet
來源

模型名稱 載點
Qwen-Image-InstantX-ControlNet-Union.safetensors huggingface載點





選擇 Hf 的 CLI 指令下載模型

hf download Comfy-Org/Qwen-Image-InstantX-ControlNets split_files/controlnet/Qwen-Image-InstantX-ControlNet-Union.safetensors --local-dir H:\




Step 5:Model Links - 放到對應目錄

下載完成後,將檔案放進對應的 Model 下:

ComfyUI/
└── models/
    ├── controlnet/
    │   └── Qwen-Image-InstantX-ControlNet-Union.safetensors


選擇 Hf 的 CLI 指令下載模型


Step 6:工作流 ControlNet 姿勢設定 - 新增節點

依序新增以下節點: 1. DWPose 節點


2. 應用ControlNet(舊高級版) ※相符合的即可替換


3. 加載ControlNet模型


4. 加載圖像 ※上傳當作姿勢的圖片


5. 預覽圖像 ※加載圖像後用來顯示骨架預覽


Step 7:工作流 ControlNet 姿勢設定 - 載入模型

上述的節點都新增後,預期會有以下的節點串接結構
並且將 加載ControlNet 模型 選擇 => Qwen-Image-InstantX-ControlNet-Union.safetensors


Step 8:工作流 ControlNet 姿勢設定 - 修改節點串接

為了整合 Qwen-Edit 與 ControlNet 為單階段模式,將 K採樣器 的輸入 + 應用ControlNet(舊版高級) 的輸出,提示詞做調整:

K採樣器 應用ControlNet(舊版高級)
正面條件(輸入) 正面條件(輸出)
負面條件(輸入) 負面條件(輸出)




調整 2:將 加載VAE 的輸出 + 應用ControlNet(舊版高級) 的輸入

加載VAE 應用ControlNet(舊版高級)
VAE(輸出) VAE(輸入)





調整 3:將 文本編碼(QwenImageEditPlus) 的輸出 + 應用ControlNet(舊版高級) 的輸入

文本編碼(QwenImageEditPlus) 應用ControlNet(舊版高級)
正面條件(輸入) 正面條件(輸出)
負面條件(輸入) 負面條件(輸出)




Step 9:補充說明 - 上傳姿勢參考圖

上傳姿勢參考圖時,不需要與原人物長得相像,因為只負責提供動作

建議 原因
全身或需要修改的肢體完整入鏡 被裁掉的關節無法可靠偵測
人物與背景對比明顯 降低骨架偵測錯誤
避免多人重疊 防止取得錯誤人物骨架
姿勢不要超出輸出畫布 避免手腳被裁切
視角與目標構圖接近 降低大幅重建身體造成的身分漂移


若參考圖有多人,應先裁切目標人物,或使用能選擇特定 Pose 的流程,例如下圖是本篇的範例(2人打架)


Step 10:補充說明 - DWPose 預處理

DWPose節點,主要用於從輸入圖片中精確提取人體的骨架、手部關節與臉部特徵點
最終輸出到 ControlNet 能理解的骨架圖

detect_body 手部關鍵點檢測,若生成畫面手部常崩壞,建議開啟
detect_hand 身體主骨架檢測,這是姿勢控制的核心,通常保持 enable
detect_face 臉部五官輪廓點檢測,若需要嚴格限制臉部朝向與表情時開啟
resolution 預處理器運算解析度,數值越高對遠景小人的抓取越精確
bbox_detector 人體邊界框檢測模型。負責第一階段先找出畫面中的「人」在哪裡。
scale_stick_for_xinsir_cn 針對 Xinsir 系列 ControlNet 的骨架粗細適配開關,預設 Disable 用不到




Step 11:補充說明 - ControlNet

ControlNet節點,骨架姿勢的核心、建議先以保守參數建立基準,再逐步加強:

參數 建議起點 說明
strength 0.8~1.0 InstantX 模型卡對四種模式的建議範圍
start_percent 0.0 從採樣初期建立構圖與姿勢
end_percent 0.8~1.0 太早停止可能姿勢鬆動;全程過強可能壓制外觀


部分社群工作流會將 Pose Strength 設到 1.5 甚至更高,但那不應成為第一個預設值。
強度越高,越可能精準跟隨骨架,同時也越容易犧牲臉部、服裝與自然細節。


Step 12:Prompt補充 - 只修改姿勢

Prompt 必須同時交代要改什麼,以及哪些內容不能跟著改(因為基底是 Qwen 可正常支援中文):

Keep the same person, face, hairstyle, outfit, colors, body proportions,
camera, lighting, and background from Image 1.
Change only the body pose to follow the supplied OpenPose control image.
Keep exactly one person. Preserve the original facial identity and expression.
Do not redesign the clothing, add accessories, alter the background,
or copy the appearance of the person in the pose reference image.


若原圖不是全身,卻要求生成骨架中的完整雙腿,模型必須自行補出原圖不存在的服裝與身體
此時「完全不改變任何細節」本身就是矛盾條件,因此仍須考量 合理性

第三部分:驗證成果

Step 1:2個人物打架動作合成 - 準備

Image1:正常休閒服的女性
Image2:空服小姐
姿勢參考圖:打架的2個男子
輸出目標:image1 與 image2 合成變成打架畫面


原始人物-Image1:


原始人物-Image2:


姿勢參考:


DWPose 骨架:



三張圖最好都先裁掉無關資訊。物件圖保留完整,姿勢圖盡量保持主要人物,避免過多雜訊。

Step 2:驗證成果

最終可以看到只透過提示詞很難實現的 身穿休閒服的人與空姐互毆的合成圖像
ControlNet 實現了圖像生成的最終姿勢、動作


第四部分:分析、遺留問題探討

Step 1:準確不等於人物自然

骨架只提供關節點與肢體方向,不包含肌肉、衣服厚度、頭髮、遮擋與透視細節。

骨架可能正確 最終圖片仍可能錯誤
手腕位置 手指數量與抓握方式
膝蓋角度 褲管皺褶與腿部粗細
頭部方向 臉部五官與視線
身體中心 衣服、背包與長髮遮擋
雙腳位置 地面接觸、陰影與重心


動作越極端、遮擋越複雜,越需要後續局部 Inpaint 或人工修圖。

Step 2:Face 與 Hand Keypoints 的取捨

Face Keypoints 能控制頭部與表情方向,也可能把姿勢參考者的臉部幾何強加到原人物
Hand Keypoints 能提供手指位置,但低解析度下容易產生錯誤偵測。

第一輪:Body ON / Hands OFF / Face OFF
第二輪:Body ON / Hands ON / Face OFF
第三輪:Body ON / Hands ON / Face ON


逐輪比較能看出是哪一類關鍵點造成身分或肢體崩壞,而不是一次全部開啟後只能盲目換 Seed。
※對應第二部分 Step 10:補充說明 - DWPose 預處理

Step 3:ControlNet的參數探討

ControlNet 越強,結構越接近條件圖;
Edit 參考越強,人物外觀越接近原圖。兩邊都要求「完全一致」時,模型可能無法同時滿足。

姿勢優先:提高 Strength、延後 End Percent
身分優先:降低 Strength、提早 End Percent
背景優先:使用接近原構圖的 Pose,避免整張重排
商品優先:使用 Canny 鎖輪廓,再人工修復文字


最佳參數是一個平衡點,不是單純追求最大的 Control 強度。

Step 4:單階段不是永遠優於兩階段

單階段能減少重複採樣造成的資訊流失,也讓 Prompt、身分與結構一起協調;但若需求互相衝突,兩階段反而更容易分工。

適合單階段 適合兩階段 / 後製
只修改人物姿勢 先大幅換裝,再精準修手
保留場景並微調構圖 商品包裝文字必須百分之百正確
人物 + OpenPose 需要局部臉部高解析 Detail Transfer
場景風格 + Depth 多個角色各自使用不同骨架
商品輪廓 + Canny 遮罩區域必須完全不影響其他像素


工作流設計不是節點越少越好,而是每次採樣都有明確目的。

Step 5:本次結論

Qwen-Image-Edit-2509 擅長回答「要保留誰的外觀」,ControlNet 擅長回答「主體應該出現在什麼結構與位置」。
把兩者接到同一個採樣階段後,Prompt 不再獨自承擔姿勢與空間控制,人物特徵也少經過一次中間圖重繪。

從多圖融合到 ControlNet,Qwen-Image-Edit-2509 的控制方式已從「描述想要的畫面」前進到「直接提供畫面的結構」。真正穩定的工作流,仍要靠固定 Seed、逐項測試與人工檢查。