こんばんは、スタジオ真榊です。こちらはStableDiffusionwebUIに大きな革命をもたらした拡張機能群「Controlnet」の大型解説記事です。2023年春に登場した「ver1.1」について、2023年4月27日時点で使用できるモデル14種とプリプロセッサ全35種のそれぞれの特徴とできることを検証しました。

「Controlnet」はひと言でいうと、ある画像をAIに参照させ、その画像に描かれたものの輪郭や立体感などを抽出することで、それをベースにした画像を生成できる機能群のこと。例えば、このように左の画像から線画部分だけを抽出し・・・

SD1.5用Controlnetが理解る!モデル15種&プリプロセッサ35種を徹底解説:図版1

プロンプトで「金髪にして」と頼むと、線画は同じでカラーの違う画像を生成することができます。つまり、現象だけ見れば「線画をAIに着色してもらう」結果になるわけです。

SD1.5用Controlnetが理解る!モデル15種&プリプロセッサ35種を徹底解説:図版2

このように線画部分だけを継承できる「Lineart」のほか、ポーズだけを継承できる「Openpose」、深度情報だけを継承できる「depth」といったさまざまなControlnetモデル(以下CNモデル)があり、それらを有効に動かすための下ごしらえをする「プリプロセッサ(前処理機能)」というものが個別に用意されています。これらを使いこなすと、このようにさまざまな絵作りができるようになるわけです。

SD1.5用Controlnetが理解る!モデル15種&プリプロセッサ35種を徹底解説:図版3

今回の記事は、CNモデルとプリプロセッサの組み合わせやパラメータ設定、それによってできることなどを詳しく解説していく「総論」的な解説。「各論」に当たる各モデルの詳しい検証記事もリンクしてありますので、ぜひご活用ください。

【★重要】Controlnetはベースモデルによって使えるモデルが異なり、こちらの記事で紹介しているのは主にSD1.5系専用のControlnet(以下CN)モデルです。AnimagineXL3.1などのSDXL系モデルで使いたい場合は、こちらの記事をご参照ください。

インストール&アップデート方法

まずはこちらがStableDiffusion用のControlnet(ver.1.1)公式Githubです。Controlnet開発者が公開した「Forge」では、デフォルト機能として最初からControlnetが使えますが、A1111版SDwebUIでは最初に拡張機能としてインストールする必要があります。

インストールは簡単。SDwebUIの「拡張機能」タブから「URLからインストール」をクリックし、「拡張機能のリポジトリのURL」欄に「https://github.com/Mikubill/sd-webui-controlnet.git」と入力します。

インストール&アップデート方法:図版1

インストールボタンを押して少し待つと、入力欄の下にインストール完了を告げるメッセージが表示されるので、2つ隣の「インストール済」タブに移動し、「アップデートを確認」ボタンをクリック。読み込みが終了したら、「適用して UI を再起動」ボタンを押せばOKです。再読み込みに失敗したらF5キーなどでブラウザ画面を更新してください。txt2imgの画面の下の方に「controlnet」というタブができていれば成功です。

インストール&アップデート方法:図版2

アップデートの有無も確認しておきましょう。webUIの「拡張機能」から「アップデートを確認」をクリック。「sd-webui-controlnet」の欄の右端にある「アップデート」のところに「更新あり」と出たら、「適用してUIを再起動」すればOKです。

★Controlnetのタブが表示されないときは

インストールやアップデートの後、webUIが再読み込みしたのに、txt2imgの画面にControlnetのタブが表示されないことがあります。そんなときは慌てずに、いったんブラウザのwebUIタブと黒いコマンドプロンプト画面を閉じてみましょう。画面上での「再読み込み」でなくwebUIそのものを立ち上げ直せば、再びいつもの場所にウィンドウが出現しているはずです。

・それでも表示されない場合は、Controlnetのアップデートもしくはインストール作業が完了していない可能性があります。もう一度「アップデートを確認」して、「最新版」と表示されるかどうか確かめてみましょう。

モデルのダウンロード

次に、controlnet1.1で使えるCNモデルをダウンロードしましょう。SD1.5系とSDXL系で使えるCNモデルと入手先は異なります。

・SD1.5系

まずはこちらのURLにアクセス。

こちらに並んでいる「.pth」で終わるモデルファイルの中から必要なものをダウンロードし、下記のいずれかのフォルダに入れましょう。どちらでも同じですが、①のmodelsフォルダの方が浅いし、他のモデルと同じ場所なのでおすすめ。ファイル名に「sd15」とあるのは、SD1.5系専用のCNモデルであることを示しています。

①「stable-diffusion-webui\models\ControlNet」

②「stable-diffusion-webui\extensions\sd-webui-controlnet\models」

「必要なものと言われても何がなんだか・・・」という状態と思いますが、最初にいくつか試してみるなら、人体のポーズを抽出できる「openpose」か、アニメ調イラストの線画を抽出できる「lineart anime」、同様に被写体の輪郭を抽出できる「canny」あたりがオススメです。それぞれのpthファイルの「1.45GB LFS↓」をクリックすればダウンロードできます。

・SD1.5系:図版1

※StabilityMatrixをお使いの場合は、「Checkpoints」の欄の中にある「Controlnet」の欄に保存しましょう。ここに入れておけば、インストールした各webUIで使えるようになります。

・SD1.5系:図版2

かなり大きいサイズなので、最初から全てDLせず、試したいものだけでもいいかもしれません。これらの公式pthファイルを初めて使う場合、「yaml」ファイルはダウンロードする必要はありません。(モデルにアップデートがあり、新しいものに置き換えた場合はyamlファイルもダウンロードしましょう)

ファイル容量が半分(723MB)に抑えられたfp16版も既に出ているので、わかる方は始めからこちらを試してもOKです。ただ、1.45GBの公式版と違い、対応するyamlファイル名とモデルのファイル名を手動変更で一致させる必要がありますので、その点だけご注意ください。また、未確認ですが、一部で公式版と異なる挙動をすることがあるようです。

【mediapipe faceのモデルは別の場所に】

・SD1.5系:図版3

表情抽出モデル「mediapipe face」のモデルは別の場所で配布されています。こちらの一覧から「control_v2p_sd15_mediapipe_face.safetensors」を同じフォルダにダウンロードしてください。

・SDXL向け

SDXL専用のCNモデルはこちらにまとめられています。

ファイル名の冒頭は制作者を示していることが多く、「xl」と入っていればSDXL向けのCNモデルです。1.5系モデルと同じように「canny」や「lineart」といった各種モデルが用意されています。個人的な体感ですが、1.5系モデルではうまくいったことがSDXL用モデルだとうまくできないことがあり、拡張機能としてはまだ発展途上なのかなという印象があります。

CNモデルの種類とできること

次に、各CNモデルがどんなことができるのかをざっと解説していきます。

キャニー法(輪郭抽出):control_v11p_sd15_canny.pth

 →元画像の輪郭(エッジ)を継承した別のイラストを生成できる。元イラストの被写体をおおむねそのまま引き継げる。

Lineart(線画抽出):control_v11p_sd15_lineart.pth

 →元となる写真やイラストの主線を引き継いだ別のイラストを生成できる。Cannyとよく似ているが、非常に正確に主線を再現できるCN1.1からの新機能。

LineartAnime(アニメ線画抽出):control_v11p_sd15s2_lineart_anime.pth

 →アニメ調イラストの線画を着色するのに適したlineartモデル。既存のカラーイラストから線画を継承するだけでなく、自分で用意した線画を着色することもできる。

深度抽出:control_v11f1p_sd15_depth.pth

 →元画像に描かれているもののうち、何が手前にあり、どこが奥にあるかの「深度情報」を推測して抽出することで、同じ構図の絵を生成できる

インペイント:control_v11p_sd15_inpaint.pth

 →マスクした部分を別のものに変えられる。i2iの「inpaint」と似ているが、周囲に描かれているものを強く意識して「続き」を描けるので、工夫すると途切れたキャンバス外の続きを描かせる(=アウトペイント)こともできる。i2iのinpaintと異なり、マスクしていない部分が変容する点に注意が必要。

Pix2pix:control_v11e_sd15_ip2p.pth

 →「髪を赤くして」「彼女をカウボーイ風にして」「葛飾北斎調のイラストにして」などと指示することで、元画像に任意の変化を起こせる

シャッフル:control_v11e_sd15_shuffle.pth

 →元画像をパズルのピースのようにして「再構成」することで、同じ色合いの別の絵を生成できる

ソフトエッジ(旧Hed):control_v11p_sd15_softedge.pth

 →キャニーとは別の輪郭抽出技術。キャニーよりもおおまかなエッジを抽出し、元イラストの被写体をおおむね引き継いだイラストを生成できる。

mlsd(直線抽出):control_v11p_sd15_mlsd.pth

 →元画像の中の「直線部分だけ」を継承する特殊なモデル。曲線で構成されるキャラクターなどは無視されるので、パース構造やカクカクした背景(ビルなど)のみを引き継ぎたいときに。

法線マップ抽出:control_v11p_sd15_normalbae.pth

 →元イラストの陰影を元に立体を表現した「法線マップ」を抽出することで、元画像と同じ凹凸の画像を生成できる。深度情報を読み込むdepthに似ている。

オープンポーズ(表情・ポーズ抽出):control_v11p_sd15_openpose.pth

 →読み込んだ画像の表情やポーズ、手の位置や形といった位置情報だけを継承して、同じ表情・ポーズの全く別の画像を生成できる。キャニーや線画抽出だと同じ「外形」のイラストしか作れないが、こちらは「口を大きく開けている」とか「こんなポーズをしている」といった情報のみを引き継げる違いがある。表情抽出ができるモデルでは、openpose faceの他に「mediapipe_face」もある。

mediapipe face(表情抽出):openposeとは別の手法で画像内の顔面を認識し、表情を写し取れる技術。openposeはイラストから表情抽出するのがやや苦手だが、こちらは比較的抽出できるようだ。

scribble(手描き入力):control_v11p_sd15_scribble.pth

 →手描きした落書きやラフを元に完成イラストを出力できるように学習したモデル。5秒で描いたマウス絵からでも、AIが完成品を推測し、整った絵を生成してもらえる。

segmentation(領域分析抽出):control_v11p_sd15_seg.pth

 →「描いて欲しい場所」と「描いて欲しいもの」を同時注文できる機能。入力した画像の「どこに何が描かれているか」を分析して、塗り絵のように「Person」「Sky」「Ground」などと色分けした上で、それぞれを継承した同じ構図の絵を生成できる。一見難解だが、使いこなせると非常に便利。

描き直しアップスケール:control_v11f1e_sd15_tile.pth

 →入力した画像をタイルのように分割し、それぞれを個別に詳細化して元の形にくっつけることで、同じ構図の画像を高精細に生成できる「描き直し」機能。従来のアップスケールに比べ、大胆に拡大・高精細化しても画像が分裂しにくい。

「MultiControlnet」という機能を使えば、複数のモデルを使って1枚の画像を生成することもできます。例えば、cannyとdepthでそれぞれ別々の画像から輪郭と深度情報を同時抽出したり、mlsdで背景を、openposeでキャラの位置を指定したりして、1枚の画像として合体させることなども可能です。詳しい設定方法や組み合わせなどはこちらの記事をご参照ください。