「Stable Diffusionの最新版モデルを利用したい」
「Stable Diffusion v2.1の利用方法がわからない・・・」
このような場合には、この記事の内容が参考になります。
この記事では、Stable Diffusion v2.1を利用する方法を解説しています。
本記事の内容
- Stable Diffusion v2.1とは?
- Stable Diffusion v2.1の利用方法
それでは、上記に沿って解説していきます。
Stable Diffusion v2.1とは?
Stable Diffusion v2.1は、Stable Diffusion v2(以下2.0で表記)を改良したモデルです。
Stable Diffusion v2.1のリリース日は、2022年12月7日となります。
Stable Diffusion v2.0は、2022年11月24日にリリースされています。
そこから、2週間ほどで新たなバージョンが公開されたということです。
それだけ、Stable Diffusion v2.0は悪評だったのでしょう。
データセットから有名アーティスト、有名人、NSFWコンテンツなどが取り除かれました。
つまり、それだけフィルターが増えたということです。
フィルターを増やして強くし過ぎた結果、様々な支障が出ていました。
例えば、NSFWフィルターが強すぎて、人の生成が困難になっていました。
人体を学ぶ上では、NSFWコンテンツが欠かせないということなのでしょう。
そのため、Stable Diffusion v2.1ではそれらのフィルターを調整したようです。
ただし、アダルトコンテンツは生成されないままだと説明されています。
また、Stable Diffusion v2.1では非標準の解像度のレンダリングが可能になっています。
その結果として、次のようなワイドスクリーンの画像に対応できるということです。
これは何気に凄いですね。
でも、GPUのメモリ不足でそれほどワイドな画像を生成できないかもしれません。
以上、Stable Diffusion v2.1について説明しました。
次は、Stable Diffusion v2.1の利用方法を説明します。
Stable Diffusion v2.1の利用方法
Stable Diffusionを動かせる環境が、大前提となります。
Google Colabではなくローカル環境で動かす場合は、次の記事が参考になります。
GPUが利用できるなら、GPU版PyTorchのインストールをオススメします。
あとは、次のコマンドを実行するだけです。
pip install --upgrade git+https://github.com/huggingface/diffusers.git transformers accelerate scipy
これで、Stable Diffusionがローカル環境で利用可能になります。
画像生成の処理を速くしたいなら、xFormersのインストールを推奨します。
xFormersを入れると、1枚当たりの画像生成時間が半分ほどになります。
あくまで、これは私の環境において言えることです。
マシンスペックや条件によって、この辺は変わってくるでしょう。
準備が整ったら、次のコードを実行しましょう。
from diffusers import StableDiffusionPipeline, DPMSolverMultistepScheduler import torch model_id = "stabilityai/stable-diffusion-2-1" pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16) pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config) pipe = pipe.to("cuda") # pipe.enable_attention_slicing() prompt = "a photo of an astronaut riding a horse on mars" image = pipe( prompt, num_inference_steps=25, guidance_scale=7.5, width=768, height=768 ).images[0] image.save("astronaut_rides_horse.png")
上記コードを実行すると、次のような画像が生成されます。
初回実行時には、モデルのダウンロードが始まります。
astronaut_rides_horse.png
また、エラーが出る場合は以下コードを有効にしてみてください。
# pipe.enable_attention_slicing()
このコードを有効にすることにより、GPUのメモリ不足に対応します。
それでも動かない場合は、生成する画像サイズを変更してみましょう。
width=512, height=512
以上、Stable Diffusion v2.1の利用方法を説明しました。