決定論的な画像を生成する

画像生成を試す(Vertex AI Studio)

Colab で Imagen を試す

このページでは、Vertex AI の Imagen でシード番号を使用して決定論的画像を生成する方法について説明します。

シード番号は、非決定的な生成画像を決定的にするためリクエストに追加する数値です。決定論的とは、Imagen で画像を生成するたびに、同じ生成出力が返されることを意味します。

たとえば、あるプロンプトを入力して検索結果の表示件数を 1 に設定したうえでシード番号を使用すると、同じ入力値を使用するたびに同じ画像を取得できます。検索結果の表示件数を 8 に設定して同じリクエストを送信すれば、同じ 8 つの画像が得られます。

シードを使用して画像を生成する

手順は次のとおりです。

REST

シード番号は、JSON リクエスト本文の parameters オブジェクトのオプション フィールドです。

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • MODEL_VERSION: 使用する Imagen モデルのバージョン。使用可能なモデルの詳細については、Imagen モデルをご覧ください。

  • 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 のフィルタが適用された理由コードを有効にするかどうか。デフォルト値: true
    • 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"
    }
  ]
}

  1. 次のように置き換えます。

    • SEED_NUMBER: 整数。省略可。出力画像を確定するために指定する非負整数。同じシード番号を指定すると、常に同じ出力画像が得られます。使用しているモデルが電子透かしをサポートしている場合、このフィールドを使用するには "addWatermark": false を設定する必要があります。指定できる整数値: 12147483647
{
  "instances": [
    ...
  ],
  "parameters": {
    "sampleCount": IMAGE_COUNT,
    "seed": SEED_NUMBER,
    // required for model version 006 and greater only when using a seed number
    "addWatermark": false
  }
}

次のステップ