4
2
生成AIに関する記事を書こう!
Qiita Engineer Festa20242024年7月17日まで開催中!

Stability AIの最新サービス「Stable Image Ultra」とStable Diffusionの過去モデル(2022年〜)の生成画像をひたすら比較して進化を実感してみた

Posted at

Supershipの名畑です。創刊50周年記念 花とゆめ展は、歴史を感じながら、自分の思い出を重ねられる、素晴らしい展示でした。本当に名作揃い。

はじめに

2023年7月に「Stable Diffusionの最新モデル「SDXL 1.0」と過去モデルの生成画像をひたすら比較して進化を実感してみた」という記事を書きました。Stability AIによる画像生成AIモデルであるStable Diffusionの各バージョンでの出力結果を比較してみるという内容でした。

あれから1年経ちましたので、同じように、現時点での最新モデルと過去のモデルを比較しようというのが今回の主旨となります。2022年〜2024年までを比較して進化を実感しようというものです。

最新の画像生成手段としてはStable Image Ultraを用います。

Our most advanced text to image generation service, Stable Image Ultra creates the highest quality images with unprecedented prompt understanding. Ultra excels in typography, complex compositions, dynamic lighting, vibrant hues, and overall cohesion and structure of an art piece. Made from the most advanced models, including Stable Diffusion 3, Ultra offers the best of the Stable Diffusion ecosystem.

参考:API Reference

日本語訳すると以下です。

私たちの最も高度なテキストから画像生成サービスであるStable Image Ultraは、これまでにないプロンプトの理解力で最高品質の画像を作成します。Ultraはタイポグラフィ、複雑な構図、動的な照明、鮮やかな色合い、そして芸術作品全体の一貫性と構造において卓越しています。Stable Diffusion 3を含む最先端のモデルを使用して作られており、UltraはStable Diffusionエコシステムの最高を提供します。

Ultra自体はモデル名ではなくサービス名であり、Stable Diffusion 3を含む最先端モデルを使用して最高品質な画像を出力してくれます。

画像の生成はPythonでAPIを呼び出すことで行なっています。

対象モデル / サービス

  • Stable Image Ultra
    • 略称 Ultra / 2024年6月7日リリース
  • Stable Diffusion XL v1.0
    • 略称 SDXL 1.0 / 2023年7月27日リリース
  • Stable Diffusion XL Beta v2.2.2
    • 略称 SDXL Beta / 2023年4月13日リリース
  • Stable Diffusion v2.1
    • 略称 SD 2.1 / 2022年12月7日リリース

今回はこの4つを比較していきます。
Ultraが最新で、そこから遡っていくとSDXL 1.0SDXL BetaSD 2.1の順番です。

モデルが配布されているものについても学習や調整といった類のことは一切せず、Web APIのレスポンスをそのまま比べます。

API Key

Developer PlatformでAPI Keyを発行する必要があります。価格はPricingをご参照ください。

ハードコーディングを避けるため、環境変数にでも保存しておきましょう。今回はSTABILITY_API_KEYという名称で保存されていると仮定して進めます。

export STABILITY_API_KEY =ここに取得したAPI keyを書く

コード

Ultraの画像生成に用いたPythonのコードは以下です。

import os
import requests
import time

api_host = os.getenv('API_HOST', 'https://api.stability.ai')
api_key = os.getenv("STABILITY_API_KEY")
prompt = "ここにプロンプトを記述する"

# API Keyの取得確認
if api_key is None:
    raise Exception("Missing Stability API key.")

# API呼び出し
response = requests.post(
    f"{api_host}/v2beta/stable-image/generate/ultra",
    headers={
        "Accept": "image/*",
        "Authorization": f"Bearer {api_key}"
    },
    files={"none": ''},
    data={
        "prompt": prompt,
        "output_format": "png",
    },
)

# 画像保存。ファイル名にはタイムスタンプを含めています
if response.status_code == 200:
    with open(f"./{int(time.time())}.png", "wb") as file:
        file.write(response.content)
else:
    raise Exception(str(response.json()))

過去のAPIではstyle_presetというパラメータでanimephotographic等のスタイル指定が可能だったのですが、Ultraにはそれがありません。そのため、プロンプトに直接スタイルを含める形を今回はとります。

以下はスタイルの指定例です。

# 過去の指定
json={
    "style_preset": "anime",
    "text_prompts": [
        {
            "text": "Japanese moe heroine"
        }
    ],
}

# Ultraでの指定
data={
    "prompt": "anime style, sweets that appear in popular Japanese anime",
}

画像解像度

画像は512x512にリサイズした上で記事に掲載しています。容量を考慮してのものです。

結果

ここからが結果です。

8つのプロンプトで画像を生成しました。

SD 2.1SDXL BetaSDXL 1.0の3モデルにつきましては、各3枚ずつの画像を表にまとめています。先述の過去記事で生成した画像を流用しています。

その次にUltraで生成した画像3枚を縦に並べています。

日本の萌えヒロイン

日本の萌えヒロイン(Japanese moe heroine)」をanime指定で生成しました。

prompt = "anime style, Japanese moe heroine"

過去モデル 生成結果(旧 → 新)

まずは過去のモデルでの結果です。

SD 2.1(2022.12) SDXL Beta(2023.4) SDXL 1.0(2023.7)
sd21_e_1.png sdxl_beta_e_1.png sdxl_1_a_1.png
sd21_e_2.png sdxl_beta_e_2.png sdxl_1_a_2.png
sd21_e_3.png sdxl_beta_e_3.png sdxl_1_a_3.png

パッと見ただけでもかなりの変化、進化が伝わるかと思います。

最新 Ultra 生成結果

次に最新のUltraでの結果です。

ultra_a_1.png
ultra_a_2.png
ultra_a_3.png

プロンプトへの忠実度が上がっているというか、余計なものが描かれなくなった感があります。これは以降に結果を紹介する他のプロンプトでも共通の印象です。

それと、言語化は難しいですが、絵としての描き込みなのか構図なのか、あるいはただの私の好みの問題かもしれませんが、高品質になったと感じます。

日本の人気アニメに登場するスイーツ

日本の人気アニメに登場するスイーツ(Sweets that appear in popular Japanese anime)」です。これもanime指定です。

prompt = "anime style, sweets that appear in popular Japanese anime"

過去モデル 生成結果(旧 → 新)

SD 2.1(2022.12) SDXL Beta(2023.4) SDXL 1.0(2023.7)
sd21_g_1.png sdxl_beta_g_1.png sdxl_1_b_1.png
sd21_g_2.png sdxl_beta_g_2.png sdxl_1_b_2.png
sd21_g_3.png sdxl_beta_g_3.png sdxl_1_b_3.png

最新 Ultra 生成結果

ultra_b_1.png
ultra_b_2.png
ultra_b_3.png

スイーツだけを描いてくれています。
また、過去の生成物と比べると、実際にありそうです。

修学旅行中の男子高校生

修学旅行中の男子高校生(Male high school student on a school trip)」です。こちらもanime指定となります。

prompt = "anime style, male high school student on a school trip"

過去モデル 生成結果(旧 → 新)

SD 2.1(2022.12) SDXL Beta(2023.4) SDXL 1.0(2023.7)
sd21_f_1.png sdxl_beta_f_1.png sdxl_1_c_1.png
sd21_f_2.png sdxl_beta_f_2.png sdxl_1_c_2.png
sd21_f_3.png sdxl_beta_f_3.png sdxl_1_c_3.png

最新 Ultra 生成結果

ultra_c_1.png
ultra_c_2.png
ultra_c_3.png

構図の違いによるものも大きいでしょうが、体型をはじめとして、不自然が減ったと思います。

前回の記事でも書きましたが、修学旅行中かどうかという判断はなかなか難しい。

ギターを演奏するお姫様

次は「ギターを演奏するお姫様(A princess playing guitar)」です。
ここから2プロンプトはfantasy-artを指定しています。

prompt = "fantasy-art style, a princess playing guitar"

過去モデル 生成結果(旧 → 新)

SD 2.1(2022.12) SDXL Beta(2023.4) SDXL 1.0(2023.7)
sd21_h_1.png sdxl_beta_h_1.png sdxl_1_d_1.png
sd21_h_2.png sdxl_beta_h_2.png sdxl_1_d_2.png
sd21_h_3.png sdxl_beta_h_3.png sdxl_1_d_3.png

最新 Ultra 生成結果

ultra_d_1.png
ultra_d_2.png
ultra_d_3.png

これも言語化は難しいですが、絵としての描き込み等の差なのか、高品質と感じられます。

ノートパソコン上の可愛い妖精

ノートパソコン上の可愛い妖精(A cute fairy on top of a white laptop)」です。ここからはphotographicを指定します。

prompt = "photographic style, a cute fairy on top of a white laptop"

過去モデル 生成結果(旧 → 新)

SD 2.1(2022.12) SDXL Beta(2023.4) SDXL 1.0(2023.7)
sd21_a_1.png sdxl_beta_a_1.png sdxl_1_e_1.png
sd21_a_2.png sdxl_beta_a_2.png sdxl_1_e_2.png
sd21_a_3.png sdxl_beta_a_3.png sdxl_1_e_3.png

最新 Ultra 生成結果

ultra_e_1.png
ultra_e_2.png
ultra_e_3.png

妖精がより前面に出されたからか、かなり印象が変わりましたね。

手足の位置など、他のプロンプトに比べて違和感が目立ちます。

黒いボブヘアで可愛い28歳の日本人女性

黒いボブヘアで可愛い28歳の日本人女性(28-year-old Japanese pretty woman with black bobbed hair)」です。

prompt = "photographic style, 28-year-old Japanese pretty woman with black bobbed hair"

過去モデル 生成結果(旧 → 新)

SD 2.1(2022.12) SDXL Beta(2023.4) SDXL 1.0(2023.7)
sd21_b_1.png sdxl_beta_b_1.png sdxl_1_f_1.png
sd21_b_2.png sdxl_beta_b_2.png sdxl_1_f_2.png
sd21_b_3.png sdxl_beta_b_3.png sdxl_1_f_3.png

最新 Ultra 生成結果

ultra_f_1.png
ultra_f_2.png
ultra_f_3.png

より自然になった、でしょうか。
顔からAIっぽさが減って日本人っぽさが増した気がします。
気のせいだろうか。
見すぎてよくわからなくなってきました。

1980年代の香港の繁華街

1980年代の香港の繁華街(Hong Kong downtown in the 1980s)」です。

prompt = "photographic style, Hong Kong downtown in the 1980s"

過去モデル 生成結果(旧 → 新)

SD 2.1(2022.12) SDXL Beta(2023.4) SDXL 1.0(2023.7)
sd21_c_1.png sdxl_beta_c_1.png sdxl_1_g_1.png
sd21_c_2.png sdxl_beta_c_2.png sdxl_1_g_2.png
sd21_c_3.png sdxl_beta_c_3.png sdxl_1_g_3.png

最新 Ultra 生成結果

ultra_g_1.png
ultra_g_2.png
ultra_g_3.png

画像として自然になったように思います。

2020年の新宿歌舞伎町

最後です。「2020年の新宿歌舞伎町(Shinjuku Kabukicho in 2020)」です。

prompt = "photographic style, Shinjuku Kabukicho in 2020"

過去モデル 生成結果(旧 → 新)

SD 2.1(2022.12) SDXL Beta(2023.4) SDXL 1.0(2023.7)
sd21_d_1.png sdxl_beta_d_1.png sdxl_1_h_1.png
sd21_d_2.png sdxl_beta_d_2.png sdxl_1_h_2.png
sd21_d_3.png sdxl_beta_d_3.png sdxl_1_h_3.png

最新 Ultra 生成結果

ultra_h_1.png
ultra_h_2.png
ultra_h_3.png

文字が正しくないという問題は以前として残っていますが、より写真っぽさというか、現実味は増した感があります。

最後に

説明するのはなかなか難しいですが

  • プロンプトにない要素の描画が減った
  • AIっぽさが減った
  • 描き込みが増えた

というのが今回の印象です。
定性的な話なので、他の方はまったく違う印象を持つかもしれません。

なんにせよ、こうして並べてみると、かなりの進化を実感はします。
1年半でここまで変わるとは驚きだというのは本音です。

宣伝

SupershipのQiita Organizationを合わせてご覧いただけますと嬉しいです。他のメンバーの記事も多数あります。

Supershipではプロダクト開発やサービス開発に関わる方を絶賛募集しております。
興味がある方はSupership株式会社 採用サイトよりご確認ください。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2