Qwen-Image 2.1 Fun ControlNet Union: 8つの制御を1ファイルに集約

ComfyUI Wikinews

Alibaba PAIのQwen-Image 2.1向けControlNet Unionは、8種類の構造制御とインペイントを1つの7.5 GBブランチにまとめ、ComfyUIサポートも登場します。

Qwen-Image-2.1-Fun-Controlnet-Union(Hugging Face | VideoX-Fun | ComfyUI PR #16519)は、Qwen-Image 2.1 向けのAlibaba PAIのControlNet-Unionブランチです。1つの7.5 GB checkpointが8種類の構造制御条件とインペイントを担い、ベースtransformerを置き換えるのではなく、凍結したベースの上に読み込まれます。

Qwen-Image 2.1 は2026年9月20日に、同じ重みで生成と編集を行い、実際のRGBAアルファを書き出す7BのシングルストリームDiTとして登場しました。ControlNet-Unionブランチは、Alibaba PAIがMiniMax H3でたどったのと同じ道を進みます。すべての条件をカバーする単一の制御checkpointなので、条件ごとに重みを切り替える必要はありません。

1つのブランチ、8つの条件

公開されたファイルには制御ブランチのみが含まれます(control_img_in と16個の control_blocks、モデルカードによれば約7.0 GB、ディスク上では7.55 GB)。これはベースのQwen-Image 2.1 transformerの上に strict=False で読み込まれ、ベースは凍結されたままなので、ベースの重みはそのまま再利用されます。

制御条件Canny、Depth、Grayscale、HED、Lineart、MLSD、Pose、Scribble
制御ブランチの深さ16ブロック、32個のtransformerブロックのうち2つごとに1つのskip(control_layers = [0, 2, 4, ..., 30])
制御入力の幅control_in_dim = 129: 制御latent(64)+ マスク(1)+ マスク画像latent(64)
注入各制御ブロックのzero-gatedな before_proj / after_proj をメインブランチに加算
サンプリングCFG蒸留済み。サンプルスクリプトは guidance_scale = 1.0 で実行(ステップごとに1回のforward pass)
テキストエンコーダー / VAEプロンプトと条件画像にはQwen3-VL processor、VAEはRGBAをデコードするためプレビューはPNGとして保存

control_context_scale は、メインブランチに加算される前のすべての制御skipをスケーリングします。1.0 は公開されているすべての結果で使われた最も強い設定で、値を下げるとガイダンスが弱まり、0.0 で制御ブランチがオフになります。

制御条件

条件制御信号
CannyCannyエッジマップ
Depth単眼深度マップ
Grayscaleグレースケール(輝度)画像
HEDHEDエッジ検出マップ
Lineart線画抽出
MLSD線分検出マップ
PoseDWPoseスケルトン
Scribbleフリーハンドまたはスケッチ線

ターゲットキャンバスに合う通常のRGB制御画像であればどれでも機能します。モデルカードによれば、線の太さやしきい値、クロップの違いを許容します。以下のサンプルはすべてモデルカードのもので、40推論ステップ、control_context_scale = 1.0、seed 43で生成され、左が制御信号、右が生成結果です。

Canny制御Canny結果
Cannyエッジマップ生成出力
Depth制御Depth結果
深度マップ生成出力
Grayscale制御Grayscale結果
グレースケール画像生成出力
Scribble制御Scribble結果
スクリブルスケッチ生成出力

残りの条件(HED、Lineart、MLSD、Pose)も同じパターンでモデルページに掲載されています。

インペイントも同じブランチを共有

制御入力を129チャンネルに広げているのは、まさに1つのブランチで両方の役割をこなすためです。制御latent、保持マスク、マスク画像latentがブランチに入る前に連結されます。純粋な制御ではマスクとマスク画像のチャンネルがゼロパディングされるので、同じcheckpointで通常のCannyやDepthも実行できます。インペイントではマスク領域がプロンプトから描き直され、フレームの残りの部分は保持されます。両者は組み合わせることもでき、制御画像とマスクを一緒に入力すると、描き直された領域はプロンプトと指定された構造の両方に従います。

マスクはコンテンツを再生成する場所が白、保持する場所が黒です。再生成されたピクセルはミッドグレー、つまりVAEの [-1, 1] 入力範囲のゼロでエンコードされるため、手を付けていない領域は往復を経ても維持されます。

インペイントのソースインペイントのマスクPose制御インペイント出力
ソース画像マスクPose制御インペイント出力

ComfyUIサポート

ComfyUIのサポートはリリース済みではなくレビュー中です。Kijai氏は2026年9月24日にPR #16519(「Support Qwen-Image 2.1 union fun controlnet」)を開き、4つのファイルを変更しています。

  • comfy/ldm/qwen_image21/model.py に QwenImage21FunControl と QwenImage21FunControlBlock を追加します。VACEスタイルのブランチで、制御latentをターゲット行にシードし、1つのベースブロックの後に各ブロックの after_proj skipを加算し直します。
  • comfy_extras/nodes_model_patch.py は ModelPatchLoader にレイアウトを教えます。checkpointを control_img_in と control_blocks.0.img_mlp.out.weight で検出し、ブロック数、control_in_dim、head dim、MLP比率をstate dictから導出するので、1つのローダーでこのcheckpointファミリーに対応します。量子化ファイルは混合精度演算で読み込まれ、レイヤーは量子化されたままbf16で計算されます。
  • comfy_extras/nodes_qwen.py は QwenImage21FunControlNetApply(「Apply Qwen Image 2.1 Fun ControlNet」)を追加します。入力は model と model_patch、strength(デフォルト1.0)、start_percent / end_percent、そして任意の control_image、inpaint_image、mask(「1が再生成する領域を示す」)です。
  • comfy/controlnet.py はQwen Funローダーの検出を厳密にし、新しいcheckpointが古いControlNetレイアウトと誤認されないようにします。

PRがレビュー中の間に、Kijai氏はすでに変換済みのComfyUIパッチを公開しています。

Comfy-Org/workflow_templates にはこれ用の公式ワークフローテンプレートがまだないため、以前のQwen-Imageテンプレート(image_qwen_image_controlnet_patch、image_qwen_image_instantx_inpainting_controlnet)は古いモデル向けであり、ここでは使えません。

入手方法

ComfyUI以外では、checkpointは VideoX-Fun 経由で実行します。VideoX-Fun をクローンし、ベースのQwen-Image 2.1モデルと制御checkpointを models/Diffusion_Transformer/ に置き、examples/qwenimage21_fun/predict_t2i_control.py(インペイントなら predict_i2i_inpaint.py)を実行します。このブランチはコミット「Update Qwen Image 2.1 Control and Flex Forcing」で追加されました。

モデルカードの4つの注意点は覚えておく価値があります。

  • config_path は 必ず config/qwenimage21/qwenimage21_control.yaml でなければなりません。これはcheckpointが想定する通りの制御ブランチ(control_layers: [0, 2, 4, ..., 30]、control_in_dim: 129)を構築します。他のconfigを使うと制御重みが黙って欠落したり位置ずれしたりして、誤った出力になります。
  • sample_size は出力キャンバスを設定します。制御マップが歪まないよう、両辺を16の倍数に保ってください。
  • use_kv_cache = True は最初のdenoiseステップの後にテキストと条件画像のキーをキャッシュし、固定解像度での生成を高速化します。
  • メモリ: transformerとQwen3-VLテキストエンコーダーを合わせると、コンシューマー向けGPU 1基に完全に読み込むことはできません。モデルカードは最速の選択肢として model_group_offload、またはハイメモリのGPU 1基では model_cpu_offload_and_qfloat8 を推奨しています。

コメント

GitHubでサインインしてディスカッションに参加しましょう。

コメントを読み込み中…
Qwen-Image 2.1 Fun ControlNet Union: 8つの制御を1ファイルに集約 | ComfyUI Wiki