本記事は 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つに対して同一のプロンプトで実行して比較してみました。
事前準備
下図を参考に、それぞれのリージョンの エンドポイント と キー を取得します。
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()
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()
まとめ
この記事では、Azure上で利用可能なDALL-E 2とDALL-E 3の主な違いとそれぞれの特性について詳しく見てきました。重要なポイントを振り返ると、以下のようになります。
-
APIバージョンとライブラリ: DALL-E 2は「2023-06-01-preview」APIバージョンとOpenAI Pythonライブラリのバージョン0.28.1を使用します。一方、DALL-E 3では「2023-12-01-preview」APIバージョンと1.x系のライブラリが必要です。
-
Azureリージョンの違い: DALL-E 2はEast USリージョンでのみ利用可能ですが、DALL-E 3はSweden Centralリージョンで展開されています。
-
画像生成の結果: 同じプロンプト「A painting of a dog」を使用した際、DALL-E 2とDALL-E 3はそれぞれ異なる視覚的特性とスタイルを示しました。これは、両バージョンの技術的進歩とアプローチの違いを反映しています。
この比較を通じて、DALL-E 2とDALL-E 3の使い方、それぞれのユニークな特徴、そして最新の画像生成AI技術の可能性についての理解を深めることができたと思います。
また、ナレッジコミュニケーションでは 「Musubite」 というエンジニア同士のカジュアルトークサービスを利用しています!この記事にあるような生成AI 技術を使ったプロジェクトに携わるメンバーと直接話せるサービスですので興味がある方は是非利用を検討してください!