Con gli algoritmi integrati in AI Platform Training, puoi inviare i dati di addestramento, selezionare un algoritmo e lasciare che AI Platform Training gestisca la preelaborazione e l'addestramento per te, senza scrivere codice per un'applicazione di addestramento. Gli algoritmi di immagini integrati ti consentono di eseguire l'addestramento su TPU con una configurazione minima. Il SavedModel di TensorFlow risultante è compatibile per la pubblicazione su CPU e GPU.
Panoramica
In questo tutorial, addestri un modello di rilevamento degli oggetti nelle immagini senza scrivere alcun codice. Invii il set di dati COCO ad AI Platform Training per l'addestramento, quindi esegui il deployment del modello su AI Platform Training per ottenere le previsioni. Il modello risultante classifica gli oggetti comuni all'interno di immagini di scene quotidiane complesse.
Prima di iniziare
Per completare questo tutorial sulla riga di comando, utilizza Cloud Shell o qualsiasi ambiente in cui è installato Google Cloud CLI.
Completa i seguenti passaggi per configurare un account Google Cloud, abilitare le API richieste, e installare e attivare Google Cloud CLI:
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the AI Platform Training & Prediction and Compute Engine APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
Autorizza Cloud TPU ad accedere al tuo progetto
Segui questi passaggi per autorizzare il nome dell'account di servizio Cloud TPU associato al tuo progetto Google Cloud:
Ottieni il nome dell'account di servizio Cloud TPU chiamando
projects.getConfig
. Esempio:PROJECT_ID=PROJECT_ID curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ https://ml.googleapis.com/v1/projects/$PROJECT_ID:getConfig
Salva il valore del campo
serviceAccountProject
etpuServiceAccount
restituito dall'API.Inizializza l'account di servizio Cloud TPU:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" -d '{}' \ https://serviceusage.googleapis.com/v1beta1/projects/<serviceAccountProject>/services/tpu.googleapis.com:generateServiceIdentity
Ora aggiungi l'account di servizio Cloud TPU come membro del progetto con il ruolo Agente di servizio Cloud ML. Completa i seguenti passaggi nella console Google Cloud o utilizzando il comando gcloud
:
Console
- Accedi alla console Google Cloud e scegli il progetto in cui utilizzi la TPU.
- Scegli IAM e amministrazione > IAM.
- Fai clic sul pulsante Aggiungi per aggiungere un membro al progetto.
- Inserisci l'account di servizio TPU nella casella di testo Membri.
- Fai clic sull'elenco a discesa Ruoli.
- Attiva il ruolo Agente di servizio Cloud ML (Agenti di servizio > Agente di servizio Cloud ML).
gcloud
Imposta le variabili di ambiente contenenti l'ID progetto e l'account di servizio Cloud TPU:
PROJECT_ID=PROJECT_ID SVC_ACCOUNT=your-tpu-sa-123@your-tpu-sa.google.com.iam.gserviceaccount.com
Concedi il ruolo
ml.serviceAgent
all'account di servizio Cloud TPU:gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SVC_ACCOUNT --role roles/ml.serviceAgent
Per ulteriori dettagli sull'assegnazione dei ruoli agli account di servizio, consulta la documentazione di IAM.
Configurazione
Abbiamo modificato il set di dati COCO per utilizzarlo con questo tutorial e lo abbiamo ospitato in un bucket Cloud Storage pubblico,
gs://cloud-samples-data/ai-platform/built-in/image/coco/
.
Console
Selezionare l'algoritmo
Vai alla pagina Job di addestramento della piattaforma AI nella console Google Cloud:
Fai clic sul pulsante Nuovo job di addestramento. Dalle opzioni visualizzate di seguito, fai clic su Addestramento con algoritmi integrati. Viene visualizzata la pagina Crea un nuovo job di addestramento.
La creazione del job di addestramento è suddivisa in quattro passaggi. Il primo passaggio è Algoritmo di addestramento. Seleziona Rilevamento di oggetti nelle immagini e fai clic su Avanti.
Dati di addestramento
Nella sezione Dati di addestramento, seleziona i dati di addestramento per il set di dati di esempio, ospitato nel nostro bucket pubblico Cloud Storage:
Seleziona Usa più file archiviati in una directory di Cloud Storage.
In Percorso della directory, inserisci: "cloud-samples-data/ai-platform/built-in/image/coco/"
In Nome carattere jolly, inserisci "train*" per selezionare tutti i file di addestramento nella directory.
Di seguito viene visualizzato il percorso GCS completo: "gs://cloud-samples-data/ai-platform/built-in/image/coco/train*"
Nella sezione Dati di convalida, seleziona i dati di convalida per il set di dati di esempio, ospitato nel nostro bucket Cloud Storage pubblico:
Seleziona Usa più file archiviati in una directory di Cloud Storage.
In Percorso della directory, inserisci: "cloud-samples-data/ai-platform/built-in/image/coco/"
In Nome carattere jolly, inserisci "val*" per selezionare tutti i file di convalida nella directory.
Di seguito viene visualizzato il percorso GCS completo: "gs://cloud-samples-data/ai-platform/built-in/image/coco/val*"
Specifica la directory di output nel tuo bucket Cloud Storage in cui vuoi che AI Platform Training archivi il modello addestrato, i controlli regolari e altri dati di output del job di addestramento. Puoi inserire il percorso esatto nel bucket o utilizzare il pulsante Sfoglia per selezionarlo.
gcloud
Configura le variabili di ambiente per l'ID progetto, il bucket Cloud Storage, il percorso Cloud Storage per i dati di addestramento e la selezione dell'algoritmo.
Gli algoritmi integrati di AI Platform Training si trovano in container Docker ospitati in Container Registry.
PROJECT_ID="YOUR_PROJECT_ID"
BUCKET_NAME="YOUR_BUCKET_NAME"
REGION="us-central1"
gcloud config set project $PROJECT_ID
gcloud config set compute/region $REGION
# Set paths to the training and validation data.
TRAINING_DATA_PATH="gs://cloud-samples-data/ai-platform/built-in/image/coco/train*"
VALIDATION_DATA_PATH="gs://cloud-samples-data/ai-platform/built-in/image/coco/val*"
# Specify the Docker container for your built-in algorithm selection.
IMAGE_URI="gcr.io/cloud-ml-algos/image_object_detection:latest"
Invia un job di addestramento
Per inviare un job, devi specificare alcuni argomenti di addestramento di base e alcuni argomenti di base relativi all'algoritmo di rilevamento di oggetti immagine.
Argomenti generali per il job di addestramento:
Argomenti dei job di addestramento | |
---|---|
Argomento | Descrizione |
job-id |
ID univoco per il tuo job di addestramento. Puoi utilizzarlo per trovare i log relativi allo stato del job di addestramento dopo l'invio. |
job-dir |
Percorso di Cloud Storage in cui AI Platform Training salva i file di addestramento dopo aver completato un job di addestramento riuscito. |
scale-tier |
Specifica i tipi di macchine per l'addestramento. Utilizza BASIC per selezionare
una configurazione di una sola macchina.
|
master-image-uri |
URI di Container Registry utilizzato per specificare il container Docker da usare per il job di addestramento. Utilizza il contenitore per l'algoritmo di rilevamento di oggetti immagine integrato definito in precedenza come IMAGE_URI .
|
region |
Specifica la regione disponibile in cui eseguire il job di addestramento. Per
questo tutorial, puoi utilizzare la regione us-central1 .
|
Argomenti specifici per l'algoritmo di rilevamento di oggetti immagine integrato:
Argomenti degli algoritmi | |
---|---|
Argomento | Descrizione |
training_data_path |
Percorso a un pattern di percorso TFRecord utilizzato per l'addestramento. |
validation_data_path |
Percorso a un pattern di percorso TFRecord utilizzato per la convalida. |
pretrained_checkpoint_path |
Il percorso dei checkpoint preaddestrati. Potresti utilizzare alcuni punti di controllo pubblicati. |
num_classes |
Il numero di classi nei dati di addestramento/convalida. |
max_steps |
Il numero di passaggi che verranno eseguiti dal job di addestramento. |
train_batch_size |
Il numero di immagini da utilizzare per ogni passaggio di addestramento. |
num_eval_images |
Il numero totale di immagini utilizzate per la valutazione. Se è pari a 0, tutte le immagini in validation_data_path verranno
utilizzate per la valutazione.
|
learning_rate_decay_type |
Il metodo con cui il tasso di apprendimento diminuisce durante l'addestramento. |
warmup_learning_rate |
Il tasso di apprendimento all'inizio della fase di riscaldamento. |
warmup_steps |
Il numero di passaggi da eseguire durante la fase di riscaldamento o la durata
della fase di riscaldamento in passaggi.
Il job di addestramento utilizza warmup_learning_rate durante la fase di warm-up. Al termine della fase di riscaldamento, il job di addestramento utilizza
initial_learning_rate .
|
initial_learning_rate |
Il tasso di apprendimento iniziale al termine della fase di riscaldamento. |
stepwise_learning_rate_steps |
I passaggi per ridurre/modificare i tassi di apprendimento per il tipo di decadimento del tasso di apprendimento graduale. Ad esempio, 100.200 indica che il tasso di apprendimento cambierà (rispetto a stepwise_learning_rate_levels ) al passaggio 100
e al passaggio 200. Tieni presente che verrà rispettato solo quando
learning_rate_decay_type è impostato su graduale.
|
stepwise_learning_rate_levels |
Il valore del tasso di apprendimento di ogni passaggio per il tipo di decadimento graduale del tasso di apprendimento. Tieni presente che verrà rispettato solo quando
learning_rate_decay_type è impostato su graduale.
|
image_size |
Le dimensioni dell'immagine (larghezza e altezza) utilizzate per l'addestramento. |
optimizer_type |
L'ottimizzatore utilizzato per l'addestramento. Deve essere uno dei seguenti: {momentum, adam, adadelta, adagrad, rmsprop}
|
optimizer_arguments |
Gli argomenti per l'ottimizzatore. Si tratta di un elenco separato da virgole di
coppie "nome=valore". Deve essere compatibile con
optimizer_type . Esempi:
|
fpn_type |
Il tipo di rete FPN (Feature Pyramid Network) multilivello.
Deve essere uno dei seguenti: {fpn, nasfpn} .
|
resnet_depth |
La profondità della dorsale ResNet.
Deve essere uno dei seguenti: {18,34,50,101,152,200} .
|
max_num_bboxes_in_training |
Il numero massimo di caselle delimitanti proposte da utilizzare per l'addestramento. |
max_num_bboxes_in_prediction |
Il numero massimo di caselle delimitanti proposte da utilizzare negli output della previsione. |
bbox_aspect_ratios |
La scala delle dimensioni delle ancore di base che rappresentano le proporzioni aggiunte su ogni livello. Il numero indica il rapporto tra larghezza e altezza. Ad esempio, "1.0,2.0,0.5" aggiunge tre ancore su ogni livello della scala. |
nms_iou_threshold |
La soglia per decidere se i riquadri di delimitazione si sovrappongono rispetto all'IOU per la soppressione non massima. |
nms_score_threshold |
La soglia per decidere quando rimuovere i riquadri di delimitazione in base al punteggio. |
focal_loss_alpha |
Valore alpha della perdita focale (parametro di bilanciamento). |
focal_loss_gamma |
Valore della gamma di perdita focale (parametro di messa a fuoco). |
aug_scale_min |
La scala minima applicata durante l'aumento delle immagini. Il suo valore deve essere compreso tra [0, 1.0] .
|
aug_scale_max |
La scala massima applicata durante l'aumento delle immagini. Il suo valore deve essere compreso tra [1.0, inf] .
|
aug_rand_hflip |
Valore booleano. Se impostata su True, questa impostazione migliora l'addestramento con una rotazione orizzontale random. |
Per un elenco dettagliato di tutti gli altri flag dell'algoritmo di rilevamento di oggetti immagine, consulta il riferimento al rilevamento di oggetti immagine integrato.
Console
Argomenti degli algoritmi
Nella prima parte della scheda Argomenti dell'algoritmo, inserisci i seguenti valori:
- Numero di corsi: 91
- Passaggi massimi: 15000
- Dimensione del batch di addestramento: 64
- Numero di immagini di valutazione: 5000
Nella sezione Model della scheda Argomenti dell'algoritmo:
In Percorso del checkpoint preaddestrato, inserisci
gs://cloud-samples-data/ai-platform/built-in/image/pretrained_checkpoints/detection/
.Lascia invariate le impostazioni predefinite di tutti gli altri campi e fai clic su Avanti.
Impostazioni del job
Nella scheda Impostazioni job:
- Inserisci un ID job univoco (ad esempio "object_detection_example").
- Inserisci una regione disponibile (ad esempio "us-central1").
- Per selezionare i tipi di macchine, seleziona "PERSONALIZZATO" per il livello di scalabilità.
Viene visualizzata una sezione per fornire la specifica del cluster personalizzato.
- Per Tipo di modello principale, seleziona complex_model_m.
- Per Tipo di worker, seleziona cloud_tpu. Il valore predefinito di worker count è 1.
Fai clic su Fine per inviare il job di addestramento.
gcloud
Configura tutti gli argomenti per il job di addestramento e l'algoritmo prima di utilizzare
gcloud
per inviare il job:DATASET_NAME="coco" ALGORITHM="object_detection" MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_model" # Give a unique name to your training job. DATE="$(date '+%Y%m%d_%H%M%S')" JOB_ID="${MODEL_NAME}_${DATE}" # Make sure you have access to this Cloud Storage bucket. JOB_DIR="gs://${BUCKET_NAME}/algorithms_training/${MODEL_NAME}/${DATE}"
Invia il job:
gcloud ai-platform jobs submit training $JOB_ID \ --region=$REGION \ --config=config.yaml \ --job-dir=$JOB_DIR \ -- \ --training_data_path=$TRAINING_DATA_PATH \ --validation_data_path=$VALIDATION_DATA_PATH \ --train_batch_size=64 \ --num_eval_images=500 \ --train_steps_per_eval=2000 \ --max_steps=15000 \ --num_classes=90 \ --warmup_steps=500 \ --initial_learning_rate=0.08 \ --fpn_type="nasfpn" \ --aug_scale_min=0.8 \ --aug_scale_max=1.2
Dopo che il job è stato inviato correttamente, puoi visualizzare i log utilizzando i seguenti comandi
gcloud
:gcloud ai-platform jobs describe $JOB_ID gcloud ai-platform jobs stream-logs $JOB_ID
Informazioni sulla directory dei job
Al termine di un job di addestramento, AI Platform Training
crea un modello addestrato nel tuo bucket Cloud Storage, insieme ad alcuni altri
gli artefatti. All'interno di JOB_DIR
puoi trovare la seguente struttura di directory:
- model/ (una directory SavedModel di TensorFlow che contiene anche un file
deployment_config.yaml
)- saved_model.pb
- deployment_config.yaml
- eval/
- events.out.tfevents.[timestamp].cmle-training-[timestamp]
- events.out.tfevents...
- …
- variables/
- variables.data-00000-of-00001
- variables.index
La directory del job contiene anche vari file di checkpoint del modello.
Verifica che la struttura della directory in JOB_DIR
corrisponda a:
gcloud storage ls $JOB_DIR/* --all-versions
Esegui il deployment del modello addestrato
AI Platform Training organizza i modelli addestrati utilizzando le risorse model e version. Un modello di AI Platform Training è un contenitore per le versioni del tuo modello di machine learning.
Per eseguire il deployment di un modello, crea una risorsa modello in AI Platform Training, crea una versione del modello e poi utilizza il modello e la versione per richiedere le previsioni online.
Per ulteriori informazioni su come eseguire il deployment dei modelli in AI Platform Training, consulta come eseguire il deployment di un modello TensorFlow.
Console
Nella pagina Job puoi trovare un elenco di tutti i tuoi job di addestramento. Fai clic sul nome del job di addestramento che hai appena inviato ("object_detection" o il nome del job che hai utilizzato).
Nella pagina Dettagli job, puoi visualizzare l'avanzamento generale del job o fare clic su Visualizza log per una visualizzazione più dettagliata dell'avanzamento.
Se il job ha esito positivo, nella parte superiore viene visualizzato il pulsante Esegui il deployment del modello. Fai clic su Esegui il deployment del modello.
Seleziona Esegui il deployment come nuovo modello e inserisci un nome del modello, ad esempio "algorithms_object_detection_model". Poi, fai clic su Conferma.
Nella pagina Crea versione, inserisci un nome per la versione, ad esempio "v1", e lascia invariate le impostazioni predefinite di tutti gli altri campi. Fai clic su Salva.
gcloud
Il processo di addestramento con l'algoritmo di rilevamento di oggetti immagine integrato produce un
file, deployment_config.yaml
, che semplifica il deployment del modello
su AI Platform Training per le previsioni.
Copia il file nella tua directory locale e visualizzane i contenuti:
gcloud storage cp $JOB_DIR/model/deployment_config.yaml . cat deployment_config.yaml
Il file
deployment_config.yaml
dovrebbe avere il seguente aspetto:deploymentUri: gs://BUCKET_NAME/algorithms_training/coco_object_detection/model framework: TENSORFLOW labels: global_step: '1000' job_id: coco_object_detection_20190227060114 runtimeVersion: '1.14'
Crea il modello e la versione in AI Platform Training:
gcloud ai-platform models create $MODEL_NAME --regions $REGION # Create a model and a version using the file above. VERSION_NAME="v_${DATE}" gcloud ai-platform versions create $VERSION_NAME \ --model $MODEL_NAME \ --config deployment_config.yaml
La creazione della versione richiede alcuni minuti.
Ricevere previsioni online
Quando richiedi le previsioni, devi assicurarti che i dati di input siano formattati in JSON.
Scarica i file degli elementi di addestramento:
gcloud storage cp $JOB_DIR/artifacts/* .
Prepara l'input di previsione per un'immagine.
Per inviare una richiesta di previsione online utilizzando Google Cloud CLI, come in questo esempio, scrivi ogni istanza in una riga di un file JSON delimitato da interruzioni di riga.
Esegui i seguenti comandi nel terminale per creare un input per una singola istanza che puoi inviare ad AI Platform Prediction:
Il seguente script Python codifica una singola immagine utilizzando
base64
, la formatta per la previsione, aggiunge una chiave di istanza e scrive il risultato in un file denominatoprediction_instances.json
:import json import base64 import tensorflow as tf IMAGE_URI='gs://cloud-samples-data/ai-platform/built-in/image/tutorial_examples/coco_sample.jpeg' with tf.gfile.Open(IMAGE_URI, 'rb') as image_file: encoded_string = base64.b64encode(image_file.read()).decode('utf-8') image_bytes = {'b64': str(encoded_string)} instances = {'image_bytes': image_bytes, 'key': '1'} with open("prediction_instances.json","w") as f: f.write(json.dumps(instances))
Invia la richiesta di previsione:
gcloud ai-platform predict --model $MODEL_NAME \ --version $VERSION_NAME \ --json-instances prediction_instances.json
Per ogni oggetto rilevato all'interno dell'immagine, l'output della previsione include classi, punteggi e le posizioni dei riquadri di delimitazione.
Informazioni sui dati
Il set di dati COCO (Common Objects in Context) di Microsoft è un set di dati su larga scala per il rilevamento, la segmentazione e la creazione di sottotitoli codificati di oggetti.
Passaggi successivi
- Scopri di più sull'utilizzo dell'algoritmo di rilevamento di oggetti immagine integrato.