Produktgruppe erstellen und Produkte suchen
In dieser Kurzanleitung wird erläutert, wie Sie drei Arten von Ressourcen für die Vision API-Produktsuche erstellen und verwenden: eine Produktgruppe, die eine Gruppe von Produkten enthält, und Referenzbilder, die diesen Produkten zugeordnet sind.
In dieser Kurzanleitung erstellen Sie eine Produktgruppe, Produkte und deren Referenzbilder durch Batch-Import in einem einzigen Schritt.
Nachdem Sie die Produktgruppe indexiert haben, können Sie sie über die Vision API-Produktsuche abfragen.
In dieser Kurzanleitung werden folgende Verfahren erläutert:
- CSV- und Bulk-Import zum Erstellen einer Produktgruppe, von Produkten und Referenzbildern verwenden
- Anfrage an die Vision API-Produktsuche mit einem in einem Cloud Storage-Bucket gespeicherten Bild stellen
Vorbereitung
Richten Sie wie unten beschrieben das Projekt ein, falls Sie dies noch nicht getan haben.
Projekt einrichten
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vision API:
gcloud services enable vision.googleapis.com
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/storage.objectViewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vision API:
gcloud services enable vision.googleapis.com
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/storage.objectViewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
- Replace
Umgebungsvariablen festlegen
Legen Sie die folgenden Umgebungsvariablen fest, um die Ausführung der curl
-Beispiele in dieser Kurzanleitung zu vereinfachen. Dabei gilt:
- PROJECT_ID ist die ID des Google Cloud-Projekts.
- LOCATION_ID ist der Google Cloud-Speicherort, in dem die Anleitung ausgeführt wird, z. B.
us-east1
. Gültige Standort-IDs sindus-west1
,us-east1
,europe-west1
undasia-east1
.
Dataset verwenden
In dieser Kurzanleitung verwenden Sie ein Dataset von ca. 100 Einträgen der Produktkategorie apparel-v2
. Dieses öffentlich verfügbare Dataset befindet sich in einem öffentlichen Cloud Storage-Bucket unter:
Das CSV-Format lautet:
gs://cloud-ai-vision-data/product-search-tutorial/images/filename1.jpg,image0,product_set0,product_id0,apparel-v2,,"style=women,category=shoe", gs://cloud-ai-vision-data/product-search-tutorial/images/filename2.jpg,image1,product_set0,product_id1,apparel-v2,,"style=men,category=shoe", gs://cloud-ai-vision-data/product-search-tutorial/images/filename3.jpg,image2,product_set0,product_id2,apparel-v2,,"style=women,category=dress",
Bulk-Import verwenden, um eine Produktgruppe, Produkte und Referenzbilder zu erstellen
Verwenden Sie den folgenden curl
-Befehl, um eine neue Produktgruppe mit Produkten und Referenzbildern zu erstellen. Diese Gruppe heißt product_set0
, ein in der Import-CSV-Datei deklarierter Wert.
Erstellen Sie zuerst eine JSON-Anfragedatei namens import_request.json
und speichern Sie sie in Ihrem aktuellen Arbeitsverzeichnis.
import_request.json
{ "inputConfig": { "gcsSource": { "csvFileUri": "gs://cloud-samples-data/vision/product_search/product_catalog.csv" } } }
Senden Sie nach dem Erstellen der JSON-Anfragedatei die Anfrage:
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 @import_request.json \ https://vision.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/productSets:import
Eine erfolgreiche Antwort enthält ein lang laufendes Vorgangsobjekt:
{ "name": "locations/LOCATION_ID/operations/0a0aec86192599fa" }
Die Antwort enthält auch eine relative Vorgangs-ID (z. B. 0a0aec86192599fa
), mit der der Status des Vorgangs abgerufen werden kann.
Status des Importvorgangs abrufen
Sie können die vom Importvorgang zurückgegebene operation-id verwenden, um den Status des Bulk-Importvorgangs zu prüfen:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ https://vision.googleapis.com/v1/locations/LOCATION_ID/operations/OPERATION_ID
Eine erfolgreiche Antwort sieht so aus:
{ "name": "locations/LOCATION_ID/operations/0a0aec86192599fb", "metadata": { "@type": "type.googleapis.com/google.cloud.vision.v1.BatchOperationMetadata", "state": "SUCCESSFUL", "submitTime": "2018-11-30T03:11:04.808114024Z", "endTime": "2018-11-30T03:11:38.624444324Z" }, "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://cloud-ai-vision-data/product-search-tutorial/images/46a0cbcf70ba11e89399d20059124800.jpg" }, { "name": "projects/PROJECT_ID/locations/LOCATION_ID/products/product_id1/referenceImages/image1", "uri": "gs://cloud-ai-vision-data/product-search-tutorial/images/46a1aea370ba11e888d4d20059124800.jpg" }, ... { "name": "projects/PROJECT_ID/locations/LOCATION_ID/products/product_id93/referenceImages/image93", "uri": "gs://cloud-ai-vision-data/product-search-tutorial/images/4697319970ba11e8a7bfd20059124800.jpg" }, { "name": "projects/PROJECT_ID/locations/LOCATION_ID/products/product_id94/referenceImages/image94", "uri": "gs://cloud-ai-vision-data/product-search-tutorial/images/4698596370ba11e8bf6ad20059124800.jpg" } ], "statuses": [ {}, {}, [...] {}, {} ] } }
Indexierung
Der Index für die Produktsuche wird alle 30 Minuten aktualisiert. Wenn Bilder hinzugefügt oder gelöscht werden, spiegelt sich die Änderung erst nach der nächsten Aktualisierung des Index in den Antworten der Produktsuche wider.
Prüfen Sie das Feld indexTime
einer Produktgruppe, ob die Indexierung erfolgreich abgeschlossen wurde.
Produktgruppen auflisten und Indexierung prüfen
Sie können alle Produktgruppen auflisten lassen und das Feld indexTime
verwenden, um zu prüfen, ob die Indexierung erfolgreich abgeschlossen wurde:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ https://vision.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/productSets
Bei einer erfolgreichen Antwort werden alle Ihre Produktgruppen, einschließlich einer Produktgruppen-ID (z. B. product_set0
), sowie das Feld indexTime
aufgelistet. Dieses Feld gibt an, wann die Indexierung abgeschlossen wurde:
{ "productSets": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/productSets/product_set0", "displayName": " ", "indexTime": "2019-11-30T18:33:40.093508652Z", "indexError": {} } ] }
Produkte auflisten
Sie können die von der Liste der Produktgruppen zurückgegebene PRODUCT_SET_ID verwenden, um alle Produkte in Ihrer Produktgruppe aufzulisten:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ https://vision.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/productSets/PRODUCT_SET_ID/products?pageSize=15
Eine erfolgreiche Antwort listet die Produktdetails auf.
In dieser Anfrage verwenden Sie den optionalen Anfrageparameter pageSize
, um die Ergebnisliste auf 15 Produkte zu begrenzen. Das nextPageToken
in der Antwort gibt außerdem an, dass weitere Produkte aufgelistet werden können. Sie können das aufgelistete Token verwenden, um weitere Ergebnisse abzurufen. Weitere Informationen zur Verwendung eines pageToken
finden Sie unter Ressourcen abrufen und auflisten.
{ "products": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/products/product_id0", "displayName": " ", "productCategory": "apparel", "productLabels": [ { "key": "style", "value": "women" }, { "key": "category", "value": "shoe" } ] }, { "name": "projects/PROJECT_ID/locations/LOCATION_ID/products/product_id1", "displayName": " ", "productCategory": "apparel", "productLabels": [ { "key": "style", "value": "men" }, { "key": "category", "value": "shoe" } ] }, ... { "name": "projects/PROJECT_ID/locations/LOCATION_ID/products/product_id21", "displayName": " ", "productCategory": "apparel", "productLabels": [ { "key": "style", "value": "women" }, { "key": "category", "value": "dress" } ] } ], "nextPageToken": "1LqhSgZfM_uWKOxvog" }
Passende Produkte mit der Vision API-Produktsuche finden
Nach Abschluss der Indexierung können Sie nach Produkten suchen, die mit einem Beispielbild übereinstimmen. In dieser Kurzanleitung verwenden Sie ein Bild, das in einem Google Cloud Storage-Bucket gespeichert ist, wie das folgende Bild.
Suche mit einem Remote-Bild
Verwenden Sie die folgende Anfrage für die Suche mit dem Bild, das in einem öffentlichen Cloud Storage-Bucket gespeichert ist.
Erstellen Sie zuerst eine JSON-Anfragedatei namens search_request.json
und speichern Sie sie in Ihrem aktuellen Arbeitsverzeichnis. Ändern Sie die folgenden Werte in der JSON-Anfrage, sodass sie mit den Informationen Ihres Projekts übereinstimmen:
- PROJECT_ID
- LOCATION_ID
- PRODUCT_SET_ID
search_request.json
{ "requests": [ { "image": { "source": { "gcsImageUri": "gs://cloud-ai-vision-data/product-search-tutorial/images/468f782e70ba11e8941fd20059124800.jpg" } }, "features": [ { "type": "PRODUCT_SEARCH" } ], "imageContext": { "productSearchParams": { "productSet": "projects/PROJECT_ID/locations/LOCATION_ID/productSets/PRODUCT_SET_ID", "productCategories": [ "apparel-v2" ], "filter": "style=womens OR style=women" } } } ] }
Senden Sie nach dem Erstellen der JSON-Anfragedatei die Anfrage:
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 @search_request.json \ https://vision.googleapis.com/v1/images:annotate
Eine erfolgreiche Anfrage gibt eine Liste passender Produkte zurück, die durch ihre Produkt-ID angegeben wird. Diese Ergebnisse werden weiter nach einzelnen Produkten aufgegliedert, die durch Begrenzungsrahmen identifiziert werden, wenn sich in einem Bild mehrere Produkte befinden.
Ein Beispiel für die Einzelprodukterkennung und Mehrfacherkennung von Produkten in einem Bild finden Sie unter Suchantworten und Mehrfacherkennung verstehen.
Das Feld score
wird ebenfalls zurückgegeben. Dieses Feld gibt an, wie hoch die Konfidenz ist, dass der Artikel mit dem bereitgestellten Bild übereinstimmt. Die Skala reicht von 0 (keine Konfidenz) bis 1 (hohe Konfidenz).
Das Feld indexTime
gibt an, welche Version des Indexes durchsucht wird. Später vorgenommene Bildänderungen werden in den Ergebnissen nicht angezeigt.
Glückwunsch! Sie haben Ihre erste images.annotate
-Anfrage an den Produktsuchdienst der Vision API gesendet.
Bereinigen
-
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke
-
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Nächste Schritte
- Eine Vision API-Clientbibliothek für die Vision API-Produktsuche in der Sprache Ihrer Wahl verwenden
- Leitfäden zu Vorgehensweisen durcharbeiten
- Anleitung durcharbeiten