YAMADA TAISHI’s diary

ゲームについてとか私の日記とか。このブログのあらゆるコードは好きにどうぞ。利用規約があるものは記事内のGitHubのRepositoryのリンクで貼られていると思うので、そちらを参照ください。

StableDiffusion v2.1(Waifu Diffusion v1.5)を使ってみる

こんにちは、やまだたいし( やまだ たいし (@OrotiYamatano) / Twitter )です。
創作活動で自分で考えるのは色々難しいです。
特に私はプログラマーデザインに関しては疎い。
ので、AIに参考資料を作っていただくことにしました。

目次


StableDiffusionとは


今回利用するAIは StableDiffusion です。
StableDiffusionとはディープラーニングで画像を生成出来るものです。
2022年に公開されました。
ディープラーニングなので生成される画像の品質は学習データに大きく影響をうけます。

ちなみに私、エンジニア的にはディープラーニングをAIとは呼んで欲しくは無いのですが、
世間一般的にAIと呼ばれ始めているので、もはや諦めてます。

(そもそもAIとはArtificial Intelligence'(人工知能)の略で、人間と同じように思考し考え自ら発達していくもののことでディープラーニングは厳密にはそう呼べない。
しかし、世間一般的にディープラーニングやゲームAIもAIと呼ばれるようになってしまい本来の言葉の意味合いさえ変わってきているのが現状)

v1~
github.com

v2~
github.com

最近はフォトショプと組み合わせて色々つくる人もいるみたいですね……。

商用利用可能なのか?


現時点では微妙。
ライセンス( CreativeML Open RAIL-M )的には可能ですが、
学習データはウェブ上から得られる様々なデータがデフォルトでは利用されます。
日本の法律では、その学習データの版元がNGといえば現状の法律的ではNGとなってしまう可能性が大きいです。
現時点で判決がおりたという話は私個人は聞きませんが、参考画像を生成する程度にしておいたほうが良いでしょう。
今回はアニメキャラを生成したいので学習データはWaifu Diffusion v1.5を利用します。
(こちらも版権画像が含まれているようなので扱いに注意)

Waifu Diffusionとは?


Stable Diffusion用の学習データです。
Hugging Face(自然言語処理を対象にした大規模なオープンソースコミュニティー)で公開されています↓
huggingface.co

waifuはいわゆる俺の嫁!的な感じで、
waifu diffusionはオタク向けに特化した学習データになります。
ゲームキャラやイラスト、美女モデル、マンガ、アニメなどのデータになります。

今回利用するデータ


・Stable Diffusion v2.1(Stable Diffusion web UI (AUTOMATIC1111)版)
・Waifu Diffusion v1.5 Bata
(Waifu Diffusion v1.5 Bataは旧Stable Diffusion v1系データをStable Diffusion v2版に変更しただけのデータで Bata2は実写系も含めた大量のデータが含まれる)

Bata2は実写系データが多くリアルな物が表示されすぎるので、
イラストによっては Waifu Diffusion v1.5 Bata を使ったほうが良いかもしれない。
wd-1-5-beta2-extra は偏りのあるよりアーティスティックなデータを集めたもの個人的には絵柄が偏るのでオススメしない。

ちなみにStable Diffusion v1とStable Diffusion v2の違いは、深度情報を擬似生成するかどうかです。
2は深度情報を生成するのでより精度の高い画像生成ができるようになります。
(イラスト系を作成する上で深度情報はあまり役に立たない部分が多いので微妙ではありますが腕が3本とかは減るみたいです)

v2版でGUIのものはStable Diffusion web UI (AUTOMATIC1111)版を色々変更したら利用できたり
Gradio版があったりします。

今回はコチラを利用していきます。
https://github.com/qunash/stable-diffusion-2-gui
使えませんでした。(パスが変わってて動かない)

今回はコチラを利用します。
github.com

インストール


まず、 Python 3.10.6をインストール。

www.python.org

↓こんな感じでPathを通すのにチェックを忘れずに。

そしてgitをインストール。 ↓
git-scm.com

んで、いい感じのフォルダで
右クリックしてgit bashを開く。

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

を実行

PythonのPathを通すためにWindows再起動。
(最近はWindows再起動必要ないんすね)
webui-user.bat というbatファイルが入っているので叩く。

なにやら、色々インストールされるので待つ。
err Pythonとかなんとか表示されてたらPathが通ってないので入れ直してみるといいかも。

Ranning on local URL: http://~~

って表示されたら、ローカルサーバーが立ち上がってるはずなので、該当のURLを開いてみる。

多分デフォルト http://localhost:7860 かな?

うまく開けたらOK

コレではまだv2ではないのでアップデートする。

↓のsafetensorsとyamlファイルをダウンロード。
huggingface.co

そして先程落としたgithubのファイルの↓フォルダに2つを格納

stable-diffusion-webui\models\Stable-diffusion

後、VAEフォルダのデータも同じような手順で置き換える。
(訓練データセットらしい、あんまり凄い影響があった感じはしない)

webui-user.batテキストエディタで開いて

set COMMANDLINE_ARGS= の行を
set COMMANDLINE_ARGS=--xformers --listen --disable-safe-unpickle --allow-code --autolaunch --no-half
に変更(文字コード変えないように注意)。

そしたら、再度 webui-user.bat を叩けばv2.1にアップデートされるはずだ。

後はWaifu Diffusion v1.5を使う方法だが、↓より
wd15-beta1-fp32.safetensors
wd15-beta1-fp32.yaml
をダウンロードして stable-diffusion-webui\models\Stable-diffusion へ格納すればOK (safetensors がckpt代わり。セキュリティ関連でckptはあんまり推奨されないらしい。
fp32やfp16はfloatの精度の意味。fp16しか動かないPCもあるが多分32で大丈夫だと思う。動かなかったら16入れてみて)

後、Waifu Diffusion用のVAEフォルダのデータも同じような手順で置き換える。

huggingface.co

そして再度 webui-user.bat を叩いてweb画面を開き直すと waifu-diffusion v1.5が動く!!!

Q.落ちる


1024*1024の解像度の画像を作ろうとするとGPUメモリが足りなくて落ちることがある。

詳細は公式のコマンドラインについての記述を読んで頂きたいが、
GPUメモリが4GB以上あるなら
webui-user.bat のファイルの set COMMANDLINE_ARGS= 設定行に --medvram を加えて貰えば動くはず。

Google Colabでやらない理由


Waifu Diffusion v1.5を使おうとすると課金が必要だから!!
(厳密に言うとクラウドストレージが足りないから。
もしかしたらローカルにもマウント出来るかも知れないけど探す方法が面倒だった)

ちなみにGoogle ColabとはGoogle ColaboratoryというGoogleが提供するGPU などのコンピューティング リソースに料金なしでアクセスしながら、特別な設定なしで利用できるホスト型の Jupyter Notebook サービスらしい。

research.google.com

・Jupyter Notebook
ドキュメントを作成・共有するためのウェブアプリケーションMarkdownとか作成ができる。
また、カーネルに接続できるため、Webブラウザ上でプログラミングができる。
対話型実行環境として利用可能。

プロンプト


基本的に2D美少女絵を出力させたい場合、Waifu Diffusion v1.5は以下のようなプロンプトを入れると精度が上がるらしいです。

ポジティブ:

wdgoodprompt, (symmetric), (exceptional, best aesthetic, new, newest, best quality, masterpiece, extremely detailed, anime:1.2)

ネガティブ:

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, jpeg, humpbacked, long body, long neck, ((jpeg artifacts)), deleted, old, oldest, ((censored)), ((bad aesthetic)), (mosaic censoring, bar censor, blur censor), NSFW, wdbadprompt

プロンプトの例は公式でも紹介されている
cafeai.notion.site

出来た


まとめ


気分で入れたが中々思ったような画像が表示されない。
試行錯誤するのが面白いと感じられる。
例えばとても大きい女性を表示させたい場合、英語では giantess などというらしい。
しかし、なぜか赤と青の衣装をまとっている場合が多い。
それはガンダムを学習してきてしまうためだ。
なので、ネガティブプロンプトにガンダムを入れたりなどすると精度が上がったりする。
またangleを表すことばが入っている場合、センシティブな絵が増えるのも特徴的だ。
きっと特殊な構図を描く人は性癖を全面に出してしまうのだろう。