WindowsでStable Diffusion 2.0を動かす

Stable Diffusion 2.0 の概要

Stable Diffusion (ステーブル・ディフュージョン) はディープラーニングの text-to-image モデルで、これを用いることでテキストで与えた文章に基いて画像を生成することができます。

11月24日に Stability AI より、そのバージョン 2.0 がリリースされました。生成できる画像の解像度が向上したという他にも、入力画像の奥行きを推測し画像生成に使用する Depth-to-Image モデルが追加されるなど、魅力的な改善が為されています。

今回はその Stable Diffusion 2.0 を早速 Windows のローカルで動かしていきたいと思います。

旧バージョンを手軽に動かしてみたい方は、こちらの記事

などを御参照ください。

SD 2.0 インストールの為の事前準備

まだ xFormers をインストールされていない方は、まずこちらの記事

に従って、Windows 上で xFormers が使える状態にしておきましょう。

xFormers が入っていなくても Stable Diffusion は使えますが、xFormers を使うことで Stable Diffusion が使うメモリ容量を減らす事ができますので、結果としてメモリが少ない環境でも Stable Diffusion 2.0 がメモリ不足で落ちることなく絵が描ける可能性が高くなります。

Stable Diffusion 2.0 のダウンロード

まず、Stable Diffusion 2.0 の公式 GitHub リポジトリ

にアクセスし、『 Code 』と書かれたボタンをクリックして出たメニューから『 Download ZIP 』をクリックします。

『 stablediffusion-main.zip 』というファイルがダウンロードされますので、ダブルクリックして開きます。

中には『 stablediffusion-main 』というフォルダがありますので、選択して右クリックして出たメニューから『コピー』を実行します。

エクスプローラーで Cドライブ 直下の apps フォルダ (無ければ作成します) を開き、空いた場所で右クリックして出たメニューから『貼り付け』を実行します。

これで『 C:\apps 』フォルダの中に『 stablediffusion-main 』フォルダとその中身が貼り付けられ、『 C:\apps\stablediffusion-main 』フォルダが出来上がった状態になりました。

フォルダ名から『 -main 』を削除して、フォルダ名を『 stablediffusion 』に変更しておきます。

この時点で stablediffusion フォルダの中はこんな風になっているはずです。

SD 2.0 インストールの為の環境準備

まずパッケージのインストールに関係するツールを最新化します。

Python の使えるコマンドラインから

python -m pip install --upgrade pip setuptools

と打って実行します。

続けてコマンドラインから

python -m pip install transformers==4.19.2 diffusers invisible-watermark

と打って実行します。

transformers と diffusers と invisible-watermark がインストールされ、コマンド入力待ちに戻ってきます。

これでインストールの為の環境準備は完了です。では Stable Diffusion 2.0 のインストールを行っていきましょう。

Stable Diffusion 2.0 のインストール

コマンドラインから

cd \apps\stablediffusion

と打って実行し、先ほど準備した『 C:\apps\stablediffusion 』フォルダに移動します。

続けて

python -m pip install -r requirements.txt

と打って実行し、依存パッケージをインストールします。

少し時間がかかりますが、待っていれば完了してコマンド入力待ちに戻ってきます。

続けてコマンドラインから

python -m pip install -e .

と打って実行し、Stable Diffusion 自体のインストールを行います。

以上で Stable Diffusion 2.0 のインストールは完了です。

Stable Diffusion 2.0 モデルのダウンロード

続けて Stable Diffusion 2.0 で使用するモデルファイルをダウンロードします。

コマンドラインから

git clone https://huggingface.co/stabilityai/stable-diffusion-2

と打って実行しましょう。

以上で Stable Diffusion 2.0 で使用するモデルファイルのダウンロードも完了し、Stable Diffusion 2.0 が使える状態になりました。

この時点で『 stable_diffusion.egg-info 』と『 stable-diffusion-2 』の2つのフォルダが追加され、stablediffusion フォルダの中はこのようになっているはずです。

Hello Stable Diffusion 2.0!!

では早速使ってみましょう。まずコマンドラインから

python scripts/txt2img.py --help

と打って実行することで、一番基本的な機能である文章から絵を描く『 text -to-image 』の使い方のヘルプを見ることが出来ます。

これを参考にしながら絵を描くコマンドを作って実行してみましょう。今回はこのようなコマンドを打って実行してみます。

python scripts/txt2img.py --prompt "a girl eating curry with rice" --n_iter 1 --n_samples 1 --ckpt ./stable-diffusion-2/768-v-ema.ckpt --config configs/stable-diffusion/v2-inference-v.yaml --H 768 --W 768

『カレーを食べている女の子』という題材で、縦横共に 768px のサイズの1枚の絵を描くコマンドになります。

実行が開始され、すぐにコンソールにずらずらとログ出力が流れていきます。

いくつかのプログレスバーが最後まで進んで『 Enjoy. 』と表示されれば、画像の生成は完了しています。

もしメモリ不足で落ちてしまう場合は引数の最後2つで指定している画像サイズを『 -–H 512 -–W 512 』などとして画像サイズを小さくしてやると、もしかすると成功するかもしれません。

stablediffusion フォルダの中を覗くと『 outputs 』フォルダが出来ていて…

その中にある『 txt2img-samples 』フォルダの中に、生成された画像が保存されています。

Enjoy!!

おまけ:ランダムなシードで描かせる

先のコマンドでは乱数のシードを指定していないのでデフォルトの 42 に固定されてしまっています。これでは色々な絵を描かせたい場合には困ります。

シードはパラメータの1つとして『 --seed [シード値] 』という風に与えればよいのですが、これではランダムにしようと思うと毎回自分で出鱈目な数を考えて指定しなければいけなくて面倒です。

しかし、パラメータに『 --seed -1 』と加えてシード値に -1 を与えてやると、そんなシード値は使えないよと言われて適当にランダムな値が使われるので、結果的に自動でランダムなシードで描かせることができます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です