1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

本記事は OpenAI活用法 Advent Calendar 2023 by ナレコム の12日目の記事です。

OpenAI活用法 Advent Calendar 2023 by ナレコム ではGPTsを含めた最新のOpenAIの活用法について紹介します。

はじめに

2023年12月現在、人工知能の分野では、画像生成技術が注目を集めています。特に、OpenAIが開発したDALL-Eシリーズは、その進化と応用範囲の広さで多くの関心を引いています。この記事では、Microsoft Azureプラットフォーム上で利用可能な2つのバージョン、DALL-E 2とDALL-E 3の比較を行います。

DALL-E 2とDALL-E 3は、それぞれ異なるAPIバージョン、ライブラリの要件、さらには異なるAzureリージョンでの展開によって特徴づけられています。このような違いが実際の使用にどのような影響を与えるのか、同じプロンプト「A painting of a dog」(犬の絵)を用いて両者を比較し、それぞれの特徴と利用方法の違いを探ります。

2023年12月現在、Azure上ではDALL·E 2とDALL·E 3の両方を実行することができます。ただし、以下のように大きく異なります。

主な違い

項目 DALL·E 2 DALL·E 3
API Version 2023-06-01-preview 2023-12-01-preview
OpenAI Pythonライブラリ 0.28.1のみ 1.x系
Azureリージョン East US Sweden Central

上記の違いから同一環境で動作させることができません。この2つに対して同一のプロンプトで実行して比較してみました。

事前準備

下図を参考に、それぞれのリージョンの エンドポイントキー を取得します。
image.png

DALL·E 2を動かす

まず、OpenAI Pythonライブラリのバージョンを下げる必要があります。

pip install openai==0.28.1
import openai
import os
import requests
from PIL import Image

# 環境変数からエンドポイントとキーを取得
openai.api_base = <EastUSのエンドポイント>
openai.api_key = <EastUSのキー>     

# APIバージョンを指定 (DALL-Eは現在 '2023-06-01-preview' のAPIバージョンのみサポート)
openai.api_version = '2023-06-01-preview'
openai.api_type = 'azure'

# 画像生成APIを使用して画像を作成
generation_response = openai.Image.create(
    prompt='A painting of a dog',    # ここにプロンプトのテキストを入力
    size='1024x1024',
    n=2
)

# 保存用のディレクトリを設定
image_dir = os.path.join(os.curdir, 'images')

# ディレクトリが存在しない場合は作成
if not os.path.isdir(image_dir):
    os.mkdir(image_dir)

# 画像パスを初期化 (ファイルタイプはpngであるべきです)
image_path = os.path.join(image_dir, 'generated_image.png')

# 生成された画像を取得
image_url = generation_response["data"][0]["url"]  # レスポンスから画像URLを抽出
generated_image = requests.get(image_url).content  # 画像をダウンロード
with open(image_path, "wb") as image_file:
    image_file.write(generated_image)

# デフォルトの画像ビューアで画像を表示
image = Image.open(image_path)
image.show()

レスポンス
d2.png

DALL·E 3を動かす

今度は、OpenAI Pythonライブラリのバージョンを上げる必要があります。

pip install openai>1.0
from openai import AzureOpenAI
import os
import requests
from PIL import Image
import json

client = AzureOpenAI(
    api_version="2023-12-01-preview",  
    api_key=<SwedenCentralのエンドポイント>,  
    azure_endpoint=<SwedenCentralのエンドポイント>
)

result = client.images.generate(
    model=<DALL-E 3デプロイ名>, # あなたのDALL-E 3デプロイメントの名前
    prompt="A painting of a dog",
    n=1
)

json_response = json.loads(result.model_dump_json())

# 保存する画像のディレクトリを設定
image_dir = os.path.join(os.curdir, 'images')

# ディレクトリが存在しない場合は作成
if not os.path.isdir(image_dir):
    os.mkdir(image_dir)

# 画像パスを初期化 (ファイルタイプはpngであるべきです)
image_path = os.path.join(image_dir, 'generated_image.png')

# 生成された画像を取得
image_url = json_response["data"][0]["url"]  # レスポンスから画像URLを抽出
generated_image = requests.get(image_url).content  # 画像をダウンロード
with open(image_path, "wb") as image_file:
    image_file.write(generated_image)

# デフォルトの画像ビューアで画像を表示
image = Image.open(image_path)
image.show()

レスポンス
d3.png

まとめ

この記事では、Azure上で利用可能なDALL-E 2とDALL-E 3の主な違いとそれぞれの特性について詳しく見てきました。重要なポイントを振り返ると、以下のようになります。

  1. APIバージョンとライブラリ: DALL-E 2は「2023-06-01-preview」APIバージョンとOpenAI Pythonライブラリのバージョン0.28.1を使用します。一方、DALL-E 3では「2023-12-01-preview」APIバージョンと1.x系のライブラリが必要です。

  2. Azureリージョンの違い: DALL-E 2はEast USリージョンでのみ利用可能ですが、DALL-E 3はSweden Centralリージョンで展開されています。

  3. 画像生成の結果: 同じプロンプト「A painting of a dog」を使用した際、DALL-E 2とDALL-E 3はそれぞれ異なる視覚的特性とスタイルを示しました。これは、両バージョンの技術的進歩とアプローチの違いを反映しています。

この比較を通じて、DALL-E 2とDALL-E 3の使い方、それぞれのユニークな特徴、そして最新の画像生成AI技術の可能性についての理解を深めることができたと思います。


また、ナレッジコミュニケーションでは Musubite というエンジニア同士のカジュアルトークサービスを利用しています!この記事にあるような生成AI 技術を使ったプロジェクトに携わるメンバーと直接話せるサービスですので興味がある方は是非利用を検討してください!

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?