参照画像とは、商品のさまざまなビューを含む画像のことです。次の推奨事項が適用されます。
- ファイルの大きさが最大サイズ(20 MB)を超えないようにしてください。
- 商品を論理的に強調し、かつ関連するビジュアル情報が含まれるような視点を考慮してください。
- 欠けている視点を補うような参照画像を作成します。たとえば、右足の靴の画像しかない場合は、その画像ファイルの鏡像バージョンを左足の靴として提供します。
- 解像度の最も高い画像をアップロードします。
- 商品の背景を白にします。
- 背景が透明の PNG は単色の背景に変換します。
画像は、Cloud Storage バケットに保存する必要があります。API キーを使用して画像作成呼び出しを認証する場合は、バケットが公開されている必要があります。サービス アカウントを使用して認証する場合は、そのサービス アカウントにバケットの読み取りアクセス権が必要です。
単一の参照画像の作成
既存の商品に参照画像を追加できます。その後、該当する商品を画像で検索できるようになります。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクト ID
- LOCATION_ID: 有効なロケーション ID。有効なロケーション識別子は
us-west1
、us-east1
、europe-west1
、asia-east1
です。 - PRODUCT_ID: 参照画像に関連付けられている商品の ID。この ID は、商品の作成時にユーザーによってランダムに設定または指定されます。
- CLOUD_STORAGE_IMAGE_URI: Cloud Storage バケット内の有効な画像ファイルへのパス。少なくとも、ファイルに対する読み取り権限が必要です。例:
gs://storage-bucket/filename.jpg
HTTP メソッドと URL:
POST https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products/product-id/referenceImages
リクエストの本文(JSON):
{ "uri": "cloud-storage-image-uri", "boundingPolys": [ { "vertices": [ { "x": X_MIN, "y": Y_MIN }, { "x": X_MAX, "y": Y_MIN }, { "x": X_MAX, "y": Y_MAX }, { "x": X_MIN, "y": Y_MAX } ] } ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products/product-id/referenceImages"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products/product-id/referenceImages" | Select-Object -Expand Content
リクエストが成功すると、サーバーは 200 OK
HTTP ステータス コードと JSON 形式のレスポンスを返します。
出力は次のようになります。このリクエストの例では、画像内の 1 つの boundingPoly
が指定されています。境界ボックスの頂点は正規化されません。頂点の値は実際のピクセル値になります。オリジナル画像に合わせて 0 から 1 の範囲でスケーリングされません。これらの頂点の値は [(33,22),(282,22),(282,278),(33,278)] になります。
{ "name": "projects/project-id/locations/location-id/products/product-id/referenceImages/image-id", "uri": "gs://storage-bucket/filename.jpg", "boundingPolys": [ { "vertices": [ { "x": 33, "y": 22 }, { "x": 282, "y": 22 }, { "x": 282, "y": 278 }, { "x": 33, "y": 278 } ] } ] }
Go
Vision API Product Search 用のクライアント ライブラリをインストールして使用する方法については、Vision API Product Search クライアント ライブラリをご覧ください。 詳細については、Vision API Product Search Go API リファレンス ドキュメントをご覧ください。
Vision API Product Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Vision API Product Search 用のクライアント ライブラリをインストールして使用する方法については、Vision API Product Search クライアント ライブラリをご覧ください。 詳細については、Vision API Product Search Java API リファレンス ドキュメントをご覧ください。
Vision API Product Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Vision API Product Search 用のクライアント ライブラリをインストールして使用する方法については、Vision API Product Search クライアント ライブラリをご覧ください。 詳細については、Vision API Product Search Node.js API リファレンス ドキュメントをご覧ください。
Vision API Product Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Vision API Product Search 用のクライアント ライブラリをインストールして使用する方法については、Vision API Product Search クライアント ライブラリをご覧ください。 詳細については、Vision API Product Search Python API リファレンス ドキュメントをご覧ください。
Vision API Product Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
その他の言語
C#: クライアント ライブラリ ページの C# の設定手順を行ってから、.NET. 用の Vision API Product Search のリファレンス ドキュメントをご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順を行ってから、PHP 用の Vision API Product Search リファレンス ドキュメントをご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順を行ってから、Ruby 用の Vision API Product Search リファレンス ドキュメントをご覧ください。
一括インポートで複数の参照画像を作成する
商品セットと複数の商品を作成するときに参照画像も作成できます。
参照画像を一括で作成するには、import
メソッドに、CSV ファイルが置かれている Cloud Storage 上の場所を渡します。CSV ファイルとそれが参照する画像の両方を Cloud Storage バケットに入れる必要があります。
API キーで一括インポート呼び出しの認証を行う場合、この CSV ソースファイルを一般公開にする必要があります。
サービス アカウントで認証を行う場合は、そのサービス アカウントに CSV ソースファイルに対する読み取りアクセス権が必要です。
CSV 形式
image-uri,[image-id],product-set-id,product-id,product-category,[product-display-name],[label(s)],[bounding-poly]
CSV 形式の詳細については、入門トピックの CSV 形式をご覧ください。
一括作成リクエスト
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクト ID
- LOCATION_ID: 有効なロケーション ID。有効なロケーション識別子は
us-west1
、us-east1
、europe-west1
、asia-east1
です。 - STORAGE_PATH: 入力 CSV ファイルが保存される Cloud Storage バケット / ディレクトリ。リクエスト元のユーザーには、少なくともバケットに対する読み取り権限が必要です。
HTTP メソッドと URL:
POST https://vision.googleapis.com/v1/projects/project-id/locations/location-id/productSets:import
リクエストの本文(JSON):
{ "inputConfig": { "gcsSource": { "csvFileUri": "storage-path" } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://vision.googleapis.com/v1/projects/project-id/locations/location-id/productSets:import"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/projects/project-id/locations/location-id/productSets:import" | Select-Object -Expand Content
出力は次のようになります。タスクのステータスは、オペレーション ID(この場合は f10f34e32c40a710
)を使用して取得できます。例については、オペレーションのステータスの取得をご覧ください。
{ "name": "projects/project-id/locations/location-id/operations/f10f34e32c40a710" }
長時間実行オペレーションが完了すると、インポートのオペレーションの詳細を取得できます。レスポンスは次のようになります。
{ "name": "locations/location-id/operations/f10f34e32c40a710", "metadata": { "@type": "type.googleapis.com/google.cloud.vision.v1.BatchOperationMetadata", "state": "SUCCESSFUL", "submitTime": "2019-12-06T21:16:04.476466873Z", "endTime": "2019-12-06T21:16:40.594258084Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.vision.v1.ImportProductSetsResponse", "referenceImages": [ { "name": "projects/project-id/locations/location-id/products/product_id0/referenceImages/image0", "uri": "gs://my-storage-bucket/img_039.jpg" }, { "name": "projects/project-id/locations/location-id/products/product_id1/referenceImages/image1", "uri": "gs://my-storage-bucket/img_105.jpg" }, { "name": "projects/project-id/locations/location-id/products/product_id2/referenceImages/image2", "uri": "gs://my-storage-bucket/img_224.jpg" }, { "name": "projects/project-id/locations/location-id/products/product_id3/referenceImages/image3", "uri": "gs://my-storage-bucket/img_385.jpg" } ], "statuses": [ {}, {}, {}, {} ] } }
Go
Vision API Product Search 用のクライアント ライブラリをインストールして使用する方法については、Vision API Product Search クライアント ライブラリをご覧ください。 詳細については、Vision API Product Search Go API リファレンス ドキュメントをご覧ください。
Vision API Product Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Vision API Product Search 用のクライアント ライブラリをインストールして使用する方法については、Vision API Product Search クライアント ライブラリをご覧ください。 詳細については、Vision API Product Search Java API リファレンス ドキュメントをご覧ください。
Vision API Product Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Vision API Product Search 用のクライアント ライブラリをインストールして使用する方法については、Vision API Product Search クライアント ライブラリをご覧ください。 詳細については、Vision API Product Search Node.js API リファレンス ドキュメントをご覧ください。
Vision API Product Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Vision API Product Search 用のクライアント ライブラリをインストールして使用する方法については、Vision API Product Search クライアント ライブラリをご覧ください。 詳細については、Vision API Product Search Python API リファレンス ドキュメントをご覧ください。
Vision API Product Search に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
その他の言語
C#: クライアント ライブラリ ページの C# の設定手順を行ってから、.NET. 用の Vision API Product Search のリファレンス ドキュメントをご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順を行ってから、PHP 用の Vision API Product Search リファレンス ドキュメントをご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順を行ってから、Ruby 用の Vision API Product Search リファレンス ドキュメントをご覧ください。
インデックス登録
商品の Product Search インデックスは、約 30 分ごとに更新されます。画像が追加または削除されると、その変更はインデックスが次に更新されるまで Product Search のレスポンスに反映されません。
インデックス登録が正常に完了したことを確認するには、商品セットの indexTime
フィールドを確認します。