Stable Diffusion 1.5vの利用方法

Stable Diffusion 1.5vの利用方法 機械学習

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

このような場合には、この記事の内容が参考になります。
この記事では、Stable Diffusion 1.5vについて解説しています。

本記事の内容

  • Stable Diffusion 1.5vとは?
  • Stable Diffusion 1.5vの利用方法
  • モデルのダウンロードについて

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

Stable Diffusion 1.5vとは?

Stable Diffusionについては、次の記事をご覧ください。

Stable Diffusion 1.5vが、2022年10月20日に公開されました。
これは、Stable Diffusionで利用する学習済みモデルがバージョンアップしたということです。

「CompVis/stable-diffusion-v1-4」が、「runwayml/stable-diffusion-v1-5」に変わります。
これを見て疑問に感じる人がいるかもしれません。

私は、疑問を感じました。
「Stable Diffusionの開発元が変わったのか?」と。

これには、複雑な事情が関係しているようです。
現状、Stable Diffusionには次の3つの組織が関係しています。

  • Stability AI
  • CompVis
  • RunwayML

CompVisは、Stable Diffusionのオーナーとなっています。
これは、GitHub・Hugging Faceでプロジェクトの所有者という意味です。

CompVis自体は、大学や研究所の合同チームになります。
このCompVisに対して、Stability AIとRunwayMLは出資しています。

ただし、Stability AIの方が出資金は断然多いようです。
あと、両社ともCompVisに技術支援も行っています。

そんな関係がある中で、RunwayMLがStable Diffusion 1.5vを公開しました。
しかし、それに対してStability AIが待ったをかけました。

結果的には、その待ったは取り消されています。
その様子は、以下ページのスレッドで確認できます。

runwayml/stable-diffusion-v1-5 · 🚩 Report : Legal issue(s
https://huggingface.co/runwayml/stable-diffusion-v1-5/discussions/1

何らかのトラブルがあったのは、事実でしょう。
ただ、無事にトラブルは解決したように見えます。

そんな事情でリリースされたStable Diffusion 1.5vですが、そこまで大きな改善はないようです。
内容を見る限りでは、次の論文の技術が採用されたぐらいでしょうか。
https://arxiv.org/abs/2207.12598

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

Stable Diffusion 1.5vの利用方法

Hugging Face上の公式ページでは、次のコードが公開されています。

from diffusers import StableDiffusionPipeline
import torch

model_id = "runwayml/stable-diffusion-v1-5"
pipe = StableDiffusionPipeline.from_pretrained(model_id, torch_dtype=torch.float16, revision="fp16")
pipe = pipe.to(device)

prompt = "a photo of an astronaut riding a horse on mars"
image = pipe(prompt).images[0]  
    
image.save("astronaut_rides_horse.png")

残念ながら、上記コードをそのまま実行しても動きません。
まず、device変数でエラーが普通に出ます。

それを修正しても、まだエラーは発生します。

OSError: runwayml/stable-diffusion-v1-5 is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'
If this is a private repository, make sure to pass a token having permission to this repo with `use_auth_token` or log in with `huggingface-cli login`.

このエラーを解消するには、以下公式ページで規約に同意する必要があります。
https://huggingface.co/runwayml/stable-diffusion-v1-5

規約に同意するには、Hugging Faceにログインしていることが前提となります。
規約に同意しておきましょう。

規約に同意すれば、次のコードを動かせるようになっています。
サンプルのコードを改良しています。

from diffusers import StableDiffusionPipeline
import torch


MODEL_ID = "runwayml/stable-diffusion-v1-5"
DEVICE = "cuda"
YOUR_TOKEN = "コピーしたアクセストークン"

pipe = StableDiffusionPipeline.from_pretrained(MODEL_ID, torch_dtype=torch.float16, revision="fp16",
                                               use_auth_token=YOUR_TOKEN)
pipe = pipe.to(DEVICE)

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

image.save("astronaut_rides_horse.png")

「コピーしたアクセストークン」については、次の記事内で説明しています。

「Access Token(アクセストークン)の取得」という箇所をご覧ください。

上記コードを実行して、モデルのダウンロード処理が始まればOK。
モデルのダウンロードについては、最後に補足しておきます。

では、コードを実行した結果を確認しましょう。
astronaut_rides_horse.pngが、同じディレクトリ上に作成されているはずです。

正直、この結果だけではバージョンアップの効果はわかりません。

以上、Stable Diffusion 1.5vの利用方法を説明しました。
最後は、モデルのダウンロードについて説明します。

モデルのダウンロードについて

「モデルのダウンロードは初回のみ実行される」
学習済みモデルのダウンロードについては、このように表現されることが多いです。

でも、これは厳密に言うと嘘になります。
正確には、キャッシュにモデルが存在していない場合になります。

Windowsであれば、以下がモデルの保存場所です。

C:\Users\ユーザー名\.cache\huggingface\diffusers

検証しているマシンでは、次のような状況になっています。

「CompVis/stable-diffusion-v1-4」と指定した際のモデルも確認できますね。
この場所になければ、指定したモデルをダウンロードするという仕組みなのでしょう。

以上、モデルのダウンロードについて説明しました。

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