💡

Stable Diffusion WebUIにControlNetを導入して好みのポーズの二次元少女を生み出す

2023/03/16に公開

環境

Windows 11 64bit
Chrome 110.0.5481.178

Stable Diffusion WebUIをインストール

Python 3.10.6をインストール

Add Python to PATHをチェックするのを忘れずに
https://www.python.org/downloads/windows/

Gitをインストール

https://git-scm.com/download/win

ZIPファイルをダウンロード

https://github.com/AUTOMATIC1111/stable-diffusion-webui

ZIPを解凍し、解凍先のフォルダを開いてwebui-user.batをダブルクリックして起動

未認証アプリの確認が出るので、「詳細情報」をクリック

アプリ:webui-user.batと表示されているのを確認して「実行」をクリック

コマンドプロンプトが起動し、必要なソフトウェアがインストールされる

画像のような表示が出たら、赤枠のアドレスにブラウザでアクセスする
(ctrlキーを押しながらURLをクリックするとブラウザが開く)

ブラウザに以下の様に表示される

StableDiffusionを使ってみる

「txt2img」タブの一番上の欄に

astronaut riding horse

などのpromptを入力し、右の「Generate」ボタンをクリックして少し待つと、画像が生成される

生成された画像

何度かGenerateを押すとそのたびに別の画像が生成されたり、promptを変えると出力結果に影響がでることを確認しよう。
また、今回空欄にしている二つ目の欄は「Negative prompt」と呼ばれ、「こうならないでほしいな」という要素を入力すると(なるべく)避けてくれる。

ただし、Stable Diffusionのデフォルトのモデルを元に生成しているので、次の章で好みのモデルをインストールする。

Pastel-Mixをインストール

今回は「Pastel-Mix」というパステル調の画像を生成するのが得意なモデルを使う。
様々な絵柄に対応したモデルが出ているので、自分の好みに合うモデルを探してインストールしよう。

https://huggingface.co/andite/pastel-mix

ここから以下の二つのファイルをダウンロード

  • モデル:pastelmix-fp16.safetensors
  • VAE:pastel-waifu-diffusion.vae.pt

それぞれ、以下のフォルダを見つけて移動する

  • モデル:(解凍先のフォルダ)i/models/Stable-diffusion
  • VAE:(解凍先のフォルダ)/models/VAE

Web UIの左上のプルダウンの右にある青いボタンを押したあと、「pastelmix-fp16.safetensors」を選択する(少し読み込みに時間がかかる)

その後、同じようにGenerateを押すと先ほどとは違った画像が生成される。
「Sampling method」を切り替えると若干風味が変わるのでお好みのモノを選ぼう。

生成画像

ちょっと塗り方が違うのがわかるだろうか。

馬と宇宙飛行士では華がないので、試しに以下のPromptを入れてみよう

prompt
masterpiece, best quality, ultra-detailed, illustration, portrait, silver hair, blue eyes, 1girl, with books,  by the window,dimly lit
negative prompt
lowres, ((bad anatomy)), ((bad hands)), text, missing finger, extra digits, fewer digits, blurry, ((mutated hands and fingers)), (poorly drawn face), ((mutation)), ((deformed face)), (ugly), ((bad proportions)), ((extra limbs)), extra face, (double head), (extra head), ((extra feet)), monster, logo, cropped, worst quality, low quality, normal quality, jpeg, humpbacked, long body, long neck, ((jpeg artifacts))

negative promptについて注[1]

sampling methodはDPM++ 2M Karras


暗めの窓辺で本を読む銀髪碧眼の少女を出力出来た(筆者の好み100%)

ControlNetをインストール

次は、この少女に好みのポーズをとってもらおう。

「Extensions」タブ内の「Install from URL」をクリック
「URL for extension's git repository」欄に

https://github.com/Mikubill/sd-webui-controlnet.git

をコピペして「Install」をクリック

インストールが終了すると小さく一文が表示される

「Installed」タブをクリック、「Apply and restart UI」でWebUIを再起動する

※時間がかかり404が出るときがあるが、待っていると表示される

うまくいっていれば、左の列の下の方に「ControlNet」という欄が増えている

クリックして開き、「ここに画像をドロップ」と書いてある場所にポーズの画像をドロップする

ポーズの例

このときに用意する画像は、希望する出来上がりのサイズと揃えた解像度にするとよい。
デフォルトは512x512。

次に「Enable」にチェックを入れ、Preprocessorで「openpose」を選択して、
下部の「Preview annotator result」をクリックしてみる

Annotator resultという形で棒人間画像が生成される。

これはサンプル画像から姿勢を推定して生成されたもので、これをつかって少女にポーズを指示する。
※このannotationは自動で行われるので、毎回やる必要はない

次に、以下からmodelをダウンロードする。

https://huggingface.co/webui/ControlNet-modules-safetensors/tree/main

control_openpose-fp16.safetensorsをダウンロードし、
(webuiのフォルダ)\extensions\sd-webui-controlnet\modelsというフォルダに配置する。

WebUIに戻り、「Model」欄の右にある青いボタンをクリックした後、
Model欄で「contronl_openpose-fp16」を選択、右上の「Generate」をクリックすると、美少女がサンプルと同じポーズで生成される

生成画像

サンプル画像のような人間のポーズではなく、棒人間画像を入力することも出来る。

その際は、すでに処理済みなのでPreprocessorを「none」にしてGenerateする。

この棒人間を自分で描いたものを読み込んでもOK。
以下のExtensionを追加すれば、エディタをWebUIに追加できる。
https://github.com/fkunn1326/openpose-editor

まとめ

stable diffusion webuiのセットアップから派生モデル(Pastel-Mix)の導入、ControlNetによる姿勢の指示まで行った。
ControlNetには他にも出力を制御するモデルがあるので試してみてほしい。その際には対応するPreprocessorを選択することを忘れずに。

それでは、よいGenerative AIライフを。

おまけ

これが

こうなって

こうじゃ

prompt
masterpiece, best quality, ultra-detailed, illustration, portrait, silver hair, blue eyes, 1girl,  running, dimly lit
negative
lowres, ((bad anatomy)), ((bad hands)), text, missing finger, extra digits, fewer digits, blurry, ((mutated hands and fingers)), (poorly drawn face), ((mutation)), ((deformed face)), (ugly), ((bad proportions)), ((extra limbs)), extra face, (double head), (extra head), ((extra feet)), monster, logo, cropped, worst quality, low quality, normal quality, jpeg, humpbacked, long body, long neck, ((jpeg artifacts))

sampling method:DPM++ 2M Karras

脚注
  1. negative promptには今回希望する絵画の出力を制御するためAIが陥りがちな出力を避けるための単語を入れており、単語が示す特定の人間を差別するような意図はない ↩︎

Discussion