見出し画像

ControlNetに手を出しました!

こんにちは、あるいは、こんばんは。
最近は朝晩冷えますが、昼間は夏のような暑さになり、寒暖差でばてていませんか?

Stable Diffusionに画期的な機能である「ControlNet」が導入されてずいぶんと経ってしまいましたが、ずっと気になっていました!
すでに導入済みで、触ってはいたものの、放置気味でしたので勉強しようと思っています。導入の仕方も振り返って記載しました。

Stable Diffusion Automatic1111 Web UIを起動して、ControlNetを導入しておくよ!

Stable Diffusion webUI AUTOMATIC1111に
Mikubill様のsd-webui-controlnetを導入します。

Stable Diffusion webUI AUTOMATIC1111の起動方法ですが、いつもはターミナルでコマンドを入力していましたが、バッチを組んでみました。
バッチファイル「py310.bat」の中身です。

chcp 65001
call C:/Users/user/Anaconda3/Scripts/activate.bat
call activate py310
cd C:/Users/user/Dropbox/GitHub/clone/stable-diffusion-webui
C:/Users/user/.conda/envs/py310/python.exe launch.py --skip-python-version-check
pause

いつも通り、コマンドプロンプトやターミナルから起動する場合は、以下のように入力します。

conda activate py310
cd /Users/user/Dropbox/GitHub/clone/stable-diffusion-webui
python launch.py --skip-python-version-check

Stable Diffusionが立ち上がってから、
①タブが並んでいるところの「Extensions(拡張機能)」を選択
②さらにタブが並んでいますので「Install from URL(URLからインストール)」を選択
③「URL for extension's git repository(拡張機能のリポジトリのURL)」に、URL「https://github.com/Mikubill/sd-webui-controlnet」をコピーして貼り付けます。
Install(インストール)してみましょう!

①Extensions(拡張機能)②Install from URL(URLからインストール)③URL for extension's git repository(拡張機能のリポジトリのURL)に、上記のURLを貼り付け④Install(インストール)

⑤上部のタブから「Installed(インストール済)」を選択
⑥「sd-webui-controlnet」が見つかりましたね(よね?)
⑦「Apply and restart UI(UIを再起動)」を押しましょう。

⑤Installed(インストール済)⑥sd-webui-controlnet⑦Apply and restart UI(UIを再起動)

モデルを手に入れるよ!

拡張機能を使用するためには、モデルファイルが必要になります。
Hugging Faceのwebui/ControlNet-modules-safetensorsから「Control」で始まるファイル8種類をダウンロードします。

インストールしたファイルは、コントロールネットのモデルフォルダに入れます。

C:/Users/user/Dropbox/GitHub/clone/stable-diffusion-webui/extensions/sd-webui-controlnet/models/(ここに放り込む)

フォルダに格納したら、UIを再起動しましょう。
「txt2img」や「img2img」の真ん中のあたりに出現します。

プルダウンメニューを開いてみてください。
展開してから、「Model」のプルダウンメニューを開くと、先ほど格納した8種類のモデルが選択できるようになっていると思います。

まずは「canny」でポーズを調整するよ!

ControlNetでよく使用されているのは「canny」と「openpose」のようです。
まずは画像から線画を抽出する「canny」で、配色を調整しましょう!

VRoid Studioで作成したモデルをスクショして、素材にしました。

①「txt2img」タブでControlNetのメニューを展開します。
②線画を抽出するための素材画像を読み込みます。
③「Enable」にチェックを入れておきます。
④「Preprocessor」と「Model」はセットで同じものを選択します。今回は「canny」を選びましょう!
⑤「Prompt」と「Negative prompt」に呪文を入力しておきます。
⑥「Generate」で画像を生成してみましょう!

①「txt2img」でControlNetメニューを展開 ②素材画像を読み込み ③「Enable」にチェック
④「Preprocessor」「Model」に「canny」選択 ⑤「Prompt」と「Negative prompt」を入力
⑥「Generate」


1girl, solo, upper body, smie
1girl, solo, upper body, __smile__, multicolored hair, high ponytail, falling petals, miko clothes
1girl, solo, upper body, smile, infrared photography
1girl, solo, upper body, smile, decorative glass

cannyで抽出した線画の情報は保存することができます。

cannyに限らずControlNetでマップを抽出した情報を以下のようにして保存することができるようになります。

①「Settin」タブを選択
②「ControlNet」を選択
③「Allow detectmap auto saving」にチェックを入れる
④「Apply settings」で設定を反映する
⑤「Reload UI」で再起動する

①「Settin」 ②「ControlNet」 ③「Allow detectmap auto saving」にチェック
④「Apply settings」 ⑤「Reload UI」で再起動

C:/Users/user/Dropbox/GitHub/clone/stable-diffusion-webui/extensions/sd-webui-controlnet/detected_maps/canny


つぎは「openpose」でポーズを調整するよ!

ControlNetでよく見かける棒人間の「openpose」で、ポーズを調整しましょう!
まずはポーズの画像を準備します。
以下のサイトからお借りしました。

①「txt2img」タブでControlNetのメニューを展開します。
②ポーズを抽出するための素材画像を読み込みます。
③「Enable」にチェックを入れておきます。
④「Preprocessor」と「Model」はセットで同じものを選択します。今回は「openpose」を選びましょう!
⑤「Prompt」と「Negative prompt」に呪文を入力しておきます。
⑥「Generate」で画像を生成してみましょう!
※「Preview annotator result」を押すと、読み込んだ画像から抽出したポーズの情報を表示することができますよ!

①「txt2img」 ②素材画像を読み込み ③「Enable」にチェック
④「Preprocessor」と「Model」は「openpose」 ⑤「Prompt」と「Negative prompt」に呪文
⑥「Generate」
smile, open mouth, snowflake background
smile, open mouth, __bg_, scrapbooking
smile, open mouth, reflection water surface
smile, open mouth, Cherry blossom

C:/Users/user/Dropbox/GitHub/clone/stable-diffusion-webui/extensions/sd-webui-controlnet/detected_maps/openpose

「detected_maps」を使って画像生成できる!

ControlNetで抽出した情報「detected_maps」を使って、新たな画像生成することができます!

①「txt2img」タブでControlNetのメニューを展開します。
②ポーズの素材画像(棒人間)を読み込みます。
③「Enable」にチェックを入れておきます。
「Preprocessor」は「none」にして、「Model」は「openpose」を選びましょう!
⑤「Prompt」と「Negative prompt」に呪文を入力しておきます。
⑥「Generate」で画像を生成してみましょう!

①「txt2img」タブ ②ポーズの素材画像(棒人間)を読み込み ③「Enable」にチェック
④「Preprocessor」は「none」、「Model」は「openpose」 
⑤「Prompt」と「Negative prompt」に呪文 ⑥「Generate」
1girl, smiling, open mouth
1girl
1girl, smiling
1girl, smiling

同じように、「canny」もできますよ!

1girl, smiling, open mouth

まとめ

他にもいろいろなモデルがありますので、ゆくゆく簡単に紹介したいと思います。
使いこなすことはできていませんが、実装方法がわかれば、応用する方法を考えるのが楽しみになりますね♪

おまけ

棒人間のデータを配布してくれているクリエイターの方がたくさんいらっしゃいます。
思い通りのポーズを作成する方法も紹介したいと思いますが、まずはいろいろお試し下さいね。


いいなと思ったら応援しよう!

この記事が参加している募集