今更ですがStableDiffusionの勉強
ゲーム開発時のアートワークを作りたくて
ゲーム開発におけるアートワークを効率的に作れないか、今更ですがStableDiffusionをトライしました。
ローカル環境へのセットアップ
使用したのは、StableDiffusionをWebUIで実行できるようにしたStable Diffusion web UI(AUTOMATIC1111版)です。 Gigazineさんのページでインストール方法は詳細に記述されています。 gigazine.net
作業手順は詳細に書かれていますが、全体が逆に把握し辛かったため、ここに要点だけ簡単にまとめていきます。
基本的には、StableDiffusionとWebUIどちらもPythonになるため、Pythonが実行できるように環境を構築していくだけです。
このためインストールしておくものは以下の3つになります。
- Python (https://www.python.org/downloads/)
- StableDiffusionやWebUIのプログラムの実行に必要
- Git (https://git-scm.com/download/win)
- Gitサーバーから最新のプログラムをダウンロードするために必要
- CUDA (https://developer.nvidia.com/cuda-11.3.0-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exe_local)
- StableDiffusionがCUDAのライブラリを使用しているため必要
上記の3つをインストールしたら、StableDiffusionWebUIをダウンロードして実行します。 まず、GithubのレポジトリからStableDiffusionWebUIをCloneします。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
cloneしたディレクトリにあるwebui-user.batを実行すれば、StableDiffusionが実行され、制御用のWebページが立ち上がります。 初回起動時は、Pythonのパッケージ管理システムpip経由で、不足しているライブラリなどが自動的にダウンロードされるため、やや時間がかかります。ただ、待っていれば、すべて自動で完了し、制御用のWebページが起動します。
プロンプトにアドレスが示されますので、そこにアクセスしてやれば、制御を行うことができます。
この場合、http://127.0.0.1:7860に制御用のページが公開されています。
学習済みモデルデータの準備
StableDiffusionは学習させたモデルデータを利用して画像を作成することになりますが、上記のままではモデルデータが入っていません。そこでモデルデータを準備してやる必要があります。 StableDiffusionの学習データは以下にあります。 huggingface.co (アクセスにはhuggingfaceのアカウントが必要になるかもしれません)
そのページにあるsd-v1-4.ckptが学習データになるため、これをダウンロードして使用していきます。
このダウンロードしたデータを以下にコピーしてからWebuiを実行してやります。
\stable-diffusion-webui\models\Stable-diffusion
これでStableDiffusionで画像作成が行えるようになりました。
現在様々なモデルデータが存在するため、自分の作成したい画像を作成できそうなモデルデータを探して、上記ディレクトリにコピーして使用していくというのがもっとも簡単な使い方になりそうです。(もちろん自分でモデルデータを作成してもいいですが・・・)
VAEデータの準備と変更方法
VAEは画像を作成するときのEncoderです。
学習データとVAEがセットとなっている場合も多く、VAEが配布されているようなモデルデータの場合は、VAEもダウンロードして以下のディレクトリにコピーしておく必要があります。
\stable-diffusion-webui\models\VAE
GUI上でVAEを選択可能にするためには、SettingsメニューのUser interface、Quicksetting list に sd_vaeを追記しておく必要があります。
StableDiffusionの呪文(prompt)
しばらく自力でStableDiffusionに呪文(prompt)を入れていっていたのですが、なかなかいい画像が作れませんでした。やはりこの呪文をどう入れていくかがStableDiffusionの一番難しいところです。 他の人がどういった呪文を入れているか、以下のサイトが非常に参考になりました。
このサイトを参考に呪文を唱えてみると、一瞬でそれっぽい画像が出来上がりました。
NegativePrompt(これはNGリスト)の方は以下のようなものを入れています。
lowres, Bad anatomy,bad hands, text,error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts,signature, watermark, username, blurry, artist name,fat,nipple,nude,long body
呪文通りならいい画像はできるのですが、やはり狙った画像を作るにはかなりの鍛錬が必要となりそうです。