ChatGPTのDALL·E 3での生成画像とStable DiffusionのSDXL 1.0での生成画像をひたすら比較してみた

[Supership](https://supership.jp/)の名畑です。[16bitセンセーション ANOTHER LAYER](https://16bitsensation-al.com/)とか、少し前だと[ハイスコアガール](http://hi-score-girl.com/)とか、懐古できる系の作品は琴線を刺激する。

## はじめに

以前「[Stable Diffusionの最新モデル「SDXL 1.0」と過去モデルの生成画像をひたすら比較して進化を実感してみた](https://qiita.com/nabata/items/a9b3e759bc09c20581f6)」という記事を書きました。[Stable Diffusion](https://ja.stability.ai/stable-diffusion)の新モデル**Stable Diffusion XL**の**1.0**がリリースされたので、過去バージョンとの生成画像を比べていくというものでした。

今回の記事では、超話題になっている[OpenAI](https://openai.com/)の[DALL·E 3](https://openai.com/dall-e-3)でも同じように画像を生成し、それを**Stable Diffusion XL**での生成画像と比較してみます。

現在の**DALL·E 3**は[ChatGPT](https://chat.openai.com/)経由で利用できます。会話形式のため、たとえば、生成した画像を元にしてさらに画像を再生成するなど、単体での画像生成にとどまらないかなり柔軟性ある使い方が可能です。プロンプトの生成をしてくれるという特徴もあります。
また、**Stable Diffusion**では、再学習したモデルを使われる方が多いかとは思います。入手するサイトとしては[Hugging Face](https://huggingface.co/models?other=stable-diffusion)や[Civitai](https://civitai.com/)などが有名でしょうか。

そういった特徴を考慮せず、今回の記事では「**デフォルトで生成した画像を比較する**」ということをしているため、かなり限定的な条件下とはなります。ご注意ください。

また、**Stable Diffusion XL**での生成は先述の過去記事の結果をそのまま流用しております。
別記事のままだと見づらいので一つの記事にまとめました。

## Stable Diffusion XL 1.0での画像生成方法

**Stable Diffusion XL 1.0**での画像生成は以下のコードでWeb APIを叩いた上で、生成された画像を**512x512**にリサイズしています。リサイズしているのは記事掲載時の容量削減のためです。

**style_preset**にスタイルを書き、**text_prompts**にプロンプト(指示)を書いています。今回の記事ではこの2つのみをいじって画像を変えています。

```Python
import base64
import os
import requests
import time

engine_id = "stable-diffusion-xl-1024-v1-0"  # SDXL 1.0

api_host = os.getenv('API_HOST', 'https://api.stability.ai')
api_key = os.getenv("STABILITY_API_KEY")

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

# API呼び出し
response = requests.post(
    f"{api_host}/v1/generation/{engine_id}/text-to-image",
    headers={
        "Content-Type": "application/json",
        "Accept": "application/json",
        "Authorization": f"Bearer {api_key}"
    },
    json={
        "Samples": 3,
        "style_preset": "anime",
        "text_prompts": [
            {
                "text": "Japanese moe heroine"
            }
        ],
    },
)

# レスポンス確認
if response.status_code != 200:
    raise Exception("Non-200 response: " + str(response.text))

# レスポンス取得
data = response.json()

# 画像保存
# ファイル名にはタイムスタンプとengine_id、通番を含めています
# 通番は0〜samplesの値 - 1
for i, image in enumerate(data["artifacts"]):
    with open(f"./{engine_id}_{int(time.time())}_{i}.png", "wb") as f:
        f.write(base64.b64decode(image["base64"]))
```

## DALL·E 3での画像生成方法

**ChatGPT**上でプロンプトとして下記のように1行目に**描いてほしいもの**、2行目に**スタイル**、3行目には**3枚の画像**という指示を出します。こちらも**512x512**にリサイズします。

> Japanese moe heroine
> Anime style
> 3 images

以下の結果においては共通である**3 images**の部分は省きます。

## 結果

ここからが結果です。

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

**Stable Diffusion XL 1.0**と**DALL·E 3**の生成結果が3枚ずつ交互に並びます。

## 日本の萌えヒロイン

### Stable Diffusion XL 1.0のスタイルとプロンプト

```Python
"style_preset": "anime",
"text_prompts": [
    {
        "text": "Japanese moe heroine"
    }
],
```

### Stable Diffusion XL 1.0の生成画像

<img alt="sdxl_1_a_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/d415ce9a-94f5-2efc-5f34-cf2a33e20514.png">
<img alt="sdxl_1_a_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/6940676b-90d9-83dc-4c1d-e1ea716efc6e.png">
<img alt="sdxl_1_a_3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/e8a559c2-0117-580c-d66f-03ec00c67862.png">

### DALL·E 3のプロンプト

> Japanese moe heroine
> Anime style

### DALL·E 3の生成画像

![dalle_a_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/28350df3-2450-c96b-96e4-525c64e956a4.png)
![dalle_a_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/9e7b0f15-308a-7d5f-9d1f-051528e9f1ed.png)
![dalle_a_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/20bfbf53-1630-a41b-de07-e3cfb17e5c34.png)

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

### Stable Diffusion XL 1.0のスタイルとプロンプト

```Python
"style_preset": "anime",
"text_prompts": [
    {
        "text": "Sweets that appear in popular Japanese anime"
    }
],
```

### Stable Diffusion XL 1.0の生成画像

<img alt="sdxl_1_b_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/ff309e2b-9692-b0c7-3e00-f2627af00de6.png">
<img alt="sdxl_1_b_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/f7f505df-a2aa-0b00-650d-6d044c9d7f35.png">
<img alt="sdxl_1_b_3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/c1a82e72-af2e-c256-e41a-c6193e305268.png">

### DALL·E 3のプロンプト

> Sweets that appear in popular Japanese anime
> Anime style

### DALL·E 3の生成画像

![dalle_b_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/83e002c9-8e1c-1037-f9d9-43346b86dfa3.png)
![dalle_b_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/0838f96b-e36f-0d53-8f7c-6b47bf532cf8.png)
![dalle_b_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/e9b7607a-e26e-45ec-a65c-8226bada5907.png)

## 修学旅行中の男子高校生

### Stable Diffusion XL 1.0のスタイルとプロンプト

```Python
"style_preset": "anime",
"text_prompts": [
    {
        "text": "Male high school student on a school trip"
    }
],
```

### Stable Diffusion XL 1.0の生成画像

<img alt="sdxl_1_c_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/0c1dcf4a-1dfc-2727-e1f6-e825505cda1b.png">
<img alt="sdxl_1_c_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/c331eab1-7b08-6c2d-c940-c673e95553cb.png">
<img alt="sdxl_1_c_3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/e7af6cc0-7624-be17-9a0c-0407a4ffb0c2.png">

### DALL·E 3のプロンプト

> Male high school student on a school trip
> Anime style

### DALL·E 3の生成画像

![dalle_c_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/8b3194e1-cf83-34bd-dad3-450b7db8023c.png)
![dalle_c_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/e5a9bb1b-6134-476b-5027-18a354a1b890.png)
![dalle_c_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/3ce14901-1f11-78f2-7e55-a334fe527266.png)

## ギターを演奏するお姫様

### Stable Diffusion XL 1.0のスタイルとプロンプト

```Python
"style_preset": "fantasy-art",
"text_prompts": [
    {
        "text": "A princess playing guitar"
    }
],
```

### Stable Diffusion XL 1.0の生成画像

<img alt="sdxl_1_d_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/e26d3c84-b65e-80ee-2069-7672f3748392.png">
<img alt="sdxl_1_d_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/d5a10ef0-e57c-db31-ccf8-f9a554124ed0.png">
<img alt="sdxl_1_d_3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/77ab1685-296c-62e2-3e64-57da519bf639.png">

### DALL·E 3のプロンプト

> A princess playing guitar
> Fantasy-art style

### DALL·E 3の生成画像

![dalle_d_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/9ef9442d-9124-7c31-412b-eeaedf2628cc.png)
![dalle_d_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/07b9e899-32ac-d92e-f343-e7624e194555.png)
![dalle_d_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/3c5e3a12-078f-f537-fc11-84a54e337153.png)

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

### Stable Diffusion XL 1.0のスタイルとプロンプト

```Python
"style_preset": "photographic",
"text_prompts": [
    {
        "text": "A cute fairy on top of a white laptop"
    }
],
```

### Stable Diffusion XL 1.0の生成画像

<img alt="sdxl_1_e_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/41c3ff4e-e408-38ac-ccde-20302af37c1b.png">
<img alt="sdxl_1_e_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/43f4faaa-31d3-e921-1f62-3ab38e483740.png">
<img alt="sdxl_1_e_3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/cbe79c4e-8c7b-9719-9796-7a714ab260e2.png">

### DALL·E 3のプロンプト

> A cute fairy on top of a white laptop
> Photographic style

### DALL·E 3の生成画像

![dalle_e_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/411bde7c-ff1c-91f2-0357-f0923ca802e4.png)
![dalle_e_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/5a117caa-8187-1435-c90c-32a74ebfbceb.png)
![dalle_e_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/d79ff421-3fe3-1564-b58b-efc7d17ecf5b.png)

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

### Stable Diffusion XL 1.0のスタイルとプロンプト

```Python
"style_preset": "photographic",
"text_prompts": [
    {
        "text": "28-year-old Japanese pretty woman with black bobbed hair"
    }
],
```

### Stable Diffusion XL 1.0の生成画像

<img alt="sdxl_1_f_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/75ead9ad-6296-1f7f-2e8d-62002693cf1c.png">
<img alt="sdxl_1_f_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/ee43ab0b-b595-6ea2-1df4-8ada21e72bac.png">
<img alt="sdxl_1_f_3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/2b0c408a-6b21-cb07-882f-dd5e3d2d09fd.png">

### DALL·E 3のプロンプト

> 28-year-old Japanese pretty woman with black bobbed hair
> Photographic style

### DALL·E 3の生成画像

![dalle_f_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/2f80f3e2-861f-5493-ac7e-3129334bbe7d.png)
![dalle_f_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/da02a9c0-e753-1a58-701e-082cbbefcc9d.png)
![dalle_f_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/2f987543-5fba-76d3-9fa9-beb080cd04c0.png)

## 1980年代の香港の繁華街

### Stable Diffusion XL 1.0のスタイルとプロンプト

```Python
"style_preset": "photographic",
"text_prompts": [
    {
        "text": "Hong Kong downtown in the 1980s"
    }
],
```

### Stable Diffusion XL 1.0の生成画像

<img alt="sdxl_1_g_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/ae68da20-4315-442c-cee0-198b44fc24d8.png">
<img alt="sdxl_1_g_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/f3ba296f-6700-0a17-ee3c-c4cef7ced3a0.png">
<img alt="sdxl_1_g_3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/ba80cf29-83df-ebcb-9882-3e601420e89e.png">

### DALL·E 3のプロンプト

> Hong Kong downtown in the 1980s
> Photographic style

### DALL·E 3の生成画像

![dalle_g_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/77814856-2325-fb29-1ce3-ee70b138d467.png)
![dalle_g_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/1e4b5d5a-b1d1-8c80-396d-eed8c7735352.png)
![dalle_g_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/742365fe-3f2e-695a-04ee-66da1e58484a.png)

## 2020年の新宿歌舞伎町

### Stable Diffusion XL 1.0のスタイルとプロンプト

```Python
"style_preset": "photographic",
"text_prompts": [
    {
        "text": "Shinjuku Kabukicho in 2020"
    }
],
```

### Stable Diffusion XL 1.0の生成画像

<img alt="sdxl_1_h_1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/91b71df3-48c2-2bf7-6af3-25f59e42db65.png">
<img alt="sdxl_1_h_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/5917be0e-9080-3c10-f6ec-9b1ed8c93f12.png">
<img alt="sdxl_1_h_3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/4ba10d4e-f3f3-b57a-4d54-c2bfebec9bdf.png">

### DALL·E 3のプロンプト

> Shinjuku Kabukicho in 2020
> Photographic style

### DALL·E 3での生成画像

![dalle_h_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/638988cf-ec39-9e05-705c-72239ff2a061.png)
![dalle_h_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/44a60d22-9ac3-7d7e-6593-558f18c3141b.png)
![dalle_h_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/869934/9f6cedbe-c213-1982-6750-77f7eb98df5d.png)

## 最後に

かなり定性的なもののため良し悪しについては語りづらいのですが、**DALL·E 3**の方がプロンプトで指示した特徴がより色濃く出るようになっているような気もします。
人体や文字の描画といった部分に課題があることはどちらも変わらずという印象です。

冒頭で書いた通り、かなり限定的な条件下での比較となりますが、この限定的な条件下が多くの方にとってのデフォルトになっていくのかもしれないとも思っています。

## 宣伝

[SupershipのQiita Organization](https://qiita.com/organizations/supership-inc)を合わせてご覧いただけますと嬉しいです。他のメンバーの記事も多数あります。

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