画像を生成する

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

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

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

モデル コード
画像生成 imagen-3.0-generate-001
imagen-3.0-fast-generate-001
imagegeneration@006
imagegeneration@005
imagegeneration@002

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

構文の例

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

構文

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

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("imagen-3.0-generate-001")

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

パラメータ リスト

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

画像を生成する

REST

パラメータ
prompt

必須: string

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

imagen-3.0-generate-001 モデルは最大 480 個のトークンをサポートします。

imagen-3.0-fast-generate-001 モデルは最大 480 個のトークンをサポートします。

imagegeneration@006 モデルは最大 128 個のトークンをサポートします。

imagegeneration@005 モデルは最大 128 個のトークンをサポートします。

imagegeneration@002 モデルは最大 64 個のトークンをサポートします。

sampleCount

必須: int

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

imagen-3.0-generate-001 モデルは 1~4 の値をサポートします。

imagen-3.0-fast-generate-001 モデルは 1~4 の値をサポートします。

imagegeneration@006 モデルは 1~4 の値をサポートします。

imagegeneration@005 モデルは 1~4 の値をサポートします。

imagegeneration@002 モデルは 1~8 の値をサポートします。

seed

省略可: Uint32

画像生成用の乱数シード。addWatermarktrue に設定されている場合、このオプションは使用できません。

negativePrompt

省略可: string

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

imagen-3.0-generate-001 モデルは最大 480 個のトークンをサポートします。

imagen-3.0-fast-generate-001 モデルは最大 480 個のトークンをサポートします。

imagegeneration@006 モデルは最大 128 個のトークンをサポートします。

imagegeneration@005 モデルは最大 128 個のトークンをサポートします。

imagegeneration@002 モデルは最大 64 個のトークンをサポートします。

aspectRatio

省略可: string

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

imagen-3.0-generate-001 モデルは「1:1」、「9:16」、「16:9」、「3:4」、「4:3」をサポートしています。

imagen-3.0-fast-generate-001 モデルは「1:1」、「9:16」、「16:9」、「3:4」、「4:3」をサポートしています。

imagegeneration@006 モデルは「1:1」、「9:16」、「16:9」、「3:4」、「4:3」をサポートしています。

imagegeneration@005 モデルは「1:1」、「9:16」をサポートしています。

imagegeneration@002 モデルは「1:1」をサポートしています。

outputOptions

省略可: outputOptions

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

sampleImageStyle

省略可: stringimagegeneration@002 のみ)

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

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

省略可: stringimagen-3.0-generate-001imagen-3.0-fast-generate-001imagegeneration@006 のみ)

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

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

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

safetySetting

省略可: stringimagen-3.0-generate-001imagen-3.0-fast-generate-001imagegeneration@006 のみ)

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

  • "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

生成された画像に目に見えない透かしを追加します。デフォルト値は、imagegeneration@002 モデルと imagegeneration@005 モデルの場合は falseimagen-3.0-fast-generate-001 モデル、imagegeneration@006 モデル、imagegeneration@006 モデルの場合は true です。

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

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

imagen-3.0-generate-001 モデルは最大 480 個のトークンをサポートします。

imagen-3.0-fast-generate-001 モデルは最大 480 個のトークンをサポートします。

imagegeneration@006 モデルは最大 128 個のトークンをサポートします。

imagegeneration@005 モデルは最大 128 個のトークンをサポートします。

imagegeneration@002 モデルは最大 64 個のトークンをサポートします。

number_of_images

必須: int

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

imagen-3.0-generate-001 モデルは 1~8 の値をサポートします。

imagen-3.0-fast-generate-001 モデルは 1~8 の値をサポートします。

imagegeneration@006 モデルは 1~4 の値をサポートします。

imagegeneration@005 モデルは 1~4 の値をサポートします。

imagegeneration@002 モデルは 1~8 の値をサポートします。

seed

省略可: int

画像生成用の乱数シード。addWatermarktrue に設定されている場合、このオプションは使用できません。

negative_prompt

省略可: string

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

imagen-3.0-generate-001 モデルは最大 480 個のトークンをサポートします。

imagen-3.0-fast-generate-001 モデルは最大 480 個のトークンをサポートします。

imagegeneration@006 モデルは最大 128 個のトークンをサポートします。

imagegeneration@005 モデルは最大 128 個のトークンをサポートします。

imagegeneration@002 モデルは最大 64 個のトークンをサポートします。

aspect_ratio

省略可: string

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

imagen-3.0-generate-001 モデルは「1:1」、「9:16」、「16:9」、「3:4」、「4:3」をサポートしています。

imagen-3.0-fast-generate-001 モデルは「1:1」、「9:16」、「16:9」、「3:4」、「4:3」をサポートしています。

imagegeneration@006 モデルは「1:1」、「9:16」、「16:9」、「3:4」、「4:3」をサポートしています。

output_mime_type

省略可: stringimagen-3.0-generate-001imagen-3.0-fast-generate-001imagegeneration@006 のみ)

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

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

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

compression_quality

省略可: int

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

language

省略可: string

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

  • "en": 英語
  • "hi": ヒンディー語
  • "ja": 日本語
  • "ko": 韓国語
  • "auto": 自動言語検出

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

output_gcs_uri

省略可: string

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

add_watermark

省略可: bool

生成された画像に透かしを追加します。デフォルト値は、imagegeneration@002 モデルと imagegeneration@005 モデルの場合は falseimagen-3.0-fast-generate-001 モデル、imagen-3.0-generate-001 モデル、imagegeneration@006 モデルの場合は true です。

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

省略可: stringimagen-3.0-generate-001imagen-3.0-fast-generate-001imagegeneration@006 のみ)

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

  • "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-001
      • imagen-3.0-fast-generate-001 - 低レイテンシ モデルのバージョン。
    • デフォルトのモデル バージョン:
      • imagegeneration - デフォルトのモデル バージョン v.006 を使用します。特に本番環境では、モデル バージョンを常に指定することをおすすめします。

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

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

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"
    }
  ]
}

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-001")

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-west2、または asia-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="
    }
  ]
}

次のステップ