2023/11/11に公開
2023/12/16
Stable diffusionとは2022/8にオープンソースとして公開された画像生成AIです。Stable Diffusionは、ユーザーが入力したテキストをもとに自動で画像を生成することができます。
今回は、Stable Diffusion提供元のStability AIが公開しているSandbox環境を利用して、テキストからお好みの画像を生成してみましょう。
冒頭でお伝えしましたが、本記事では、Stable Diffusionを使ってテキストからお好みの画像を生成します。記事後半で紹介しているPythonのサンプルコードをGoogle Colaboratoryで実行するだけで簡単に画像を生成することができるのでぜひお試しください。
stability.aiのアカウントは、こちらで登録できます。
Googleアカウントもしくは、メールアドレス・パスワードを用意しておきましょう。
それでは早速、Stable Diffusionを使ってみましょう。プロンプト(指示文)を入力するだけで、簡単にリアルな画像からアニメ風の画像まで作成できます。
Stability AI Developer Platformを開くと、上記画面が表示されます。「Image-to-Image」「Multi-Prompting」など様々なサービスが提供されているようですが、今回は一番左のサービス「Text-to-Image」を使用します。
「Text-to-Image」を選択すると、画面左側にサンプルコードが表示されますので、pythonのサンプルコードをコピーしましょう。細かい設定は次ステップで解説します。
今回はPythonの実行環境としてGoogle Colaboratoryを使います。Google Colaboratoryとは、Google社が提供している、ブラウザから直接Pythonを記述、実行できるサービスです。Googleアカウントにログインした上で、Google Colaboratoryにアクセスしてください。
以下画面が表示されると思いますので、先ほどコピーしたPythonのソースコードを入力してみましょう。
実際のコードを一応記載しておきます。
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
コード実行後、サイドバーを見ると、outフォルダ配下にpngファイルがいくつか生成されてることがわかります。ファイルを開くと、プロンプトに沿って、日本・韓国・アメリカの美女の画像を生成できていることが確認できました。
短いプロンプトからここまでクオリティの高い画像を作ることができるのは想像以上でした。さらにプロンプトを詳細に書いていくと、思い通りの画像を生成することができるようになるでしょう。
いかがだったでしょうか。
Stable Diffusionは入力したテキストに沿って自動で画像生成するので、誰でも簡単に利用できます。また、今回は紹介していませんがカスタムで設定できるオプションの値を調整することで、入力したテキストのイメージをより忠実に再現することができます。
気になる方は、Stable Diffusionで用意されているカスタムパラメータを調べてみると良いでしょう。
本記事は以上です。お疲れ様でした!
目次