ControlNetとは?

生成AIの本質は、「2つのものの対応関係」を学習することです。 text2imageでは「ノイズ ↔ 画像」の関係を覚えさせますが、ノイズ以外のものでも同じことができます

  • 線画 ↔ 画像 のペアを学習 → 線画から自動着色が
  • 棒人間 ↔ 画像 のペアを学習 → ポーズ指定で画像生成が
  • 深度マップ ↔ 画像 のペアを学習 → 奥行き情報から画像生成が

ControlNet はこれを実現する技術のひとつです


SD1.5 × ControlNet Scribble

ControlNet は、無数の種類がありますが、まずは「scribble」を試してみましょう。
scribble モデルは、「ラフな落書き」をもとに画像を生成する ControlNet です。

ControlNetモデルのダウンロード

workflow

SD1.5_ControlNet_scribble.json
  • 🟩 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

Flux 以降の話になりますが、Scribble や Pose、Depth といった基本的な ControlNet を
ひとつのモデルとして内蔵させたものが「ControlNet Union」です。

入力された画像の特徴(ポーズ・線・深度など)を自動で認識し、
それに近い ControlNet の挙動をまとめて再現しようとするモデルだと考えておけば十分です。