メインコンテンツへスキップ
AI による画像生成において、単一の制御条件では複雑なシーンの要件を満たすことが困難な場合が多くあります。複数の ControlNet を混合することで、画像の異なる領域や異なる側面を同時に制御でき、より精密な画像生成制御が可能になります。 特定のシナリオでは、異なる制御条件の特性を活かした ControlNet の混合により、さらに細かい条件付き制御を実現できます:
  1. シーンの複雑さ:複雑なシーンでは、複数の制御条件が協調して動作する必要があります
  2. 細かい制御:各 ControlNet の「Strength(強度)」パラメータを調整することで、それぞれの領域への影響度を正確に制御できます
  3. 補完効果:異なる種類の ControlNet は互いに補完し合い、単一の制御では生じる制限を補うことができます
  4. クリエイティブな表現:異なる制御を組み合わせることで、独自の創造的な効果を生み出すことができます

ControlNet の混合方法

複数の ControlNet を混合する際、各 ControlNet はその適用領域に応じて画像生成プロセスに影響を与えます。ComfyUI では、Apply ControlNet ノードにおけるチェーン接続(連鎖接続)を用いることで、複数の ControlNet 条件をレイヤー状に順次重ね合わせて適用できます: apply controlnet chain link

ComfyUI における ControlNet の領域分割混合の例

この例では、Pose ControlNetScribble ControlNet を組み合わせて、複数の要素を含むシーンを生成します。具体的には、左側の人物を Pose ControlNet で制御し、右側のスケートボードに乗った猫を Scribble ControlNet で制御します。

1. ControlNet 混合ワークフローの素材

以下のワークフローアイコンをダウンロードし、ComfyUI にドラッグ&ドロップすることで、ワークフローを読み込めます:
ComfyUI ワークフロー - Mixing ControlNet
このワークフローアイコンにはメタデータが含まれており、ComfyUI へ直接ドラッグ&ドロップするか、メニューから WorkflowsOpen (Ctrl+O) を選択して読み込むことができます。システムが自動的に必要なモデルを検出し、ダウンロードを提案します。
入力用のポーズ画像(左側の人物のポーズを制御): ComfyUI ワークフロー - Mixing ControlNet 入力画像 入力用のスクリブル画像(右側の猫とスケートボードを制御): ComfyUI ワークフロー - Mixing ControlNet 入力画像

2. 手動によるモデルインストール

ネットワーク環境によっては、対応するモデルの自動ダウンロードが失敗することがあります。その場合は、以下のモデルを手動でダウンロードし、指定されたディレクトリに配置してください:
ComfyUI/
├── models/
│   ├── checkpoints/
│   │   └── awpainting_v14.safetensors
│   ├── controlnet/
│   │   └── control_v11p_sd15_scribble_fp16.safetensors
│   │   └── control_v11p_sd15_openpose_fp16.safetensors
│   ├── vae/
│   │   └── vae-ft-mse-840000-ema-pruned.safetensors

3. ワークフロー実行の手順

ComfyUI ワークフロー - Mixing ControlNet フローダイアグラム 上図の数字順に、以下の手順を実行してください:
  1. Load Checkpointawpainting_v14.safetensors を正常に読み込めていることを確認します
  2. Load VAEvae-ft-mse-840000-ema-pruned.safetensors を正常に読み込めていることを確認します
最初の ControlNet グループ(OpenPose モデルを使用):
3. Load ControlNet Modelcontrol_v11p_sd15_openpose_fp16.safetensors を読み込んでいることを確認します
4. Load Image ノード内の Upload をクリックし、前述のポーズ画像をアップロードします
2 番目の ControlNet グループ(Scribble モデルを使用):
5. Load ControlNet Modelcontrol_v11p_sd15_scribble_fp16.safetensors を読み込んでいることを確認します
6. Load Image ノード内の Upload をクリックし、前述のスクリブル画像をアップロードします
7. Queue ボタンをクリックするか、ショートカット Ctrl(Cmd) + Enter を使用して画像生成を実行します

ワークフローの解説

強度(Strength)のバランス

画像の異なる領域を制御する際、各 ControlNet の「Strength」パラメータのバランスは特に重要です:
  • ある領域の ControlNet 強度が他の領域と比べて著しく高くなると、その領域の制御効果が過剰になり、他の領域の制御が抑制される可能性があります
  • 異なる領域を制御する ControlNet については、同程度の強度値を設定することを推奨します(例:両方とも 1.0

プロンプトのテクニック

領域分割混合では、プロンプトに両方の領域に関する記述を含める必要があります:
"A woman in red dress, a cat riding a scooter, detailed background, high quality"
このようなプロンプトは、人物とスケートボードに乗った猫の両方を明示的に含んでおり、モデルが両方の制御領域に注意を向けるよう指示します。

同一被写体に対する多次元制御の応用

本例で紹介した領域分割混合に加え、もう一つの一般的な混合手法として、同一の被写体に対して多次元的な制御を適用する方法があります。例えば:
  • Pose + Depth:人物のポーズと空間的奥行き感を制御
  • Pose + Canny:人物のポーズと輪郭・エッジの詳細を制御
  • Pose + Reference:人物のポーズを制御しつつ、特定のスタイルを参照
このような応用では、複数の ControlNet に対応する参照画像を同一の被写体に揃える必要があり、また各 ControlNet の強度を適切に調整してバランスを保つことが重要です。 異なる種類の ControlNet を組み合わせ、それぞれの制御領域を明確に指定することで、画像内の要素をきめ細かく制御することができます。