こんにちは!今回は、Stability AIから最新のStable Diffusionモデルである「Stable Diffusion 3」が発表されました。このモデルは、Hugging Face HubでDiffusersライブラリを使って利用することができます。
この記事では、Google Colabを使ってStable Diffusion 3を動かす方法を、初心者の方でもわかりやすく解説していきます。コードブロックを多用し、丁寧なコメントを付けることで、誰でも簡単に理解し、実行できるようにしていますので、ぜひ試してみてください。
Stable Diffusion 3
事前準備
まず始めに、必要なライブラリをインストールしましょう。以下のコードを実行して、diffusers
とaccelerate
をアップグレードします。
# diffusersとaccelerateをアップグレードするコード
!pip install --upgrade diffusers accelerate
Text-to-Image
それでは、Text-to-Imageを試してみましょう。以下のコードをコピーして、順番に実行していきます。
# 必要なモジュールをインポート
import torch
from diffusers import StableDiffusion3Pipeline
# Stable Diffusion 3のパイプラインを読み込み
pipe = StableDiffusion3Pipeline.from_pretrained("stabilityai/stable-diffusion-3-medium-diffusers", torch_dtype=torch.float16)
# パイプラインをGPUに移動
pipe = pipe.to("cuda")
# 画像を生成
image = pipe(
"A cat warrior holding a sign that says hello world in the sky, photoreal", # プロンプト
negative_prompt="", # ネガティブプロンプト(空欄でOK)
num_inference_steps=28, # 推論ステップ数
guidance_scale=7.0, # ガイダンススケール
).images[0]
# 生成された画像を表示
image
コードの説明をしていきますね。
- 必要なモジュールである
torch
とStableDiffusion3Pipeline
をインポートします。 from_pretrained
メソッドを使って、Stable Diffusion 3のパイプラインを読み込みます。torch_dtype
にはtorch.float16
を指定して、半精度浮動小数点数を使用します。to
メソッドを使って、パイプラインをGPUに移動します。pipe
を呼び出して画像を生成します。プロンプトには生成したい画像の内容を記述します。num_inference_steps
は推論ステップ数、guidance_scale
はガイダンススケールを設定します。- 生成された画像を表示します。
実行すると、「空に浮かぶhello worldの看板を持った猫の戦士」の画像が生成されるはずです。
Image-to-Image
次に、Image-to-Imageを試してみましょう。既存の画像を編集して、新しい画像を生成することができます。
# 必要なモジュールをインポート
import torch
from diffusers import StableDiffusion3Img2ImgPipeline
from diffusers.utils import load_image
# Stable Diffusion 3のImg2Imgパイプラインを読み込み
pipe = StableDiffusion3Img2ImgPipeline.from_pretrained("stabilityai/stable-diffusion-3-medium-diffusers", torch_dtype=torch.float16)
# パイプラインをGPUに移動
pipe = pipe.to("cuda")
# 初期画像を読み込み
init_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png")
# 画像を生成
prompt = "A cat warrior, detailed, fantasy, cute, adorable, Pixar, Disney, 8k" # プロンプト
image = pipe(prompt, image=init_image).images[0]
# 生成された画像を表示
image
コードの流れは以下の通りです。
- 必要なモジュールをインポートします。ここでは
StableDiffusion3Img2ImgPipeline
とload_image
を追加でインポートしています。 from_pretrained
メソッドでStable Diffusion 3のImg2Imgパイプラインを読み込みます。- パイプラインをGPUに移動します。
load_image
を使って、初期画像を読み込みます。この画像をもとに編集を行います。pipe
を呼び出して画像を生成します。prompt
には編集内容を記述します。image
引数に初期画像を渡します。- 生成された画像を表示します。
実行すると、読み込んだ猫の画像が「ディテールがあり、ファンタジーな、かわいい、愛らしい、ピクサーやディズニー風の猫の戦士」に変換された画像が生成されます。。。(プロンプトに改善が必要そうです。。。)
以上が、Google Colab上でStable Diffusion 3をDiffusersで動かす方法の解説でした。
コードブロックにはわかりやすいコメントを付けましたので、ぜひ実際に試してみてください。Stable Diffusion 3の高品質な画像生成を体験できるはずです。
コメント