こんにちは!悠です!
今回は「Stable Diffusion」で、生成されるAIイラストのポーズを指定することができる拡張機能「ControlNet」の使い方についてまとめていきます。
また、Stable Diffusion WebUIに拡張機能を導入する方法、ControlNet以外のおすすめ拡張機能についてもついでにまとめていくので、ぜひ参考にしてください!

なお、今回のアイキャッチ画像はRealDosMixで作成いたしました!
Extension(拡張機能)とは?
Extension(拡張機能)は、その名の通り「Stable Diffusion WebUI」にデフォルトでは備わっていない便利な機能を追加導入できるものを指します。
Chromeでよく拡張機能を使いますよね?あれと全く同じようなものと考えてOKです。
Stable Diffusion WebUIのExtensoinsタブから、現在導入済みの拡張機能を確認することができます。
ControlNetとは?

出典:https://github.com/Mikubill/sd-webui-controlnet
「ControlNet」とは、Stable Diffusion WebUIの拡張機能の1つで、あらかじめ用意した画像からポージングだけを抜き出して、生成されるAIイラストに反映させることができます。
出力画像の構図をある程度操作することができるので、導入することで自分のイメージ通りの画像を作成しやすくなりますよ!
ControlNetの導入方法(ローカル版)
それではStable Diffuision WebUIに「ControlNet」を導入していきましょう。
ControlNet(拡張機能)の導入
Extensions → Install from URL → URL for extensions’s git repositoryの欄に、下記のURLを入力します。
入力し終わったらオレンジ色のInstallボタンをクリックし、Loadが終わるまで待ちましょう。
導入が完了したら再起動すると、txt2imgの下部にControlNetの欄が表示されます。
ControlNetのモデルデータをダウンロード
ControlNetを使用する際、予め設定しておいたモデル(手法)に応じて画像からポージングを抽出します。
手法によって二次元画像からの抽出が得意だったり、逆に実写画像からの抽出に優れていたりと特性があります。
モデルデータは下記のURLからダウンロードできます。

「control~.safetensors」となっているものがモデルデータです。
ダウンロードしたファイルは、「\webui\extensions\sd-webui-controlnet\models」に保存しましょう。
各モデルデータによるポージングの抽出の特徴については、下記の記事が非常に参考になりますのでぜひ目を通しておいてください。

私の場合は下記の4つを導入してみました。
- canny:2次元イラストからの抽出に優れる。
- depth:実写画像からの抽出に優れる。
- openpose:人体の姿勢を関節に応じて認識し抽出。流行りらしい。
- segmentation:画像内の属性ごとに区分して抽出。
ControlNetを使ってみよう!
では、試しにControlNetを使ってみましょう。
今回は例として、openposeモデルを使用します。
まず、ポージングを抜き出したい画像を用意します。
私はフリー画像をダウンロードできるpixabayで用意しました。

出典:https://pixabay.com/ja/photos/%e8%82%96%e5%83%8f%e7%94%bb-%e5%a5%b3%e3%81%ae%e5%ad%90-%e3%82%a2%e3%82%b8%e3%82%a2%e4%ba%ba-787522/
次にStable Diffusion WebUIでControlNetのタブを開き、用意した画像をドラッグアンドドロップしましょう。
Enableにチェックを入れ、Preprocessorにopenpose_hand、Modelにcontrol_openpose-fp16を指定します。
※別のモデル(手法)を使う場合は、Preprocessorの欄とModelの欄に同じ手法のデータが来るように揃えて設定しましょう。
これで準備完了なので、下記のプロンプトで試しに作成してみます。
best quality,masterpiece,ultra high res,(photo realistic:1.4),1 girl,full body,medium breasts,detailed beautiful face,big blue eyes,blue hair, hatsune_miku, ribbon, detailed clothes, maid costume, wet, beautiful sky, beach, cute,young,posing,very long hair, looking at viewers, professional lighting, physically-based rendering,depth of field,<lora:koreanDollLikeness_v15:0.4>
EasyNegative, painting,sketches,(worst quality:2),(low quality:2),(normal quality:2),lowers,normal quality,((monochrome)),((grayscale)),skin spots,acnes,skin blemishes,age spot,(outdoor:1.6),nsfw,ugly face,fat,missing fingers, extra fingers, extra arms,extra legs, open chest
生成された画像は次のようになりました。

ポーズを抽出した画像

生成した画像
かなり似た構図のイラストが生成できていますね!
ちなみにsegmentationを使うと下記のようになりました。手の配置までより忠実に再現されていますね。
ControlNetの導入方法(Colab版)

上記の記事を参考にして、Google Colaboratory版のStable Diffusion WebUIを使っている方向けに、ControlNetを導入する方法をまとめていきます。
なお、この方法は下記の記事を参考にさせていただきました。

導入方法は単純で、maintained by Akaibuのノートブックの、Googleドライブ内に保存したモデルデータを読み込むセルの下に下記のコードを追記します。
#ControlNetの環境をインストール %cd /content/stable-diffusion-webui/extensions/ !git clone https://github.com/Mikubill/sd-webui-controlnet /content/stable-diffusion-webui/extensions/sd-webui-controlnet #ControlNetで使用するモデルをダウンロード %cd /content/stable-diffusion-webui/extensions/sd-webui-controlnet/models/ #!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_canny-fp16.safetensors #!wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_depth-fp16.safetensors !wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_openpose-fp16.safetensors !wget https://huggingface.co/webui/ControlNet-modules-safetensors/resolve/main/control_seg-fp16.safetensors %cd /content/stable-diffusion-webui
!wget以下に、このページにあるControlNetのモデルデータのダウンロードリンクをコピペしましょう。
場所は下の画像を参考にしてください。
あとは通常通り上から順番にセルを実行していけば、Colab版のStable Diffusion WebUIでControlNetを使うことができます。
その他のおすすめExtension(拡張機能)
上で紹介した以外に、個人的におすすめなStable Diffusion WebUIの拡張機能をご紹介していきます。
なお、導入方法はControlNetの時と全く同じです。
Booru tag autocompletion
Danbooruのタグに沿って、途中まで入力したプロンプトの候補をサジェストしてくれます。
自分だけではなかなか思いつかないようなプロンプトを表示してくれたり、スペルがわからない専門用語を補完してくれたりするのでかなり便利ですよ!
サジェストの表示数も任意の数を設定できます。
Google Colaboratory版で追加したい時は、下記のコードをセルに入力しましょう。
%cd /content/stable-diffusion-webui/extensions/ !git clone https://github.com/DominikDoom/a1111-sd-webui-tagcomplete /content/stable-diffusion-webui/extensions/a1111-sd-webui-tagcomplete %cd /content/stable-diffusion-webui
Unprompted
AIイラストを生成時、顔や手が崩れている場合に自動的に修正してくれる拡張機能です。
便利な拡張機能ですが、修正された顔が私はあまり好みでなかったので使っていません。
今後のアップデートに期待したいですね。
Google Colaboratory版で追加したい時は、下記のコードをセルに入力しましょう。
#umpromptedをインストール %cd /content/stable-diffusion-webui/extensions/ !git clone https://github.com/ThereforeGames/unprompted /content/stable-diffusion-webui/extensions/unprompted %cd /content/stable-diffusion-webui
設定方法に関しては、下記の記事が参考になります。

まとめ
以上が「Stable Diffusion」で、生成されるAIイラストのポーズを指定することができる拡張機能「ControlNet」の使い方でした。
拡張機能の導入はそれほど難しくないのにもかかわらず、AIイラストの作成を大きく助けてくれるので、ぜひ参考にして導入してみてください!
では、ここまで読んでいただきありがとうございました。
コメント
Controlnetは気になっていたので嬉しいです!
ありがとうございます!
僕も調べて思ったのですが、自分で生成した画像(loraは使用せずプロンプトのみで生成)の顔を使って好きなポーズをさせるというものではなく、
新たに作るキャラクターのポーズを指定するというイメージでしょうか?
もちろんloraを使用すればその顔にはなると思うのですが。。
コメントありがとうございます!
なるほど~、同一seed値でcontrolnetを使うとどうなるかは未確認でした!
仰るように、新たに作成するイラストのポーズを指定する機能だと今のところ私も思っています。
でも保存している画像と同一プロンプト、同一seed値を使うと、その画像とポーズ以外の要素はほぼ同じ画像も作れそうですよね。
これはあとで試してみます!