「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」と指定した際のモデルも確認できますね。
この場所になければ、指定したモデルをダウンロードするという仕組みなのでしょう。
以上、モデルのダウンロードについて説明しました。