Crea un set di prodotti e cerca i prodotti
Questa guida rapida mostra come creare e utilizzare i tre tipi di risorse Vision API Product Search: 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, i prodotti e le relative immagini di riferimento in un unico passaggio tramite l'importazione batch.
Una volta indicizzato il set di prodotti, puoi eseguire query sul set di prodotti utilizzando Vision API Product Search.
Questa guida rapida ti illustra la procedura per:
- Utilizzare un file CSV e l'importazione collettiva per creare un set di prodotti, i prodotti e le immagini di riferimento.
- Inviare una richiesta all'API Vision Product Search con un'immagine archiviata in un bucket Cloud Storage.
Prima di iniziare
Se non l'hai ancora 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 senza costi per l'esecuzione, il test e il deployment dei workload.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un progetto Google Cloud .
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'autorizzazioneresourcemanager.projects.create. Scopri come concedere ruoli.
-
Crea un progetto Google Cloud :
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il progetto Google Cloud che stai creando. -
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del progetto Google Cloud .
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
Abilita l'API Vision, se non è già abilitata:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.gcloud services enable vision.googleapis.com
-
Concedi ruoli al tuo account utente. Esegui il seguente comando una volta per ciascuno dei seguenti ruoli IAM:
roles/storage.objectViewergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.USER_IDENTIFIER: l'identificatore del tuo account utente . Ad esempio:myemail@example.com.ROLE: il ruolo IAM che concedi al tuo account utente.
-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
Crea o seleziona un progetto Google Cloud .
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'autorizzazioneresourcemanager.projects.create. Scopri come concedere ruoli.
-
Crea un progetto Google Cloud :
gcloud projects create PROJECT_ID
Sostituisci
PROJECT_IDcon un nome per il progetto Google Cloud che stai creando. -
Seleziona il progetto Google Cloud che hai creato:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_IDcon il nome del progetto Google Cloud .
-
Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .
Abilita l'API Vision, se non è già abilitata:
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente disponi già di questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.gcloud services enable vision.googleapis.com
-
Concedi ruoli al tuo account utente. Esegui il seguente comando una volta per ciascuno dei seguenti ruoli IAM:
roles/storage.objectViewergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.USER_IDENTIFIER: l'identificatore del tuo account utente . Ad esempio:myemail@example.com.ROLE: il ruolo IAM che concedi al tuo account utente.
Utilizzare un set di dati
In questa guida rapida utilizzerai un set di dati di circa 100 voci di categorie di prodotti 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 set è denominato product_set0, un valore dichiarato nel CSV di importazione.
Innanzitutto, crea un file JSON di richiesta denominato import_request.json e salvalo nella directory di lavoro corrente:
import_request.json
{
"inputConfig": {
"gcsSource": {
"csvFileUri": "gs://cloud-samples-data/vision/product_search/product_catalog.csv"
}
}
}Dopo aver creato il file JSON di richiesta, invia la richiesta:
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:importSostituisci quanto segue:
- LOCATION_ID: la località in cui verrà eseguito il tutorial, ad esempio
us-east1. Gli identificatori di località validi sono:us-west1,us-east1,europe-west1easia-east1.
Una risposta corretta 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 verificare lo stato dell'operazione di importazione collettiva:
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_IDUna risposta corretta è simile alla seguente:
{ "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 della Ricerca di Product Search dei prodotti viene aggiornato circa ogni giorno. Quando aggiungi o elimini immagini, la modifica non si riflette nelle risposte di Product Search finché non viene aggiornato nuovamente l'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 "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json" \
https://vision.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/productSetsUna risposta corretta elenca tutti i set di prodotti, incluso un ID del set di prodotti
(ad esempio product_set0), nonché il campo indexTime che indica
quando è stata completata l'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 PRODUCT_SET_ID restituito dall'elenco dei set di prodotti per elencare tutti i prodotti inclusi nel set:
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=15Una risposta corretta elenca i dettagli dei prodotti.
In questa richiesta utilizzi il parametro di query facoltativo
pageSize per impostare l'elenco dei risultati su 15 prodotti. nextPageToken nella risposta indica anche che ci sono altri prodotti da elencare. Puoi utilizzare il token elencato per recuperare ulteriori risultati. Per
saperne di più sull'utilizzo di un pageToken, consulta
Recupero ed elenco delle 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"
}Cerca i prodotti corrispondenti con Vision API Product Search
Una volta completata l'indicizzazione, puoi cercare i prodotti corrispondenti a un'immagine di esempio. In questa guida rapida utilizzerai un'immagine archiviata in un bucket Cloud Storage, ad esempio la seguente.
gs://cloud-ai-vision-data/product-search-tutorial/images/468f782e70ba11e8941fd20059124800.jpgRicerca utilizzando un'immagine remota
Utilizza la seguente richiesta per eseguire la ricerca utilizzando l'immagine archiviata in un bucket Cloud Storage pubblico.
Innanzitutto, crea un file JSON di richiesta denominato search_request.json e salvalo nella directory di lavoro corrente. Modifica i seguenti valori nel file JSON della richiesta in modo che corrispondano alle informazioni del tuo progetto:
- 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"
}
}
}
]
}Dopo aver creato il file JSON di richiesta, invia la richiesta:
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:annotateUna 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 di rilevamento multiplo di prodotti in un'immagine, consulta Informazioni sulle risposte di ricerca e sul rilevamento multiplo.
Viene restituito anche un campo score. Questo campo indica l'affidabilità con cui il servizio ritiene che il prodotto corrisponda all'immagine fornita, su una scala da 0 (nessuna affidabilità) a 1 (affidabilità totale).
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 effettuato la tua prima richiesta images.annotate al servizio Vision API Product Search.
Esegui la pulizia
-
(Facoltativo) Revoca le credenziali da gcloud CLI.
gcloud auth revoke
-
Elimina un progetto Google Cloud :
gcloud projects delete PROJECT_ID
Passaggi successivi
- Inizia a utilizzare l'API Vision Product Search nella lingua di tua scelta utilizzando una libreria client dell'API Vision Product Search.
- Consulta le guide illustrative.
- Completa il tutorial.