Classificazione delle immagini - MXNet - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Classificazione delle immagini - MXNet

L'algoritmo di classificazione delle immagini di Amazon SageMaker AI è un algoritmo di apprendimento supervisionato che supporta la classificazione multietichetta. Accetta un'immagine come input e restituisce una o più etichette assegnate a tale immagine come output. Utilizza una rete convoluzionale neurale che può essere preparata da zero oppure utilizzando l'apprendimento per trasferimento quando un numero elevato di immagini di addestramento non sono disponibili.

Il formato di input consigliato per gli algoritmi di classificazione delle immagini di Amazon SageMaker AI è Apache ReCordio. MXNet Tuttavia, puoi anche utilizzare immagini non elaborate in formato. jpg o. png. Fare riferimento a questa discussione per un'ampia panoramica della preparazione e del caricamento dei dati efficienti per i sistemi di machine learning.

Nota

Per mantenere una migliore interoperabilità con i framework di deep learning esistenti, questo si differenzia dai formati di dati protobuf comunemente usati da altri algoritmi di intelligenza artificiale di Amazon. SageMaker

Per ulteriori informazioni sulle reti convoluzionali, consulta:

Interfaccia di input/output per l'algoritmo di classificazione immagine

L'algoritmo SageMaker AI Image Classification supporta i tipi di contenuto reCordio (application/x-recordio) e image (image/pngimage/jpeg, eapplication/x-image) per l'addestramento in modalità file e supporta il tipo di contenuto recorDIO (application/x-recordio) per l'addestramento in modalità pipe. Tuttavia puoi anche eseguire l’addestramento in modalità Pipe utilizzando il file immagine (image/png, image/jpeg e application/x-image), senza creare file RecordIO usando il formato di manifest aumentato.

L’addestramento distribuito è supportata per la modalità file e la modalità pipe. Quando si utilizza il tipo di contenuto RecordIO in modalità pipe, è necessario impostare S3DataDistributionType di S3DataSource su FullyReplicated. L'algoritmo supporta un modello completamente replicato in cui i dati vengono copiati su ogni macchina.

L'algoritmo supporta image/png, image/jpeg e application/x-image per l'inferenza.

Addestramento con il formato RecordIO

Se utilizzi il formato RecordIO per l’addestramento, specifica i canali train e validation come valori per il parametro InputDataConfig della richiesta CreateTrainingJob. Specifica un file RecordIO (.rec) nel canale train e un file RecordIO nel canale validation. Imposta il tipo di contenuto per entrambi i canali su application/x-recordio.

Addestramento con il formato immagine

Se utilizzi il formato immagine per l’addestramento, specifica i canali train, validation, train_lst e validation_lst come valori per il parametro InputDataConfig della richiesta CreateTrainingJob. Specifica i dati individuali dell'immagine (file .jpg o .png) per i canali train e validation. Specifica un file .lst in ciascuno dei canali train_lst e validation_lst. Imposta il tipo di contenuto per tutti e quattro i canali su application/x-image.

Nota

SageMaker L'intelligenza artificiale legge i dati di addestramento e convalida separatamente da diversi canali, quindi è necessario archiviarli in cartelle diverse.

Un file .lst è un file separato da tabulazioni con tre colonne che contiene un elenco di file immagine. La prima colonna specifica l'indice dell'immagine, la seconda colonna specifica l'indice di classe dell'etichetta per l'immagine e la terza colonna specifica il percorso relativo del file immagine. L'indice dell'immagine nella prima colonna deve essere univoco per tutte le immagini. Il set degli indici di classe dell'etichetta sono numerati in seguito e la numerazione deve iniziare con 0. Ad esempio, 0 per la classe gatto, 1 per la classe cane e così via per le ulteriori classi.

Di seguito è riportato un esempio di un file .lst:

5 1 your_image_directory/train_img_dog1.jpg 1000 0 your_image_directory/train_img_cat1.jpg 22 1 your_image_directory/train_img_dog2.jpg

Ad esempio, se le tue immagini di addestramento sono archiviate in s3://<your_bucket>/train/class_dog, s3://<your_bucket>/train/class_cat e così via, specifica il percorso per il tuo canale train come s3://<your_bucket>/train, che è la directory di primo livello per i tuoi dati. Nel file .lst, specifica il percorso relativo per un singolo file denominato train_image_dog1.jpg nella directory di classe class_dog come class_dog/train_image_dog1.jpg. Puoi anche archiviare tutti i tuoi file immagine in una sottodirectory all'interno della directory train. In quel caso, utilizza tale sottodirectory per il percorso relativo. Ad esempio s3://<your_bucket>/train/your_image_directory.

Addestramento con il formato di immagine manifest aumentato

Il formato di manifest aumentato ti consente di eseguire l’addestramento in modalità Pipe usando i file di immagine senza dover creare file RecordIO. È necessario specificare i canali di addestramento e di convalida come valori per il parametro InputDataConfig della richiesta CreateTrainingJob. Quando si usa questo formato, è necessario generare un file manifest S3 che contenga l'elenco delle immagini e delle annotazioni corrispondenti. Il formato del file manifesto deve essere in formato JSONLines in cui ogni riga rappresenta un campione. Le immagini sono specificate utilizzando il tag 'source-ref' che punta al percorso S3 dell'immagine. Le annotazioni sono fornite nel valore del parametro "AttributeNames" come specificato nella richiesta CreateTrainingJob. Può anche contenere metadati aggiuntivi nel tag metadata, ma questi vengono ignorati dall'algoritmo. Nell'esempio seguente, gli "AttributeNames" sono contenuti nell'elenco di riferimenti a immagini e annotazioni ["source-ref", "class"]. Il valore dell'etichetta corrispondente è "0" per la prima immagine e “1” per la seconda immagine:

{"source-ref":"s3://image/filename1.jpg", "class":"0"} {"source-ref":"s3://image/filename2.jpg", "class":"1", "class-metadata": {"class-name": "cat", "type" : "groundtruth/image-classification"}}

L'ordine dei file "AttributeNames" di input è importante durante l'addestramento dell' ImageClassification algoritmo. Accetta dati reindirizzati in un ordine specifico, con image per primo, seguito da label. Quindi i "AttributeNames" in questo esempio vengono forniti per "source-ref" primi, seguiti da"class". Quando si utilizza l' ImageClassification algoritmo con Augmented Manifest, il valore del RecordWrapperType parametro deve essere"RecordIO".

La formazione multietichetta è supportata anche specificando una JSON serie di valori. L'iperparametro num_classes deve essere impostato in modo che corrisponda al numero totale di classi. Esistono due formati di etichetta validi: multi-hot e class-id.

Nel formato multi-hot, ogni etichetta è un vettore codificato multi-hot di tutte le classi, in cui ogni classe assume il valore di 0 o 1. Nell'esempio seguente, sono presenti tre classi. La prima immagine è etichettata con le classi 0 e 2, mentre la seconda immagine è etichettata solo con la classe 2:

{"image-ref": "s3://amzn-s3-demo-bucket/sample01/image1.jpg", "class": "[1, 0, 1]"} {"image-ref": "s3://amzn-s3-demo-bucket/sample02/image2.jpg", "class": "[0, 0, 1]"}

Nel formato class-id, ogni etichetta è un elenco degli ID classe, da (0, num_classes), che si applica al punto dati. L'aspetto dell'esempio precedente sarebbe simile a questo:

{"image-ref": "s3://amzn-s3-demo-bucket/sample01/image1.jpg", "class": "[0, 2]"} {"image-ref": "s3://amzn-s3-demo-bucket/sample02/image2.jpg", "class": "[2]"}

Il formato multi-hot è quello predefinito, ma può essere impostato in modo esplicito nel tipo di contenuto con il label-format parametro: Il formato class-id, che è "application/x-recordio; label-format=multi-hot". il formato generato da, deve essere impostato in modo esplicito: GroundTruth "application/x-recordio; label-format=class-id".

Per ulteriori informazioni sui file manifest aumentati, consulta File manifesto aumentati per lavori di formazione.

Addestramento incrementale

Puoi anche avviare l'addestramento di un nuovo modello con gli artefatti di un modello che hai precedentemente addestrato con l'intelligenza artificiale. SageMaker La formazione incrementale consente di risparmiare tempo di formazione quando si desidera addestrare un nuovo modello con dati uguali o simili. SageMaker I modelli di classificazione delle immagini AI possono essere configurati solo con un altro modello di classificazione delle immagini integrato addestrato nell' SageMaker IA.

Per usare un modello già addestrato nella richiesta CreateTrainingJob, specifica ChannelName come modello nel parametro InputDataConfig. Imposta ContentType per il canale del modello su application/x-sagemaker-model. Gli iperparametri di input del nuovo modello e del modello già addestrato che carichi nel canale del modello devono avere le stesse impostazioni per i parametri di input num_layers, image_shape e num_classes. Questi parametri definiscono l'architettura della rete. Per il file di modello preaddestrato, utilizza gli artefatti del modello compressi (in formato.tar.gz) generati dall'IA. SageMaker Puoi utilizzare i formati di immagine o RecordIO per i dati di input.

Inferenza con l'algoritmo di classificazione delle immagini

I modelli generati possono essere ospitati per inferenza e supportano formati di immagine codificati .jpg e .png come tipo di contenuto image/png, image/jpeg e application/x-image. L'immagine di input viene ridimensionata automaticamente. L'output sono i valori di probabilità per tutte le classi codificati nel JSON formato o nel formato di testo Lines per la trasformazione batch. JSON Il modello di classificazione delle immagini elabora una singola immagine per richiesta e quindi restituisce solo una riga nel formato JSON o JSON Lines. Di seguito è riportato un esempio di risposta in formato JSON Lines:

accept: application/jsonlines {"prediction": [prob_0, prob_1, prob_2, prob_3, ...]}

Per ulteriori dettagli su addestramento e inferenza, consulta le istanze del notebook di esempio per la classificazione delle immagini citate nell'introduzione.

EC2Raccomandazione di istanza per l'algoritmo di classificazione delle immagini

Per la classificazione delle immagini, supportiamo istanze P2, P3, G4dn e G5. Consigliamo di utilizzare GPU istanze con più memoria per allenamenti con batch di grandi dimensioni. È inoltre possibile eseguire l'algoritmo su impostazioni multiple GPU e multi-macchina per un addestramento distribuito. Per l'inferenza è possibile utilizzare entrambe le istanze CPU GPU (come C4) e (P2, P3, G4dn o G5).

Notebook di esempio per la classificazione delle immagini

Per un notebook di esempio che utilizza l'algoritmo di classificazione delle immagini SageMaker AI, consulta Creare e registrare un modello di classificazione delle immagini tramite Pipelines. MXNet SageMaker Per istruzioni su come creare e accedere alle istanze di notebook Jupyter da utilizzare per eseguire l'esempio in AI, consulta. SageMaker Istanze Amazon SageMaker Notebook Dopo aver creato un'istanza di notebook e averla aperta, seleziona la scheda Esempi SageMaker AI per visualizzare un elenco di tutti gli esempi di IA. SageMaker I notebook di esempio per la classificazione delle immagini si trovano nella sezione con l'introduzione agli algoritmi di Amazon. Per aprire un notebook, fai clic sulla relativa scheda Use (Utilizza) e seleziona Create copy (Crea copia).