Trasferisci l'apprendimento per i modelli di classificazione delle immagini TensorFlow in Amazon SageMaker

Amazon Sage Maker fornisce una suite di algoritmi incorporati, modelli pre-addestratie modelli di soluzioni predefiniti per aiutare i data scientist e i professionisti dell'apprendimento automatico (ML) a iniziare ad addestrare e distribuire rapidamente i modelli ML. È possibile utilizzare questi algoritmi e modelli sia per l'apprendimento supervisionato che non supervisionato. Possono elaborare vari tipi di dati di input, inclusi tabulari, immagini e testo.

A partire da oggi, SageMaker fornisce un nuovo algoritmo integrato per la classificazione delle immagini: Classificazione delle immagini – TensorFlow. È un algoritmo di apprendimento supervisionato che supporta l'apprendimento di trasferimento per molti modelli pre-addestrati disponibili in Hub TensorFlow. Prende un'immagine come input e genera la probabilità per ciascuna delle etichette di classe. Puoi mettere a punto questi modelli pre-addestrati utilizzando l'apprendimento del trasferimento anche quando non è disponibile un numero elevato di immagini di addestramento. È disponibile tramite SageMaker algoritmi incorporati così come attraverso il Interfaccia utente di SageMaker JumpStart interno Amazon Sage Maker Studio. Per ulteriori informazioni, fare riferimento alla sua documentazione Classificazione delle immagini – TensorFlow e il quaderno di esempio Introduzione a SageMaker TensorFlow – Classificazione delle immagini.

La classificazione delle immagini con TensorFlow in SageMaker fornisce l'apprendimento del trasferimento su molti modelli pre-addestrati disponibili in TensorFlow Hub. In base al numero di etichette di classe nei dati di addestramento, al modello TensorFlow Hub pre-addestrato viene associato un livello di classificazione. Lo strato di classificazione è costituito da uno strato di dropout e uno strato denso, che è uno strato completamente connesso con un regolarizzatore a 2 norme che viene inizializzato con pesi casuali. L'addestramento del modello ha iperparametri per il tasso di abbandono dello strato di abbandono e il fattore di regolarizzazione L2 per lo strato denso. Quindi l'intera rete, incluso il modello pre-addestrato, o solo il livello di classificazione superiore può essere messo a punto sui nuovi dati di addestramento. In questa modalità di apprendimento di trasferimento, puoi ottenere l'allenamento anche con un set di dati più piccolo.

Come utilizzare il nuovo algoritmo di classificazione delle immagini TensorFlow

Questa sezione descrive come utilizzare l'algoritmo di classificazione delle immagini TensorFlow con SDK Python di SageMaker. Per informazioni su come utilizzarlo dall'interfaccia utente di Studio, vedere SageMaker JumpStart.

L'algoritmo supporta l'apprendimento del trasferimento per i modelli pre-addestrati elencati in Modelli di hub TensorFlow. Ogni modello è identificato da un unico model_id. Il codice seguente mostra come ottimizzare MobileNet V2 1.00 224 identificato da model_id tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4 su un set di dati di addestramento personalizzato. Per ciascuno model_id, al fine di avviare un lavoro di formazione SageMaker tramite il Estimator classe di SageMaker Python SDK, è necessario recuperare l'URI dell'immagine Docker, l'URI dello script di addestramento e l'URI del modello pre-addestrato tramite le funzioni di utilità fornite in SageMaker. L'URI dello script di addestramento contiene tutto il codice necessario per l'elaborazione dei dati, il caricamento del modello pre-addestrato, l'addestramento del modello e il salvataggio del modello addestrato per l'inferenza. L'URI del modello pre-addestrato contiene la definizione dell'architettura del modello pre-addestrato ei parametri del modello. Si noti che l'URI dell'immagine Docker e l'URI dello script di addestramento sono gli stessi per tutti i modelli di classificazione delle immagini TensorFlow. L'URI del modello pre-addestrato è specifico per il modello particolare. I tarball dei modelli pre-addestrati sono stati pre-scaricati da TensorFlow Hub e salvati con la firma del modello appropriata in Servizio di archiviazione semplice Amazon (Amazon S3), in modo tale che il processo di addestramento venga eseguito in isolamento di rete. Vedere il codice seguente:

from sagemaker import image_uris, model_uris, script_uris
from sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4", "*"
training_instance_type = "ml.p3.2xlarge"

# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)

# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")

# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-ic-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

Con questi artefatti di addestramento specifici del modello, puoi costruire un oggetto di Estimator classe:

# Create SageMaker Estimator instance
tf_ic_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
)

Successivamente, per trasferire l'apprendimento sul set di dati personalizzato, potrebbe essere necessario modificare i valori predefiniti degli iperparametri di addestramento, elencati in iperparametri. Puoi recuperare un dizionario Python di questi iperparametri con i loro valori predefiniti chiamando hyperparameters.retrieve_default, aggiornali secondo necessità, quindi passali alla classe Estimator. Si noti che i valori predefiniti di alcuni degli iperparametri sono diversi per i diversi modelli. Per i modelli di grandi dimensioni, la dimensione del lotto predefinita è più piccola e il train_only_top_layer l'iperparametro è impostato su True. L'iperparametro Train_only_top_layer definisce quali parametri del modello cambiano durante il processo di messa a punto. Se train_only_top_layer is True, i parametri dei livelli di classificazione cambiano e il resto dei parametri rimane costante durante il processo di messa a punto. D'altra parte, se train_only_top_layer is False, tutti i parametri del modello vengono messi a punto. Vedere il codice seguente:

from sagemaker import hyperparameters
# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)

# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

Il codice seguente fornisce un set di dati di addestramento predefinito ospitato nei bucket S3. Forniamo il tf_flowers set di dati come set di dati predefinito per la messa a punto dei modelli. Il set di dati comprende immagini di cinque tipi di fiori. Il set di dati è stato scaricato da TensorFlow sotto il Licenza Apache 2.0.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/tf_flowers/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

Infine, per avviare il lavoro di formazione SageMaker per la messa a punto del modello, chiama .fit sull'oggetto della classe Estimator, passando la posizione S3 del set di dati di addestramento:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Per ulteriori informazioni su come utilizzare il nuovo algoritmo di classificazione delle immagini SageMaker TensorFlow per trasferire l'apprendimento su un set di dati personalizzato, distribuire il modello ottimizzato, eseguire l'inferenza sul modello distribuito e distribuire il modello pre-addestrato così com'è senza prima eseguire la messa a punto su un set di dati personalizzato, vedere il seguente notebook di esempio: Introduzione a SageMaker TensorFlow – Classificazione delle immagini.

Interfaccia di input/output per l'algoritmo di classificazione delle immagini TensorFlow

Puoi mettere a punto ciascuno dei modelli pre-addestrati elencati in Modelli di hub TensorFlow a un dato set di dati comprendente immagini appartenenti a un numero qualsiasi di classi. L'obiettivo è ridurre al minimo l'errore di previsione sui dati di input. Il modello restituito dall'ottimizzazione può essere ulteriormente distribuito per l'inferenza. Di seguito sono riportate le istruzioni su come formattare i dati di addestramento per l'immissione nel modello:

  • Ingresso – Una directory con tante sottodirectory quante sono le classi. Ogni sottodirectory dovrebbe avere immagini appartenenti a quella classe in formato .jpg, .jpeg o .png.
  • Uscita – Un modello perfezionato che può essere distribuito per l'inferenza o può essere ulteriormente addestrato utilizzando l'addestramento incrementale. Una firma di pre-elaborazione e post-elaborazione viene aggiunta al modello ottimizzato in modo tale che accetti l'immagine .jpg grezza come input e restituisca le probabilità di classe. Insieme ai modelli viene salvato un file di mappatura degli indici di classe alle etichette di classe.

La directory di input dovrebbe essere simile all'esempio seguente se i dati di addestramento contengono immagini di due classi: roses ed dandelion. Il percorso S3 dovrebbe essere simile s3://bucket_name/input_directory/. Nota il finale / è obbligatorio. I nomi delle cartelle e roses, dandelione i nomi dei file .jpg possono essere qualsiasi cosa. Il file di mappatura dell'etichetta salvato insieme al modello addestrato nel bucket S3 mappa i nomi delle cartelle rose e dandelion agli indici nell'elenco delle probabilità di classe che il modello restituisce. La mappatura segue l'ordine alfabetico dei nomi delle cartelle. Nell'esempio seguente, corrisponde all'indice 0 nell'elenco di output del modello dandelione l'indice 1 corrisponde a roses.

input_directory
    |--roses
        |--abc.jpg
        |--def.jpg
    |--dandelion
        |--ghi.jpg
        |--jkl.jpg

Inferenza con l'algoritmo di classificazione delle immagini TensorFlow

I modelli generati possono essere ospitati per l'inferenza e supportare i formati di immagine codificati .jpg, .jpeg e .png come application/x-image tipo di contenuto. L'immagine di input viene ridimensionata automaticamente. L'output contiene i valori di probabilità, le etichette di classe per tutte le classi e l'etichetta prevista corrispondente all'indice di classe con la probabilità più alta, codificata in formato JSON. Il modello di classificazione delle immagini TensorFlow elabora una singola immagine per richiesta e genera solo una riga in JSON. Quello che segue è un esempio di risposta in JSON:

accept: application/json;verbose

 {"probabilities": [prob_0, prob_1, prob_2, ...],
  "labels":        [label_0, label_1, label_2, ...],
  "predicted_label": predicted_label}

If accept è impostato su application/json, quindi il modello emette solo probabilità. Per ulteriori dettagli sull'addestramento e sull'inferenza, vedere il quaderno di esempio Introduzione a SageMaker TensorFlow – Classificazione delle immagini.

Usa gli algoritmi integrati di SageMaker tramite l'interfaccia utente di JumpStart

Puoi anche utilizzare la classificazione delle immagini SageMaker TensorFlow e qualsiasi altro algoritmo integrato con pochi clic tramite l'interfaccia utente di JumpStart. JumpStart è una funzionalità di SageMaker che consente di addestrare e distribuire algoritmi integrati e modelli pre-addestrati da vari framework ML e hub modello attraverso un'interfaccia grafica. Ti consente inoltre di distribuire soluzioni ML complete che mettono insieme modelli ML e vari altri servizi AWS per risolvere un caso d'uso mirato. Guardare Esegui la classificazione del testo con Amazon SageMaker JumpStart utilizzando i modelli TensorFlow Hub e Hugging Face per scoprire come utilizzare JumpStart per addestrare un algoritmo o un modello pre-addestrato in pochi clic.

Conclusione

In questo post, abbiamo annunciato il lancio dell'algoritmo integrato di classificazione delle immagini SageMaker TensorFlow. Abbiamo fornito un codice di esempio su come trasferire l'apprendimento su un set di dati personalizzato utilizzando un modello pre-addestrato da TensorFlow Hub utilizzando questo algoritmo. Per ulteriori informazioni, controlla documentazione e la quaderno di esempio.


Circa gli autori

Trasferisci l'apprendimento per i modelli di classificazione delle immagini TensorFlow in Amazon SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Dottor Ashish Khetan è un Senior Applied Scientist con Algoritmi integrati di Amazon SageMaker e aiuta a sviluppare algoritmi di apprendimento automatico. Ha conseguito il dottorato di ricerca presso l'Università dell'Illinois Urbana-Champaign. È un ricercatore attivo nell'apprendimento automatico e nell'inferenza statistica e ha pubblicato molti articoli in conferenze NeurIPS, ICML, ICLR, JMLR, ACL ed EMNLP.

Trasferisci l'apprendimento per i modelli di classificazione delle immagini TensorFlow in Amazon SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Dott. Vivek Madan è uno scienziato applicato con il Team di Amazon SageMaker JumpStart. Ha conseguito il dottorato di ricerca presso l'Università dell'Illinois Urbana-Champaign ed è stato ricercatore post-dottorato presso la Georgia Tech. È un ricercatore attivo nell'apprendimento automatico e nella progettazione di algoritmi e ha pubblicato articoli in conferenze EMNLP, ICLR, COLT, FOCS e SODA.

Trasferisci l'apprendimento per i modelli di classificazione delle immagini TensorFlow in Amazon SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.João Moura è un architetto specializzato in soluzioni AI/ML presso Amazon Web Services. Si concentra principalmente sui casi d'uso della NLP e aiuta i clienti a ottimizzare la formazione e l'implementazione del modello di deep learning. È anche un attivo sostenitore di soluzioni ML a basso codice e hardware specializzato in ML.

Trasferisci l'apprendimento per i modelli di classificazione delle immagini TensorFlow in Amazon SageMaker PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Raju Penmatcha è un Senior AI/ML Specialist Solutions Architect presso AWS. Lavora con clienti dell'istruzione, del governo e del non profit su progetti relativi all'apprendimento automatico e all'intelligenza artificiale, aiutandoli a creare soluzioni utilizzando AWS. Quando non aiuta i clienti, gli piace viaggiare in posti nuovi.

Timestamp:

Di più da Apprendimento automatico di AWS