画像を生成する

Imagen API を使用すると、テキスト プロンプトを使用して生成をガイドし、高品質の画像を数秒で作成できます。Imagen API を使用して画像をアップスケールすることもできます。

生成用 Imagen のモデルカードを表示する

サポートされているモデル

Imagen API は、次のモデルをサポートしています。

  • imagen-4-0-generate-preview-05-20プレビュー
  • imagen-4.0-ultra-generate-exp-05-20(試験運用版)
  • imagen-3.0-generate-002
  • imagen-3.0-generate-001
  • imagen-3.0-fast-generate-001
  • imagen-3.0-capability-001
  • imagegeneration@006
  • imagegeneration@005
  • imagegeneration@002

各モデルでサポートされている機能の詳細については、Imagen モデルをご覧ください。

構文の例

テキスト プロンプトから画像を作成するための構文。

構文

画像を生成するための構文。

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \

https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_VERSION}:predict \
-d '{
  "instances": [
    {
      "prompt": "..."
    }
  ],
  "parameters": {
    "sampleCount": ...
  }
}'

Python

generation_model = ImageGenerationModel.from_pretrained("MODEL_VERSION")

response = generation_model.generate_images(
    prompt="...",
    negative_prompt="...",
    aspect_ratio=...,
)
response.images[0].show()

パラメータ リスト

実装の詳細については、をご覧ください。

画像を生成する

REST

パラメータ
prompt

string

必須。画像のテキスト プロンプト。

sampleCount

int

必須。生成する画像の数。デフォルト値は 4 です。

seed

Uint32

省略可。画像生成用の乱数シード。addWatermarktrue に設定されている場合は使用できません。

enhancePrompttrue に設定されている場合、seed パラメータは機能しません。これは、enhancePrompt が新しいプロンプトを生成し、新しい画像または別の画像が生成されるためです。

enhancePrompt

boolean

省略可。LLM ベースのプロンプト書き換え機能を使用して、元のプロンプトの意図をより反映した高品質の画像を生成するためのオプション パラメータ。この機能を無効にすると、画像の品質やプロンプトへの準拠に影響する可能性があります。

negativePrompt

string

省略可。生成される画像に含まれないようにする内容の説明。

negativePromptimagen-3.0-generate-002 以降のモデルではサポートされていません。

aspectRatio

string

省略可。画像のアスペクト比。デフォルト値は「1:1」です。

outputOptions

outputOptions

省略可。outputOptions オブジェクトで出力画像形式を記述します。

sampleImageStyle

string

省略可。生成される画像のスタイルを記述します。次の値を使用できます。

  • "photograph"
  • "digital_art"
  • "landscape"
  • "sketch"
  • "watercolor"
  • "cyberpunk"
  • "pop_art"

sampleImageStyleimagegeneration@002 でのみサポートされています。

personGeneration

string

省略可。モデルによって人物の画像が生成されるようにします。次の値を使用できます。

  • "dont_allow": 画像に人物や顔が含まれないようにします。
  • "allow_adult": 成人のみの生成を許可します。
  • "allow_all": 年齢制限なく人物の画像が生成されるようにします。

デフォルト値は "allow_adult" です。

language

string

省略可。テキスト プロンプト言語に対応する言語コード。サポートされる値は次のとおりです。

  • auto: 自動検出。Imagen がサポートされている言語を検出すると、プロンプトとオプションの否定的なプロンプトが英語に翻訳されます。検出された言語がサポートされていない場合、Imagen は入力テキストをそのまま使用するため、予期しない出力になる可能性があります。エラーコードは返されません。
  • en: 英語(省略した場合はデフォルト値)
  • zh または zh-CN: 中国語(簡体)
  • zh-TW: 中国語(繁体)
  • hi: ヒンディー語
  • ja: 日本語
  • ko: 韓国語
  • pt: ポルトガル語
  • es: スペイン語
safetySetting

string

省略可。安全フィルタリングにフィルタレベルを追加します。次の値を使用できます。

  • "block_low_and_above": 最も強力なフィルタリング レベル、最も厳格なブロックを実施します。非推奨の値: "block_most"
  • "block_medium_and_above": 一部の問題のあるプロンプトとレスポンスをブロックします。非推奨の値: "block_some"
  • "block_only_high": 安全フィルタによってブロックされるリクエストの数が少なくなります。Imagen によって生成される不適切なコンテンツが増加する可能性があります。非推奨の値: "block_few"
  • "block_none": ごく少数の問題のあるプロンプトとレスポンスをブロックします。この機能へのアクセスは制限されています。前のフィールド値: "block_fewest"

デフォルト値は "block_medium_and_above" です。

addWatermark

bool

省略可。生成された画像に目に見えない透かしを追加します。

デフォルト値は true です。ただし、次のモデルを除きます。

  • imagegeneration@002
  • imagegeneration@005
storageUri

省略可: string

生成された画像を保存する Cloud Storage URI。

出力オプション オブジェクト

outputOptions オブジェクトは画像出力を記述します。

パラメータ
outputOptions.mimeType

省略可: string

出力を保存する際の画像形式。次の値を使用できます。

  • "image/png": PNG 画像として保存
  • "image/jpeg": JPEG 画像として保存

デフォルト値は "image/png" です。

outputOptions.compressionQuality

省略可: int

出力タイプが "image/jpeg" である場合の圧縮レベル。指定できる値は 0~100 です。デフォルト値は 75 です。

レスポンス

REST リクエストからのレスポンス本文。

パラメータ
predictions

VisionGenerativeModelResult オブジェクトの配列。リクエストされた sampleCount ごとに 1 つ存在します。画像が責任ある AI によってフィルタされた場合は、includeRaiReasontrue に設定されていない限り、対象の画像は含まれません。

ビジョン生成モデルの結果オブジェクト

モデルの結果に関する情報。

パラメータ
bytesBase64Encoded

生成され base64 でエンコードされた画像。出力画像が責任ある AI フィルタを通過しなかった場合は存在しません。

mimeType

生成された画像のタイプ。出力画像が責任ある AI フィルタを通過しなかった場合は存在しません。

raiFilteredReason

責任ある AI フィルタの理由。includeRaiReason が有効であり、この画像が除外された場合にのみ返されます。

safetyAttributes.categories

安全性属性の名前。includeSafetyAttributes が有効であり、出力画像が責任ある AI フィルタを通過した場合にのみ返されます。

safetyAttributes.scores

安全性属性スコア。includeSafetyAttributes が有効であり、出力画像が責任ある AI フィルタを通過した場合にのみ返されます。

Python

パラメータ
prompt

string

必須。画像のテキスト プロンプト。

number_of_images

int

必須。生成する画像の数。デフォルト値は 1 です。

seed

int

省略可。画像生成用の乱数シード。addWatermarktrue に設定されている場合は使用できません。

enhancePrompttrue に設定されている場合、seed は機能しません。これは、enhancePrompt が新しいプロンプトを生成し、新しい画像または別の画像が生成されるためです。

negative_prompt

string

省略可。生成される画像に含まれないようにする内容の説明。

negative_promptimagen-3.0-generate-002 以降のモデルではサポートされていません。

aspect_ratio

string

省略可。画像のアスペクト比。デフォルト値は「1:1」です。

output_mime_type

string

省略可。出力を保存する際の画像形式。次の値を使用できます。

  • "image/png": PNG 画像として保存
  • "image/jpeg": JPEG 画像として保存

デフォルト値は "image/png" です。

compression_quality

int

省略可。出力の MIME タイプが "image/jpeg" である場合の圧縮レベル。デフォルト値は 75 です。

language

string

省略可。画像のテキスト プロンプトの言語。次の値を使用できます。

  • auto: 自動検出。Imagen がサポートされている言語を検出すると、プロンプトとオプションの否定的なプロンプトが英語に翻訳されます。検出された言語がサポートされていない場合、Imagen は入力テキストをそのまま使用するため、予期しない出力になる可能性があります。エラーコードは返されません。
  • en: 英語(省略した場合はデフォルト値)
  • zh または zh-CN: 中国語(簡体)
  • zh-TW: 中国語(繁体)
  • hi: ヒンディー語
  • ja: 日本語
  • ko: 韓国語
  • pt: ポルトガル語
  • es: スペイン語

デフォルト値は "auto" です。

output_gcs_uri

string

省略可。生成された画像を保存する Cloud Storage URI。

add_watermark

bool

省略可。生成された画像に透かしを追加します。

デフォルト値は true です。ただし、次のモデルを除きます。

  • imagegeneration@002
  • imagegeneration@005
safety_filter_level

string

省略可。安全フィルタリングにフィルタレベルを追加します。次の値を使用できます。

  • "block_low_and_above": 最も強力なフィルタリング レベル。これにより、最も厳格なブロックが実施されます。非推奨の値: "block_most"
  • "block_medium_and_above": 一部の問題のあるプロンプトとレスポンスをブロックします。非推奨の値: "block_some"
  • "block_only_high": 問題のあるプロンプトとレスポンスをブロックする回数を削減します。非推奨の値: "block_few"
  • "block_none": ごく少数の問題のあるプロンプトとレスポンスをブロックします。非推奨の値: "block_fewest"

デフォルト値は "block_medium_and_above" です。

person_generation

string

省略可。モデルによって人物の画像が生成されるようにします。次の値を使用できます。

  • "dont_allow": 人物の画像の生成をブロックします
  • "allow_adult": 大人の画像を生成しますが、子供の画像は生成しません
  • "allow_all": 大人と子供の画像を生成します

デフォルト値は "allow_adult" です。

画像をアップスケール

REST

パラメータ
mode

string

必須。アップスケーリング リクエストの場合は "upscale" に設定する必要があります。

upscaleConfig

UpscaleConfig

必須。UpscaleConfig オブジェクト

outputOptions

OutputOptions

省略可。outputOptions オブジェクトで出力画像形式を記述します。

storageUri

string

省略可。生成された画像を保存する Cloud Storage URI。

構成オブジェクトをアップスケーリングする

パラメータ
upscaleConfig.upscaleFactor

string

必須。アップスケール係数。サポートされている値は "x2""x4" です。

レスポンス

REST リクエストからのレスポンス本文。

パラメータ
predictions

VisionGenerativeModelResult オブジェクトの配列。リクエストされた sampleCount ごとに 1 つ存在します。画像が責任ある AI によってフィルタされた場合は、includeRaiReasontrue に設定されていない限り、対象の画像は含まれません。

次の例は、Imagen モデルを使用して画像を生成する方法を示しています。

画像を生成

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • MODEL_VERSION: 使用する imagegeneration モデル バージョン。使用可能な値:
    • Imagen 3:
      • imagen-3.0-generate-002(最新モデル)
      • imagen-3.0-generate-001
      • imagen-3.0-fast-generate-001 - 低レイテンシ モデルのバージョン。
    • デフォルトのモデル バージョン:
      • imagegeneration - デフォルトのモデル バージョン v.006 を使用します。特に本番環境では、モデル バージョンを常に指定することをおすすめします。

    モデルのバージョンと機能の詳細については、モデルのバージョンをご覧ください。

  • LOCATION: プロジェクトのリージョン。たとえば、us-central1europe-west2asia-northeast3 です。使用可能なリージョンの一覧については、Vertex AI の生成 AI のロケーションをご覧ください。
  • TEXT_PROMPT: 生成する画像をモデルに指示するテキスト プロンプト。生成と編集のどちらでも必須フィールドです。
  • IMAGE_COUNT: 生成される画像の数。指定できる整数値: 1~8(imagegeneration@002)、1~4(他のすべてのモデル バージョン)。デフォルト値: 4。
  • その他のオプション パラメータ

    ユースケースに応じて、次のオプションの変数を使用します。"parameters": {} オブジェクトに次のパラメータの一部またはすべてを追加します。このリストは一般的なオプション パラメータを示しており、網羅的なものではありません。オプション パラメータの詳細については、Imagen API リファレンス: 画像を生成するをご覧ください。

    "parameters": {
      "sampleCount": IMAGE_COUNT,
      "addWatermark": ADD_WATERMARK,
      "aspectRatio": "ASPECT_RATIO",
      "enhancePrompt": ENABLE_PROMPT_REWRITING,
      "includeRaiReason": INCLUDE_RAI_REASON,
      "includeSafetyAttributes": INCLUDE_SAFETY_ATTRIBUTES,
      "outputOptions": {
        "mimeType": "MIME_TYPE",
        "compressionQuality": COMPRESSION_QUALITY
      },
      "personGeneration": "PERSON_SETTING",
      "safetySetting": "SAFETY_SETTING",
      "seed": SEED_NUMBER,
      "storageUri": "OUTPUT_STORAGE_URI"
    }
    
    • ADD_WATERMARK: ブール値。省略可。生成された画像に透かしを有効にするかどうか。フィールドが true に設定されているときに生成された画像には、透かし入り画像の検証に使用できるデジタル SynthID が含まれています。このフィールドを省略すると、デフォルト値の true が使用されます。この機能を無効にするには、値を false に設定する必要があります。seed フィールドを使用して確定的な出力を取得できるのは、このフィールドが false に設定されている場合のみです。
    • ASPECT_RATIO: 文字列。省略可。アスペクト比を制御する生成モード パラメータ。サポートされている比の値と用途:
      • 1:1(デフォルト、スクエア)
      • 3:4(広告、ソーシャル メディア)
      • 4:3(テレビ、写真)
      • 16:9(横向き)
      • 9:16(縦向き)
    • ENABLE_PROMPT_REWRITING: ブール値。省略可。LLM ベースのプロンプト書き換え機能を使用して、元のプロンプトの意図をより反映した高品質の画像を生成するためのパラメータ。この機能を無効にすると、画像の品質やプロンプトへの準拠に影響する可能性があります。デフォルト値: true
    • INCLUDE_RAI_REASON: ブール値。省略可。入力または出力がブロックされているレスポンスで、責任ある AI のフィルタが適用された理由コードを有効にするかどうか。デフォルト値: false
    • INCLUDE_SAFETY_ATTRIBUTES: ブール値。省略可。フィルタリングされていない入力と出力のレスポンスで、安全性属性のリストに対して丸められた責任ある AI スコアを有効にするかどうかを指定します。安全性属性のカテゴリ: "Death, Harm & Tragedy""Firearms & Weapons""Hate""Health""Illicit Drugs""Politics""Porn""Religion & Belief""Toxic""Violence""Vulgarity""War & Conflict"。デフォルト値: false
    • MIME_TYPE: 文字列。省略可。画像のコンテンツの MIME タイプ。使用可能な値:
      • image/jpeg
      • image/gif
      • image/png
      • image/webp
      • image/bmp
      • image/tiff
      • image/vnd.microsoft.icon
    • COMPRESSION_QUALITY: 整数。省略可。JPEG 出力ファイルにのみ適用されます。JPEG ファイル形式で生成された画像に対してモデルが保持する詳細レベル。値: 0100。値が大きいほど圧縮率が高くなります。デフォルト: 75
    • PERSON_SETTING: 文字列。省略可。モデルで許可される人物や顔の生成の種類を制御する安全性設定。使用可能な値:
      • allow_adult(デフォルト): 有名人の生成を除き、成人のみの生成を許可します。どの設定でも、有名人の生成は許可されません。
      • dont_allow: 生成された画像に人物や顔が含まれないようにします。
    • SAFETY_SETTING: 文字列。省略可。生成される画像の安全フィルタのしきい値を制御する設定。使用可能な値:
      • block_low_and_above: 最も高い安全性のしきい値。これにより、フィルタされる生成画像が最も多くなります。以前の値: block_most
      • block_medium_and_above(デフォルト): 有害となる可能性のあるコンテンツと安全なコンテンツのフィルタをバランスよく行う中程度の安全性のしきい値です。以前の値: block_some
      • block_only_high: 安全フィルタによってブロックされるリクエストの数を減らす安全性のしきい値。この設定により、Imagen によって生成される不適切なコンテンツが増加する可能性があります。以前の値: block_few
    • SEED_NUMBER: 整数。省略可。出力画像を確定するために指定する非負整数。同じシード番号を指定すると、常に同じ出力画像が得られます。使用しているモデルが電子透かしをサポートしている場合、このフィールドを使用するには "addWatermark": false を設定する必要があります。指定できる整数値: 12147483647
    • OUTPUT_STORAGE_URI: 文字列。省略可。出力画像を保存する Cloud Storage バケット。指定しない場合、Base64 エンコードされた画像バイトがレスポンスで返されます。値のサンプル: gs://image-bucket/output/

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_VERSION:predict

リクエストの本文(JSON):

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT"
    }
  ],
  "parameters": {
    "sampleCount": IMAGE_COUNT
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_VERSION:predict"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_VERSION:predict" | Select-Object -Expand Content
次のサンプル レスポンスは、"sampleCount": 2 を含むリクエストに対するものです。レスポンスは、生成された画像のバイトを base64 でエンコードした 2 つの予測オブジェクトを返します。
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

プロンプトの機能強化をサポートするモデルを使用する場合、レスポンスには、生成に使用された強化されたプロンプトを含む追加の prompt フィールドが含まれます。

{
  "predictions": [
    {
      "mimeType": "MIME_TYPE",
      "prompt": "ENHANCED_PROMPT_1",
      "bytesBase64Encoded": "BASE64_IMG_BYTES_1"
    },
    {
      "mimeType": "MIME_TYPE",
      "prompt": "ENHANCED_PROMPT_2",
      "bytesBase64Encoded": "BASE64_IMG_BYTES_2"
    }
  ]
}

Python

このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。詳細については、Vertex AI Python API のリファレンス ドキュメントをご覧ください。

Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

このサンプルでは、ImageGenerationModel@006 バージョン)に対して generate_images メソッドを呼び出し、生成された画像をローカルに保存します。その後で、必要ならノートブックで show() メソッドを使用して、生成された画像を表示できます。モデルのバージョンと機能の詳細については、モデルのバージョンをご覧ください。


import vertexai
from vertexai.preview.vision_models import ImageGenerationModel

# TODO(developer): Update and un-comment below lines
# PROJECT_ID = "your-project-id"
# output_file = "input-image.png"
# prompt = "" # The text prompt describing what you want to see.

vertexai.init(project=PROJECT_ID, location="us-central1")

model = ImageGenerationModel.from_pretrained("imagen-3.0-generate-002")

images = model.generate_images(
    prompt=prompt,
    # Optional parameters
    number_of_images=1,
    language="en",
    # You can't use a seed value and watermark at the same time.
    # add_watermark=False,
    # seed=100,
    aspect_ratio="1:1",
    safety_filter_level="block_some",
    person_generation="allow_adult",
)

images[0].save(location=output_file, include_generation_parameters=False)

# Optional. View the generated image in a notebook.
# images[0].show()

print(f"Created output image using {len(images[0]._image_bytes)} bytes")
# Example response:
# Created output image using 1234567 bytes

画像をアップスケール

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION: プロジェクトのリージョン。たとえば、us-central1europe-west2asia-northeast3 です。使用可能なリージョンの一覧については、Vertex AI の生成 AI のロケーションをご覧ください。
  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • B64_BASE_IMAGE: 編集またはアップスケールするベース画像。画像は base64 でエンコードされたバイト文字列として指定する必要があります。サイズの上限: 10 MB。
  • IMAGE_SOURCE: 編集またはアップスケールする画像の Cloud Storage ロケーション。例: gs://output-bucket/source-photos/photo.png
  • UPSCALE_FACTOR: 省略可。画像をアップスケールする係数。指定しない場合、アップスケール係数は入力画像の長辺と sampleImageSize から決定されます。使用可能な値: x2 または x4

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagegeneration@002:predict

リクエストの本文(JSON):

{
  "instances": [
    {
      "prompt": "",
      "image": {
        // use one of the following to specify the image to upscale
        "bytesBase64Encoded": "B64_BASE_IMAGE"
        "gcsUri": "IMAGE_SOURCE"
        // end of base image input options
      },
    }
  ],
  "parameters": {
    "sampleCount": 1,
    "mode": "upscale",
    "upscaleConfig": {
      "upscaleFactor": "UPSCALE_FACTOR"
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagegeneration@002:predict"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagegeneration@002:predict" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "predictions": [
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "iVBOR..[base64-encoded-upscaled-image]...YII="
    }
  ]
}

次のステップ