【Diffusers】Stable Diffusion v2モデルの利用方法

【Diffusers】Stable Diffusion v2モデルの利用方法 機械学習

「Stable Diffusionの最新版モデルを利用したい」
「Stable Diffusion v2の利用方法がわからない・・・」

このような場合には、この記事の内容が参考になります。
この記事では、Stable Diffusion v2を利用する方法を解説しています。

本記事の内容

  • Stable Diffusion v2とは?
  • Stable Diffusion v2の利用方法

それでは、上記に沿って解説していきます。

Stable Diffusion v2とは?

Stable Diffusion v2とは、Stable Diffusionのモデルです。
現時点(2022年11月末)では、最新のモデルとなります。

Stable Diffusion v2になって、改善されたところは多いです。
生成される画像の質は、UPしています。

そして、Stable Diffusion v2では高解像度化機能を備えるようになっています。
以前までのバージョンであれば、次のようなツールを利用していました。

これらのツールを利用する必要がなくなるということですね。
でも、餅は餅屋に任せた方がいいかもしれません。
このあたりは、実際に検証してみる必要があるでしょう。

また、奥行推定機能が追加されています。
画像内における対象物の配置場所や奥行きの情報が推定されるということです。

この奥行推定機能により、img2imgが改善されることになるでしょう。
ポーズや配置場所を保持したまま、対象だけを変換しすくなるはずです。

あと、Stable Diffusion v2ではアダルトコンテンツが排除されています。
さらには、セレブなどの著名人を描画しにくくなっているようです。

とにかく、Stable Diffusion v2を実際に使っていかないと何も始まりません。

以上、Stable Diffusion v2について説明しました。
次は、Stable Diffusion v2の利用方法を説明します。

Stable Diffusion v2の利用方法

Stable Diffusionを動かせる環境が、大前提となります。
Google Colabではなくローカル環境で動かす場合は、次の記事が参考になります。

詳細について知りたい場合は、上記記事をご覧ください。
とりあえず、Stable Diffusion v2を早く動かしたい場合はPyTorchをインストールしましょう。

基本的には、GPU版PyTorchをインストールします。

PyTorchがインストールできたら、次のコマンドを実行してください。

pip install --upgrade git+https://github.com/huggingface/diffusers.git transformers accelerate scipy

Diffusersは、GitHubから最新をダウンロードして更新する必要があります。
「accelerate」により、少しでも処理を高速化することが考えられています。
「accelerate」 の詳細は、次の記事で解説しています。

これで準備が整いました。
では、次のコードを実行しましょう。

import torch
from diffusers import StableDiffusionPipeline, EulerDiscreteScheduler

model_id = "stabilityai/stable-diffusion-2"

scheduler = EulerDiscreteScheduler.from_pretrained(model_id, subfolder="scheduler")
pipe = StableDiffusionPipeline.from_pretrained(model_id, scheduler=scheduler, revision="fp16",
                                               torch_dtype=torch.float16, safety_checker=None)
pipe = pipe.to("cuda")
# pipe.enable_attention_slicing() 

prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt, height=768, width=768).images[0]

image.save("astronaut_rides_horse.png")

上記コードを実行すると、次のような画像が生成されます。
初回実行時には、モデルのダウンロードが始まります。

astronaut_rides_horse.png

実際には、768 x 768のサイズの画像が確認できます。
また、エラーが出る場合は以下コードを有効にしてみてください。

# pipe.enable_attention_slicing() 

これを有効にすると、GPUメモリを節約して処理するようです。
そうすることにより、GPUのメモリ不足を防ぐことが可能になります。
その分、処理速度が犠牲になってしまいますけどね。

以上、Stable Diffusion v2の利用方法を説明しました。

タイトルとURLをコピーしました