はじめに
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 | 画像の外側への拡張 |
---
モデルのダウンロード
公式リポジトリ
ダウンロードするファイル
| ファイル名 | バージョン | サイズ |
|---|---|---|
| `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]
```
主要プリプロセッサの選択:
ステップ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++は学習時にコンディション融合を最適化しているため、従来のように手動で重みバランスを調整する必要がありません。
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
全ての制御条件で共有されるエンコーダーです。従来は制御タイプごとに独立したエンコーダーが必要でしたが、共有化によりパラメータ数の増加を抑えています。
学習戦略
---
トラブルシューティング
よくある問題と対処法
| 問題 | 対処法 |
|---|---|
| モデルが認識されない | ファイル名をリネームし、ComfyUIを再起動 |
| VRAM不足エラー | `--lowvram` または `--medvram-sdxl` オプションで起動 |
| 制御が効かない | プリプロセッサの出力画像を確認。Control Weightを上げる |
| SD1.5モデルで動かない | SDXL専用モデルのため、SDXLベースモデルに切り替え |
| マルチコンディションで破綻 | 同時使用は2〜3種類に抑える。Weightを下げて調整 |
---
まとめ
ControlNet++は、従来のControlNetが抱えていた「モデル管理の煩雑さ」と「マルチコンディション調整の難しさ」を根本的に解決するモデルです。
導入メリット:
SDXL環境を使っている方は、従来の個別ControlNetモデルからの移行を強く推奨します。
---
参考リンク: