AI画像生成を始めてしばらくすると、誰もが必ずぶつかる壁があります。それは「思い通りのポーズが出ない」という問題です。プロンプトで「standing with arms raised」と書いても、望んだ体勢にならなかったり、毎回バラバラのポーズが生成されたりします。この悩みをほぼ完全に解決するのが、今回解説する ControlNet です。
ControlNetとは?「ポーズの型紙」で考えるとわかりやすい
ControlNetを一言で説明するなら「ポーズの型紙を使って、AIに骨格や輪郭を指示するツール」です。
洋裁の型紙を思い浮かべてください。型紙があれば、毎回同じ形の服を作れます。ControlNetはこれと同じことを画像生成でやります。「この型紙(参考画像)に沿って、キャラクターを描いて」とAIに命令できるのです。
具体的には次のような流れで動作します。
- 参考にしたいポーズの画像(自分の写真でもイラストでも可)を用意する
- ControlNetがその画像からポーズ情報だけを抽出する
- 抽出した情報をAIの生成プロセスに組み込む
- 参考画像と同じポーズ・構図でキャラクターが生成される
プロンプトだけでは伝えにくい「左手を腰にあてて、右手を上に伸ばした状態で軽く前傾み」のような複雑なポーズも、参考画像一枚で正確に再現できます。これがControlNetが「最強ツール」と呼ばれる理由です。
インストール方法(AUTOMATIC1111 / ComfyUI)
AUTOMATIC1111での導入
AUTOMATIC1111 Stable Diffusion WebUI を使っている場合、ControlNetは拡張機能として追加します。
- WebUIを起動し、「Extensions(拡張機能)」タブを開く
- 「Install from URL」タブを選択
- 以下のURLを入力して「Install」ボタンを押す
https://github.com/Mikubill/sd-webui-controlnet
- インストール完了後、「Installed」タブで「Apply and restart UI」をクリックして再起動
次に、ControlNetのモデルファイル(.safetensors形式)をダウンロードして配置します。
stable-diffusion-webui/
└── models/
└── ControlNet/ ← ここにモデルファイルを置く
ComfyUIでの導入
ComfyUI では、ComfyUI-Managerを経由してノードをインストールするのが最も簡単です。
- ComfyUI-Managerの「Install Missing Custom Nodes」を開く
- 「ControlNet Auxiliary Preprocessors」を検索してインストール
- ComfyUIを再起動する
- ワークフローに「Load ControlNet Model」ノードと「Apply ControlNet」ノードを追加
モデルファイルの置き場所はAUTOMATIC1111と異なります。
ComfyUI/
└── models/
└── controlnet/ ← 小文字であることに注意
OpenPoseの基本的な使い方
ControlNetの中でもっともよく使われる機能がOpenPoseです。人物の骨格(棒人間のような形)を抽出し、そのポーズを再現します。
手順:参考画像からポーズ抽出して生成
AUTOMATIC1111での手順:
- 生成画面の下にある「ControlNet」セクションを展開する
- 「Image」欄に参考にしたいポーズの画像をドラッグ&ドロップ
- 「Preprocessor」のドロップダウンから
openpose_fullを選択 - 「Model」のドロップダウンから
control_v11p_sd15_openposeを選択 - 「Enable」にチェックを入れる
- 通常通りプロンプトを入力して生成
プリプロセッサの openpose_full は、体・手・顔の骨格をすべて抽出します。手の形も制御したい場合はこちらを使いましょう。体全体だけなら openpose で十分です。
推奨設定(OpenPose):
Preprocessor: openpose_full
Model: control_v11p_sd15_openpose
Weight: 0.8〜1.0
Control Mode: Balanced
参考イメージ:OpenPoseで固定しやすい全身ポーズ例
DepthとCannyの使い分け
OpenPose以外にも、よく使われる2つのモードがあります。
Depth(深度マップ)
Depthは画像の「奥行き情報」を抽出して制御します。前にある物体は明るく、奥にある物体は暗く表現されたグレースケール画像(深度マップ)に変換し、空間配置を維持したまま別キャラクターで再生成できます。
向いている用途:
- 複雑な背景や家具の配置を保ちたいとき
- 建物・部屋の構造を維持したいとき
- キャラクター全体のシルエット・体型を活かしたいとき
推奨設定(Depth):
Preprocessor: depth_midas
Model: control_v11f1p_sd15_depth
Weight: 0.6〜0.9
Canny(輪郭線抽出)
Cannyは画像の輪郭線(エッジ)を抽出します。線画に近い情報を渡すため、キャラクターの体のラインや服のシルエットをかなり忠実に維持できます。
向いている用途:
- 衣装・ポーズのラインを保ちたいとき
- 線画から着色したいとき
- 構図をほぼそのまま使いたいとき
推奨設定(Canny):
Preprocessor: canny
Model: control_v11p_sd15_canny
Weight: 0.5〜0.8
Low Threshold: 100
High Threshold: 200
Cannyは制御が強すぎると生成の自由度が下がるため、WeightをDepthより少し低めに設定するのがコツです。
NSFW画像でのControlNet活用:体勢固定のコツ
NSFWな画像を生成する際、もっとも役立つControlNetの使い方が「体勢の固定」です。仰向け・うつ伏せ・特定の姿勢など、プロンプトだけでは安定しにくい体勢を参考画像で固定できます。
参考イメージ:Weight調整後でも姿勢が崩れにくい生成例
実用的なアドバイス:
- 参考画像は自分で撮影した写真か、著作権フリーのポーズ素材を使う
- OpenPose Editor などのツールを使えば、手作業で棒人間ポーズを作成できる(参考画像不要)
- NSFWプロンプトとの組み合わせでは
Control Mode: Balancedが最も安定しやすい - ControlNetのWeightを下げすぎるとポーズが崩れ、上げすぎると画質が落ちる(0.7〜0.9が目安)
OpenPoseを使う際、着衣状態の参考画像から骨格だけを抽出すれば、生成されるキャラクターの服装や外見はプロンプトで自由に指定できます。
Weight・Start/End の調整方法
ControlNetには3つの重要なパラメータがあります。
| パラメータ | 役割 | 推奨値 |
|---|---|---|
| Weight | ControlNetの影響の強さ | 0.7〜1.0 |
| Start | ControlNetが効き始めるステップ(0〜1) | 0.0 |
| End | ControlNetが効き終わるステップ(0〜1) | 0.8〜1.0 |
# ポーズを強めに固定したい場合
Weight: 1.0
Start: 0.0
End: 1.0
# ポーズを参考程度に使いたい場合(柔軟な生成)
Weight: 0.6
Start: 0.0
End: 0.7
EndをStepの途中(0.7〜0.8)で終わらせると、後半はAIが自由に描くようになり、ポーズを守りつつ自然な仕上がりになりやすいです。
複数ControlNetの重ね使い
AUTOMATIC1111では最大3つまでControlNetを同時に使えます。これを活用すると、ポーズ+背景構図の同時制御が可能になります。
代表的な組み合わせ:
ControlNet 1: OpenPose(キャラのポーズ固定)
ControlNet 2: Depth(背景・空間の保持)
ControlNet 1: OpenPose(体のポーズ)
ControlNet 2: Canny(服装・衣装ラインの維持)
複数使いでは各ControlNetのWeightをそれぞれ0.6〜0.7程度に下げておくと、干渉が少なくなります。両方を1.0にすると制御が強すぎて画質が低下することがあります。
よくある失敗パターンと対処
失敗1:ポーズが全く反映されない
原因: ControlNetの「Enable」チェックが入っていない、またはモデルファイルが正しく配置されていない。
対処: Enableにチェックが入っているか確認し、モデル選択のドロップダウンに何も表示されない場合はファイルパスを再確認してください。
失敗2:ポーズは出るが画質が落ちた
原因: WeightやEndが高すぎてControlNetの制御が強すぎる。
対処: WeightをまずSoMd 0.8に下げ、Endを0.8に設定してみましょう。
失敗3:プリプロセッサが骨格を誤認識する
原因: 参考画像に複数人が写っている、または画像が小さすぎてポーズを正しく検出できていない。
対処: 参考画像は1人のみが写ったものを使い、解像度が低い場合はアップスケールしてから使用します。
失敗4:手・指の形がControlNetを入れても崩れる
原因: openpose(体のみ)を使っていて手の骨格が含まれていない。
対処: プリプロセッサを openpose_full に変更して手の骨格も抽出してください。
おすすめControlNetモデル
ControlNetモデルはベースモデルの世代(SD1.5 / SDXL / FLUX)に合わせて選ぶ必要があります。
SD1.5用(最も汎用性が高い):
- ControlNet v1.1 一式(lllyasviel公式) — OpenPose・Depth・Cannyなど全種類が揃っています
SDXL用:
- controlnet-union-sdxl-1.0 — 1つのモデルファイルで複数タイプをカバーする統合版
FLUX用:
- FLUX.1-dev-Controlnet-Union-Pro — FLUX.1向け統合ControlNet
OpenPoseのポーズを手作業で作成したい場合は、ブラウザ上で操作できる OpenPose Editor(Hugging Face版) も便利です。
まとめ:まずOpenPoseを1本試してみましょう
ControlNetは最初は設定項目が多くて戸惑うかもしれませんが、実際に試すと「こんなに簡単にポーズが固定できるのか」と感動するはずです。まずは次の組み合わせだけ覚えておけば十分です。
- プリプロセッサ:
openpose_full - モデル:
control_v11p_sd15_openpose - Weight:
0.85 - Enable:チェックあり
この設定で参考画像をいくつか試してみてください。ポーズ制御の感覚をつかめれば、Depth・Canny・複数重ねへの応用は自然とできるようになります。