2
3

DALL・E(API)

Last updated at Posted at 2023-10-10

はじめに

今回はDALL・E(API)の紹介になります.現在,ChatGPT上で一部の人?が使えるDALL・E3が流行っていますが,今回は現在利用できるDALL・EのOpenAI APIの使い方についてまとめました.
記事に誤り等ありましたらご指摘いただけますと幸いです。

目次

1. DALL・E(API)

ライセンス:Modified MIT License
公式サイト:https://platform.openai.com/docs/guides/images
デモサイト:https://labs.openai.com/
論文:https://cdn.openai.com/papers/dall-e-2.pdf

DALL・E のAPI版の紹介です.APIで使われているモデルは明記はされていないですがDALL・E2と記載されている記事が多いので,内部ではDALL・E2が動いていると思われます.DALL・E3のAPIも早く利用したいですね.

2. 使い方

すぐに試したい方は各セクションのData Science WikiのページまたはColabのリンクから実行してみてください.

以下が今回使うライブラリです.(OpenAI のAPI keyも必要です)

import openai
import requests
from PIL import Image
from io import BytesIO
import IPython.display as display

画像生成

まず初めは,プロンプトを入力して画像を生成してみたいと思います.

  • DALL-E 2
    Data Science Wiki
  • DALL-E 3
    Data Science Wiki

画像生成

response = openai.Image.create(
  prompt="a white siamese cat",
  n=1, # 1〜10枚まで設定できる
  # 三つのサイズを選択できる
  #size = "256x256",
  #size = "512x512",
  size="1024x1024"
)

生成した画像の取得

image_url = response['data'][0]['url']

response = requests.get(image_url)
response.raise_for_status()

画像の表示

image_data = BytesIO(response.content)
image = Image.open(image_data)
display.display(image)

image.png

画像の保存

with open('sample_image.png', 'wb') as file:
    file.write(response.content)

類似画像の生成

Data Science Wiki

Open In Colab

先ほどの画像を元に新しい画像を生成します.

response = openai.Image.create_variation(
  image=open("sample_image.png", "rb"),
  n=1,
  size="1024x1024"
)
image_url = response['data'][0]['url']

画像の取得

image_url = response['data'][0]['url']
response = requests.get(image_url)
response.raise_for_status()

新しく作成した類似画像の表示

image_data = BytesIO(response.content)
image = Image.open(image_data)
display.display(image)

image.png

画像編集

ここではせっかく真っ白な猫ですが,顔だけを黒い猫にしたいと思います.

Data Science Wiki

Open In Colab

先ほどの画像の猫の顔の部分をマスクします.

image = Image.open('sample_image.png')
image = image.convert("RGBA")

# 画像の一部を透明にするための描画オブジェクトを作成します
draw = ImageDraw.Draw(image)

# 透明にする矩形領域を指定します (left, top, right, bottom)
rect = (300, 10, 1000, 600)

# 透明な四角形を描きます
draw.rectangle(rect, fill=(255, 255, 255, 0))  # 最後の0は透明度を示す

image.save('mask.png', "PNG")
display.display(image.convert("RGB"))

image.png

画像をプロンプトによる指示を行い編集します.

response = openai.Image.create_edit(
  image=open("sample_image.png", "rb"),
  mask=open("mask.png", "rb"),
  prompt="Cat with black head and blue eyes.",
  n=1,
  size="1024x1024"
)
image_url = response['data'][0]['url']

画像の表示

image_data = BytesIO(response.content)
image = Image.open(image_data)
display.display(image)

image.png

指定した箇所だけプロンプトで指示した通りに編集することができました.編集後のクオリティもかなり高いですね.

4. おわりに

今回はDALL・E(API)の紹介でした.画像生成のクオリティとしては非常に高いですが無料の画像生成も多い中なかなか割高な気もします.DALL・E3のAPI提供されより安価になって欲しいものです.

記事に誤り等ありましたらご指摘いただけますと幸いです。

5. 参考文献

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