Classificazione delle immagini - MXNet - Amazon SageMaker

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 SageMaker immagini di Amazon è 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 training non sono disponibili.

Il formato di input consigliato per gli algoritmi di classificazione delle SageMaker immagini di Amazon è Apache MXNet RecOrdio. 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 Amazon. SageMaker

Per ulteriori informazioni sulle reti convoluzionali, consulta:

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

L'algoritmo SageMaker 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 il training 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.

La formazione distribuita è 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.

Training con il formato RecordIO

Se utilizzi il formato RecordIO per il training, 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.

Training con il formato immagine

Se utilizzi il formato immagine per il training, 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 legge i dati di addestramento e convalida separatamente da canali diversi, 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 training 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.

Training con il formato di immagine manifest aumentato

Il formato di manifest aumentato ti consente di eseguire il training in modalità Pipe usando i file di immagine senza dover creare file RecordIO. È necessario specificare i canali di training 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 manifest deve essere in JSON Lines dove ogni riga rappresenta un esempio. 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 di "AttributeNames" input è importante durante l'addestramento dell'algoritmo. ImageClassification 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".

Il training multi-etichetta è supportato anche specificando un array di valori JSON. 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://mybucket/sample01/image1.jpg", "class": "[1, 0, 1]"} {"image-ref": "s3://mybucket/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://mybucket/sample01/image1.jpg", "class": "[0, 2]"} {"image-ref": "s3://mybucket/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: "application/x-recordio; label-format=multi-hot". Il formato class-id, che è 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 Fornitura dei metadati dei set di dati ai processi di addestramento con un file manifest aumentato.

Training incrementale

Puoi anche avviare il training di un nuovo modello con gli artefatti di un modello che hai sottoposto al training in precedenza con SageMaker. L'addestramento incrementale consente di risparmiare tempo di addestramento quando si desidera addestrare un nuovo modello con dati uguali o simili. SageMaker i modelli di classificazione delle immagini possono essere avviati solo con un altro modello di classificazione delle immagini integrato in cui è stato addestrato. SageMaker

Per usare un modello già sottoposto al training 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à sottoposto al training 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, utilizzate gli artefatti del modello compressi (in formato.tar.gz) generati da. 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 è il valore di probabilità per tutte le classi codificate in formato JSON o in formato di testo JSON Lines per la trasformazione in batch. Il modello di classificazione dell'immagine elabora una singola immagine per richiesta e quindi emette 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 training e inferenza, consulta le istanze notebook di esempio per la classificazione delle immagini citate nell'introduzione.

Raccomandazione istanza EC2 per l'algoritmo di classificazione delle immagini

Per la classificazione delle immagini, supportiamo istanze P2, P3, G4dn e G5. Ti consigliamo di utilizzare le istanze GPU con più memoria per il training con batch di grandi dimensioni. Puoi anche eseguire l'algoritmo su impostazioni a più GPU e macchine di training distribuito. Per l'inferenza puoi utilizzare sia le istanze CPU (come C4) che quelle GPU (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 SageMaker immagini, vedere Creazione e registrazione di un modello di classificazione delle immagini MXNet tramite SageMaker Pipelines. Per istruzioni su come creare e accedere alle istanze di notebook Jupyter che è possibile utilizzare per eseguire l'esempio, vedere. SageMaker Istanze Amazon SageMaker Notebook Dopo aver creato un'istanza di notebook e averla aperta, seleziona la scheda SageMakerEsempi per visualizzare un elenco di tutti gli esempi. 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).