Stable DiffusionのControlNetとは?導入方法と使い方を徹底解説!

Stable Diffusionで画像生成を行う際に、思った通りの画像が出力されないことはないでしょうか。

Stable Diffusionで思い通りの画像を生成するためには、「ControlNet」という拡張機能を活用することが求められます。

今回PROMPTYでは、ControlNetの導入方法と使い方を、実際に画像を生成しながらご紹介します。

ControlNetとは?

Stable Diffusionでは、プロンプトを使用して様々なイラスト生成することができます。

ただし、プロンプトやネガティブプロンプトのみを入力するだけでは、思い描いたポーズと異なるキャラクターが生成されることがあります。そこで必要となるのが、ControlNetの拡張機能です。これを利用すると、参照画像と同じポーズを持つキャラクターの生成が可能となります。

ControlNetは事前訓練されたモデルに新しい制約を与えて画像生成をより自由に制御する技術で、特にimg2imgで難易度が高かったポーズや構図の指定が容易になります。

詳細を知りたい方は、ControlNetに関するこちらの論文をご覧ください。

現在のバージョン(ControlNet 1.1)には14種類のモデルを使用することができます。

それぞれのモデルの機能は次の通りです。

モデル主な機能・特徴
openpose人物のポーズを検出し、それを元に棒人間を生成してポーズを制御する。
depth深度情報を元に画像を生成する。
canny画像の線画を抽出してそれを元に画像を生成する。
scribbleラフな線画からからリアルな画像を生成できる。
inpaint画像の一部を修正する。
mlsd直線的な線を抽出して画像を生成する。建物や部屋などの構造物の画像生成に有効。
tile高解像度の画像を生成するためのモデル。
lineart線画を作成し、それを元に画像を生成する。
lineart_anime線画を作成し、それを元に画像を生成する。lineartのイラスト向けバージョン。
normalbae法線マップを使って画像を生成する。
seg「セマンティックセグメンテーション」の手法を使う。
softedgeソフトな輪郭を使って画像を生成する。ディテールを維持するのが得意なため、色変更等に活用できる。
shuffle画像をシャッフルし再構成することで画像を生成する。
ip2p「Instruct Pix2Pix」を使用して、プロンプトにより画像を修正する。

Stable Diffsion WebUIにControlNetを導入する方法

今回の記事では、Stable Diffusion WebUIでControlNetを導入する方法をご紹介します。

Stable Diffusion WebUIについて知りたい方は、こちらの記事をご覧ください。

関連記事

Stable Diffusionは、ユーザーがテキストを入力するだけで様々な画像を生成することが可能なAIモデルです。 今回PROMPTYでは、Stable Diffusionとは何か、Stable Diffusionの利用方法、S[…]

関連記事

「Stable Diffusionを使用したいが、どのように始めれば良いのだろう...」「低スペックPCでもStable Diffusionを使用できるの?...」 そう思う方もいるのではないでしょうか。 実は、高性能なPCを持っ[…]

① 拡張機能のインストール

Stable Diffusion WebUIでは、簡単にControlNetはを導入することができます。

ControlNetのインストールはwebUIの「Extensions」メニューから行います。

「Available」タブの「Load From」をクリックします。

“sd-webui-controlnet”と検索して、「Install」をクリックします。

インストール後、Web UIを再起動するとControlNetを使用できます。

WebUIのtxt2imgのタブにControlNetが追加されていれば、正常にインストールできています。

② ControlNetモデルの導入

ContorlNetを使用するには、用途に応じた専用のモデルを導入する必要があります。

Huggingfaceからモデルファイルをダウンロードします。公式のファイル容量が小さい軽量版が存在します。

赤枠で囲ったファイルがControlNetモデルのファイルです。使用するファイルをダウンロードします。

ダウンロードしたファイルをStable Diffusion WebUIのControlNetのフォルダに移動します。

Google ColabでWebUIを使っている場合の保存先:

sd\stable-diffusion-webui\models\ControlNet

これでControlNetを使う準備は完了です。

ControlNetの使い方

今回の記事では、よく使われているControlNetモデルの使い方についてご紹介します。

導入したControlNetのモデルの選択方法は、Stable Diffusion WebUIのCountrolNetタブから、

① Enableをチェック

② 使用するモデルをチェック

③ その他の設定項目を調整(今回は全てデフォルト)

① 参考画像からポーズを指定する「openpose」

openposeでは、参照画像から「棒人間」を生成し、新しい画像のポーズを指定できます。

今回はこちらの画像のポーズを再現します。この画像をWebUIの”ここに画像をドロップまたはクリックしてアップロード”の欄に入れます。

参照画像:

設定項目:

通常の画像生成と同様に、プロンプトを入力します。

プロンプト:

masterpiece,high quality,1 cute girl,black hair

ネガティブプロンプト:

(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers,bad anatomy), nsfw

モデル:Anythingv5

Sampling method:Euler a
Sampling steps:20
Width:512
Height:512
Batch count:4
Batch size:1
CFG Scale:7
Seed:-1
Script:None

画像を生成すると、このような棒人間のイラストが生成されます。

同時に、棒人間のポーズを再現したイラストが生成されます。

openposeの詳しい活用方法は、こちらの記事で詳しく解説しています。

関連記事

Stable Diffusion ではプロンプトを元に様々な画像を生成することができますが、ポーズのプロンプトを組み込んでも必ずその通り生成されるわけではなく、複雑なポーズであれば尚更確率の低い作業になってきます。今回は「ControlN[…]

② 深度情報からポーズを指定する「depth」

depthは参照画像の深度情報を取得して画像を生成するモデルです。先ほどの棒人間モデル(openpose)では画像の奥行きの情報できず、思い通りのポーズで画像を生成できないことがあります。

そこで、有効なモデルがdepthです。深度情報を取得するため、奥行きの情報を正しく取得することができます。

参照画像:

設定項目:

プロンプト:

masterpiece,high quality,1 cute girl,black hair

ネガティブプロンプト:

(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers,bad anatomy), nsfw

モデル:Anythingv5

Sampling method:Euler a
Sampling steps:20
Width:512
Height:512
Batch count:6
Batch size:1
CFG Scale:7
Seed:-1
Script:None

画像を生成すると、このような深度マップが生成されます。

同時に、深度マップからポーズや奥行きを指定した画像が生成されます。

depthで生成した画像:

openposeで生成した画像と比較します。

ポーズの再現度は

  • depth:6/6
  • openpose:4/6(中央上と左上)

となり、depthではポーズの再現度が高くなりました。また、今回の結果をみると、髪型を再現したい場合もdepthの方が有効となります。

③ 画像の色を変える「canny」

openposeでは、参照画像の線画を抽出して、新しい画像を生成できます。

今回はこちらの画像を使用します。この画像をWebUIの”ここに画像をドロップまたはクリックしてアップロード”の欄に入れます。

参照画像:

設定項目:

プロンプト:

masterpiece,high quality,1 cute girl,{髪の色} hair,{服の色}clothes

ネガティブプロンプト:

(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers,bad anatomy), nsfw

モデル:Anythingv5

Sampling method:Euler a
Sampling steps:20
Width:512
Height:512
Batch count:1
Batch size:1
CFG Scale:7
Seed:-1
Script:None

画像を生成すると、このような白黒の線画が生成されます。

構図はそのままに、髪色や服の色を変更した画像を生成できます。

④ 抽象的な線画から画像を生成する「scribble」

scribbleはcannyと同様に線画を抽出して画像を生成するモデルですが、cannyよりも抽象的な線画が出力されます。

そこで、scribbleの活用方法としてラフなイラストからStable Diffusionでハイクオリティなイラストに変換することができます。

今回はこちらの手書きでイラストを使用します。この画像をWebUIの”ここに画像をドロップまたはクリックしてアップロード”の欄に入れます。

参照画像:

設定項目:

プロンプト:

masterpiece,high quality,1 man,brown hair,red,eyes,urban steet

ネガティブプロンプト:

(worst quality, low quality:1.4), (zombie, sketch, interlocked fingers,bad anatomy), nsfw

モデル:Anythingv5

Sampling method:Euler a
Sampling steps:20
Width:512
Height:512
Batch count:4
Batch size:1
CFG Scale:7
Seed:-1
Script:None

生成された画像:

手書きのラフな線画から、ハイクオリティなイラストが生成できました。背景は「ビル」を想定していたので上2枚が要求通りのイラストになりました。

⑤ 選択した範囲の画像を修正する「inpaint」

inpaintでは選択した範囲の画像を修正することができるモデルです。この機能を使うことで、画像の中の人物の表情などを修正することができます。実際に例を用いて使い方を解説します。

元画像のプロンプト

プロンプト:

masterpiece,high quality,extremely detailed face,1 girl,full body,standing,brown long hair,smile,black dress,red eyes,street,wallpaper

ネガティブプロンプト:

flat color, flat shading, nsfw,(worst quality, low quality:1.4), interlocked fingers, (zombie, sketch, comic)

モデル:Anythingv5

Sampling method:DPM++SDE Karras
Sampling steps:20
Width:512
Height:512
Batch count:1
Batch size:1
CFG Scale:7
Script:None

生成された画像:

今回はこちらの画像のポーズを再現します。この画像をWebUIの”ここに画像をドロップまたはクリックしてアップロード”の欄に入れます。

inpaintでは、修正したい画像を黒く塗りつぶします。塗りつぶしはimageのタブから行います。

塗りつぶした結果:

設定項目:

今回は、元の画像のプロンプトの”smile”を”angry”に書き換えることで、人物の表情を変更します。

inpaintで修正した結果:

服装や背景、髪型など元の画像はそのままに、塗りつぶした部分のみ修正することができました。

表情も”angry”のプロンプトに対して適したイラストになっています。

まとめ

今回PROMPTYでは、Stable DiffusionのControlNetの導入方法と使い方を紹介しました。

今回の記事では、ControlNetでよく使われている5つのモデルについて使い方を解説しました。

  • openpose:棒人間を使ってポーズを指定する。
  • depth:深度情報を取得してポーズやシルエットを指定する。
  • canny:線画を抽出して、人物の髪色などを変更できる。
  • scribble:線画抽出する。ラフな線画から本格的なイラストを生成する。
  • inpaint:画像の特定の箇所を修正して、人物の表情などを変更する。

今回の例を参考に、皆さまもStable DiffusionにおけるControlNetの使い方をマスターして、画像生成の幅を広げてみてはいかがでしょうか。

~Stable Diffusionで素早く画像生成するには~

~Stable Diffusionで素早く画像生成するには~ Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。 このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。 推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。 2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。 コスパを重視する方は、RTX 3060を選ぶと良いでしょう。 このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。