Apps

018-Stable Diffusion IMG|Stable DiffusionのUltra,Core,3.0&3.5のAPIを試してみる

はじめに

Stable Diffusionは、最先端の画像生成AIとして広く利用されています。

本記事では、Stable Diffusionの Ultra, Core, 3.0 & 3.5 のAPIを実際に試し、それぞれの違いや使い方を解説します。

Pythonを使ってAPIリクエストを行い、出力画像を確認しながら、どのモデルがどのような用途に適しているのかを検証してみましょう!

共通:実装

1. プロジェクトのセットアップ

まず、作業ディレクトリを作成し、必要なファイルを準備します。

ディレクトリ構成

018-StableDiffusionIMG/
backend
│── main.py            # 画像生成スクリプト
│── .env               # APIキーを管理(環境変数として)
│── output/            # 生成した画像の保存フォルダ
│    └── lighthouse.jpeg  # 生成された画像(例)
│── requirements.txt   # 必要なPythonライブラリ

2. 必要なライブラリのインストール

以下のコマンドを実行し、必要なライブラリをインストールします。

pip install requests python-dotenv

3. .env ファイルの作成

APIキーを直接コードに書かず、環境変数として管理するために、.env ファイルを作成し、以下のように記述します。

STABILITY_API_KEY=sk-あなたのAPIキー

Stable Image Ultra

4.1 実行コード:ultra.py

import os
import requests
from dotenv import load_dotenv

# .env ファイルの読み込み
load_dotenv()

API_KEY = os.getenv("STABILITY_API_KEY")

response = requests.post(
    f"https://api.stability.ai/v2beta/stable-image/generate/ultra",
    headers={
        "authorization": f"Bearer {API_KEY}",
        "accept": "image/*"
    },
    files={"none": ''},
    data={
        "prompt": "totoro",
        "output_format": "webp",
    },
)

if response.status_code == 200:
    os.makedirs("output", exist_ok=True)  # 出力フォルダを作成
    with open("output/totoro-ultra.webp", 'wb') as file:
        file.write(response.content)
    print("画像を output/totoro.jpeg に保存しました!")
else:
    raise Exception(str(response.json()))

出力結果

Stable Image Core

4.2 実行コード:core.py

import os
import requests
from dotenv import load_dotenv

# .env ファイルの読み込み
load_dotenv()

API_KEY = os.getenv("STABILITY_API_KEY")

# APIリクエスト
response = requests.post(
    f"https://api.stability.ai/v2beta/stable-image/generate/core",
    headers={
        "authorization": f"Bearer {API_KEY}",
        "accept": "image/*"
    },
    files={"none": ''},
    data={
        "prompt": "totoro",
        "output_format": "webp",
    },
)
# 画像を保存
if response.status_code == 200:
    os.makedirs("output", exist_ok=True)  # 出力フォルダを作成
    with open("output/totoro-core.webp", 'wb') as file:
        file.write(response.content)
    print("画像を output/totoro.jpeg に保存しました!")
else:
    raise Exception(str(response.json()))

出力結果

Stable Diffusion 3.0 & 3.5

  • 出力時間:約10~15秒
  • 出力回数:

Stable Diffusion 3.0および3.5は、画像生成AIの最新バージョンであり、より高度なテキスト理解と高解像度な画像生成が可能です。本記事では、Stable Diffusion APIを利用して、Pythonで画像を生成する方法を解説します。

4.3 実行コード:st3.py

import os
import requests
from dotenv import load_dotenv

# .env ファイルの読み込み
load_dotenv()
API_KEY = os.getenv("STABILITY_API_KEY")

# APIリクエスト
response = requests.post(
    "https://api.stability.ai/v2beta/stable-image/generate/sd3",
    headers={
        "authorization": f"Bearer {API_KEY}",
        "accept": "image/*"
    },
    files={"none": ''},
    data={
        "prompt": "Lighthouse on a cliff overlooking the ocean",
        "output_format": "jpeg",
    },
)

# 画像を保存
if response.status_code == 200:
    os.makedirs("output", exist_ok=True)
    with open("output/lighthouse.jpeg", 'wb') as file:
        file.write(response.content)
    print("画像を output/lighthouse.jpeg に保存しました!")
else:
    raise Exception(str(response.json()))

5. スクリプトの実行

以下のコマンドでスクリプトを実行し、画像を生成します。

python main.py

正常に動作すれば、output/lighthouse.jpeg に画像が生成されます。

出力結果

まとめ

  • 出力速度:どれも10~15秒で1枚生成
  • 出力枚数:4枚

-Apps