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

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

はじめに

いわゆる生成AIと呼ばれる物体を触ってみるお話。
こういうのを触りたい人ってのは、とりあえずちょっとは開発のようなものが出来るか分るかの人だと思うので、初歩的なお話はかなり端折ってるし、何よりも説明が雑です。なにとぞ。
よくわからんってことは、てきとーに調べてね。

また、とりあえず触ってみようかなという人向けなので、Loraとかについては触れないし、サンプリングの仕様とかについても触れないです。
気が向いたらそのうち新しく記事書きます。

Stable Diffusion web UIってなによ

Stability AIが出してる学習済みAIモデルと呼ばれるものを、AUTOMATIC1111って人がブラウザ上で簡単に触れるようにした物体。
テキストや画像から連想される画像なんかを生成してくれるです。

厳密には、画像を生成してるわけではなく、関数を生成してるわけなんだけど、そのあたりをお話すると長くなるので割愛。

💡
セットアップはもうええねん。使い方とかそういうところが知りたいねんって方は、以下の記事をどうぞ。
txt2imgのパラメータとてきとうにpuluginをとりあえず網羅しときました。
Stable Diffusion Web UIのtxt2imgを使って遊んでみるお話。
Windowsな環境で、画像っぽいものを生成してくれるStable Diffusion Web UIをセットアップしたから、なんかいろいろいじくってみて遊んでみるだけのお話。

前提条件

  • 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」になってるはずです。一般に、このブランチを利用するとよいと思います。

💡
clone後にアップデートが入ったりしたときには、わざわざ最初から手順を追わずとも、Sourcetreeを開いて上側「Fetch」を押したのち、「Pull」を押すといいと思います。
💡
開発版が触ってみたければ、「dev」ブランチなどを選択してもよいかもしれないですが、そういうのは使い方がわかるようになってからでいいと思います。
このあたり詳しく知りたい人は、gitの仕組みとかSourcetreeの使い方を別途調べるといいと思います。

とりあえず起動してみる

さきほどcloneしたディレクトリを開いて、webui-user.batをダブルクリックする。
すると、コマンドプロンプトが開いて、なにやらごちゃごちゃ自動で起動準備をやってくれます。
しばらくすると、ブラウザにhttp://127.0.0.1:7860が開くと思います。開かない場合には何かが失敗してます。コマンドプロンプトを眺めながら解決してください。
よくある失敗を下の方に書いておくので、そちらもご参照ください。

なお、VRAMが足りない系のエラーで困ってる場合には、Stable diffusion web ui forgeなどの軽量版なんかを使うのもよいかもしれないです。
導入方法や使い方は大体同じはずです。


学習モデルの追加

絵柄なんかをどうこうしたい場合には、学習モデルを追加/変更するといろいろと面白いかもしれないです。
Hugging FaceCivitaiで探すとよいと思います。

気に入ったものを見つけたら、モデルをダウンロードしたうえで、クローンしてきたディレクトリ内にある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の引数を書き損じるとでます。当該ファイルを見直しましょう。