このチュートリアルでは、商品の参照イメージが設定された商品のグループが含まれる商品セットを作成する方法を説明します。チュートリアルでは、オンラインで個別にインポートを行い、商品セットを作成する方法について説明します。商品セットにインデックスが作成されると、Vision API Product Search を使用して商品セットをクエリできます。
このチュートリアルの学習内容は次のとおりです。
- オンラインで個別にインポートを行い、商品セットを作成する
- 個別の商品を作成する
- 商品セットに商品を追加する
- 商品を更新する
- 参照画像を作成する
- 類似商品を検索する
始める前に
このチュートリアルを始める前に、適切なクライアント ライブラリをインストールし、プロジェクトで課金と API を有効にする必要があります。また、認証の設定を適切に行う必要があります。
ライブラリをインポートする
Vision API Product Search を使用するには、クライアント ライブラリのダウンロードとインストールが完了した後で次のモジュールをインポートします。
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 リファレンス ドキュメントをご覧ください。
アプリケーションの実行
ステップ 1: 商品カタログを作成する
ユーザーは 2 通りの方法で商品カタログを作成できます。その 1 つは CSV ファイルを使用する一括インポートで、1 回の API 呼び出しで商品カタログ全体をインポートできます。もう 1 つはオンライン インポートで、この方法では商品セットの制御ができ、インポートごとに 1 つのリソースまたは関係を管理できます。これは基本的に商品セット、商品、参照画像の個別作成に相当します。オンライン インポートでは、一括インポートによってすでに作成されている商品カタログの段階的な更新もできます。
このチュートリアルでは、オンライン インポートを使用します。CSV を使用したバッチインポートの例については、クイックスタートをご覧ください。
オンライン(個別)インポート
1. 商品セットを作成する
空の商品セットを作成します。これは商品のグループを格納するためのシンプルなコンテナです。
リクエスト
create_product_set()
メソッドを使用して次のリクエストを実行し、空の商品セットを作成して「PS_CLOTH-SHOE_070318」と名前を付けます。商品セット ID と表示名を引数として渡します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクト ID。
- LOCATION_ID: 有効なロケーション ID。有効なロケーション ID は
us-west1
、us-east1
、europe-west1
、asia-east1
です。 - DISPLAY_NAME: 選択した文字列の表示名。
HTTP メソッドと URL:
POST https://vision.googleapis.com/v1/projects/project-id/locations/location-id/productSets
リクエストの本文(JSON):
{ "displayName": "display-name" }
リクエストを送信するには、次のいずれかのオプションを選択します。
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"
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" | Select-Object -Expand Content
リクエストが成功すると、サーバーは 200 OK
HTTP ステータス コードと JSON 形式のレスポンスを返します。
出力は次のようになります。商品セット ID(この場合は b6d809615b6dd675
)を使用して、商品セットに対する他の操作を行えます。
{ "name": "projects/project-id/locations/location-id/productSets/b6d809615b6dd675", "displayName": "new-product-set" }
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 set name: projects/prj-prod-search-tutorials/locations/us-east1/productSets/PS_CLOTH-SHOE_070318 Product set id: PS_CLOTH-SHOE_070318 Product set display name: CLOTH-SHOE
2. 商品を作成する
商品セットを作成したら、次のステップとして商品を作成します。次のリクエストを実行して商品を作成します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクト ID。
- LOCATION_ID: 有効なロケーション ID。有効なロケーション ID は
us-west1
、us-east1
、europe-west1
、asia-east1
です。 - DISPLAY_NAME: 選択した文字列の表示名。
- PRODUCT_DESCRIPTION: 選択した文字列の説明。
- product-category: 有効な商品カテゴリ。現在使用可能な商品カテゴリは、
homegoods-v2
、apparel-v2
、toys-v2
、packagedgoods-v1
、general-v1
です。 productLabels
: 商品に関連付けられた 1 つ以上の Key-Value ペア。各 KEY_STRING には VALUE_STRING を関連付ける必要があります。
HTTP メソッドと URL:
POST https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products
リクエストの本文(JSON):
{ "displayName": "display-name", "description": "product-description", "productCategory": "product-category", "productLabels": [ { "key": "key-string", "value": "value-string" } ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
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"
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" | Select-Object -Expand Content
リクエスト本文の例:
{ "displayName": "sample-product-1234", "description": "Athletic shorts", "productCategory": "apparel-v2", "productLabels": [ { "key": "style", "value": "womens" }, { "key": "color", "value": "blue" } ] }
リクエストが成功すると、サーバーは 200 OK
HTTP ステータス コードと JSON 形式のレスポンスを返します。
出力は次のようになります。商品 ID(この場合は 37b9811d308c4e42
)を使用して、商品に対して他のオペレーションを実行できます。
{ "name": "projects/project-id/locations/location-id/products/37b9811d308c4e42", "displayName": "sample-product-456", "description": "Athletic shorts", "productCategory": "apparel-v2", "productLabels": [ { "key": "style", "value": "womens" }, { "key": "color", "value": "blue" } ] }
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 name: projects/prj-prod-search-tutorials/locations/us-east1/products/P_CLOTH-SHOE_46903668_070318 Product id: P_CLOTH-SHOE_46903668_070318 Product display name: Blue Dress Product category: apparel Product description: Short sleeved and 1950s style satin dress Product labels: Product label 1: key: style value: women Product label 2: key: category value: dress Product label 3: key: color value: dark-blue
3. 商品セットに商品を追加する
商品セットと商品が作成されたら、商品セットに商品を追加できます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクト ID。
- LOCATION_ID: 有効なロケーション ID。有効なロケーション ID は
us-west1
、us-east1
、europe-west1
、asia-east1
です。 - PRODUCT_SET_ID: 操作を実行する商品セットの ID。
- PRODUCT_NAME: 商品の完全なリソース名。形式:
projects/PROJECT_ID/locations/LOCATION_ID/products/PRODUCT_ID
HTTP メソッドと URL:
POST https://vision.googleapis.com/v1/projects/project-id/locations/location-id/productSets/product-set-id:addProduct
リクエストの本文(JSON):
{ "product": "product-name" }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/product-set-id:addProduct"
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/product-set-id:addProduct" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{}
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 added to product set.
4.商品を更新する
作成した商品や商品セットを更新する必要がある場合は、更新用のメソッドを使用できます。次の例では、ラベルを変更して商品の更新を行います。
コマンドライン
PATCH
リクエストを送信すると、以前のフィールドとその値がすべて削除されます。ただし、productCategory
フィールドは不変です。PATCH
更新リクエストを実行する際に、必要なフィールドと値をすべて送信してください。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクト ID。
- LOCATION_ID: 有効なロケーション ID。有効なロケーション ID は
us-west1
、us-east1
、europe-west1
、asia-east1
です。 - PRODUCT_ID: 参照画像に関連付けられている商品の ID。この ID は、商品の作成時にユーザーによってランダムに設定または指定されます。
- display-name: 選択した文字列の表示名。これは、前の表示名または更新された値と同じになります。
- description: 選択した文字列の説明。これは、前の表示名または更新された値と同じになります。不要な場合は、
description
フィールドと値を省略します。 productLabels
: 商品に関連付けられた 1 つ以上の Key-Value ペア。各 KEY_STRING には VALUE_STRING を関連付ける必要があります。
HTTP メソッドと URL:
PATCH https://vision.googleapis.com/v1/projects/project-id/locations/location-id/products/product-id
リクエストの本文(JSON):
{ "displayName": "display-name", "description": "description", "productLabels": [ { "key": "key-string", "value": "value-string" }, { "key": "key-string", "value": "value-string" } ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X PATCH \
-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"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method PATCH `
-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" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/project-id/locations/location-id/products/product-id", "displayName": "display-name", "description": "description", "productCategory": "apparel-v2", "productLabels": [ { "key": "style", "value": "womens" }, { "key": "onSale", "value": "true" } ] }
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 name: projects/prj-prod-search-tutorials/locations/us-east1/products/P_CLOTH-SHOE_46903668_070318 Product id: P_CLOTH-SHOE_46903668_070318 Product display name: Blue Dress Updated product labels: Product label 1: key: style value: women Product label 2: key: category value: dress Product label 3: key: color value: blue Product description: Short sleeved and 1950s style satin dress
5. 商品の参照画像を作成する
個別の商品の参照画像を作成すると、画像にインデックスが作成された後に Vision API Product Search でその画像を使用して商品を検索できます。特に一致の品質の向上が必要な場合は、1 つの商品に複数の参照画像を設定できます。
商品にはいつでも新しい参照画像を追加できます。
参照画像を作成する際は、必要に応じて境界ポリゴン座標を指定できます。境界ポリゴン座標は、参照画像の対象領域を特定します。たとえば、ジャケットの商品の参照画像を作成した場合に、境界ポリゴン引数でジャケットの座標を指定すると、システムで商品の一致を検索するときにジャケットのみが考慮されます。注: クエリ時に API でサポートされる境界ポリゴンは 1 つのみですが、インデックス作成時には複数の境界ポリゴンを指定できます。
画像の境界ポリゴン座標の取得には、Vision API のオブジェクト ローカライズを使用すると便利です。オブジェクト ローカライズの詳細については、複数のオブジェクトを検出するをご覧ください。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクト ID。
- LOCATION_ID: 有効なロケーション 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 リファレンス ドキュメントをご覧ください。
レスポンス
Reference image name: projects/prj-prod-search-tutorials/locations/us-east1/products/P_CLOTH-SHOE_46903668_070318/referenceImages/I_469a896b70ba11e8be97d20059124800_070418 Reference image id: I_469a896b70ba11e8be97d20059124800_070418 Reference image uri: gs://product-search-tutorial/dress-shoe-dataset/469a896b70ba11e8be97d20059124800.jpg Reference image bounding polygons: vertices { x: 80 y: 50 } vertices { x: 80 y: 660 } vertices { x: 300 y: 50 } vertices { x: 430 y: 660 }
ステップ 2: 一致する商品を検索する
このインターフェースでは、新しい画像を入力として受け取り、最も一致する商品を検索することで、作成した商品カタログをクエリできます。
参照画像の作成と同様、一致画像の検索時は必要に応じて境界ポリゴン座標を指定できます。境界ポリゴンは、一致を検索するソース画像の対象領域を特定します。たとえば、ドレスと財布の両方が含まれるソース画像でドレスの一致のみを検索する必要があるとします。このような場合にドレスのみが含まれる画像の領域の境界ポリゴン座標を特定できます。境界ポリゴンが指定されていない場合、デフォルトでは、API によって最大の境界ポリゴンが判定され、それに対するクエリが自動的に行われます。
画像の境界ポリゴン座標の取得には、Vision API のオブジェクト ローカライズを使用すると便利です。オブジェクト ローカライズの詳細については、複数のオブジェクトを検出するをご覧ください。たとえば、画像ボックス全体の境界ポリゴン [(0, 0), (0, 1), (1, 1), (1, 0)] を指定すると、明示的に画像全体に対するクエリを行うことができます。
リクエストは、画像と最も一致する商品、スコア、一致画像を含む API レスポンスを返します。この画像は、最高信頼値を使用して返されます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- BASE64_ENCODED_IMAGE: バイナリ画像データの base64 表現(ASCII 文字列)。これは次のような文字列になります。
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- PROJECT_ID: Google Cloud プロジェクト ID。
- LOCATION_ID: 有効なロケーション ID。有効なロケーション ID は
us-west1
、us-east1
、europe-west1
、asia-east1
です。 - PRODUCT_SET_ID: 操作を実行する商品セットの ID。
フィールド固有の考慮事項:
features.maxResults
- 返される結果の最大件数です。imageContext.productCategories
- 検索を実行する商品カテゴリです。現在、商品カテゴリは、ホームグッズ、アパレル、玩具、グッズ、総合から 1 つのみ指定できます。imageContext.filter
- (省略可)商品ラベルに対する Key-Value の単一または複数のフィルタリング式です。フォーマット: 「key
=value
」。フィルタリングする Key-Value ペアは、次のように AND 式または OR 式を使ってリンクできます。「color
=blue
ANDstyle
=mens
」、または「color
=blue
ORcolor
=black
」。OR 式を使用する場合、式の鍵がすべて同じである必要があります。
HTTP メソッドと URL:
POST https://vision.googleapis.com/v1/images:annotate
リクエストの本文(JSON):
{ "requests": [ { "image": { "content": base64-encoded-image }, "features": [ { "type": "PRODUCT_SEARCH", "maxResults": 5 } ], "imageContext": { "productSearchParams": { "productSet": "projects/project-id/locations/location-id/productSets/product-set-id", "productCategories": [ "apparel" ], "filter": "style = womens" } } } ] }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/images:annotate"
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/images:annotate" | Select-Object -Expand Content
リクエストが成功すると、サーバーは 200 OK
HTTP ステータス コードと JSON 形式のレスポンスを返します。
レスポンスの JSON は次のようになります。
productSearchResults
- 画像全体に一致する商品のリストが含まれます。サンプルのレスポンスで、一致する商品は product_id65、product_id35、product_id34、product_id62、product_id32 です。productGroupedResults
- 境界ボックスの座標と、画像で識別されたそれぞれの商品に一致するアイテムが含まれます。次のレスポンスでは、識別された商品は 1 つのみで、続いてサンプルの商品セットと一致する商品(product_id65、product_id35、product_id34、product_id93、product_id62)が表示されます。
2 つの結果のデータの種類には重複がありますが、レスポンスが異なる(たとえば product_id32 や product_id93 など)場合もあります。
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 リファレンス ドキュメントをご覧ください。
アパレルのレスポンス例
Search Image: D:/product/final/images-20180618T073733Z-01/images/469355b570ba11e88ff2d20059124800.jpg
Similar product information: Product id: 46930b6b Product display name: Evening gown Product description: Blue evening gown in 1940s style Product category: apparel style: women category: dress color: blue
ラベルを使用して検索する
次の検索例では、色を基準とするフィルタが含まれています。
リクエスト
検索をリクエストするには、get_similar_products_file()
または get_similar_products_uri()
メソッドを使用して次のリクエストを実行します。商品セット ID、ローカルの画像ファイルのパス、フィルタが引数として渡されます。この入力画像は resources/input/ にも格納されています。
Python
python product_search.py get_similar_products_file "12000002" "D:/product/final/images-20180618T073733Z-001/images/469355b570ba11e88ff2d20059124800.jpg" "color=white"
レスポンス
Search Image: D:/product/final/images-20180618T073733Z-001/images/469355b570ba11e88ff2d20059124800.jpg
Similar product information: Product id: p569d4e7a1 Product display name: Wedding Dress Product description: Elegant Wedding Dress for women Product category: apparel style: women category: dress color: white