5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

生成AIのハードルを下げたい!Advent Calendar 2023

Day 4

DALL·E APIで実在しないポケモンを創る

Last updated at Posted at 2023-12-03

はじめに

昨日の記事「Chat Completions APIで京都旅行プランを考える」に引き続き、OpenAI APIを扱います。
本日のお題は、「DALL·E APIで実在しないポケモンを創る」です。

DALL·E API

ChatGPTのDALL・Eで試してみたところ下記のように本家のポケモンと見間違うクオリティーで生成されました!

DALL·E APIの使い方

Step2まではOpenAI APIの使い方講座【公式Quickstart】と同じです。
続きのStep3から始めます。

ソースコードの右上のプルダウンでImagesを選ぶとサンプルコードが表示されます。
image.png

from openai import OpenAI
client = OpenAI()

response = client.images.generate(
  prompt="A cute baby sea otter",
  n=2,
  size="1024x1024"
)

print(response)

出力結果

image.png

image.png

プロンプトA cute baby sea otterの通り、かわいいラッコの赤ちゃんが生成されました。

以上で公式ドキュメントの内容は終了です。

本日のお題:実在しないポケモンをつくる

出来上がったソースコード

image_generation.py
from openai import OpenAI

def generate_image(prompt):
    client = OpenAI()

    response = client.images.generate(
    prompt=prompt,
    n=2,
    size="1024x1024"
    )

    return response

if __name__ == "__main__":
    prompt="A Pokemon resembling a cute baby sea otter"

    response = generate_image(prompt)

    print(response)

公式ドキュメントのサンプルコードをベースにしていますが、下記の変更を行いました。

  • 関数化し、入力を汎用的に変更できるようにしました。
  • 課題を達成するために、A Pokemon resembling a cute baby sea otterpromptとして与えています。
  • completion.choices[0].messagecompletion.choices[0].message.contentに変更し、中身の文字列を取り出しています。

実行結果

image.png

image.png

あれ?ChatGPTのDALL・Eと比べてクオリティーが低い、、、

画像生成のクオリティー向上

どうやらmodelはデフォルトでDALL·E 2みたいです。ChatGPTのDALL・Eと同じDALL·E 3に変更します。
また、DALL·E 3は同時に1つの画像しか生成できないみたいなので、n=1にします。

image.png

出来上がったソースコード

image_generation.py
from openai import OpenAI

def generate_image(model, prompt):
    client = OpenAI()

    response = client.images.generate(
        model=model,
        prompt=prompt,
        n=1,
        size="1024x1024"
        )

    return response

if __name__ == "__main__":
    model="dall-e-3"
    prompt="A Pokemon resembling a cute baby sea otter"

    response = generate_image(model, prompt)

    print(response)

実行結果

image.png

先程と比べて、画像生成のクオリティーが飛躍的に向上しました。

おわりに

先行事例を調べていたところ下記の記事を見つけました。

5年前ということもあって、GANを用いて生成されていました。
当時は「からあげGAN」が話題になっていたと記憶しています。

GAN、Pix2Pix、拡散モデル、DALL・Eと画像生成AIの歴史を辿ると、発展がいかに目覚ましいかを実感できました。

ソースコード

本記事で使用したソースコードは、下記のGitHubレポジトリに格納しています。

5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?