はじめに
Stable Stable Diffusionを試した。動かすまでの過程をメモしておく。
- (2023/06/08: webui無料枠で遊びにくくなったことを追記した)
- (2023/02/15: 少し追記)
やりたいこと
- Stable Diffusionを使って画像生成する
- https://github.com/AUTOMATIC1111/stable-diffusion-webuiを利用
- Colab無料枠の範囲内で遊ぶ(2023/04/21あたりから無料枠でwebuiを動かすと警告が出るようになった。それでもColabで動かしたかったらPro以上にする。もしくはPaperspaceなどの代替サービスを利用する)
注意点
GPUの利用制限がある
正確な時間はわからないが数時間使うとGPUがしばらく使えなくなる。一度制限が来ると24時間ほどGPUが使えなくなる。
なので遊び終わったらColaboratoryのメニューにあるランタイムからランタイムを接続解除して削除でちゃんと切っておく。
(必要なら)AI用のgoogleアカウントを作る
Google Google ドライブにセンシティブな画像があるとひっかかる可能性があるらしい。ドライブに生成した画像を保存する場合は心に留めておく。気になる場合は別アカウントを作って作業する。
参考: Colab版導入
準備1: Google Driveの操作
学習済みモデルデータの入手
今回はAbyssOrangeMix2 (AOM2)を利用する。ModelsとVAEをダウンロードする。
safetensorsなModelが3個あるが、AbyssOrangeMix2_sfw.safetensorsはSFW(健全)、AbyssOrangeMix2_nsfw.safetensorsがSFWから軽いNSFW、AbyssOrangeMix2_hard.safetensorsがSFWからhard NSFWとある。AbyssOrangeMix2_sfw.safetensorsを選んだものとして進める。他のモデルを選ぶ場合は適宜読み替えてください。
参考: https://huggingface.co/WarriorMama777/OrangeMixs#abyssorangemix2-aom2
Google driveを開く。適当にフォルダを新規に作ってそこにデータを入れる。フォルダの名前はSDとした。
準備2: Colaboratoryでの操作
まずColaboratoryのメニューのランタイムからランタイムのタイプを変更、ハードウェアアクセラレータをGPUに設定する。
GPUが使えるか確認。実行は再生ボタンのようなやつを押すかCTRL+ENTER。
!nvidia-smi
有効だとこのようになる。
Tue Feb 7 01:44:08 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.47.03 Driver Version: 510.47.03 CUDA Version: 11.6 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 Tesla T4 Off | 00000000:00:04.0 Off | 0 |
| N/A 56C P0 30W / 70W | 0MiB / 15360MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
stable-diffusion-webuiのクローンとGoogle driveのマウントを行う。
!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
from google.colab import drive
drive.mount('/content/drive')
driveにアクセスするかを聞かれるので許可。
マウントできているか確認。ModelとVAEがある。
!ls drive/MyDrive/SD/
(↓結果)
AbyssOrangeMix2_sfw.safetensors orangemix.vae.pt
stable-diffusion-webuiに行ってpythonで動かす。起動完了に数分かかるかもしれない。
%cd /content/stable-diffusion-webui
!python launch.py --share --xformers --ckpt-dir /content/drive/MyDrive/SD --vae-path /content/drive/MyDrive/SD/orangemix.vae.pt
Running on public URL: https://(文字列).gradio.liveと出てくるのでこのURLを開く。
(2023/02/15追記)起動直後にエラーがでたり、または起動中に生成したURLが機能しなくなることがある。アクセスするとNo interface is running right nowなどと言われる。そのときは再起動する。
参考: Colab1111でGoogleドライブからモデルを読み込む
launch.pyの引数メモ
--share
: 公開用のurlが設定される。--xformers
: あると画像の生成が速い。--ckpt-dir
: モデルデータがあるディレクトリの指定。マウントしたdriveを使うので必要。--vae-path
: VAEの指定。これが無くても後でwebuiのsettingsから設定できる。
追記したときに変更した部分
VAEを切り替えるとき、settingsで変更しても反映されないことがあったので--vae-path
を外した。
以前に書いてたもの
%cd /content/stable-diffusion-webui
!python launch.py --share --xformers --ckpt-dir /content/drive/MyDrive/SD --vae-path /content/drive/MyDrive/SD/orangemix.vae.pt
コマンドライン引数はlaunch.py, webui.py,
shared.pyなどを見て参考にする。
コマンドライン引数はhttps://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Command-Line-Arguments-and-Settingsを見る。
遊ぶ
settingsのStable DiffusionにあるSD VAEをorangemix.vae.ptにしてApply settingsする。起動時に指定しているが気になったのでしておいた。
準備ができたので遊んでみる。適当にプロンプトを入力してSampling
methodをDPM++ SDE Karras
にしてGenerateする。
スシ!何かと聞かれたら寿司と答えるしかなさそうな食べ物を食べている女の子が生成された。食べ物は難しい。
難しいことをしなければいいイラストが簡単に作れる。
AbyssOrangeMix2の場合は
- プロンプト(呪文)はシンプルなほうがよく
- SamplerはDPM++ SDE Karrasがよく
- Sampling Stepsはテストとして12ぐらい、イラストとして出力は12以上
- CFG Scaleは5か6
がいいらしい。個人的にはCFG Scaleはプロンプトがシンプルなときは小さく、複雑なときは大きくしてお祈りする印象。
(2023/02/15追記)画像を保存するときはSaveをクリックして生成されたリンクをクリックするとダウンロードできる。ある時突然Saveを押しても新しい画像へのリンクが生成されなくなることがある。このときはページを再読み込み(F5など)するといい。
生成された画像はstable-diffusion-webui/outputsにあることを知っておくと、保存し逃した画像を回収できる。zipなどを使ってまとめてダウンロードしてもいい。ランタイムを接続解除して削除するとファイルが消えるので注意する。
outputs以下をzipにまとめる。
!zip -r /content/images.zip /content/stable-diffusion-webui/outputs
ダウンロードは少し時間がかかる。
おわりに
おわり。Colaboratoryやモデル、UIを公開してくれている方々のおかげで簡単に試すことができてとてもありがたい。
0 件のコメント:
コメントを投稿