アウトペイントを使用して画像のコンテンツを拡大する

このページでは、アウトペインティングを使用して、より大きな領域または異なる寸法の領域に画像のコンテンツを拡大する方法について説明します。

次のモデルはアウトペインティングをサポートしています。

アウトペインティングの例

アウトペインティングはマスクベースの編集方法で、サイズの大きいマスク キャンバスやサイズの異なるマスク キャンバスに合わせてベース画像のコンテンツを拡大します。

サンプルのベース画像
マスク画像(ターゲット)のサイズに合わせてパディングが設定された元の画像。
画像の出典: Kari Shea、Unsplash より
サンプルのマスク画像
元の画像サイズ(ピクセル)と位置をマークして、ターゲット出力のサイズで画像をマスク。
サンプルの出力画像
アウトペインティングの出力画像(プロンプトなし)。

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

始める前に

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオで Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  8. 環境の認証を設定します。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールします。

      外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

    詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

画像のコンテンツを拡大する

次のコードサンプルを使用して、既存の画像のコンテンツを拡大します。

コンソール

  1. Google Cloud コンソールで、[Vertex AI] > [Vertex AI Studio] ページに移動します。

    Vertex AI Studio に移動

  2. [メディアを生成] をクリックします。

  3. [画像] をクリックします。

  4. [タスク] リストから [アウトペイント] を選択します。

  5. [モデル] リストから、使用する Imagen モデルを選択します。

  6. [入力画像] で [追加] をクリックし、編集する画像を選択してアップロードします。

  7. [プロンプト] ボックスに、画像の編集方法を説明するプロンプトを入力します。

  8. アスペクト比メニューで、アスペクト比を選択します。

    • crop_square スクエア
    • crop_16_9 16:9
    • crop_9_16 9:16
    • crop_landscape 4:3
    • crop_portrait 3:4
    • 全画面表示 カスタム
  9. 編集ツールバーで、画像の配置を選択します。

    • 左揃え:
    • 水平方向を中央揃え:
    • 右揃え:
    • 上揃え:
    • 垂直方向を中央揃え:
    • 下揃え:
  10. [実行] をクリックします。

REST

Imagen API の詳細については、以下をご覧ください。

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

  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
  • LOCATION: プロジェクトのリージョン。たとえば、us-central1、europe-west2、asia-northeast3 です。使用可能なリージョンの一覧については、Vertex AI の生成 AI のロケーションをご覧ください。リージョン API エンドポイントが使用されると、エンドポイントの URL のリージョンによってリクエストの処理場所が決まります。競合する場合は、リソースパスの LOCATION は無視されます。
  • prompt: 画像のアウトペインティングの場合は、空の文字列を指定して、編集した画像を作成できます。プロンプトを指定する場合は、最適な結果を得られるようにするために、マスクされた領域の説明を使用してください。たとえば、「青い空」ではなく「青い空を挿入」とします。
  • referenceType: ReferenceImage は、画像編集に追加のコンテキストを提供する画像です。編集のユースケースでは、通常の RGB の元の参照画像(REFERENCE_TYPE_RAW)が必要です。1 つのリクエストに存在できる元の参照画像は 1 つまでです。出力画像の高さと幅は、元の参照画像と同じです。マスク編集のユースケースでは、マスク参照画像(REFERENCE_TYPE_MASK)が必要です。元の参照画像が存在する場合、マスク画像の幅と高さは元の参照画像と同じにする必要があります。マスク参照画像が空で、maskMode が MASK_MODE_USER_PROVIDED に設定されていない場合、マスクは元の参照画像に基づいて計算されます。
  • B64_BASE_IMAGE: 編集またはアップスケールするベース画像。画像は base64 でエンコードされたバイト文字列として指定する必要があります。サイズの上限: 10 MB。
  • B64_OUTPAINTING_MASK: 元の画像の編集でマスクレイヤとして使用する白黒画像。マスクは入力画像と同じ解像度にする必要があります。出力画像の解像度は入力画像と同じになります。このマスク画像は、base64 でエンコードされたバイト文字列として指定する必要があります。サイズの上限: 10 MB。
  • MASK_DILATION - フロート。このマスクを拡大する画像幅の割合。アウトペインティングの場合は、0.03 の値をおすすめします。"dilation": 0.0 を設定すると、拡張ポイントに目立つ枠線が表示される場合や、白い枠線効果が発生する場合があります。
  • EDIT_STEPS - 整数。ベースモデルのサンプリング ステップ数。アウトペインティングの場合は、35 の手順から始めます。品質が要件を満たしていない場合は、ステップを増やします。
  • 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": "",
      "referenceImages": [
        {
          "referenceType": "REFERENCE_TYPE_RAW",
          "referenceId": 1,
          "referenceImage": {
            "bytesBase64Encoded": "B64_BASE_IMAGE"
          }
        },
        {
          "referenceType": "REFERENCE_TYPE_MASK",
          "referenceId": 2,
          "referenceImage": {
            "bytesBase64Encoded": "B64_OUTPAINTING_MASK"
          },
          "maskImageConfig": {
            "maskMode": "MASK_MODE_USER_PROVIDED",
            "dilation": MASK_DILATION
          }
        }
      ]
    }
  ],
  "parameters": {
    "editConfig": {
      "baseSteps": EDIT_STEPS
    },
    "editMode": "EDIT_MODE_OUTPAINT",
    "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
次のサンプル レスポンスは、"sampleCount": 2 を含むリクエストに対するものです。レスポンスは、生成された画像のバイトを base64 でエンコードした 2 つの予測オブジェクトを返します。
{
  "predictions": [
    {
      "bytesBase64Encoded": "BASE64_IMG_BYTES",
      "mimeType": "image/png"
    },
    {
      "mimeType": "image/png",
      "bytesBase64Encoded": "BASE64_IMG_BYTES"
    }
  ]
}

制限事項

アウトペイントされた画像が元の画像のサイズの 200% 以上に拡大されると、モデルによっては詳細が歪んで生成されることがあります。ベスト プラクティスとして、アウトペイントされた画像でアルファ ブレンディングを実行する後処理ステップを追加することをおすすめします。

次のコードは後処理の例です。

parameters = {
   "editConfig": {
       "outpaintingConfig": {
         "blendingMode": "alpha-blending",
         "blendingFactor": 0.01,
       },
   },
}

次のステップ

Imagen や Vertex AI のその他の生成 AI プロダクトに関する次の記事を読む。