Azure OpenAI Serviceで限定プレビュー中の画像生成モデル 「GPT-Image-1」 について、概要から使用方法まで詳しく解説します。
概要
GPT-Image-1は、Azure OpenAI Serviceが提供する最新の画像生成AIモデルです。
その名の通りGPTシリーズに属する初の画像特化モデルで、OpenAIの従来モデルDALL·Eシリーズの後継として位置付けられています。
特徴と機能
- テキストプロンプトを入力すると、その指示に沿ったオリジナルの画像を生成します。
- 画像生成能力を持ちつつ、さらに詳細な指示への追従性を強化しています。複雑で長いプロンプトでも精緻に理解し画像化でき、ゼロショット(例示なし)でも高度な表現力を発揮します
- Image to Imageにより、既存画像の編集や画像変換(スタイル変更・バリエーション生成)を行えます
- 画像中に文字を正確に描写できるよう最適化されています
2025年5月現時点でサポートする出力サイズ
GPT-Image-1は最低でも1024×1024ピクセル以上の解像度で画像を生成します。
- 1024×1024(正方形)
- 1024×1536(縦長)
- 1536×1024(横長)
安全性・コンテンツフィルタ
Azure OpenAIのGPT-Image-1には、OpenAIの安全対策スタックが組み込まれています。
既存モデルと同様に、生成や編集される画像の内容について厳格なフィルタリングとプロンプト監視が行われます。
Azure OpenAIにおける提供形式 – 利用方法とリージョン
Azure OpenAI Serviceの限定公開プレビューとして提供されています。
そのため、利用には事前申請が必要で、2025年5月時点でGPT-Image-1をAzureで使うには、まずMicrosoftに使用申請を行い承認を得る必要があります。
申請リンク https://aka.ms/oai/gptimage1access
対応リージョン
2025年5月現在、GPT-Image-1をデプロイできるリージョンは限定的です。
West US 3およびUAE Northの2リージョンのみで、グローバススタンダート形式のデプロイのみサポートされています。
そのため、GPT-Image-1を使いたい場合は、対応リージョンにAzure OpenAIリソースを作成する必要があります。日本地域は、現時点では未対応なので注意してください。
API Version
APIバージョンは執筆時点ではプレビュー版の2025-04-01-preview
を使用します。
このAPIバージョンには画像生成用のエンドポイント群が含まれているため、必ず指定が必要です。
利用料金
プレビュー中のためか、現時点で公式ページに明確な記載がありません。
参考までに、以下にOpenAIのAPI料金のリンクを記載します。
デプロイ方法
サブスクリプションに対して利用申請が承認され次第、使用することができます。
Azure OpenAI Serviceに遷移し、通常のモデルと同様にデプロイします。
プレビュー中のクォータは2K(6RPM)まで設定可能です。大量の画像を短時間で生成する用途ではこの既定値では不十分なため、現時点では、必要に応じてAzureサポートに問い合わせて制限緩和を申請することになります
主な機能とAPIの使い方
GPT-Image-1が提供する主な機能です。
- テキストからの画像生成(Text-to-Image)
- 画像編集(インペインティング)
- 画像変換(Image-to-Image)
このの3つに分けて、対応するAPIエンドポイントの使い方を説明します。
以下のパッケージを使用します。
from openai import AzureOpenAI import os import json import base64 import matplotlib.pyplot as plt from pathlib import Path from PIL import Image, ImageDraw API_KEY = "" RESOURCE_ENDPOINT = "https://<AOAIリソース名>.openai.azure.com/" model_name = "gpt-image-1" #デプロイしたモデル名 file_name1 = "./panda1.png" file_name2 = "./panda2.png" file_name3 = "./panda3.png" file_name4 = "./panda4.png" client = AzureOpenAI( api_key=API_KEY, azure_endpoint=RESOURCE_ENDPOINT, api_version="2025-04-01-preview" )
現時点でAzure OpenAIでAPIを呼び出すと、2と3のimage-to-text系でエラーが出てしまうため、こちらはimport requests
で手順を紹介します。
テキストからの画像生成 (Text-to-Image)
テキストからの画像生成は、もっとも基本的な使い方です。ユーザーがテキストによるプロンプトを与えると、GPT-Image-1モデルがそれを解釈して新規画像を生成します。
prompt_base = """ パンダの画像を書いてみて """ response = client.images.generate( model = model_name, prompt=prompt_base, size="1024x1024", quality="low" ) image_base64 = response.data[0].b64_json image_bytes = base64.b64decode(image_base64) with open(file_name1, "wb") as f: f.write(image_bytes)
生成結果です。
画像変換(Image-to-Imageによるバリエーション生成)
画像変換 (Image-to-Image) は、入力した元画像をベースにしつつ、プロンプトに従って新しい画像(バリエーションやスタイル変換)を生成する機能です。
これは、前項の画像編集と似ていますが、特にマスクを指定せずに画像全体の雰囲気を変えたり、元画像に写っている対象を別のバリエーションに変えたりする用途を指します。
GPT-Image-1では公式に「Image-to-Image」専用のAPIエンドポイントは明記されていませんが、一般的には画像編集APIをマスク無しで使うことで実現できます。
すなわち、imageフィールドに元画像を与え、maskは指定せず(または全領域透明のマスクを与えても同等)、promptに変換したい内容を記述してリクエストします。
モデルは元画像全体を参考にしつつ、プロンプトに沿った新しい画像を生成します。
import requests url = "https://<AOAIリソース名>.openai.azure.com/openai/deployments/<gpt-image-1デプロイ名>/images/edits?api-version=2025-04-01-preview" headers = {"api-key": "<API_KEY>"} data = { "prompt": "アニメ調にしたうえで、このパンダを警察風にして", "model": 'gpt-image-1', "size": "1024x1024", "n": "1" } files = {"image": open(file_name1, "rb")} response = requests.post(url, headers=headers, data=data, files=files) json_data = response.json() if not "data" in json_data.keys(): print(json_data) b64_image = json_data["data"][0]["b64_json"] image_data = base64.b64decode(b64_image) with open(file_name2, "wb") as f: f.write(image_data)
生成結果です。
画像変換の場合も、基本的な入力仕様(imageはBase64、サイズは元画像と同じか指定した値、など)は編集APIと同様です。
プロンプト次第で元画像からどの程度変化するかが変わります。元画像の面影を残した軽微な変化に留めたい場合は「~を少し変更して」程度に留め、大胆に変えたい場合は「全く別の~風に描き直して」といった記述にすると良いでしょう。
また、画像中に文字を入れる場合は次のようになります。
data = { "prompt": "「特殊詐欺には気を付けよう」という文字を入れて、啓発ポスター風にして", "model": 'gpt-image-1', "size": "1024x1024", "n": "1" } files = {"image": open(file_name2, "rb")} response = requests.post(url, headers=headers, data=data, files=files) json_data = response.json() if not "data" in json_data.keys(): print(json_data) b64_image = json_data["data"][0]["b64_json"] image_data = base64.b64decode(b64_image) with open(file_name3, "wb") as f: f.write(image_data)
生成結果です。
少し文字が見切れてしまいました。2回目以降は文字が正しく表示できたため、再生成が必要なケースもあるようです。
画像編集(インペインティングとマスクによる編集)
画像編集 (Image Edit) は、既存の画像に対して特定の指示を与え、一部を合成的に書き換える(Inpainting)機能です。
GPT-Image-1は画像入力とマスク画像を受け取り、元画像の指定領域をプロンプトに沿って変更することができます。
まずマスク用の画像を作成します。
def create_inverse_circular_mask_image( out_path: str | Path, size: tuple[int, int], ratio: float = 0.25 # 半径 = 短辺 × ratio ) -> None: """ 外側だけ白、中心の円は透明なマスク画像(PNG)を生成。 Parameters ---------- out_path : str | Path 出力PNG画像のパス size : tuple[int, int] 出力画像のサイズ (width, height) ratio : float, default 0.25 円の半径を「短辺 × ratio」で決定(0.0〜1.0) """ w, h = size r = int(min(w, h) * ratio) mask = Image.new("RGBA", (w, h), (255, 255, 255, 255)) draw = ImageDraw.Draw(mask) cx, cy = w // 2, h // 2 bbox = (cx - r, cy - r, cx + r, cy + r) # 中心の円だけ透明にする draw.ellipse(bbox, fill=(0, 0, 0, 0)) mask.save(out_path) create_inverse_circular_mask_image("mask.png", size=(1024, 1024), ratio=0.3)
マスク画像と先ほどのパンダの画像を使用し、キャラクターを犬に置き換えさせてみます。
data = { "prompt": "マスクした部分をアニメの犬に置き換えて", "model": 'gpt-image-1', "size": "1024x1024", "n": "1" } files = { "image": (file_name3, open(file_name3, "rb"), "image/png"), "mask": ("mask.png", open("./mask.png", "rb"), "image/png") } response = requests.post(url, headers=headers, data=data, files=files)
生成結果です。
パンダの顔部分が犬に置き換えられました。イメージとしては以下の通りです。
変換前と変換後を見比べると、見切れていた文字が復活していたり、耳の部分が犬のものになっていたりします。辻褄を合わせるためにinpaint範囲外も若干影響を受けるようです。
まとめ
この記事では、Azure OpenAI Serviceの限定プレビュー中の画像生成モデル「GPT-Image-1」について、概要と実践的な使用方法を解説しました。
GPT-Image-1は高度な画像生成能力を持ち、多様なプロンプトや既存画像を活用した編集が可能で、今後の発展が期待される画像生成AIモデルです。今後展開が進めば、リージョンやTPMの制約も変わってくることが想定されます。
ぜひ皆様も新しい画像生成モデルを活用してみてください。