キャンバスを制御するControlNetとは?
ControlNet(コントロール・ネット)は、画像生成AIの「二度目の革命」と言われるほど影響が大きな技術です。
ControlNet以前の画像生成AIでは、
・テキストから画像を生成するため出来上がるまでどんな画像かは分からない
→画像ガチャを回し続けるしかなかった。
たとえば、プロンプトに「a bird」(鳥)と入力した場合、
- どんな鳥が
- 画面のどの位置に
- どんなスタイルで
などを追加のプロンプトで制御するのは大変なことです。
参考画像を与える
ControlNetは参考にする画像を与え、その画像から特定(エッジ、線、面など)の特徴に基づいてプロンプトから画像を作成します。
例えば、左の画像をControlNetに渡し、「Canny」と呼ばれるプリプロセッサで特徴を抽出すると右側の画像が作成されます。「Canny」は画像から線画を抽出します。


ControlNetでの画像生成
ControlNetを使い画像を生成するときには、以下の過程で行われます。
- プロンプトを解釈 ✓
- テキストエンコーダー(CLIP)がプロンプトをベクトル表現に変換します
- ControlNetのプリプロセッサが画像から特徴を抽出 ✓
- 選択したControlNetモデル(Canny、Depth、OpenPoseなど)に基づいて、入力画像から制御用の特徴マップを生成します
- 画像作成開始 ✓
- 純粋なノイズから開始し、逆拡散プロセスを通じて徐々に画像を形成します
- U-netのブロックにControlNetが追加情報を与える ✓
- ControlNetは拡散モデルのU-Net内の各ブロックに対応する「制御」信号を送ります
- ただし技術的には、ControlNetは元のU-Netの構造をコピーした並列ネットワークで、特徴マップを介して元のU-Netと結合します
- 画像生成完了 ✓
より詳細なプロセスを説明すると:
- プロンプトと条件画像を入力
- 条件画像がプリプロセッサで処理され、特徴マップに変換される
- ランダムノイズから画像生成プロセスを開始
- 各逆拡散ステップで:
- ControlNetが条件特徴マップを処理
- この処理結果が元のStable DiffusionのU-Netに影響を与える
- プロンプトエンバーディングも同時に影響
- 設定したステップ数の逆拡散プロセスを経て最終画像が生成される
今まではText2img(テキストから画像)で使うプロンプト、Img2imgで与える画像データでしか、生成される画像をコントロールできなかった。
↓
最初のノイズ作成しかコントロールできなかった。
ControlNetでは、ノイズ除去中に追加情報を与えることができるようになり、細かな制御ができるようになった。
img2imgとの違い
ControlNetとimg2imgはどちらもStable Diffusionの機能ですが、アプローチと目的が異なります。
基本的な違い
img2img(Image to Image):
- 既存の画像を「ベース」として使用し、その全体的な構図や内容を保持しながら変更を加えます
- 単一の入力画像から出力画像へと変換するシンプルなプロセス
- 画像全体に対してプロンプトとノイズを適用します
ControlNet:
- 特定の「制御情報」(エッジ、ポーズ、深度など)を基に画像を生成します
- 元画像そのものではなく、画像から抽出された特定の特徴に基づいて生成をコントロール
- ニューラルネットワーク構造が拡張され、条件付けをより精密に制御
主な特徴の比較
特徴 | img2img | ControlNet |
---|---|---|
入力 | 完全な画像 | 制御マップ(エッジ、深度、ポーズなど) |
保持される要素 | 全体的な構図と内容(強度による) | 特定の構造的特徴のみ |
柔軟性 | 限定的(デノイジング強度による) | 高い(様々な条件付けタイプ) |
制御の精度 | 低~中(全体的) | 高い(特定の特徴に焦点) |
創造性 | 元画像に制約される | より自由度が高い |
使用シナリオ
img2imgに適した状況:
- 既存の画像のスタイルを変更したい
- 画像の細部を改善・修正したい
- 元の画像の基本的な内容を維持しながら変化を加えたい
ControlNetに適した状況:
- 特定のポーズや構図を正確に制御したい
- スケッチから詳細な画像を生成したい
- 3D情報(深度マップなど)に基づいて画像を生成したい
- 複雑な構造を正確に維持したい
技術的な実装の違い
img2imgは基本的にStable Diffusionの拡散プロセスの途中から開始するだけですが、ControlNetは特別に訓練された追加のニューラルネットワーク層を使用して、特定の条件に基づいた制御を行います。
両者の組み合わせ
実際のワークフローでは、両方を組み合わせることも可能です。例えば、ControlNetで構図を制御した後、img2imgを使って細部を調整するといった使い方ができます。
これらの違いを理解することで、目的に応じて適切な技術を選択できます。ControlNetはより精密な制御が必要な場合に、img2imgはより簡単に全体的な変更を加えたい場合に適しています。
ControlNetを使ってみよう!
例えば、先ほどのサンプルの画像でアニメっぽくしたい場合、「DucHaitenNiji」チェックポイントを使用し、以下のプロンプトで作成します。
プロンプトは、Claude 3.7 Sonnetに画像をアップロードして作成してもらいました。
プロンプト:portrait of a young Asian woman with long brown hair and bangs, soft natural makeup, white button-up shirt, navy blue and red striped necktie, soft lighting, shallow depth of field, professional photography, photorealistic, high detail, 8k, looking directly at camera, school uniform style, outdoor setting, brick wall background

ControlNetなし
ControlNetなしでプロンプトのみで作成。


ControlNetあり
構図はほぼ忠実に再現できました。


まとめ
ControlNetはプロンプトのみでしか制御できなかった画像生成AIに、参考画像から抽出した構図を渡すことができる。
コメント