ControlNetが解決する課題
通常のStable Diffusion生成では、プロンプトだけでポーズや構図を精密に指定することは困難です。特に以下のような要求に対して、期待通りの結果を得るのは難しい状況でした。
- 特定のポーズを正確に再現したい
- 参考画像と同じ構図で別のキャラクターを生成したい
- 建物の輪郭を保ちながらスタイルを変更したい
- 奥行き情報を維持したまま別のシーンに変換したい
ControlNetは、これらの課題を解決し、画像生成プロセスに追加の制御信号を与えることで、プロンプトだけでは実現できない精密なコントロールを可能にします。
ControlNetの概要
仕組み
ControlNetは、Stable Diffusionの拡散プロセスに「条件画像」を追加入力として与える技術です。
基本的なフロー:
1. 参照画像を用意
2. Preprocessor(前処理)で制御情報を抽出(エッジ、ポーズ、深度など)
3. ControlNetモデルがこの情報をStable Diffusionに注入
4. プロンプトと制御情報の両方に基づいて画像生成
参考: Diffusionモデルとは?で、拡散モデルの基本的な仕組みを解説しています。
主要なControlNetモデル
| モデル | 用途 | 抽出情報 |
|---|---|---|
| OpenPose | 人物のポーズ制御 | 骨格・関節位置 |
| Canny | エッジ・輪郭制御 | 境界線 |
| Depth | 奥行き・立体感制御 | 深度マップ |
| Normal | 表面の向き制御 | 法線マップ |
| Scribble | ラフスケッチから生成 | 手描き線画 |
| Segmentation | 領域分割 | セマンティックマップ |
| Lineart | 線画から生成 | クリーンな線画 |
| SoftEdge | ソフトなエッジ検出 | HEDアルゴリズム |
ControlNetの導入・セットアップ
Automatic1111での導入
1. 拡張機能のインストール
Automatic1111起動
→ Extensions
→ Install from URL
→ URL: https://github.com/Mikubill/sd-webui-controlnet.git
→ Install
→ Restart UI
2. ControlNetモデルのダウンロード
Hugging Faceから必要なモデルをダウンロード:
# 保存先: stable-diffusion-webui/extensions/sd-webui-controlnet/models/
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_openpose.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11p_sd15_canny.pth
wget https://huggingface.co/lllyasviel/ControlNet-v1-1/resolve/main/control_v11f1p_sd15_depth.pth
ComfyUIでの導入
ComfyUIでは、ControlNetがデフォルトでサポートされています。
モデル配置:
ComfyUI/models/controlnet/
必要なカスタムノード:
cd ComfyUI/custom_nodes
git clone https://github.com/Fannovel16/comfyui_controlnet_aux.git
詳細: ComfyUI完全ガイドで、ノードベースのワークフロー構築方法を解説しています。
主要モデルの使い分け
1. OpenPose(ポーズ制御)
用途: 人物のポーズを正確に再現
使用例:
– ダンス・スポーツのポーズ再現
– 複数人物の配置制御
– キャラクターイラストのポーズ指定
実践手順(Automatic1111):
- ControlNetセクションを展開
- Enableにチェック
- 参照画像をアップロード(ポーズを真似したい画像)
- Preprocessor:
openpose_full(手・顔も検出)またはopenpose(体のみ) - Model:
control_v11p_sd15_openpose - Weight: 0.8-1.2(ポーズの忠実度)
- プロンプト入力 & Generate
Tips:
– 手の精度を上げるならopenpose_fullまたはopenpose_hand
– 顔の表情も制御したいならopenpose_faceを追加で使用
– Weightを上げすぎると元画像の特徴が残りやすい(0.9-1.0が推奨)
2. Canny(エッジ制御)
用途: 輪郭・境界線を保ったまま画像を変換
使用例:
– 建物の構造を維持したままスタイル変更
– 写真をアニメ風に変換(構図維持)
– ロゴやアイコンのバリエーション生成
実践手順:
- Preprocessor:
canny - Model:
control_v11p_sd15_canny - Threshold設定(Preprocessor Resolution):
– Low Threshold: 100(細かいエッジを検出)
– High Threshold: 200(主要なエッジのみ) - Weight: 0.7-1.0
Tips:
– Thresholdを下げる → 細部まで再現、ノイジー
– Thresholdを上げる → 主要構造のみ、シンプル
– 写真→イラスト変換にはLow:50, High:100が効果的
3. Depth(奥行き制御)
用途: 3D的な奥行き情報を維持
使用例:
– 室内シーンの構造を保ったままリデザイン
– 風景写真の季節・時間帯変更
– 3Dレンダリングから2Dイラスト生成
実践手順:
- Preprocessor:
depth_midas(汎用)またはdepth_leres(高精度) - Model:
control_v11f1p_sd15_depth - Weight: 0.5-0.8(深度の影響度)
Tips:
– MiDaSは高速だが精度は標準
– LeResは高精度だが処理が重い
– 屋内シーンではLeResが推奨
– Weightを下げると創造性が増すが構造が崩れやすい
4. Normal(法線マップ制御)
用途: 表面の凹凸・向きを制御
使用例:
– 彫刻・レリーフのディテール保持
– キャラクターの筋肉や布のしわを再現
– 照明変更時の立体感維持
実践手順:
- Preprocessor:
normal_bae - Model:
control_v11p_sd15_normalbae - Weight: 0.6-1.0
DepthとNormalの使い分け:
– Depth: 全体的な奥行き・距離関係
– Normal: 表面の細かい凹凸・質感
5. Scribble/Lineart(スケッチから生成)
用途: 手描きラフから完成イラストを生成
使用例:
– ラフスケッチの自動着色・ディテール追加
– 簡単な線画からプロ品質のイラスト生成
実践手順(Scribble):
- 白背景に黒線でラフを描く
- Preprocessor:
scribble_pidinet(既存画像から)またはnone(直接スケッチ) - Model:
control_v11p_sd15_scribble - Weight: 0.8-1.2
実践手順(Lineart):
- Preprocessor:
lineart_anime(アニメ風)またはlineart_realistic(リアル風) - Model:
control_v11p_sd15_lineart
Tips:
– Scribbleは大雑把なラフでもOK
– Lineartはクリーンな線画が必要
– アニメキャラ生成にはlineart_animeが最適
【独自データ】プリプロセッサ別・最適な使い分け早見表
ControlNetには10種類以上のプリプロセッサがあり、「どれをいつ使えばいいか」が分かりにくいのが初心者の悩みです。用途・入力画像の種類・期待する結果を軸に整理した早見表を用意しました。
| プリプロセッサ | 対応モデル | 最適な入力画像 | 期待できる結果 | Control Weight目安 | 注意点 |
|---|---|---|---|---|---|
openpose |
openpose | 人物の写真・イラスト | 体のポーズのみ再現(顔・手は不問) | 0.8〜1.0 | 手や顔の精度は低い。顔・手も制御したいなら openpose_full へ |
openpose_full |
openpose | 人物の写真(手・顔が見える) | 体・手・顔の表情まで再現 | 0.9〜1.2 | 処理が重い。参照画像の手が不明瞭だと誤検出 |
openpose_hand |
openpose | 手のアップ写真 | 手の形状を正確に再現 | 0.8〜1.0 | ADetailerと併用すると更に精度UP |
canny |
canny | 写真・線画・デザイン | 境界線・輪郭を保持したまま変換 | 0.7〜1.0 | Threshold次第で細部が変わる(写真→アニメはLow:50, High:100) |
softedge_hed |
softedge | 写真(輪郭を柔らかくしたい) | Cannyより柔らかい自然な輪郭変換 | 0.6〜0.9 | Cannyより保持度が低い分、創造性が増す |
lineart_realistic |
lineart | 線画・イラスト | クリーンな線画を保持して着色・変換 | 0.8〜1.2 | 既存の線画を活かしたい場合に最適 |
lineart_anime |
lineart | アニメ風イラスト・線画 | アニメ線画の特徴を保持して変換 | 0.8〜1.2 | リアル写真には向かない |
scribble_pidinet |
scribble | ラフスケッチ・手描き | ラフの構造を保ちながら完成画像を生成 | 0.8〜1.2 | 精度より雰囲気重視。細部は生成AIに任せる |
depth_midas |
depth | 風景・室内・人物写真 | 奥行き情報を保持したまま変換 | 0.5〜0.8 | 高速だが精度は標準 |
depth_leres |
depth | 建築・室内(精度重視) | 高精度な奥行き保持 | 0.5〜0.8 | 処理が重い。屋内・建築パースに推奨 |
normal_bae |
normalbae | 人物・オブジェクト(質感重視) | 表面の凹凸・質感を保持 | 0.6〜1.0 | Depthと組み合わせると立体感+質感を同時制御できる |
seg_ofade20k |
segmentation | 風景・複雑なシーン | 領域(空・木・建物など)を分けて制御 | 0.6〜0.9 | 領域内の詳細はプロンプトに依存 |
none(Reference Only) |
reference | 雰囲気・スタイルを参照したい任意の画像 | 参照画像の色調・スタイルを反映 | 0.5〜0.8 | 構図は変わるがスタイルは引き継ぐ。Style Transferに便利 |
シナリオ別おすすめプリプロセッサ組み合わせ:
| シナリオ | Unit 0 | Unit 1 | 補足 |
|---|---|---|---|
| 人物ポーズを正確に再現 | openpose_full(Weight: 1.0) | – | ADetailerと併用で顔・手も修正 |
| 写真→アニメ風変換 | softedge_hed(Weight: 0.8) | – | cannyより自然な変換になりやすい |
| 構図+奥行きを同時制御 | openpose(Weight: 1.0) | depth_midas(Weight: 0.6) | 人物ポーズ+背景の奥行きを両立 |
| 線画を高品質イラストに | lineart_anime(Weight: 1.0) | – | 線画はクリーンなものを使用 |
| 建築パースのスタイル変換 | canny(Weight: 0.8) | depth_leres(Weight: 0.6) | 構造+奥行きの両方を保持 |
| ラフから商品デザイン | scribble_pidinet(Weight: 1.0) | – | CFG Scale 8〜10で構造を強調 |
実践的なテクニック
1. 複数ControlNetの同時使用
より精密な制御のため、複数のControlNetを組み合わせます。
例: ポーズ + 深度を同時制御
-
ControlNet Unit 0:
– Preprocessor:openpose
– Model:control_v11p_sd15_openpose
– Weight: 1.0 -
ControlNet Unit 1:
– Preprocessor:depth_midas
– Model:control_v11f1p_sd15_depth
– Weight: 0.6
推奨組み合わせ:
– OpenPose + Canny(ポーズと輪郭を同時制御)
– Depth + Normal(奥行きと質感)
– Segmentation + Canny(領域と境界)
2. Reference OnlyモードとStyle Transferモード
Reference Only:
– 参照画像全体の雰囲気を学習
– 特定の前処理なしで画像の特徴を反映
Style Transfer:
– 参照画像のスタイル(色調、筆致)を適用
– 構図は変えたいがスタイルは保ちたい場合に有効
3. Preprocessorのパラメータ調整
多くのPreprocessorは詳細設定が可能です。
Cannyの例:
Low Threshold: 50-100(細かいエッジ検出)
High Threshold: 100-200(主要エッジ検出)
OpenPoseの例:
Hand Detection: On/Off(手の検出)
Face Detection: On/Off(顔の検出)
4. LoRAとの併用
ControlNetとLoRAを組み合わせることで、スタイルとポーズを同時に制御できます。
参考: LoRAトレーニング入門で、独自LoRAの作成方法を紹介しています。
推奨ワークフロー:
1. LoRAで特定スタイル・キャラクターを指定
2. ControlNetでポーズ・構図を制御
3. プロンプトで細部調整
高度な応用例
1. アニメーション生成への応用
ControlNetを動画の各フレームに適用することで、一貫性のあるアニメーションを生成できます。
手順:
1. 動画から各フレームを抽出
2. OpenPoseで各フレームのポーズを検出
3. 同じプロンプト + ControlNetで全フレーム生成
4. フレームを結合して動画化
ツール: EbSynth、AnimateDiff(ComfyUI)
2. 3Dモデルからイラスト生成
手順:
1. Blenderなどで3Dモデルを作成・ポーズ設定
2. Depthマップ、Normalマップをレンダリング
3. ControlNetで2Dイラストに変換
メリット:
– 複雑なポーズを正確に設定できる
– カメラアングルを自由に変更可能
3. 建築ビジュアライゼーション
手順:
1. CADソフトで建物モデル作成
2. Cannyで輪郭抽出
3. ControlNet + プロンプトで様々なスタイルに変換
用途:
– クライアントへのデザイン提案
– 複数のスタイルバリエーション生成
注意点とトラブルシューティング
ControlNetが効かない場合
確認ポイント:
– Enableにチェックが入っているか
– モデルとPreprocessorの組み合わせが正しいか
– Weightが0になっていないか
– 参照画像が正しくアップロードされているか
生成結果が参照画像に似すぎる
対処法:
– Weightを下げる(1.0 → 0.6-0.8)
– CFG Scaleを調整
– Denoising Strengthを上げる(Img2Imgの場合)
Preprocessorのプレビューがおかしい
対処法:
– Preprocessor Resolutionを調整(デフォルト: 512)
– 異なるPreprocessorを試す(例: canny → softedge_hed)
VRAMメモリ不足
対処法:
– 複数ControlNetを使用している場合、1つに減らす
– 解像度を下げる
– --lowvramオプションで起動
FAQ
Q1. ControlNetはStable Diffusion 3.5でも使えますか?
SD3.5専用のControlNetモデルはまだ限定的です(2026年3月時点)。SD1.5/XL用ControlNetが最も充実しています。Stable Diffusion 3.5使い方ガイドで最新の対応状況を確認してください。
Q2. MidjourneyにもControlNet機能はありますか?
Midjourneyには直接的なControlNet機能はありませんが、--cref(キャラクター参照)や--sref(スタイル参照)パラメータで類似の制御が可能です。FLUX vs Midjourney徹底比較で詳細を解説しています。
Q3. OpenPoseで手の描写が不自然になります。どうすれば良いですか?
openpose_fullまたはopenpose_handを使用し、参照画像の手が明確に写っているか確認してください。それでも改善しない場合は、Img2Imgで手の部分だけInpaintingで修正する方法が効果的です。
Q4. 商用利用は可能ですか?
ControlNet自体はオープンソース(Apache 2.0ライセンス)で商用利用可能です。ただし、使用するStable Diffusionモデルのライセンスに従う必要があります。SD1.5は商用利用可、SD3.5は条件付き商用利用可です。
関連記事
- Stable Diffusion完全ガイド – 基本的な使い方とモデル選択
- ComfyUI完全ガイド – ノードベースワークフロー
- 画像生成AI徹底比較 – 主要サービスの比較
出典
- ControlNet公式リポジトリ: https://github.com/lllyasviel/ControlNet
- Hugging Face ControlNet Models: https://huggingface.co/lllyasviel/ControlNet-v1-1
- sd-webui-controlnet拡張: https://github.com/Mikubill/sd-webui-controlnet


コメント