このページでは、画像の背景を置き換える方法について説明します。Vertex AI 上の Imagen では、オブジェクトの自動セグメンテーションを使用して、特定の画像コンテンツを維持しながら他のコンテンツを変更できます。Imagen 3 では、独自のマスク領域を指定して、編集時により細かく制御することもできます。
次のモデルは、画像の背景の置き換えをサポートしています。
編集とカスタマイズ用 Imagen のモデルカードを表示する
商品画像の編集の例
次のユースケースでは、画像の背景を変更して商品画像を強化しながら、画像内の商品の外観を維持する方法について説明します。
始める前に
- Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Vertex AI API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
環境の認証を設定します。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
Python
ローカル開発環境でこのページの Python サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
-
Google Cloud CLI をインストールします。
-
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
ローカルシェルを使用している場合は、ユーザー アカウントのローカル認証情報を作成します。
gcloud auth application-default login
Cloud Shell を使用している場合は、この操作を行う必要はありません。
認証エラーが返され、外部 ID プロバイダ(IdP)を使用している場合は、 フェデレーション ID を使用して gcloud CLI にログインしていることを確認します。
詳細については、 Google Cloud 認証ドキュメントの ローカル開発環境の ADC の設定をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Google Cloud CLI をインストールします。
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
-
自動的に検出された背景マスクを使用して編集する
次の手順で、背景の自動検出による商品画像の編集を有効にして使用します。
コンソール
Google Cloud コンソールで、[Vertex AI] > [Vertex AI Studio] ページに移動します。
[メディアを生成] をクリックします。
[画像] をクリックします。
[タスク] リストから [Product-background-editing] を選択します。
[モデル] リストから、使用する Imagen モデルを選択します。
[入力画像] で [追加] をクリックし、編集する画像を選択してアップロードします。
[プロンプト] ボックスに、画像を編集する方法を説明するプロンプトを入力します。
次のいずれかのマスク抽出オプションを選択します。
- 背景要素: 背景要素を検出し、その周囲にマスクを作成します。
- 前景要素: 前景のオブジェクトを検出し、その周囲にマスクを作成します。
- background_replace 人物: 人物を検出し、その周囲にマスクを作成します。
[実行] をクリックします。
Python
インストール
pip install --upgrade google-genai
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Gen AI SDK を使用するための環境変数を設定します。
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_VERTEXAI=True
REST
詳細については、画像編集 API リファレンスをご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- LOCATION: プロジェクトのリージョン。たとえば、
us-central1、europe-west2、asia-northeast3です。使用可能なリージョンの一覧については、Vertex AI の生成 AI のロケーションをご覧ください。リージョン API エンドポイントが使用されている場合、エンドポイントの URL のリージョンによってリクエストの処理場所が決まります。競合がある場合、リソースパスのLOCATIONは無視されます。 - TEXT_PROMPT: 生成する画像をモデルに指示するテキスト プロンプト。生成と編集のどちらでも必須フィールドです。
referenceType:ReferenceImageは、画像編集に追加のコンテキストを提供する画像です。編集のユースケースでは、通常の RGB の元の参照画像(REFERENCE_TYPE_RAW)が必要です。1 つのリクエストに存在できる元の参照画像は 1 つまでです。出力画像の高さと幅は、元の参照画像と同じです。マスク編集のユースケースでは、マスク参照画像(REFERENCE_TYPE_MASK)が必要です。referenceId: 参照画像の整数 ID。この例では、2 つの参照画像オブジェクトのタイプが異なるため、referenceId値が異なります(1と2)。- B64_BASE_IMAGE: 編集またはアップスケールするベース画像。画像は base64 でエンコードされたバイト文字列として指定する必要があります。サイズの上限: 10 MB。
maskImageConfig.maskMode: マスク編集のマスクモード。MASK_MODE_BACKGROUNDは、ユーザーが指定したマスクなしで背景を自動的にマスクするために使用されます。- MASK_DILATION - フロート。このマスクを拡大する画像幅の割合。フォアグラウンド プロダクトが拡張されないようにするために、値を
0.00にすることをおすすめします。最小: 0、最大: 1。デフォルト: 0.03。 - EDIT_STEPS - 整数。ベースモデルのサンプリング ステップ数。商品画像の編集の場合は、
75の手順から始めます。 - EDIT_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_RAW",
"referenceId": 1,
"referenceImage": {
"bytesBase64Encoded": "B64_BASE_IMAGE"
}
},
{
"referenceType": "REFERENCE_TYPE_MASK",
"referenceId": 2,
"maskImageConfig": {
"maskMode": "MASK_MODE_BACKGROUND",
"dilation": MASK_DILATION
}
}
]
}
],
"parameters": {
"editConfig": {
"baseSteps": EDIT_STEPS
},
"editMode": "EDIT_MODE_BGSWAP",
"sampleCount": EDIT_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
{
"predictions": [
{
"bytesBase64Encoded": "BASE64_IMG_BYTES",
"mimeType": "image/png"
},
{
"mimeType": "image/png",
"bytesBase64Encoded": "BASE64_IMG_BYTES"
},
{
"bytesBase64Encoded": "BASE64_IMG_BYTES",
"mimeType": "image/png"
},
{
"bytesBase64Encoded": "BASE64_IMG_BYTES",
"mimeType": "image/png"
}
]
}
定義されたマスク領域で編集する
Imagen にマスクを自動的に検出させるのではなく、置き換えられる領域をマスクすることもできます。
コンソール
Google Cloud コンソールで、[Vertex AI] > [Vertex AI Studio] ページに移動します。
[メディアを生成] をクリックします。
[画像] をクリックします。
[タスク] リストから [Product-background-editing] を選択します。
[モデル] リストから、使用する Imagen モデルを選択します。
[入力画像] で [追加] をクリックし、編集する画像を選択してアップロードします。
[プロンプト] ボックスに、画像を編集する方法を説明するプロンプトを入力します。
次のいずれかの方法でマスクを指定します。
- 独自のマスクをアップロードする:
- パソコンでマスクを作成します。
- [ アップロード ] > [マスクをインポート] をクリックし、アップロードするマスクを選択します。
- マスクを定義する: 編集ツールバーからマスクツール(ボックス、ブラシ、masked_transitions 反転ツール)を選択して、コンテンツを追加する領域を指定します。
- 独自のマスクをアップロードする:
[実行] をクリックします。
Python
インストール
pip install --upgrade google-genai
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Gen AI SDK を使用するための環境変数を設定します。
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_VERTEXAI=True
REST
Imagen API の詳細については、以下をご覧ください。
- メソッド:
endpoints.predict VisionGenerativeModelInstanceVisionGenerativeModelParams-
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- LOCATION: プロジェクトのリージョン。たとえば、
us-central1、europe-west2、asia-northeast3です。使用可能なリージョンの一覧については、Vertex AI の生成 AI のロケーションをご覧ください。リージョン API エンドポイントが使用されている場合、エンドポイントの URL のリージョンによってリクエストの処理場所が決まります。競合がある場合、リソースパスのLOCATIONは無視されます。 - TEXT_PROMPT: 生成する画像をモデルに指示するテキスト プロンプト。生成と編集のどちらでも必須フィールドです。
referenceId: 参照画像の整数 ID。この例では、2 つの参照画像オブジェクトのタイプが異なるため、referenceId値が異なります(1と2)。- B64_BASE_IMAGE: 編集またはアップスケールするベース画像。画像は base64 でエンコードされたバイト文字列として指定する必要があります。サイズの上限: 10 MB。
- B64_MASK_IMAGE: 元の画像の編集でマスクレイヤとして使用する白黒画像。画像は base64 でエンコードされたバイト文字列として指定する必要があります。サイズの上限: 10 MB。
- MASK_DILATION - フロート。このマスクを拡大する画像幅の割合。フォアグラウンド プロダクトが拡張されないようにするために、値を
0.00にすることをおすすめします。最小: 0、最大: 1。デフォルト: 0.03。 - EDIT_STEPS - 整数。ベースモデルのサンプリング ステップ数。商品画像の編集の場合は、
75の手順から始めます。 - EDIT_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": [ { "referenceType": "REFERENCE_TYPE_RAW", "referenceId": 1, "referenceImage": { "bytesBase64Encoded": "B64_BASE_IMAGE" } }, { "referenceType": "REFERENCE_TYPE_MASK", "referenceId": 2, "referenceImage": { "bytesBase64Encoded": "B64_MASK_IMAGE" }, "maskImageConfig": { "maskMode": "MASK_MODE_USER_PROVIDED", "dilation": MASK_DILATION } } ] } ], "parameters": { "editConfig": { "baseSteps": EDIT_STEPS }, "editMode": "EDIT_MODE_BGSWAP", "sampleCount": EDIT_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{ "predictions": [ { "bytesBase64Encoded": "BASE64_IMG_BYTES", "mimeType": "image/png" }, { "mimeType": "image/png", "bytesBase64Encoded": "BASE64_IMG_BYTES" }, { "bytesBase64Encoded": "BASE64_IMG_BYTES", "mimeType": "image/png" }, { "bytesBase64Encoded": "BASE64_IMG_BYTES", "mimeType": "image/png" } ] }
制限事項
マスクが不完全な場合があるため、境界で非常に小さな部分が欠落していると、モデルがフォアグラウンド オブジェクトを完成させようとする可能性があります。まれに、フォアグラウンド オブジェクトがすでに完了している場合、モデルがわずかな拡張を作成することがあります。
回避策は、モデルの出力をセグメント化してから統合することです。回避策を示す Python スニペットの例を次に示します。
blended = Image.composite(out_images[0].resize(image_expanded.size), image_expanded, mask_expanded)
次のステップ
Imagen や Vertex AI のその他の生成 AI プロダクトに関する次の記事を読む。
- Vertex AI で Imagen 3 を使い始めるためのデベロッパー ガイド
- クリエイターとともにクリエイターのために構築された、新しい生成メディアのモデルとツール
- Gemini の新機能: カスタム Gem と Imagen 3 による画像生成の改善
- Google DeepMind: Imagen 3 - 最も高い品質水準の Text-to-Image モデル