画像をカスタマイズする

Imagen API を使用すると、テキスト プロンプトと参照画像を使用して被写体やスタイルの生成をガイドし、高品質の画像を数秒で作成できます。

編集とカスタマイズ用 Imagen のモデルカードを表示する

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

モデル コード
参照画像を使用したカスタマイズ(少数ショット) imagen-3.0-capability-001

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

HTTP メソッドと URL

POST https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/imagen-3.0-capability-001:predict

構文の例

テキスト プロンプトと参照画像から画像をカスタマイズするための構文。

構文

画像をカスタマイズする構文。

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/imagen-3.0-capability-001:predict \
-d '{
    "instances": [
      {
        // Use [1] to refer to the reference images with referenceId=1
        // [2] to refer to the reference images with referenceId=2,
        // following the same format for all reference IDs that you provide.
        "prompt": "${TEXT_PROMPT}",
        "referenceImages": [
          // A list of at most 4 reference image objects.
          [...]
        ]
      }
    ],
    "parameters": {
        [...]
    }
}'

リクエストの本文の例:

このリクエストは、顔メッシュのコントロール画像と 3 つの参照画像を使用して人物をカスタマイズするためのものです。

{
  "instances": [
    {
      "prompt": "Create an image about a man with short hair [1] in the pose of
       control image [2] to match the description: A pencil style sketch of a
       full-body portrait of a man with short hair [1] with hatch-cross drawing,
       hatch drawing of portrait with 6B and graphite pencils, white background,
       pencil drawing, high quality, pencil stroke, looking at camera, natural
       human eyes",
      "referenceImages": [
        {
          "referenceType": "REFERENCE_TYPE_CONTROL",
          "referenceId": 2,
          "referenceImage": {
            "bytesBase64Encoded": "${IMAGE_BYTES_1}"
          },
          "controlImageConfig": {
            "controlType": "CONTROL_TYPE_FACE_MESH",
            "enableControlImageComputation": true
          }
        },
        {
          "referenceType": "REFERENCE_TYPE_SUBJECT",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": "${IMAGE_BYTES_2}"
          },
          "subjectImageConfig": {
            "subjectDescription": "a man with short hair",
            "subjectType": "SUBJECT_TYPE_PERSON"
          }
        },
        {
          "referenceType": "REFERENCE_TYPE_SUBJECT",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": "${IMAGE_BYTES_3}"
          },
          "subjectImageConfig": {
            "subjectDescription": "a man with short hair",
            "subjectType": "SUBJECT_TYPE_PERSON"
          }
        },
        {
          "referenceType": "REFERENCE_TYPE_SUBJECT",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": "${IMAGE_BYTES_4}"
          },
          "subjectImageConfig": {
            "subjectDescription": "a man with short hair",
            "subjectType": "SUBJECT_TYPE_PERSON"
          }
        }
      ]
    }
  ],
  "parameters": {
    "negativePrompt": "wrinkles, noise, Low quality, dirty, low res, multi face,
      rough texture, messy, messy background, color background, photo realistic,
      photo, super realistic, signature, autograph, sign, text, characters,
      alphabet, letter",
    "seed": 1,
    "language": "en",
    "sampleCount": 4
  }
}

パラメータ リスト

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

画像をカスタマイズする

REST

パラメータ
referenceType 必須の列挙:
  • REFERENCE_TYPE_RAW
    • 編集のユースケースでは、元の参照画像が必要です。
    • 他のユースケースでは、元の参照画像は必要ありません。
    • 1 つのリクエストに存在する元の参照画像は 1 つまでです。
    • 出力画像のサイズは、元の参照入力画像と同じです。
  • REFERENCE_TYPE_MASK
    • マスク編集のユースケースでは、マスク参照画像が必要です。
    • 他のユースケースでは、マスク参照画像は必要ありません。
    • 元の参照画像が存在する場合、マスク画像は元の参照画像と同じサイズにする必要があります。
    • ユーザーは独自のマスクを指定することも、指定された参照画像からマスクを計算するように Imagen に指示することもできます。
    • マスク参照画像が空で、maskModeMASK_MODE_USER_PROVIDED に設定されていない場合、マスクは元の参照画像に基づいて計算されます。
  • REFERENCE_TYPE_CONTROL
    • 元の参照画像が存在する場合、コントロール画像は元の参照画像と同じサイズにする必要があります。
    • コントロール参照画像が空で、enableControlImageComputationtrue に設定されている場合、コントロール画像は元の参照画像に基づいて計算されます。
  • REFERENCE_TYPE_SUBJECT
    • ユーザーは、同じ参照 ID で複数の参照画像を指定できます。たとえば、同じ被写体の複数の画像に同じ参照 ID を設定できます。これにより、出力の品質が向上する可能性があります。
  • REFERENCE_TYPE_STYLE
referenceId 必須 integer

参照 ID。この参照 ID をプロンプトで使用します。たとえば、[1] を使用して参照 ID 1 の参照画像を参照し、[2] を使用して参照 ID 2 の参照画像を参照します。
referenceImage.bytesBase64Encoded 必須 string

エンコードされた参照画像の Base64 文字列。
maskImageConfig.maskMode 省略可能な列挙:
  • MASK_MODE_USER_PROVIDED: 参照画像がマスク画像の場合。
  • MASK_MODE_BACKGROUND: 背景セグメンテーションを使用してマスクを自動的に生成します。
  • MASK_MODE_FOREGROUND: 前景セグメンテーションを使用してマスクを自動生成します。
  • MASK_MODE_SEMANTIC: セマンティック セグメンテーションと指定されたマスククラスを使用してマスクを自動生成します。

referenceTypeREFERENCE_TYPE_MASK として設定されている場合に指定します。
maskImageConfig.dilation
省略可能な float。範囲: [0, 1]

このマスクを拡大する画像幅の割合。

referenceTypeREFERENCE_TYPE_MASK として設定されている場合に指定します。
maskImageConfig.maskClasses
省略可能な list[Integer]

MASK_MODE_SEMANTIC モードのクラスをマスクします。

referenceTypeREFERENCE_TYPE_MASK として設定されている場合に指定します。
controlImageConfig.controlType
必須の列挙:
  • CONTROL_TYPE_FACE_MESH: 顔メッシュ(人物のカスタマイズ)。
  • CONTROL_TYPE_CANNY: Canny エッジの場合。
  • CONTROL_TYPE_SCRIBBLE: フリーハンド。

referenceTypeREFERENCE_TYPE_CONTROL として設定されている場合に指定します。
controlImageConfig.enableControlImageComputation
省略可能な bool
デフォルト: false

  • 独自の制御画像を指定する場合は false に設定します。
  • Imagen に参照画像から制御画像を計算させる場合は、true に設定します。

referenceTypeREFERENCE_TYPE_CONTROL として設定されている場合に指定します。
language

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

テキスト プロンプト言語に対応する言語コード。次の値を使用できます。

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

画像内の被写体の簡単な説明。たとえば、茶色のショートヘアの女性などです。

referenceTypeREFERENCE_TYPE_SUBJECT として設定されている場合に指定します。
subjectImageConfig.subjectType
必須の列挙:
  • SUBJECT_TYPE_PERSON: 人物の被写体タイプ。
  • SUBJECT_TYPE_ANIMAL: 動物の被写体のタイプ。
  • SUBJECT_TYPE_PRODUCT: 商品の被写体タイプ。
  • SUBJECT_TYPE_DEFAULT: デフォルトの被写体タイプ。

referenceTypeREFERENCE_TYPE_SUBJECT として設定されている場合に指定します。
styleImageConfig.styleDescription
省略可能な string
スタイルの簡単な説明。

referenceTypeREFERENCE_TYPE_STYLE として設定されている場合に指定します。

レスポンス

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

パラメータ
predictions

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

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

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

パラメータ
bytesBase64Encoded

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

mimeType

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

次の例は、Imagen モデルを使用して画像をカスタマイズする方法を示しています。

画像をカスタマイズする

REST

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID
  • LOCATION: プロジェクトのリージョン。たとえば、us-central1europe-west2asia-northeast3 です。使用可能なリージョンの一覧については、Vertex AI の生成 AI のロケーションをご覧ください。
  • TEXT_PROMPT: 生成する画像をモデルに指示するテキスト プロンプト。Imagen 3 カスタマイズを使用するには、指定する参照画像の referenceId[$referenceId] 形式で配置します。例:
    • 次のテキスト プロンプトは、"referenceId": 1 を持つ 2 つの参照画像を含むリクエスト用です。どちらの画像にも、"subjectDescription": "man with short hair" の説明がオプションとして含まれています。次の説明に沿って、短髪の男性の画像を生成してください。「ハッチクロス描画、6B とグラファイト ペンによるポートレートのハッチ描画、白い背景、鉛筆画、高品質、鉛筆のストローク、カメラを見つめる、自然な人間の目を持つ man with short hair [1] の全身ポートレートの鉛筆画スタイルのスケッチ。」
  • "referenceId": 参照画像の ID、あるいは同じ被写体またはスタイルに対応する一連の参照画像の ID。この例では、2 つの参照画像は同じ人物でのものであるため、同じ referenceId1)を共有しています。
  • BASE64_REFERENCE_IMAGE: 画像生成のガイドとなる参照画像。画像は base64 でエンコードされたバイト文字列として指定する必要があります。
  • SUBJECT_DESCRIPTION: 省略可。prompt フィールドで使用できる参照画像のテキストによる説明。次に例を示します。
          "prompt": "a full-body portrait of a man with short hair [1] with hatch-cross
          drawing",
          [...],
          "subjectDescription": "man with short hair"
        
  • IMAGE_COUNT: 生成される画像の数。 指定できるのは整数値(1~4)です。デフォルト値: 4。

HTTP メソッドと URL:

POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagen-3.0-capability-001:predict

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

{
  "instances": [
    {
      "prompt": "TEXT_PROMPT",
      "referenceImages": [
        {
          "referenceType": "REFERENCE_TYPE_SUBJECT",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": "BASE64_REFERENCE_IMAGE"
          },
          "subjectImageConfig": {
            "subjectDescription": "SUBJECT_DESCRIPTION",
            "subjectType": "SUBJECT_TYPE_PERSON"
          }
        },
        {
          "referenceType": "REFERENCE_TYPE_SUBJECT",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": "BASE64_REFERENCE_IMAGE"
          },
          "subjectImageConfig": {
            "subjectDescription": "SUBJECT_DESCRIPTION",
            "subjectType": "SUBJECT_TYPE_PERSON"
          }
        }
      ]
    }
  ],
  "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/imagen-3.0-capability-001: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/imagen-3.0-capability-001:predict" | Select-Object -Expand Content
次のサンプル レスポンスは、"sampleCount": 2 を含むリクエストに対するものです。レスポンスは、生成された画像のバイトを base64 でエンコードした 2 つの予測オブジェクトを返します。
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

クラス ID

次のオブジェクト クラス ID を使用して、特定のオブジェクトに基づいて画像マスクを自動的に作成します。

クラス ID(class_id オブジェクト
0 リュックサック
1
2 バッグ
3 ネクタイ
4 スーツケース
5 ケース
6
7
8
9
10 ヒツジ
11
12 ゾウ
13 クマ
14 シマウマ
15 キリン
16 動物(その他)
17 電子レンジ
18 ラジエーター
19 オーブン
20 トースター
21 貯蔵タンク
22 コンベヤー ベルト
23 シンク
24 冷蔵庫
25 洗濯乾燥機
26 扇風機
27 食洗機
28 トイレ
29 バスタブ
30 シャワー
31 トンネル
32 ブリッジ
33 桟橋
34 テント
35 ビルディング
36 天井
37 ノートパソコン
38 キーボード
39 ネズミ
40 リモート
41 携帯電話
42 テレビ
43 フロア
44 ステージ
45 バナナ
46 リンゴ
47 サンドイッチ
48 オレンジ
49 ブロッコリー
50 ニンジン
51 ホットドッグ
52 ピザ
53 ドーナツ
54 ケーキ
55 果物(その他)
56 食品(その他)
57 椅子(その他)
58 アームチェア
59 回転椅子
60 スツール
61 シート
62 ソファ
63 ゴミ箱
64 鉢植えの植物
65 ナイトスタンド
66 ベッド
67 テーブル
68 ビリヤード
69
70 デスク
71 オットマン
72 洋服だんす
73 ベビーベッド
74 かご
75 整理ダンス
76 本棚
77 カウンタ(その他)
78 バスルーム カウンタ
79 キッチン アイランド
80 ドア
81 ライト(その他)
82 ランプ
83 壁掛け照明
84 シャンデリア
85 ミラー
86 ホワイトボード
87
88 階段
89 エスカレーター
90 キャビネット
91 暖炉
92 ガスコンロ
93 アーケード マシン
94 砂利
95 プラットフォーム
96 プレイフィールド
97 レール
98 道路
99
100 歩道
101 ランウェイ
102 地形
103 書籍
104 ボックス
105 時計
106 花瓶
107 はさみ
108 玩具(その他)
109 テディベア
110 ヘアドライヤー
111 歯ブラシ
112 絵画
113 ポスター
114 掲示板
115 ボトル
116 コップ
117 ワイングラス
118 ナイフ
119 フォーク
120 スプーン
121 ボウル
122 トレイ
123 レンジフード
124
125 人物
126 ライダー(その他)
127 サイクリスト
128 ライダー
129 ホワイトペーパー
130 街灯
131 道路の障害物
132 郵便受け
133 CCTV カメラ
134 ジャンクション ボックス
135 交通標識
136 信号
137 消火栓
138 パーキング メーター
139 ベンチ
140 自転車置き場
141 広告板
142
143 ポール
144 フェンス
145 手すり
146 ガードレール
147
148
149 フリスビー
150 スキー
151 スノーボード
152 ボール
153
154 野球のバット
155 野球のグローブ
156 スケートボード
157 サーフボード
158 テニスラケット
159 ネット
160 ベース
161 彫刻
162
163 噴水
164 日よけ
165 アパレル
166 バナー
167
168 ブランケット
169 カーテン(その他)
170 シャワーカーテン
171
172 タオル
173 ラグマット
174 樹木
175 自転車
176
177 自動三輪タクシー
178 オートバイ
179 飛行機
180 バス
181 電車
182 トラック
183 トレーラー
184 ボート、船
185 ゆっくりと動く車輪付きの物体
186 川湖
187
188 水(その他)
189 プール
190 ウォーターフォール
191
192
193 ブラインド

次のステップ