Stable Diffusionで利用するモデルデータを探す際に、ControlNetという言葉を見聞きすることがあるでしょう。
しかし、
- ControlNetが何なのかわからない
- どんな機能が使えるのか気になる
- 具体的に使える機能の例が知りたい
上記のように考えている方が多いのではないでしょうか。
結論からいうと、ControlNetはStable Diffusionの拡張機能の一つです。そのため、画像の生成結果をよりコントロールできるようになります。
今回は、ControlNetの概要や導入方法、使い方などを解説します。
おすすめの機能も紹介するので、イメージどおりの画像を生成できるようになりたい方はぜひ最後までご覧ください。
Stable DiffusionのControlNetとは?

Stable DiffusionのControlNetについて、以下の4点を解説します。
- 画像生成する際に設定できる拡張機能の一つ
- 本体とモデルが必要
- 使用するモデルによって具体的な機能が変わる
- カスタムされたモデルをCivitaiなどでダウンロード可能
1.画像生成する際に設定できる拡張機能の一つ
ControlNetとは、Stable Diffusionの画像生成で設定できる拡張機能の一つです。
導入することで、以下のように生成結果を制御できます。
- 人物のポーズを指定する
- 輪郭を抽出して生成に利用する
- 色の表現を統一させる
- 生成された画像を高品質に仕上げる
利用する機能によっては細かい調整も可能なので、より理想的な画像を生成できるでしょう。
2.本体とモデルが必要
ControlNetを利用するには、本体とモデルデータの両方が必要です。
本体はStable Diffusion WebUI内でインストールできますが、それとは別にモデルをダウンロードしなければなりません。
ダウンロードできるサイトや入手方法は後述するので、参考にすると良いでしょう。
なお、Referenceのようにモデルが不要な機能もあります。
SDXLで利用する場合は異なるモデルデータが必要
Stable Diffusionを基にした画像生成モデルを使う場合と、Stable Diffusion XL(SDXL)を基にした画像生成モデルを使う場合では、使用するControlNetモデルは異なります。
どちらの画像生成モデルでもControlNetを利用するのであれば、2種類のControlNetモデルが必要なので注意が必要です。
使用する画像生成モデルがどちらの系統かわからないときは、基本的な画像サイズで判断すると良いでしょう。
- Stable Diffusion:512×512ピクセル
- Stable Diffusion XL:1024×1024ピクセル

3.使用するモデルによって具体的な機能が変わる
ControlNetのモデルは多数存在し、モデルごとに異なる機能が備わっています。
ポーズを指定する機能を使いたいのであれば、その機能に対応したモデルを導入しなければなりません。
基本的に1モデルにつき1つの機能なので、ControlNetが複数の機能を使えるようにするには、その数だけモデルデータをダウンロードする必要があります。
生成結果にはプリプロセッサも関わる
1つのモデルで使えるのは1つの機能ですが、プリプロセッサを変更することで処理方法を変えられます。
たとえば、人物のポーズを指定するモデルOpenPoseで選択できるプリプロセッサの例は以下のとおり。
- OpenPose:全身を検出
- OpenPose_full:顔・手・全身を検出
- OpenPose_face:顔・全身を検出
- OpenPose_faceonly:顔のみ検出
- OpenPose_hand:手・全身を検出
必要に応じてプリプロセッサを変更することで、より適切な画像を生成しやすくなるでしょう。
4.カスタムされたモデルをCivitaiなどでダウンロード可能
コミュニティやユーザーによって提供されているControlNetモデルは、CivitaiやHuggingFaceなどのサイトでダウンロードできます。
特定の目的に特化したカスタマイズが施されているモデルも多く、さまざまな用途で活用できるでしょう。
LoraやVAE、Embeddingなどと併用し、画像生成の環境を独自にカスタマイズしてみてください。

ControlNetの導入方法・使い方

ローカル環境(自分のPC)のStable Diffusion WebUIにControlNetを導入する方法や使い方を、以下5ステップに分けて解説します。
- Stable Diffusion WebUIの環境を構築する
- ControlNet本体をインストールする
- モデルをダウンロードする
- ControlNetを有効化してプリプロセッサやモデルを選択する
- 画像を生成する
Stable Diffusion WebUIの環境を構築する
まずはStable Diffusion WebUIをローカル環境にインストールし、画像生成の環境を構築します。
以下の手順でWebUIをインストールしましょう。
- PythonとGitをインストールする
- Gitを使ってWebUIをダウンロードする
- webui-user.batファイルを起動してインストールを完了させる
詳しい方法については以下の記事を参考にしてください。

ControlNet本体をインストールする
インストールしたStable Diffusion WebUIを起動させ、ControlNetの本体をインストールします。
WebUIの上部タブで「拡張機能」>「URLからインストール」を選択して「拡張機能のリポジトリのURL」に以下のURLを入力してください。
- https://github.com/Mikubill/sd-webui-controlnet

「インストール」ボタンを押して処理が完了したら「インストール済」タブの一覧にControlNetが追加されているはずです。

確認できたら「適用してUIを再起動」ボタンを押して再起動し、画像生成の画面にControlNetの項目が増えていることを確認しましょう。

正常に表示できていれば、ControlNet本体のインストールは完了です。
モデルをダウンロードする
ControlNetを動かすのに必要なモデルをダウンロードし、指定の場所に置きます。
公式のControlNetモデルはデータサイズの異なる3種類が存在し、以下のページでダウンロードできます。
LARGE(1.45GB) | https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main |
MEDIUM(723MB) | https://huggingface.co/comfyanonymous/ControlNet-v1-1_fp16_safetensors/tree/main |
SMALL(136MB) |
LARGEのモデルを入手する際は、pthファイルとyamlファイルの2種類ともダウンロードしてください。
たとえばCannyの機能を使いたい場合は、以下2つのファイル名の横にある矢印ボタンを押します。
- control_v11p_sd15_canny.pth
- control_v11p_sd15_canny.yaml

MEDIUMまたはSMALLのモデルは、safetensorsファイルを1つダウンロードすればOKです。

ダウンロードしたファイルは、ダウンロードしたWebUIフォルダ下にある以下の場所に移動させましょう。
- stable-diffusion-webui/models/ControlNet

公式以外のモデルの入手場所
公式以外のモデルとして、コミュニティによって調整されたControlNet++モデルがあります。
ControlNet++ モデル | 公開ページ |
LARGE(fp32) | https://huggingface.co/spaces/limingcv/ControlNet-Plus-Plus/tree/main/checkpoints |
MEDIUM(fp16) | https://huggingface.co/huchenlei/ControlNet_plus_plus_collection_fp16/tree/main |
Stable Diffusion XL向けのモデルについては公式のものがないようです。
さまざまなコミュニティおよびユーザーが開発、提供しており、以下のようなページから入手できます。
Stable Diffusion XL | 公開ページ |
---|---|
Lvmin’s collection | https://huggingface.co/lllyasviel/sd_control_collection/tree/main |
Qinglong’s Controllllite SDXL modelsNormal Dsine(NEW) | https://huggingface.co/bdsqlsz/qinglong_controlnet-lllite/tree/main |
2vXpSwA7 cnlllite | https://huggingface.co/2vXpSwA7/iroiro-lora/tree/main/test_controlnet |
MistoLine | https://huggingface.co/TheMistoAI/MistoLine/tree/main |
Kataragi’s SDXL models | https://huggingface.co/kataragi/ |
Xinsir’s SDXL models | https://huggingface.co/xinsir |
Civitaiなどのモデル配布サイトで、検索条件に「ControlNet」を含めて探すのも良いでしょう。

ControlNetを有効化してプリプロセッサやモデルを選択する
画像生成する際に使うControlNetのモデルおよびプリプロセッサを選択します。
まずは画像生成画面にある「ControlNet」をクリックして開き「有効化」にチェックを入れてください。

その後に「プリプロセッサ」と「モデル」のドロップダウンリストから、使用するものを選択します。
例として、Canny機能を使いたい場合は、プリプロセッサに「canny」を、モデルに「control_v11p_sd15_canny」などを設定しましょう。

正しい場所にモデルのファイルを配置したにもかかわらず表示されない場合は、横にあるリロードボタンを押してみてください。
Control Typeを選択すると選びやすい
ドロップダウンリストの上にある「Control Type」を選択すると、以下の設定がそのタイプのものに切り替わります。
プリプロセッサやモデルも関連するものだけが表示されるようになるので探しやすくなるでしょう。

ただし、モデルによってはControl Typeを「All」にしないと表示されない場合があるので注意してください。
画像を生成する
モデルに応じて設定を変更したうえで、画像生成を開始します。
ほとんどのモデルは参照画像が必要となるので、生成前にControlNet欄内で選択しておいてください。

あとは通常通りプロンプトなどを入力して画像を生成しましょう。

ControlNetで使えるモデルおよび機能8選

ControlNetのモデルは多様なユーザーによって開発およびカスタマイズされているため、機能の種類が非常に多いのが特徴です。
ここでは、以下の代表的な8種類のモデルを紹介します。
- Canny|エッジ検出で輪郭を保持
- Depth|深度マップから立体感を再現
- OpenPose|画像をもとにポーズを固定
- Scribble|ラフな手書きから画像化
- Lineart|線画をもとにイラストを生成
- Segment|物体ごとに領域を分割
- MLSD|建造物などに多い直線を検出
- Tile|高解像度化およびディティール補完
1.Canny|エッジ検出で輪郭を保持

Cannyは、画像から輪郭線を抽出し、そのエッジ情報をもとに生成内容をコントロールするモデルです。
大まかなシルエットを残したままスタイルや色合いを変更できます。
形状や輪郭を保持したまま、背景や服の模様を差し替えたい場合などに活用できるでしょう。
低解像度であったりぼやけていたりして輪郭がしっかり抽出されない画像を使うと、期待どおりに反映されない場合があります。
2.Depth|深度マップから立体感を再現

Depthは、画像の奥行き情報(深度マップ)を推定し、その立体感をもとに生成結果をコントロールするモデルです。
背景と手前の被写体に遠近感をつけるなど、立体的な構図を活かした画像を生成しやすくなります。
イラストのキャラクターを背景に馴染ませたり、奥行きを強調したりするときに向いているでしょう。
深度情報の推定に誤差があると、距離感が不自然な画像になってしまう点に要注意です。
3.OpenPose|画像をもとにポーズを固定

OpenPoseは、人物や動物の関節位置を推定し、ポーズ情報をもとに生成内容をコントロールするモデルです。
手足や体の位置を指定できるため、キャラクターの動きや構図を自在にアレンジできます。
決まったポーズを正確に再現したい場合や、ダンスやスポーツなど躍動感のあるシーンにしたい場合に有効です。
複数人が重なっていたり、角度が極端なポーズだったりすると検出できない可能性があるので気を付けてください。

4.Scribble|ラフな手書きから画像化

Scribbleは、手描きのラフな線から輪郭を推定し、その形状をもとに画像を生成するモデルです。
ざっくりした落書きレベルの線画からAIが補完してくれるので、シンプルなアイデアをすぐに可視化するのに役立ちます。
会議中に出たアイデアを即座にビジュアル化して共有したいときにも便利です。
線が途切れ途切れだったり抽象的すぎたりすると誤認識してしまうため、最低限の形をしっかりと描いた画像を用意するようにしてください。
5.Lineart|線画をもとにイラストを生成

Lineartは、画像から読み取った線画情報からイラストを生成・着色するモデルです。
用意した画像が着色前でも着色後でも、ペンで描いたような柔らかい線画のように抽出できます。
アニメ塗りや厚塗り風といったスタイルを指定することで、さまざまな着色を試せるでしょう。
線が薄いとうまく抽出できないため、明確に輪郭付けができている画像を用意するよう気を付けてください。
6.Segment|物体ごとに領域を分割

Segmentは、画像を物体ごとに領域分割(セグメンテーション)するモデルです。
物体の領域ごとに色を塗り分け、おおよその形を維持したまま変化させることができます。
生物は領域分けが難しいので、部屋の家具が移った画像などに対して使うのが向いているでしょう。
似た色ばかりの境界があいまいな画像では狙ったとおりに分割できないので、画像によっては調整が必要になる場合も。
7.MLSD|建造物などに多い直線を検出

MLSD(Multi-Line Segment Detection)は、画像中の直線要素を検出し、それを基に構造を維持するモデルです。
建築物やインテリアなど、直線が多い対象物のパースを大きく崩さずに、模様や色合いを変更できます。
たとえば、洋風の建物を和風にアレンジしてみたい場合などに適しているでしょう。
曲線には対応できないため、丸みのある形状が多い画像には向いていません。
8.Tile|高解像度化およびディティール補完

Tileは、画像の高画質化やディティールを補完するモデルです。
生成済みの画像を参考画像にすることで、細かい部分をより鮮明にした画像を生成できます。
生成する画像のサイズを大きくし、高画質化させることも可能です。
モデルや設定を変更して雰囲気を変えることもできるので、色々と試してみると良いでしょう。
ControlNetに関するQ&A

ControlNetに関する、よくある質問と回答を紹介します。
- 複数のモデルを同時に使えますか?
- おすすめのモデルはどれですか?
- ControlNetが動作しないときの対処法は?
- ControlNetを使うと画像が生成できません
- 複数のモデルを同時に使えますか?
-
ControlNetの設定をする際に「ControlNet Unit 1」や「ControlNet Unit 2」を有効化することで、複数のモデルを同時に使えます。
より柔軟に出力結果をコントロールできるようになるので、単一のモデルを使いこなせるようになったら挑戦してみてください。
ただし、使用するControlNetの数が増えるほど処理が重くなるので気を付けましょう。
同時に使うモデルの数を増減させたい場合は、WebUIの「設定」>「ControlNet」>「MultControlNet:Max models amount (requires restart)」の数値を変えてください。
- おすすめのモデルはどれですか?
-
おすすめのモデルは用途によって変わります。
用途 おすすめのモデル 画像のポーズや構図を維持したまま生成したい Canny、OpenPose、Lineart 参考画像を似た新しいものを生成したい Depth、Scribble 建造物や物体の形を参考にしたい Segmentation、MLSD 生成した画像の高画質化や補完したい Tile 使用するモデルデータによって出力結果が変わるので、さまざまなモデルで試してみると良いかもしれません。
- ControlNetが動作しないときの対処法は?
-
ControlNetを導入してもうまく使えないときは、以下の方法で対処してみてください。
- WebUI上でControlNetを有効化しているか確認する
- WebUIを再起動する
- モデルファイルの場所が正しいか確認する
- 導入したモデルが対応している画像生成モデルを確認する(Stable DiffusionかSDXLか)
- ControlNet本体とモデルファイルをダウンロードし直す
- ControlNetを使うと画像が生成できません
-
PCに搭載されているGPUのスペックが不足している可能性が高いのかもしれません。
通常の画像生成で問題がなくても、ControlNetを動作させるとエラーになる場合があります。
とくに、複数のControlNetを使用するときは要求スペックが高くなるので要注意です。
快適に画像を生成したいのであれば、Xserver VPSなどのGPUサーバーサービスの利用も検討してみてください。
出典:Xserver VPS
まとめ
本記事では、Stable DiffusionのControlNetについて解説しました。
最後に、記事の内容をおさらいしておきましょう。
- ControlNetを使うことでStable Diffusionの生成結果をコントロールできる
- ポーズの指定やエッジ抽出、高画質化などが可能である
- 複数の機能を同時に使うこともできる
- 本体とは別に、機能に応じたモデルデータが必要である
ローカル環境で利用しているStable Diffusion WebUIにControlNetを導入することで、イメージする構図やスタイルに近づきやすくなります。
ControlNetをうまく活用し、生成する画像のオリジナリティに大きな幅を持たせましょう。