ControlNetとは?
生成AIは、さまざまなものの関係を学習するのが得意です。 text2imageでは「ノイズ ↔ 画像」の関係を覚えさせますが、ノイズ以外のものでも同じことができます
- 線画 ↔ 画像 のペアを学習 → 線画から自動着色が
- 棒人間 ↔ 画像 のペアを学習 → ポーズ指定で画像生成が
- 深度マップ ↔ 画像 のペアを学習 → 奥行き情報から画像生成が
ControlNet はこれを実現する技術のひとつです
SD1.5 × ControlNet Scribble
ControlNet は、無数の種類がありますが、まずは「scribble」を試してみましょう。
scribble モデルは、「ラフな落書き」をもとに画像を生成する ControlNet です。
ControlNetモデルのダウンロード
- control_v11p_sd15_scribble_fp16.safetensors
-
📂ComfyUI/ └── 📂models/ └── 📂controlnet/ └── control_v11p_sd15_scribble_fp16.safetensors
workflow

- 🟩
Apply ControlNetノードにControlNet モデルとscribble 画像を入力。 - 🟨 ControlNet画像と生成する画像のサイズは同じでなくてもエラーは出ませんが、同じサイズにしておきましょう。
scribble モデルは「黒背景に白で描いた線」に最適化されています。
白背景に黒で描いた線だと、うまく反応しないことが多いので注意してください。
- サンプル画像
ControlNetの制御のバランス
拡散モデルは、本来 縛られずに生成するときが最もクオリティが高く なります。
しかし、完全に自由だと役に立たないので、テキストや ControlNet などの Conditioning で制御します。
制御が強すぎるとクオリティが落ちる —— これはテキストプロンプトでも LoRA でも同じです。
では、制御とクオリティのバランスはどう取ればよいでしょうか?
start_percent / end_percent
サンプリングは序盤で大まかな形が決まり、後半で細部が描き込まれます。
ControlNet の多く(pose / depth / scribble など)は 形を決めるタイプ の制御です。
ということは、序盤だけ ControlNet を効かせればよい と考えることもできるわけです。
Apply ControlNet では、ControlNet が どの区間で効くか を指定できます。
start_percent: 効き始めるタイミングend_percent: 効き終わるタイミング
end_percent を下げるほど、後半はモデルの自由度が戻り、形を保ちながらクオリティも向上させられます。
strength(強さ)と start_percent / end_percent を組み合わせて、
「縛りすぎず、崩しすぎない」バランスを見つけていきましょう。
主なControlNetの種類
画像と対応させられる「概念」は、星の数ほどあります。
ここでは代表的なものだけ紹介しましょう。
モデルのダウンロード
一覧

Canny
- 写真や画像の輪郭を保ったまま別のスタイルで描き直します。

Lineart
- Cannyと似ていますが、よりイラスト向けです。
- 線画着色などに使われます。

Depth
- 深度マップ(手前・奥の情報)を使って、元画像の奥行きや構図を保ちながら生成します。
- 建物や風景など、立体感を崩したくない場合に向いています。

Normal
- 法線マップを使って、光の当たり方や立体感をコントロールします。

Pose
- OpenPose などで抽出した「棒人間のポーズ情報」から、同じポーズの人物・キャラクター画像を生成します。

Inpaint
- 画像の一部だけを描き直したいときに使うモデルです。
- マスクで指定した範囲だけ、自然に描き換えることができます(不要物の消去・小物の差し替えなど)。

QR Code Monster
- QRコードとして読み取れる画像を作り出します。
- QRコードに限らず、「白黒のパターン画像」をベースに、好きな絵柄に変形させる使い方もできます。

Tile
- ぼかしが強い画像や低解像度の画像から、綺麗な画像を作り出します。
- 単体でも使えますが、実際には Ultimate SD Upscale のような「超解像アップスケール」と組み合わせて使われることが多いです。
ControlNet Union
ControlNet には、ControlNet Union という種類のものがあります。
これはなにか特別なタスクができるわけではなく、Scribble や Pose、Depth など、用途ごとに 1 タスク 1 モデルだった ControlNet をひとつのモデルにまとめたものです。
モデルを入れ替えずにいくつものタスクを使えるので、見かけたら試してみてください。
