Questo tutorial mostra come creare un nuovo modello con il tuo set di immagini di addestramento, valutare i risultati e prevedere la classificazione dell'immagine di test utilizzando AutoML Vision.
Il tutorial utilizza un set di dati con immagini di cinque diversi tipi di fiori: girasoli, tulipani, margherite, rose e denti di leone. Descrive l'addestramento di un modello personalizzato, la valutazione delle prestazioni del modello e la classificazione di nuove immagini utilizzando il modello personalizzato.
Prerequisiti
Configura l'ambiente del 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.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API AutoML Vision.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Abilita le API AutoML Vision.
- Installa Google Cloud CLI.
- Segui le istruzioni per creare un account di servizio e scaricare un file di chiavi.
-
Imposta la variabile di ambiente
GOOGLE_APPLICATION_CREDENTIALS
sul percorso del file di chiavi dell'account di servizio che hai scaricato al momento della creazione dell'account di servizio. Ad esempio:export GOOGLE_APPLICATION_CREDENTIALS=KEY_FILE
-
Aggiungi il tuo nuovo account di servizio al ruolo IAM AutoML Editor con i comandi seguenti. Sostituisci PROJECT_ID con il nome del tuo
progetto Google Cloud e SERVICE_ACCOUNT_NAME con il nome del
nuovo account di servizio, ad esempio
service-account1@myproject.iam.gserviceaccount.com
:gcloud auth login gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:YOUR_USERID@YOUR_DOMAIN" \ --role="roles/automl.admin" gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME \ --role="roles/automl.editor"
-
Consenti agli account di servizio AutoML Vision di accedere alle risorse del tuo progetto Google Cloud:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:custom-vision@appspot.gserviceaccount.com" \ --role="roles/storage.admin"
- Installa la libreria client.
-
Imposta le variabili di ambiente
PROJECT_ID
eREGION_NAME
.
Sostituisci PROJECT_ID con l'ID progetto del tuo progetto Google Cloud. Al momento AutoML Vision richiede la localitàus-central1
.export PROJECT_ID="PROJECT_ID" export REGION_NAME="us-central1"
-
Crea un bucket Cloud Storage per archiviare i documenti che utilizzerai per addestrare il tuo modello personalizzato.
Il nome del bucket deve essere nel formato:$PROJECT_ID-vcm
. Il seguente comando crea un bucket di archiviazione denominato$PROJECT_ID-vcm
nella regioneus-central1
.gsutil mb -p PROJECT_ID -c regional -l us-central1 gs://PROJECT_ID-vcm/
- Imposta la variabile BUCKET.
export BUCKET=PROJECT_ID-vcm
-
Copia il set di dati delle immagini floreali disponibile pubblicamente da
gs://cloud-samples-data/img/flower_photos/
nel tuo bucket Google Cloud Storage.
Nella sessione di Cloud Shell, inserisci:gsutil -m cp -R gs://cloud-samples-data/ai-platform/flowers/ gs://BUCKET/img/
La copia del file richiede circa 20 minuti.
Questo comando copia anche il file
all_data.csv
, che elenca i nomi file originali e le relative etichette. -
Il set di dati di esempio contiene un file CSV con la posizione e le etichette per ogni immagine (consulta Preparazione dei dati di addestramento per i dettagli sul formato richiesto). Aggiorna il file CSV in modo che punti ai file
nel tuo bucket:
gsutil cat gs://BUCKET/img/flowers/all_data.csv | sed "s:cloud-ml-data/img/flower_photos/:BUCKET/img/flowers/:" > all_data.csv
Quindi copia il file CSV aggiornato nel tuo bucket:gsutil cp all_data.csv gs://BUCKET/csv/
Posizioni dei file di codice sorgente
Puoi scaricare il codice sorgente dalla posizione indicata di seguito. Dopo il download, puoi copiare il codice sorgente nella cartella del progetto AutoML Vision.
Python
Il tutorial è costituito da questi file Python:
vision_classification_create_dataset.py
: include la funzionalità per creare un set di dati.import_dataset.py
: include la funzionalità per importare un set di dativision_classification_create_model.py
: include le funzionalità per creare un modellolist_model_evaluations.py
: include funzionalità per elencare le valutazioni dei modellivision_classification_predict.py
: include funzionalità relative alla previsionedelete_model.py
: includi la funzionalità per eliminare un modello
Java
Il tutorial è costituito da questi file Java:
VisionClassificationCreateDataset.java
: include la funzionalità per creare un set di dati.ImportDataset.java
: include la funzionalità per importare un set di datiVisionClassificationCreateModel.java
: include le funzionalità per creare un modelloListModelEvaluations.java
: include funzionalità per elencare le valutazioni dei modelliVisionClassificationPredict.java
: include funzionalità relative alla previsioneDeleteModel.java
: include la funzionalità per eliminare un modello
Node.js
Il tutorial è costituito da questi programmi Node.js:
vision_classification_create_dataset.js
: include la funzionalità per creare un set di dati.import_dataset.js
: include la funzionalità per importare un set di dativision_classification_create_model.js
: include le funzionalità per creare un modellolist_model_evaluations.js
: include funzionalità per elencare le valutazioni dei modellivision_classification_predict.js
: include funzionalità relative alla previsionedelete_model.js
: includi la funzionalità per eliminare un modello
Esecuzione dell'applicazione
Passaggio 1: crea il set di dati Flowers
Il primo passaggio nella creazione di un modello personalizzato è creare un set di dati vuoto che conserverà alla fine i dati di addestramento del modello. Quando crei un set di dati, devi specificare il tipo di classificazione che deve essere eseguito dal modello personalizzato:
- MULTICLASS assegna un'unica etichetta a ogni immagine classificata
- MULTILABEL consente di assegnare più etichette a un'immagine
Questo tutorial crea un set di dati denominato flowers
e utilizza MULTICLASS.
Copia il codice
Python
Java
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Vision Node.js.
Per eseguire l'autenticazione in AutoML Vision, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Richiesta
Esegui la funzione create_dataset
per creare un set di dati vuoto. Devi modificare le seguenti righe di codice:
- Imposta
project_id
sul tuo PROJECT_ID - Imposta
display_name
per il set di dati (flowers
) Modifica
MULTILABEL
in "MULTICLASS"
Python
python3 vision_classification_create_dataset.py
Java
mvn compile exec:java -Dexec.mainClass="com.example.automl.VisionClassificationCreateDataset"
Node.js
node vision_classification_create_dataset.js
Risposta
La risposta include i dettagli del set di dati appena creato, tra cui l'ID set di dati che utilizzerai per fare riferimento al set di dati nelle richieste future. Ti consigliamo di impostare una variabile di ambiente DATASET_ID
sul valore dell'ID set di dati restituito.
Dataset name: projects/216065747626/locations/us-central1/datasets/ICN7372141011130533778 Dataset id: ICN7372141011130533778 Dataset display name: flowers Image classification dataset specification: classification_type: MULTICLASS Dataset example count: 0 Dataset create time: seconds: 1530251987 nanos: 216586000
Passaggio 2: importa le immagini nel set di dati
Il passaggio successivo consiste nel completare il set di dati con immagini di addestramento etichettate utilizzando le etichette di destinazione.
L'interfaccia della funzione import_data
prende come input un file CSV che elenca le posizioni di tutte le immagini di addestramento e l'etichetta corretta per ognuna. Per maggiori dettagli sul formato richiesto, consulta Preparare i dati. Per questo tutorial, utilizzeremo le immagini etichettate che hai copiato nel bucket Cloud Storage, che sono elencate in gs://$PROJECT_ID-vcm/csv/all_data.csv
.
Copia il codice
Python
Java
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Vision Node.js.
Per eseguire l'autenticazione in AutoML Vision, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Richiesta
Esegui la funzione import_data
per importare i contenuti di addestramento. Il primo frammento di codice da modificare è l'ID set di dati del passaggio precedente e il secondo è l'URI di all_data.csv
. Devi modificare le seguenti righe di codice:
- Imposta
project_id
su PROJECT_ID - Imposta
dataset_id
per il set di dati (dall'output del passaggio precedente) Imposta
path
, che è l'URI di (gs://YOUR_PROJECT_ID-vcm/csv/all_data.csv
)python3 import_dataset.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.ImportDataset" {Java}
node import_dataset.js {Node.js}
Risposta
Processing import... Dataset imported.
Passaggio 3: crea (addestra) il modello
Ora che hai un set di dati di immagini di addestramento etichettate, puoi addestrare un nuovo modello.
Copia il codice
Python
Java
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Vision Node.js.
Per eseguire l'autenticazione in AutoML Vision, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Richiesta
Richiama la funzione create_model
per creare un modello. L'ID set di dati proviene dai
passaggi precedenti. Devi modificare le seguenti righe di codice:
- Imposta
project_id
su PROJECT_ID - Imposta
dataset_id
per il set di dati (dall'output del passaggio precedente) Imposta
display_name
per il tuo modello (flowers_model
)python3 vision_classification_create_model.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.VisionClassificationCreateModel" {Java}
node vision_classification_create_model.js {Node.js}
Risposta
La funzione create_model
avvia un'operazione di addestramento e stampa il nome dell'operazione. L'addestramento avviene in modo asincrono e può richiedere un po' di tempo per essere completato, quindi puoi utilizzare l'ID operazione per controllare lo stato dell'addestramento. Al termine dell'addestramento, create_model
restituisce l'ID modello. Come per l'ID set di dati, potresti voler impostare una variabile di ambiente MODEL_ID
sul valore ID modello restituito.
Training operation name: projects/216065747626/locations/us-central1/operations/ICN3007727620979824033 Training started... Model name: projects/216065747626/locations/us-central1/models/ICN7683346839371803263 Model id: ICN7683346839371803263 Model display name: flowers_model Image classification model metadata: Training budget: 1 Training cost: 1 Stop reason: Base model id: Model create time: seconds: 1529649600 nanos: 966000000 Model deployment state: deployed
Passaggio 4: valuta il modello
Dopo l'addestramento, puoi valutare l'idoneità del modello esaminandone precisione, richiamo e punteggio F1.
La funzione display_evaluation
utilizza l'ID modello come parametro.
Copia il codice
Python
Java
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Vision Node.js.
Per eseguire l'autenticazione in AutoML Vision, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Richiesta
Invia una richiesta per visualizzare le prestazioni di valutazione complessive del modello eseguendo la seguente richiesta. Devi modificare le seguenti righe di codice:
- Imposta
project_id
su PROJECT_ID Imposta
model_id
sull'ID del modellopython3 list_model_evaluations.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.ListModelEvaluations" {Java}
node list_model_ assessments.js {Node.js}
Risposta
Se i punteggi di precisione e richiamo sono troppo bassi, puoi rafforzare il set di dati di addestramento e addestrare nuovamente il modello. Per maggiori informazioni, consulta Valutazione dei modelli.
Precision and recall are based on a score threshold of 0.5 Model Precision: 96.3% Model Recall: 95.7% Model F1 score: 96.0% Model Precision@1: 96.33% Model Recall@1: 95.74% Model F1 score@1: 96.04%
Passaggio 5: utilizza un modello per fare una previsione
Quando il modello personalizzato soddisfa gli standard di qualità, puoi utilizzarlo per classificare le nuove immagini di fiori.
Copia il codice
Python
Java
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Vision Node.js.
Per eseguire l'autenticazione in AutoML Vision, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Richiesta
Per la funzione predict
devi modificare le seguenti righe di codice:
- Imposta
project_id
su PROJECT_ID - Imposta
model_id
sull'ID del modello Imposta
file_path
sul file scaricato ("resources/test.png")python3 vision_classification_predict.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.VisionClassificationPredict" {Java}
node vision_classification_predict.js {Node.js}
Risposta
La funzione restituisce il punteggio di classificazione relativo al livello di corrispondenza dell'immagine con ogni categoria, superando la soglia di affidabilità dichiarata di 0,7.
Prediction results: Predicted class name: dandelion Predicted class score: 0.9702693223953247
Passaggio 6: elimina il modello
Quando hai finito di utilizzare questo modello di esempio, puoi eliminarlo definitivamente. Non potrai più utilizzare il modello per le previsioni.
Copia il codice
Python
Java
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API AutoML Vision Node.js.
Per eseguire l'autenticazione in AutoML Vision, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Richiesta
Effettua una richiesta con il tipo di operazione delete_model
per eliminare un modello che hai creato. Devi modificare le seguenti righe di codice:
- Imposta
project_id
su PROJECT_ID Imposta
model_id
sull'ID del modellopython3 delete_model.py {Python}
mvn compile exec:java -Dexec.mainClass="com.example.automl.DeleteModel" {Java}
node delete_model.js {Node.js}
Risposta
Model deleted.