SDWebUIA1111 拡張機能

【完全ガイド】ControlNet++の導入と使い方|10種類の制御を1モデルに統合

はじめに

ControlNet++(正式名称:ControlNet Union SDXL)は、従来バラバラだった10種類以上のControlNetモデルを1つの統合モデルに集約した革新的なアーキテクチャです。開発者はxinsir6氏で、2024年7月にリリースされました。

従来のControlNetでは、Canny・Depth・OpenPoseなど制御タイプごとに個別のモデル(各約2.5GB)をダウンロード・管理する必要がありました。ControlNet++はこれらを1ファイルに統合し、さらにマルチコンディション(複数制御の同時適用)にも対応しています。

---

ControlNet vs ControlNet++ 比較表

項目 ControlNet(従来) ControlNet++(Union)
モデル数 制御タイプごとに1モデル(10個以上) **1モデルで全制御対応**
合計容量 約25GB以上(10モデル分) **約2.5GB(通常版)/ 約2.5GB(ProMax版)**
マルチコンディション 手動で重み調整が必要 **学習時に融合を最適化済み**
パラメータ数 各モデル独立 従来とほぼ同等(増加なし)
対応制御タイプ 各モデルで1種類 **12種類+5種類の編集機能(ProMax)**
精度(mIoU) ベースライン **+7.9%改善**(セグメンテーション)
精度(SSIM) ベースライン **+13.4%改善**(ラインアート)
学習データ 各条件で個別学習 **1000万枚以上**の高品質画像で統合学習

---

対応する制御タイプ一覧

基本制御(12種類)

ControlNet++は内部で6つの制御タイプIDにグルーピングされています。

ID カテゴリ 対応する制御
0 ポーズ OpenPose
1 深度 Depth Map
2 太線系 Scribble / HED / SoftEdge / TEED-512
3 細線系 Canny / MLSD / Lineart / AnimeLineart / TEED-1280
4 法線 Normal Map
5 セグメント Semantic Segmentation

ProMax追加機能(5種類)

機能 説明
Tile Deblur ぼやけた画像の鮮明化
Tile Variation タイル単位でのバリエーション生成
Tile Super Resolution 1Mピクセルから9Mピクセルへの超解像
Image Inpainting マスク領域の修復・塗りつぶし
Image Outpainting 画像の外側への拡張

---

モデルのダウンロード

公式リポジトリ

  • GitHub: https://github.com/xinsir6/ControlNetPlus
  • Hugging Face: https://huggingface.co/xinsir/controlnet-union-sdxl-1.0
  • ライセンス: Apache 2.0(商用利用可能
  • ダウンロードするファイル

    ファイル名 バージョン サイズ
    `diffusion_pytorch_model.safetensors` 通常版(12制御) 約2.5GB
    `diffusion_pytorch_model_promax.safetensors` **ProMax版(12制御+5編集)** 約2.5GB

    推奨: Inpainting・Outpainting・超解像を使いたい場合はProMax版を選択してください。

    ---

    VRAM要件

    構成 必要VRAM
    SDXL + ControlNet++ 単一制御 **8GB以上**(FP16)
    SDXL + ControlNet++ 複数制御 **10〜12GB推奨**
    低VRAMモード使用時 6GB程度で動作可能

    注意: SDXL専用モデルです。SD1.5では使用できません。

    ---

    ComfyUIでのインストール手順

    ステップ1: モデルファイルの配置

    ```

    ComfyUI/

    └── models/

    └── controlnet/

    └── diffusion_pytorch_model_promax.safetensors ← ここに配置

    ```

    Hugging Faceからダウンロードしたsafetensorsファイルを上記ディレクトリにコピーします。

    重要: ファイル名を `controlnet++_union_sdxl.safetensors` にリネームすると、ComfyUIの制御タイプフィルターが正しく動作します。

    ステップ2: ComfyUIの起動とノード構成

    1. ComfyUIを起動し、ワークフローを開く

    2. Load ControlNet Model ノードを追加

    3. ドロップダウンからControlNet Union ProMaxモデルを選択

    4. Apply ControlNet ノードを配置し、以下を接続:

    - `positive` conditioning → Apply ControlNet → KSampler positive入力

    - Load ControlNet Model → Apply ControlNet の `control_net` 入力

    - 前処理済み画像 → Apply ControlNet の `image` 入力

    ステップ3: プリプロセッサの設定

    制御タイプに応じたプリプロセッサノードを追加します。

    ```

    [画像読み込み] → [プリプロセッサ] → [Apply ControlNet] → [KSampler]

    ```

    主要プリプロセッサの選択:

  • Canny: `CannyEdgePreprocessor`(threshold1: 100, threshold2: 200)
  • Depth: `DepthAnythingPreprocessor` または `MiDaSDepthPreprocessor`
  • OpenPose: `OpenposePreprocessor`(face, hand, bodyを個別にON/OFF可能)
  • Lineart: `LineartPreprocessor` または `AnimeLineartPreprocessor`
  • Scribble: `ScribblePreprocessor` または手描き入力
  • ステップ4: SetUnionControlNetType ノード

    ComfyUIには `SetUnionControlNetType` ノードが用意されています。このノードで制御タイプを明示的に指定できます。

    ---

    WebUI(A1111/Forge)でのインストール手順

    ステップ1: 拡張機能の確認

    sd-webui-controlnet拡張機能がv1.1.454以降であることを確認します。

    ステップ2: モデルの配置

    ```

    stable-diffusion-webui/

    └── models/

    └── ControlNet/

    └── diffusion_pytorch_model_promax.safetensors

    ```

    ステップ3: WebUIでの使用

    1. txt2imgまたはimg2imgタブでControlNetセクションを展開

    2. Modelドロップダウンから `controlnet++_union_sdxl` を選択

    3. Preprocessorで使いたい制御タイプ(canny, depthなど)を選択

    4. 制御画像をアップロードまたはプリプロセッサで生成

    ---

    推奨パラメータ設定

    基本設定

    パラメータ 推奨値
    Control Weight 0.7〜1.0
    Starting Control Step 0.0
    Ending Control Step 1.0
    Control Mode Balanced
    Resize Mode Crop and Resize

    マルチコンディション使用時

    複数の制御を同時に使う場合、ControlNet++は学習時にコンディション融合を最適化しているため、従来のように手動で重みバランスを調整する必要がありません。

  • 各制御のWeightは 0.6〜0.8 を起点に調整
  • 2〜3種類の同時使用が実用的な上限
  • ProMax機能の使用例

    Tile Super Resolution(超解像):

    1. 低解像度画像(例: 1024x1024)を入力

    2. 制御タイプを `tile` に設定

    3. 出力解像度を高く設定(例: 3072x3072)

    4. Denoising Strengthを0.3〜0.5に設定

    Inpainting(修復):

    1. ProMax版モデルが必須

    2. マスク付き画像を入力

    3. 制御タイプを `inpaint` に設定

    4. Denoising Strengthを0.6〜0.8に設定

    ---

    アーキテクチャの技術詳細

    ControlNet++の核となる技術革新は以下の2つのモジュールです。

    Condition Transformer

    異なる制御条件の特徴量を交換・融合するTransformerレイヤーです。元画像とコンディション画像の間で情報をやり取りし、条件バイアスを予測します。ResNetに類似した残差接続構造で性能を向上させています。

    Control Encoder

    全ての制御条件で共有されるエンコーダーです。従来は制御タイプごとに独立したエンコーダーが必要でしたが、共有化によりパラメータ数の増加を抑えています。

    学習戦略

  • データセット: 1000万枚以上の高品質画像
  • キャプション: CogVLMによる再キャプション(DALL-E 3と同様の手法)
  • 学習方式: バケットトレーニング(NovelAI方式)、データ拡張、複数損失関数、マルチ解像度学習
  • コンシステンシー最適化: 生成画像と入力条件のピクセルレベル循環一貫性を最適化
  • ---

    トラブルシューティング

    よくある問題と対処法

    問題 対処法
    モデルが認識されない ファイル名をリネームし、ComfyUIを再起動
    VRAM不足エラー `--lowvram` または `--medvram-sdxl` オプションで起動
    制御が効かない プリプロセッサの出力画像を確認。Control Weightを上げる
    SD1.5モデルで動かない SDXL専用モデルのため、SDXLベースモデルに切り替え
    マルチコンディションで破綻 同時使用は2〜3種類に抑える。Weightを下げて調整

    ---

    まとめ

    ControlNet++は、従来のControlNetが抱えていた「モデル管理の煩雑さ」と「マルチコンディション調整の難しさ」を根本的に解決するモデルです。

    導入メリット:

  • ストレージ節約(25GB超 → 約2.5GB)
  • モデル切り替え不要で制御タイプを自由に変更
  • マルチコンディションの自動融合
  • ProMax版で超解像・Inpaint・Outpaintにも対応
  • Apache 2.0ライセンスで商用利用可能
  • SDXL環境を使っている方は、従来の個別ControlNetモデルからの移行を強く推奨します。

    ---

    参考リンク:

  • GitHub: https://github.com/xinsir6/ControlNetPlus
  • Hugging Face: https://huggingface.co/xinsir/controlnet-union-sdxl-1.0
  • ComfyUI ControlNet Wiki: https://comfyui-wiki.com/en/install/install-models/install-controlnet

    -SDWebUIA1111, 拡張機能