Etichetta le immagini utilizzando l'API AutoML Vision
Questa guida rapida illustra la procedura per:
- Copiare un file CSV con un elenco di immagini e riquadri di delimitazione con etichette in Google Cloud Storage.
- Utilizzo di AutoML Vision Object Detection per creare il set di dati e addestrare il modello ed eseguirne il deployment.
In questa guida rapida utilizzerai i comandi cURL per inviare richieste all'API AutoML Vision. Puoi inoltre completare tutti i passaggi elencati qui nell'interfaccia utente facendo riferimento alla Guida rapida all'utilizzo dell'interfaccia utente. Per ulteriori istruzioni sull'utilizzo dell'interfaccia utente o dell'API, consulta le guide illustrative.
Prima di iniziare
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 initialize gcloud CLI, esegui questo comando:
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.
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API AutoML and Cloud Storage.
gcloud services enable storage-component.googleapis.com
automl.googleapis.com storage-api.googleapis.com - Installa Google Cloud CLI.
-
Per initialize gcloud CLI, esegui questo comando:
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.
-
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API AutoML and Cloud Storage.
gcloud services enable storage-component.googleapis.com
automl.googleapis.com storage-api.googleapis.com - Imposta la variabile di ambiente
PROJECT_ID
sul tuo ID progetto.export PROJECT_ID=PROJECT_ID
Le chiamate API e i nomi delle risorse AutoML includono l'ID progetto al loro interno. La variabile di ambientePROJECT_ID
consente di specificare facilmente l'ID.
Preparazione di un set di dati
In questa guida rapida utilizzerai un set di dati creato da Open Images Dataset V4.
Questo set di dati Insalata disponibile pubblicamente si trova all'indirizzo gs://cloud-ml-data/img/openimage/csv/salads_ml_use.csv
.
Il formato CSV è il seguente:
TRAINING,gs://cloud-ml-data/img/openimage/3/2520/3916261642_0a504acd60_o.jpg,Salad,0.0,0.0954,,,0.977,0.957,, VALIDATION,gs://cloud-ml-data/img/openimage/3/2520/3916261642_0a504acd60_o.jpg,Seafood,0.0154,0.1538,,,1.0,0.802,, TEST,gs://cloud-ml-data/img/openimage/3/2520/3916261642_0a504acd60_o.jpg,Tomato,0.0,0.655,,,0.231,0.839,,
Ogni riga corrisponde a un oggetto localizzato all'interno di un'immagine più grande, con ciascun oggetto designato in modo specifico come dati di test, addestramento o convalida. Le tre righe incluse qui indicano tre oggetti distinti situati all'interno della stessa immagine disponibili in gs://cloud-ml-data/img/openimage/3/2520/3916261642_0a504acd60_o.jpg
. Ogni riga ha un'etichetta diversa: Salad
, Seafood
, Tomato
, oltre ad altre righe con etichette Baked goods
o Cheese
.
I riquadri di delimitazione vengono specificati per ogni immagine utilizzando i vertici in alto a sinistra e in basso a destra:
- (0,0) corrisponde al vertice più in alto a sinistra.
- (1,1) corrisponde al vertice in basso a destra.
Per la prima riga mostrata sopra, le coordinate (x, y) per il vertice in alto a sinistra dell'oggetto con etichetta Salad
sono (0.0,0.0954) e le coordinate per il vertice in basso a destra dell'oggetto sono (0.977,0.957).
Per informazioni più dettagliate su come formattare il file CSV e sui requisiti minimi per creare un set di dati valido, consulta Preparazione dei dati di addestramento.
Crea un set di dati e importa i dati di addestramento
Il comando curl
utilizza il comando gcloud auth print-access-token
per ottenere un token di accesso per il tuo Account Google.
Per la release beta, utilizza us-central1
come regione, indipendentemente dalla tua località
effettiva.
Crea un set di dati
Utilizza il seguente comando curl
per creare un nuovo set di dati con un nome visualizzato di tua scelta:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ "https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/datasets" -d '{ "display_name": "DISPLAY_NAME", "image_object_detection_dataset_metadata": { } }'
La risposta restituisce un ID del set di dati relativo (ad esempio IOD5491013845671477445
) che ti servirà nei passaggi successivi.
{ "name": "projects/PROJECT_ID/locations/us-central1/datasets/IOD5491013845671477445", "displayName": "DISPLAY_NAME", "createTime": "2018-10-29T15:45:53.353442Z", "imageObjectDetectionDatasetMetadata": {} }
Importa dati
Importa i dati di addestramento nel tuo set di dati. Il comando importData
prende come input l'URI del tuo set di dati. Qui dovrai fornire l'indirizzo di Google Cloud Storage disponibile pubblicamente in cui è archiviato il set di dati delle sale. Questa procedura
può richiedere fino a 30
minuti.
- Sostituisci DATASET_ID con l'identificatore del set di dati per il tuo set di dati (non il nome visualizzato). Ad esempio:
IOD5491013845671477445
.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID:importData \ -d '{ "input_config": { "gcs_source": { "input_uris": [ "gs://cloud-ml-data/img/openimage/csv/salads_ml_use.csv" ] } } }'
La risposta restituisce un ID operazione relativo (ad esempio IOD1555149246326374411
) che può essere utilizzato per ottenere lo stato dell'operazione.
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/operations/IOD1555149246326374411", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata", "createTime": "2018-10-29T15:56:29.176485Z", "updateTime": "2018-10-29T15:56:29.176485Z", "importDataDetails": {} } }
Verifica lo stato dell'operazione di importazione
Puoi eseguire query sullo stato dell'operazione di importazione dei dati utilizzando il seguente comando curl
.
- Sostituisci OPERATION_ID con l'ID operazione restituito dall'operazione di importazione dei dati.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID
Il completamento dell'operazione di importazione può richiedere del tempo. Al termine dell'attività di importazione, verrà visualizzato done: true
nello stato dell'operazione, senza errori, come mostrato nell'esempio seguente.
Questa richiesta restituirà anche eventuali avvisi per l'importazione del set di dati. Sono stati aggiunti errori a questo set di dati per mostrarti un esempio di questi avvisi. L'utilizzo di questa operazione per visualizzare questi avvisi è un modo utile per trovare errori nei dati.
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/operations/IOD1555149246326374411", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata", "createTime": "2018-10-29T15:56:29.176485Z", "updateTime": "2018-10-29T16:10:41.326614Z", "importDataDetails": {} }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
Recupera un elenco di set di dati
Puoi ottenere un elenco dei tuoi set di dati utilizzando il seguente comando.
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/datasets
Dovresti vedere un output simile al seguente:
{ "datasets": [ { "name": "projects/PROJECT_NUMBER/locations/us-central1/datasets/DATASET_ID1", "displayName": "DISPLAY_NAME1", "createTime": "2018-10-29T15:45:53.353442Z", "exampleCount": 227, "imageObjectDetectionDatasetMetadata": {} }, { "name": "projects/PROJECT_NUMBER/locations/us-central1/datasets/DATASET_ID2", "displayName": "DISPLAY_NAME2", "createTime": "2018-10-24T21:06:05.390059Z", "exampleCount": 227, "imageObjectDetectionDatasetMetadata": {} } ] }
addestra il modello
Avvia un'applicazione di addestramento di modelli
Dopo aver creato il set di dati e importato i dati di addestramento nel set di dati, puoi addestrare il modello personalizzato.
Addestra il modello utilizzando il seguente comando curl
.
- Sostituisci DATASET_ID con l'identificatore del set di dati (non il nome visualizzato).
- Sostituisci DISPLAY_NAME con un nome scelto da te per il modello.
- Specifica
image_object_detection_model_metadata.model_type
. Sono disponibili due opzioni per ottimizzare la latenza o l'accuratezza:cloud-low-latency-1
: ottimizza l'addestramento per migliorare la latenza.cloud-high-accuracy-1
: ottimizza l'addestramento per garantire l'accuratezza.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models -d '{ "datasetId": "DATASET_ID", "displayName": "DISPLAY_NAME", "image_object_detection_model_metadata": {}, }'
Dovresti ricevere un ID operazione per l'operazione del modello di addestramento (ad esempio IOD5644417707978784777
), da utilizzare per ottenere lo stato dell'operazione di addestramento.
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/operations/IOD5644417707978784777", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata", "createTime": "2018-10-29T16:41:23.902167Z", "updateTime": "2018-10-29T16:41:23.902167Z", "createModelDetails": {} } }
Il processo di addestramento potrebbe richiedere diverse ore.
Visualizza lo stato dell'operazione di addestramento del modello
Puoi eseguire query sullo stato dell'operazione di addestramento del modello utilizzando il seguente comando curl
.
- Sostituisci OPERATION_ID con l'ID dell'operazione di addestramento.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID
Dovresti vedere un output simile al seguente. Al termine dell'operazione,
vedrai done: true
senza errori.
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/operations/IOD5644417707978784777", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1beta1.OperationMetadata", "createTime": "2018-10-24T22:08:23.327323Z", "updateTime": "2018-10-24T23:41:18.452855Z", "createModelDetails": {} }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.automl.v1beta1.Model", "name": "projects/PROJECT_NUMBER/locations/us-central1/models/IOD5644417707978784777" } }
Verifica che il modello sia disponibile
Una volta completata correttamente l'operazione di addestramento del modello, puoi verificare che il modello sia disponibile utilizzando il seguente comando per elencare i modelli per il tuo progetto.
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models
Dovresti ricevere un ID modello (ad esempio IOD5644417707978784778
) che puoi utilizzare per ottenere le metriche di valutazione del modello una volta completato l'addestramento del modello.
Dovresti vedere un output simile al seguente:
{ "model": [ { "name": "projects/PROJECT_NUMBER/locations/us-central1/models/IOD5644417707978784778", "displayName": "DISPLAY_NAME", "datasetId": "IOD5491013845671477445", "createTime": "2018-10-24T23:37:00.858493Z", "updateTime": "2018-10-24T23:37:00.858493Z", "deploymentState": "DEPLOYED", "imageObjectDetectionModelMetadata": { "modelType": "cloud-low-latency-1", "nodeCount": "1", "nodeQps": 1.2987012987012987 } } ] }
Valuta il modello
Al termine dell'addestramento del modello, puoi elencare le metriche di valutazione del modello utilizzando il seguente comando curl
.
- Sostituisci MODEL_ID con l'identificatore del modello.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID/modelEvaluations
AutoML Vision Object Detection fornisce un set aggregato di metriche di valutazione che indicano le prestazioni generali del modello, nonché metriche di valutazione per ogni etichetta, che indicano le prestazioni del modello per quell'etichetta al di sotto di soglie diverse.
Esegui il deployment del modello
Prima di poter fare una previsione, devi eseguire manualmente il deployment del modello.
Utilizza questo comando per eseguire il deployment del modello:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:deploy \ -d '{ "imageObjectDetectionModelDeploymentMetadata": { "nodeCount": 2 } }'
Fai una previsione
Invia una richiesta di previsione
Puoi utilizzare il modello di cui hai eseguito il deployment per fare una previsione su un'immagine locale utilizzando il seguente file JSON e il comando curl
.
- Crea un file JSON di richiesta denominato
predict_request.json
e fornisci un'immagine con codifica Base64 nel campo"imageBytes"
.
predict_request.json
{ "payload": { "image": { "image_bytes": "/9j/4QAYRXhpZgAA...base64-encoded-image...9tAVx/zDQDlGxn//2Q==" } } }
- Sostituisci MODEL_ID con l'identificatore del modello.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ "https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:predict" -d @PATH_TO_JSON_FILE/predict_request.json
Una richiesta andata a buon fine restituisce una risposta con uno o più riquadri di delimitazione specificati da due normalizedVertices
diagonalmente opposte.
A ogni riquadro di delimitazione identificato sono associate un'affidabilità score
e un'annotazione (displayName
).
{ "payload": [ { "imageObjectDetection": { "boundingBox": { "normalizedVertices": [ { "x": 0.034553755, "y": 0.015524037 }, { "x": 0.941527, "y": 0.9912563 } ] }, "score": 0.9997793 }, "displayName": "Salad" }, { "imageObjectDetection": { "boundingBox": { "normalizedVertices": [ { "x": 0.11737197, "y": 0.7098793 }, { "x": 0.510878, "y": 0.87987 } ] }, "score": 0.63219965 }, "displayName": "Tomato" } ] }
(Facoltativo) Annulla il deployment del modello
Il modello prevede addebiti durante il deployment. Per evitare di incorrere in questo costo di hosting del modello, puoi annullare il deployment del modello.
Esegui questo comando per annullare il deployment del modello:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ "https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID:undeploy"
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il progetto Google Cloud con le risorse.
Se non hai più bisogno del tuo modello personalizzato e del relativo set di dati, puoi eliminarli.
Elenco modelli
Puoi elencare i modelli per il tuo progetto, insieme ai relativi identificatori, utilizzando il seguente comando:
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models
Eliminazione di un modello
Puoi eliminare un modello utilizzando il seguente comando.
- Sostituisci MODEL_ID con l'identificatore del modello.
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID
Creazione di un elenco di set di dati
Puoi elencare i set di dati del tuo progetto, insieme ai relativi identificatori, utilizzando il seguente comando:
curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/datasets
Eliminazione di un set di dati
Puoi eliminare un set di dati utilizzando il comando seguente.
- Sostituisci DATASET_ID con l'identificatore del modello.
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "x-goog-user-project: PROJECT_ID" \ -H "Content-Type: application/json" \ https://automl.googleapis.com/v1beta1/projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID