

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
<a name="image-classification"></a>

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 addestramento non sono disponibili. 

[Il formato di input consigliato per gli algoritmi di classificazione delle immagini di Amazon SageMaker AI è Apache ReCordio. MXNet ](https://mxnet.apache.org/api/faq/recordio) Tuttavia, puoi anche utilizzare immagini non elaborate in formato. jpg o. png. Fare riferimento a [questa discussione](https://mxnet.apache.org/api/architecture/note_data_loading) 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: 
+ [Deep residual learning for image recognition](https://arxiv.org/abs/1512.03385) Kaiming He e altri, 2016 IEEE Conference on Computer Vision and Pattern Recognition
+ [ImageNet database di immagini](http://www.image-net.org/)
+ [Classificazione delle immagini con Gluon-CV e MXNet](https://gluon-cv.mxnet.io/build/examples_classification/index.html)

**Topics**
+ [Interfaccia di input/output per l'algoritmo di classificazione immagine](#IC-inputoutput)
+ [Raccomandazione istanza EC2 per l'algoritmo di classificazione delle immagini](#IC-instances)
+ [Notebook di esempio per la classificazione delle immagini](#IC-sample-notebooks)
+ [Come funziona la classificazione delle immagini](IC-HowItWorks.md)
+ [Iperparametri di classificazione delle immagini](IC-Hyperparameter.md)
+ [Ottimizzazione di un modello di classificazione delle immagini](IC-tuning.md)

## Interfaccia di input/output per l'algoritmo di classificazione immagine
<a name="IC-inputoutput"></a>

L'algoritmo SageMaker AI Image Classification supporta i tipi di contenuto reCordio (`application/x-recordio`) e image (`image/png``image/jpeg`, e`application/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
<a name="IC-recordio-training"></a>

Se utilizzi il formato RecordIO per l’addestramento, specifica i canali `train` e `validation` come valori per il parametro `InputDataConfig` della richiesta [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). 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
<a name="IC-image-training"></a>

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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). 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
<a name="IC-augmented-manifest-training"></a>

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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). 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](http://jsonlines.org/) 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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). 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"`.

L’addestramento 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://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: `"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 [File di manifesto aumentati nei job di addestramento](augmented-manifest.md).

### Addestramento incrementale
<a name="IC-incremental-training"></a>

Puoi anche avviare l'addestramento di un nuovo modello con gli artefatti di un modello che hai addestrato in precedenza 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 intelligenza artificiale.

Per usare un modello già addestrato nella richiesta [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html), 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
<a name="IC-inference"></a>

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](http://jsonlines.org/) 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 addestramento e inferenza, consulta le istanze del notebook di esempio per la classificazione delle immagini citate nell'introduzione.

## Raccomandazione istanza EC2 per l'algoritmo di classificazione delle immagini
<a name="IC-instances"></a>

Per la classificazione delle immagini, supportiamo istanze P2, P3, G4dn e G5. Ti consigliamo di utilizzare le istanze GPU con più memoria per l’addestramento con batch di grandi dimensioni. Puoi anche eseguire l'algoritmo su impostazioni a più GPU e macchine di addestramento 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
<a name="IC-sample-notebooks"></a>

Per un notebook di esempio che utilizza l'algoritmo di classificazione delle immagini SageMaker AI, consulta [Creare e](https://github.com/aws-samples/amazon-sagemaker-pipelines-mxnet-image-classification/blob/main/image-classification-sagemaker-pipelines.ipynb) 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 SageMaker per notebook Amazon](nbi.md) Dopo aver creato un'istanza di notebook e averla aperta, seleziona la scheda **Esempi di 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)**.