コンテンツ

話題の画像生成AI「Stable Diffusion」を使ってみた!

2023/11/11に公開

2023/12/16

AI
Stable Diffusion
Python
話題の画像生成AI「Stable Diffusion」を使ってみた!

はじめに

Stable diffusionとは2022/8にオープンソースとして公開された画像生成AIです。Stable Diffusionは、ユーザーが入力したテキストをもとに自動で画像を生成することができます。

今回は、Stable Diffusion提供元のStability AIが公開しているSandbox環境を利用して、テキストからお好みの画像を生成してみましょう。

本記事のゴール

話題の画像生成AI「Stable Diffusion」
話題の画像生成AI「Stable Diffusion」

冒頭でお伝えしましたが、本記事では、Stable Diffusionを使ってテキストからお好みの画像を生成します。記事後半で紹介しているPythonのサンプルコードをGoogle Colaboratoryで実行するだけで簡単に画像を生成することができるのでぜひお試しください。

まずはstability.aiのアカウント登録

stability.aiのアカウントは、こちらで登録できます。

Googleアカウントもしくは、メールアドレス・パスワードを用意しておきましょう。

お好みのテキストから画像を生成

それでは早速、Stable Diffusionを使ってみましょう。プロンプト(指示文)を入力するだけで、簡単にリアルな画像からアニメ風の画像まで作成できます。

Text-to-Imageのコードを取得

stability.aiで画像生成
stability.aiで画像生成

Stability AI Developer Platformを開くと、上記画面が表示されます。「Image-to-Image」「Multi-Prompting」など様々なサービスが提供されているようですが、今回は一番左のサービス「Text-to-Image」を使用します。

話題の画像生成AI「Stable Diffusion」
話題の画像生成AI「Stable Diffusion」

「Text-to-Image」を選択すると、画面左側にサンプルコードが表示されますので、pythonのサンプルコードをコピーしましょう。細かい設定は次ステップで解説します。

Google Colaboratoryでコード実行

今回はPythonの実行環境としてGoogle Colaboratoryを使います。Google Colaboratoryとは、Google社が提供している、ブラウザから直接Pythonを記述、実行できるサービスです。Googleアカウントにログインした上で、Google Colaboratoryにアクセスしてください。

以下画面が表示されると思いますので、先ほどコピーしたPythonのソースコードを入力してみましょう。

Google Colaboratoryでコード実行
Google Colaboratoryでコード実行

実際のコードを一応記載しておきます。

import base64
import requests
import os

url = "https://api.stability.ai/v1/generation/stable-diffusion-xl-1024-v1-0/text-to-image"

body = {
  "steps": 40,
  "width": 1024,
  "height": 1024,
  "seed": 0,
  "cfg_scale": 5,
  "samples": 1,
  "text_prompts": [
    {
      "text": "①プロンプトの入力",
      "weight": 1
    },
    {
      "text": "¥n",
      "weight": -1
    }
  ],
}

headers = {
  "Accept": "application/json",
  "Content-Type": "application/json",
  "Authorization": "②APIキーの入力",
}

response = requests.post(
  url,
  headers=headers,
  json=body,
)

if response.status_code != 200:
    raise Exception("Non-200 response: " + str(response.text))

data = response.json()

# make sure the out directory exists
if not os.path.exists("./out"):
    os.makedirs("./out")

for i, image in enumerate(data["artifacts"]):
    with open(f'./out/txt2img_{image["seed"]}.png', "wb") as f:
        f.write(base64.b64decode(image["base64"]))

上記コードのうち、①プロンプトの入力には生成したい画像の説明文を、②APIキーの入力にはstability.aiのアカウントごとに発行されるAPIキー(アカウント画面で取得)を設定しましょう。

本記事では以下のようなプロンプトを使用して人物画像を生成しています。

プロンプト⑴:Japanese beautiful girl

プロンプト⑵:Korean beautiful girl

プロンプト⑶:American beautiful girl

実行結果の確認

話題の画像生成AI「Stable Diffusion」
話題の画像生成AI「Stable Diffusion」

コード実行後、サイドバーを見ると、outフォルダ配下にpngファイルがいくつか生成されてることがわかります。ファイルを開くと、プロンプトに沿って、日本・韓国・アメリカの美女の画像を生成できていることが確認できました。

短いプロンプトからここまでクオリティの高い画像を作ることができるのは想像以上でした。さらにプロンプトを詳細に書いていくと、思い通りの画像を生成することができるようになるでしょう。

おわりに

いかがだったでしょうか。

Stable Diffusionは入力したテキストに沿って自動で画像生成するので、誰でも簡単に利用できます。また、今回は紹介していませんがカスタムで設定できるオプションの値を調整することで、入力したテキストのイメージをより忠実に再現することができます。

気になる方は、Stable Diffusionで用意されているカスタムパラメータを調べてみると良いでしょう。

本記事は以上です。お疲れ様でした!

トップへ戻る

目次