Google Colab上でStable Diffusion 3をDiffusersで動かしてみよう

AI・機械学習

こんにちは!今回は、Stability AIから最新のStable Diffusionモデルである「Stable Diffusion 3」が発表されました。このモデルは、Hugging Face HubでDiffusersライブラリを使って利用することができます。

この記事では、Google Colabを使ってStable Diffusion 3を動かす方法を、初心者の方でもわかりやすく解説していきます。コードブロックを多用し、丁寧なコメントを付けることで、誰でも簡単に理解し、実行できるようにしていますので、ぜひ試してみてください。

Stable Diffusion 3

Stable Diffusion 3 Mediumが登場!AIイメージ生成の新たな時代へ
こんにちは!今回は、Stability AIから発表された最新のテキスト・トゥ・イメージAIモデル「Stable Diffusion 3 Medium」についてご紹介します。このモデルは、より高品質な画像生成を可能にし、一般の方でも簡単に利...
【初心者向け】Stable Diffusion 3 MediumをComfyUIで使って高品質な画像を生成する方法
はじめにStable Diffusion 3 Mediumは、テキストから画像を生成するための高性能なモデルです。画質、タイポグラフィ、複雑なプロンプトの理解、リソース効率が大幅に向上しています。一方、ComfyUIは、Stable Dif...

事前準備

まず始めに、必要なライブラリをインストールしましょう。以下のコードを実行して、diffusersaccelerateをアップグレードします。

# 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

コードの説明をしていきますね。

  1. 必要なモジュールであるtorchStableDiffusion3Pipelineをインポートします。
  2. from_pretrainedメソッドを使って、Stable Diffusion 3のパイプラインを読み込みます。torch_dtypeにはtorch.float16を指定して、半精度浮動小数点数を使用します。
  3. toメソッドを使って、パイプラインをGPUに移動します。
  4. pipeを呼び出して画像を生成します。プロンプトには生成したい画像の内容を記述します。num_inference_stepsは推論ステップ数、guidance_scaleはガイダンススケールを設定します。
  5. 生成された画像を表示します。

実行すると、「空に浮かぶhello worldの看板を持った猫の戦士」の画像が生成されるはずです。

file

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

コードの流れは以下の通りです。

  1. 必要なモジュールをインポートします。ここではStableDiffusion3Img2ImgPipelineload_imageを追加でインポートしています。
  2. from_pretrainedメソッドでStable Diffusion 3のImg2Imgパイプラインを読み込みます。
  3. パイプラインをGPUに移動します。
  4. load_imageを使って、初期画像を読み込みます。この画像をもとに編集を行います。
  5. pipeを呼び出して画像を生成します。promptには編集内容を記述します。image引数に初期画像を渡します。
  6. 生成された画像を表示します。

実行すると、読み込んだ猫の画像が「ディテールがあり、ファンタジーな、かわいい、愛らしい、ピクサーやディズニー風の猫の戦士」に変換された画像が生成されます。。。(プロンプトに改善が必要そうです。。。)

file

以上が、Google Colab上でStable Diffusion 3をDiffusersで動かす方法の解説でした。
コードブロックにはわかりやすいコメントを付けましたので、ぜひ実際に試してみてください。Stable Diffusion 3の高品質な画像生成を体験できるはずです。

GoogleColabノートブック

Google Colab

参考サイト

Diffusers welcomes Stable Diffusion 3
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

コメント

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