Stable Diffusion Web UIをローカル環境でセットアップしてみる話

はじめに
いわゆる生成AIと呼ばれる物体を触ってみるお話。
こういうのを触りたい人ってのは、とりあえずちょっとは開発のようなものが出来るか分るかの人だと思うので、初歩的なお話はかなり端折ってるし、何よりも説明が雑です。なにとぞ。
よくわからんってことは、てきとーに調べてね。
また、とりあえず触ってみようかなという人向けなので、Loraとかについては触れないし、サンプリングの仕様とかについても触れないです。
気が向いたらそのうち新しく記事書きます。
Stable Diffusion web UIってなによ
Stability AIが出してる学習済みAIモデルと呼ばれるものを、AUTOMATIC1111って人がブラウザ上で簡単に触れるようにした物体。
テキストや画像から連想される画像なんかを生成してくれるです。
厳密には、画像を生成してるわけではなく、関数を生成してるわけなんだけど、そのあたりをお話すると長くなるので割愛。
txt2imgのパラメータとてきとうにpuluginをとりあえず網羅しときました。

前提条件
- Windows
- Nvidia製のグラボ
- Python
- Sourcetree
Windows
たぶん、Windows 10とかでも動くと思います。ただ、x86マシンじゃ動かない気がします。
macについては、詳しくないのでよくわかりません。
Nvidia製のグラボ
RTX30系以降のもの(VRAMが8GB程度以上のもの)がよろしいかと思います。
CPUの内蔵グラフィックでも動く気がするし、4GB程度のVRAMでも動かないこともないかもしれないですが、生成に時間がかかりすぎて使い物にならない気がします。
Python
pyenvなんかでバージョン管理してもいいかもしれないけど、動かない時の切り分けとかが面倒なのでシステムに直接入れるほうがよろしいかと思います。
Pythonのダウンロードページから、最新版をDLしてインストールするといいと思います。
特段のこだわりがなければ、当該ページの冒頭Download the latest version
みたいなところからDLして、インストールするといいと思います。
Sourcetree
生のgitを入れて、コマンドライン叩くでもいいとは思いますが、いろいろ楽したいのでSourcetreeをいれるとよいと思います。
Pythonと同様に、当該ページの冒頭の最新版を入れるといいと思います。
Stable Diffusion Web UIをcloneにする
Cloneというのは、乱暴に言えばローカルマシンにDLしてくることみたいなことです。
Stable Diffusion Web UIのGithubページを開き、「Code」というボタンを押し、gitのURLをコピー。

つづいて、「前提条件」の章でインストールしておいたSourcetreeを起動し、「clone」ボタンをクリックし、さきほどのURLをペーストします。
この際、保存先のディレクトリが、インプットボックスにC:\Users\hoge\stable-diffusion-webui
みたいに自動で入力されますが、気に入らない場合には横の「Browse」を押して移動するとよいです。

しばらくすると、Stable Diffusion Web UIにおける過去の変更履歴みたいなのが出ると思います。
cloneするときにAdvanced Option
内を触ったりしていなければ、左側「BRANCHES」が「master」になってるはずです。一般に、このブランチを利用するとよいと思います。
このあたり詳しく知りたい人は、gitの仕組みとかSourcetreeの使い方を別途調べるといいと思います。
とりあえず起動してみる
さきほどcloneしたディレクトリを開いて、webui-user.bat
をダブルクリックする。
すると、コマンドプロンプトが開いて、なにやらごちゃごちゃ自動で起動準備をやってくれます。
しばらくすると、ブラウザにhttp://127.0.0.1:7860
が開くと思います。開かない場合には何かが失敗してます。コマンドプロンプトを眺めながら解決してください。
よくある失敗を下の方に書いておくので、そちらもご参照ください。
なお、VRAMが足りない系のエラーで困ってる場合には、Stable diffusion web ui forgeなどの軽量版なんかを使うのもよいかもしれないです。
導入方法や使い方は大体同じはずです。
学習モデルの追加
絵柄なんかをどうこうしたい場合には、学習モデルを追加/変更するといろいろと面白いかもしれないです。
Hugging FaceやCivitaiで探すとよいと思います。
気に入ったものを見つけたら、モデルをダウンロードしたうえで、クローンしてきたディレクトリ内にあるmodels\Stable-diffusion
にぶち込めば、準備完了。
ブラウザで表示右上の「🔄」を押せばコンボボックス内が更新されるはずです。
C:\Users\hoge\stable-diffusion-webui\models\Stable-diffusion
にモデルをコピーするとよいということです。
よく使う呪文の一例
よく使うものの一例をあげておきます。
呪文の中の丸括弧は、その文言がどの程度重要かというような、呪文の強調を表してます。ただ、強調してもその効果は雰囲気程度です。
なお、よく使うものを毎回毎回入れるのは面倒なので、「Generate」ボタン下の「🖌️」を押して、登録しておくとよいと思います。


なにするにしても必須系
どんな画像を生成するにしても、とりあえず入れとくといいというレベルの呪文。
ダメ品質な画像や、キュビズム的な画像を排除する。また、文字列なども排除しています。
Negative prompt
error, jpeg artifacts, lowers, blurry, bokeh, abstract, multipul angle, two shot, split view, grid view, (text, signature, watermark, username, artist name, stamp, title, subtitle, date, footer, header)
品質系
これも、何を生成するにしてもとりあえず入れとくといいんじゃないかな系。
画質などに関する呪文。
Prompt
masterpiece, professional lighting, best quality,((ultra detailed))
Negative prompt
low quality, worst quality, out of focus,
人物系
人物を生成するときに使うとよい系。
四肢の数や形、指の数、おかしな体系になったりするのを防ぐための呪文。
Negative prompt
ugly, missing arms, extra_arms, mutated hands, extra_legs, bad hands, bad anatomy, deformed mutated disfigured, long_neck, long_body, longbody, poorly_drawn_hands, malformed_hands, missing_limb, floating_limbs, disconnected_limbs, poorly drawn fingers, (extra_fingers, bad fingers, liquid fingers, missing fingers, extra digit, fewer digits ) ugly face, deformed eyes, partial face, partial head, bad face, inaccurate limb, cropped, ghost
写真系
実写系の画像を得るときに入れとくといい感じにしてくれる呪文。
Prompt
RAW photo, photo-realistic, clear
NSFW
Not Safe For Workです。職場では安全じゃないです。なにがとは言わないけど危ないです。
Negativeにいれとくと、とりあえず安全です。
Promptの方に入れると、危ないかもしれないです。使用するモデルによって、安全度が違うっぽいです。
Negative Prompt
NSFW
よくある失敗
Error: Command '['XXXXXX\venv\Scripts\python.exe', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
このエラーが出る場合は、batがインストールしてくるものを、セキュリティソフトが止めてる場合が多いです。セキュリティソフトの設定を変更するか、いったん止めるかするといいと思うです。
AssertionError:Torch is not able to use GPU
このエラーが出る場合は、GPUが対応してない、またはスペックが足りてないです。
おとなしくグラボを新調するか、Stable diffusion web ui forgeなどの軽量版を使うのが吉ですが、どうしてもそのままの構成で動かしたい場合には、webui-user.bat
をメモ帳などで開いて、下記のように書き直すと動くかもしれないです。
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--skip-torch-cuda-test0
call webui.bat
RuntimeError: "LayerNormKernelImpl" not implemented for 'Half'
このエラーが出る場合は、GPUが半精度演算に対応してないです。
設定でどうにかするには、webui-user.bat
をメモ帳などで開いて、下記のように書き直すと動くかもしれないです。
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--no-half --precision full--no-half-vae
call webui.bat
launch.py: error: unrecognized arguments
上記、webui-user.bat
の引数を書き損じるとでます。当該ファイルを見直しましょう。