Creare un set di prodotti e cercare prodotti
Questa guida rapida illustra come creare e utilizzare i tre tipi di risorse di Product Search dell'API Vision: un set di prodotti contenente un gruppo di prodotti e le immagini di riferimento associate ai prodotti.
In questa guida rapida creerai un set di prodotti, prodotti e relative immagini di riferimento in un singolo passaggio tramite importazione in gruppo.
Dopo che il set di prodotti è stato indicizzato, puoi eseguire query sul set di prodotti utilizzando Product Search dell'API Vision.
Questa guida rapida illustra i seguenti passaggi:
- Utilizzare un file CSV e l'importazione collettiva per creare un set di prodotti, prodotti e immagini di riferimento.
- Effettuare una richiesta alla Product Search dell'API Vision con un'immagine archiviata in un bucket Cloud Storage.
Prima di iniziare
Se non lo hai già fatto, configura il progetto come spiegato di seguito.
Configura il progetto
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
-
Crea o seleziona un progetto Google Cloud.
-
Creare un progetto Cloud:
gcloud projects create PROJECT_ID
-
Seleziona il progetto Cloud che hai creato:
gcloud config set project PROJECT_ID
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
-
Attiva Vision API.
gcloud services enable vision.googleapis.com
-
Concedi i ruoli al tuo Account Google. Esegui il comando seguente una volta per ciascuno dei seguenti ruoli IAM:
roles/storage.objectViewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Sostituisci
PROJECT_ID
con l'ID progetto. - Sostituisci
EMAIL_ADDRESS
con il tuo indirizzo email. - Sostituisci
ROLE
con ogni ruolo.
- Sostituisci
- Installa Google Cloud CLI.
-
Per inizializzare l'interfaccia a riga di comando gcloud, esegui il comando seguente:
gcloud init
-
Crea o seleziona un progetto Google Cloud.
-
Creare un progetto Cloud:
gcloud projects create PROJECT_ID
-
Seleziona il progetto Cloud che hai creato:
gcloud config set project PROJECT_ID
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.
-
Attiva Vision API.
gcloud services enable vision.googleapis.com
-
Concedi i ruoli al tuo Account Google. Esegui il comando seguente una volta per ciascuno dei seguenti ruoli IAM:
roles/storage.objectViewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
- Sostituisci
PROJECT_ID
con l'ID progetto. - Sostituisci
EMAIL_ADDRESS
con il tuo indirizzo email. - Sostituisci
ROLE
con ogni ruolo.
- Sostituisci
Imposta le variabili di ambiente
Per semplificare l'esecuzione degli esempi curl
in questo argomento, imposta le seguenti variabili di ambiente dove:
- project-id è l'ID del tuo progetto Google Cloud.
- region-name è la posizione di Google Cloud che eseguirà il tutorial, ad esempio
us-east1
. Gli identificatori di località validi sono:us-west1
,us-east1
,europe-west1
easia-east1
.
export PROJECT_ID=project-id export LOCATION_ID=region-name
usando un set di dati.
In questa guida rapida, utilizzi un set di dati di circa 100 voci di categoria di prodotto apparel-v2
. Questo set di dati disponibile pubblicamente si trova in un bucket Cloud Storage pubblico all'indirizzo:
Il formato CSV è il seguente:
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",
Utilizza l'importazione collettiva per creare un set di prodotti, i prodotti e le immagini di riferimento
Utilizza il comando curl
seguente per creare un nuovo set di prodotti con prodotti e immagini di riferimento. Questo insieme è denominato product_set0
, un valore dichiarato nel
file CSV di importazione.
Innanzitutto, crea un file JSON per la richiesta denominato import_request.json
e salvalo nella directory di lavoro attuale:
import_request.json
{ "inputConfig": { "gcsSource": { "csvFileUri": "gs://cloud-samples-data/vision/product_search/product_catalog.csv" } } }
Dopo aver creato il file JSON della richiesta, invia la richiesta:
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -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
Una risposta riuscita contiene un oggetto operazione a lunga esecuzione:
{ "name": "locations/location-id/operations/0a0aec86192599fa" }
La risposta contiene anche un ID operazione relativo (ad esempio 0a0aec86192599fa
) che può essere utilizzato per ottenere lo stato dell'operazione.
Verifica lo stato dell'importazione
Puoi utilizzare operation-id restituito dall'operazione di importazione per controllare lo stato dell'operazione di importazione collettiva:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://vision.googleapis.com/v1/locations/$LOCATION_ID/operations/operation-id
Una risposta corretta ha il seguente aspetto:
{ "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": [ {}, {}, ... {}, {} ] } }
Indicizzazione
L'indice dei prodotti di Product Search viene aggiornato circa ogni 30 minuti. Quando aggiungi o elimini immagini, la modifica non si rifletterà nelle risposte di Product Search fino all'aggiornamento successivo dell'indice.
Per assicurarti che l'indicizzazione sia stata completata correttamente, controlla il campo indexTime
di un set di prodotti.
Elenca i set di prodotti e controlla l'indicizzazione
Puoi elencare tutti i set di prodotti e utilizzare il campo indexTime
per verificare che l'indicizzazione sia stata completata correttamente:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://vision.googleapis.com/v1/projects/$PROJECT_ID/locations/$LOCATION_ID/productSets
Una risposta corretta elenca tutti i tuoi set di prodotti, inclusi un ID set di prodotti (ad esempio product_set0
) e il campo indexTime
che indica al termine dell'indicizzazione:
{ "productSets": [ { "name": "projects/project-id/locations/location-id/productSets/product_set0", "displayName": " ", "indexTime": "2019-11-30T18:33:40.093508652Z", "indexError": {} } ] }
Elenca prodotti
Puoi utilizzare il product-set-id restituito dall'elenco di set di prodotti per elencare tutti i prodotti del tuo set:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://vision.googleapis.com/v1/projects/$PROJECT_ID/locations/$LOCATION_ID/productSets/product-set-id/products?pageSize=15
Una risposta riuscita elenca i dettagli del prodotto.
In questa richiesta viene utilizzato il parametro facoltativo di query pageSize
per impostare l'elenco dei risultati su 15 prodotti. Il
nextPageToken
nella risposta indica anche che ci sono
più prodotti da elencare. Puoi utilizzare il token indicato per recuperare ulteriori risultati. Per ulteriori informazioni sull'uso di un pageToken
, consulta la sezione Come recuperare ed elencare le risorse.
{ "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" }
Cercare prodotti corrispondenti con Product Search dell'API Vision
Una volta completata l'indicizzazione, puoi cercare i prodotti corrispondenti a un'immagine di esempio. In questa guida rapida viene utilizzata un'immagine archiviata in un bucket Google Cloud Storage, come l'immagine riportata di seguito.

gs://cloud-ai-vision-data/product-search-tutorial/images/468f782e70ba11e8941fd20059124800.jpg
Cerca tramite immagine remota
Utilizza la richiesta seguente per eseguire una ricerca utilizzando l'immagine archiviata in un bucket Cloud Storage pubblico.
Innanzitutto, crea un file JSON per la richiesta denominato search_request.json
e salvalo nella directory di lavoro attuale. Modifica i seguenti valori nel file JSON della richiesta in modo che corrispondano alle informazioni del progetto:
- my-project-id
- my-location-id
- my-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" } } } ] }
Dopo aver creato il file JSON della richiesta, invia la richiesta:
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ -d @search_request.json \ https://vision.googleapis.com/v1/images:annotate
Una richiesta corretta restituisce un elenco di prodotti corrispondenti, con il relativo ID prodotto. Questi risultati sono ulteriormente suddivisi in base ai singoli prodotti identificati da riquadri di delimitazione, se in una singola immagine sono presenti più prodotti.
Per un esempio di rilevamento di un singolo prodotto e multi-rilevamento dei prodotti in un'immagine, consulta Informazioni sulle risposte di ricerca e sul rilevamento multiplo.
Viene restituito anche un campo score
. Questo campo indica il livello di confidenza con cui il servizio ritiene che il prodotto corrisponda all'immagine fornita, su una scala da 0 (nessuna confidenza) a 1 (fiducia completa).
Il campo indexTime
mostra la versione dell'indice in cui viene eseguita la ricerca. Le modifiche apportate alle immagini dopo questa data non si riflettono nei risultati.
Complimenti! Hai inviato la tua prima richiesta images.annotate
al servizio Product Search dell'API Vision.
Esegui la pulizia
-
Optional: Revoke credentials from the gcloud CLI.
gcloud auth revoke
-
Elimina un progetto Cloud:
gcloud projects delete PROJECT_ID
Passaggi successivi
- Inizia a utilizzare Product Search dell'API Vision nella lingua di tua scelta utilizzando una Libreria client di Product Search dell'API Vision.
- Consulta le Guide illustrative.
- Segui il tutorial.