こんにちは!今回は、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の高品質な画像生成を体験できるはずです。
GoogleColabノートブック

参考サイト



コメント