

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Clasificación de imágenes - MXNet
<a name="image-classification"></a>

El algoritmo de clasificación de SageMaker imágenes de Amazon es un algoritmo de aprendizaje supervisado que admite la clasificación de múltiples etiquetas. Toma una imagen como entrada y genera una o varias etiquetas asignadas a esa imagen. Utiliza una red neuronal convolucional que puede entrenarse desde cero o mediante un aprendizaje por transferencia cuando no hay disponible un gran número de imágenes de entrenamiento. 

El formato de entrada recomendado para los algoritmos de clasificación de imágenes de Amazon SageMaker AI es Apache MXNet [Recordio](https://mxnet.apache.org/api/faq/recordio). Sin embargo, también pueden utilizar imágenes sin procesar en formato .jpg o .png. Consulte [este análisis](https://mxnet.apache.org/api/architecture/note_data_loading) para obtener una visión general amplia sobre la preparación y la carga eficientes de datos en sistemas de machine learning. 

**nota**  
Para mantener una mejor interoperabilidad con los marcos de aprendizaje profundo existentes, esto difiere de los formatos de datos protobuf que suelen utilizar otros algoritmos de IA de Amazon SageMaker .

Para obtener más información sobre redes convolucionales, consulte: 
+ [Deep residual learning for image recognition](https://arxiv.org/abs/1512.03385) Kaiming He, et al., 2016 IEEE Conference on Computer Vision and Pattern Recognition
+ [ImageNet base de datos de imágenes](http://www.image-net.org/)
+ [Clasificación de imágenes con Gluon-CV y MXNet](https://gluon-cv.mxnet.io/build/examples_classification/index.html)

**Topics**
+ [Interfaz de entrada/salida para el algoritmo de clasificación de imágenes](#IC-inputoutput)
+ [Recomendación de instancias EC2 para el algoritmo de clasificación de imágenes](#IC-instances)
+ [Cuadernos de ejemplo de clasificación de imágenes](#IC-sample-notebooks)
+ [Funcionamiento de la clasificación de imágenes](IC-HowItWorks.md)
+ [Hiperparámetros de clasificación de imágenes](IC-Hyperparameter.md)
+ [Ajuste de un modelo de clasificación de imágenes](IC-tuning.md)

## Interfaz de entrada/salida para el algoritmo de clasificación de imágenes
<a name="IC-inputoutput"></a>

El algoritmo de clasificación de imágenes de SageMaker IA admite los tipos de contenido Recordio (`application/x-recordio`) e imagen (`image/png``image/jpeg`, y`application/x-image`) para el entrenamiento en modo archivo, y admite el tipo de contenido Recordio (`application/x-recordio`) para el entrenamiento en modo canalizado. Sin embargo también puede entrenar en modo de canalización con los archivos de imágenes (`image/png`, `image/jpeg` y `application/x-image`), sin necesidad de crear archivos RecordIO, mediante el formato de manifiesto aumentado.

El entrenamiento distribuido es compatible con el modo de archivo y el modo de canalización. Si utiliza el tipo de contenido RecordIO en el modo de canalización, debe establecer el `S3DataDistributionType` del `S3DataSource` en `FullyReplicated`. El algoritmo admite un modelo totalmente replicado en el que los datos se copian en cada máquina.

El algoritmo admite `image/png`, `image/jpeg` y `application/x-image` para la inferencia.

### Capacitación con el formato RecordIO
<a name="IC-recordio-training"></a>

Si utiliza el formato RecordIO para la capacitación, especifique ambos canales `train` y `validation` como valores para el parámetro `InputDataConfig` de la solicitud [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). Especifique un archivo RecordIO (`.rec`) en el canal `train` y un archivo RecordIO en el canal `validation`. Establezca el tipo de canal para ambos canales en `application/x-recordio`. 

### Capacitación con formato de imagen
<a name="IC-image-training"></a>

Si utiliza el formato de imagen para la capacitación, especifique los canales `train`, `validation`, `train_lst` y `validation_lst` como valores para el parámetro `InputDataConfig` de la solicitud [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). Especifique los datos de imagen individuales (archivos `.jpg` o `.png`) para los canales `train` y `validation`. Especifique un archivo `.lst` en cada uno de los canales `train_lst` y `validation_lst`. Establezca el tipo de canal para los cuatro canales en `application/x-image`. 

**nota**  
SageMaker La IA lee los datos de entrenamiento y validación por separado de diferentes canales, por lo que debes almacenar los datos de entrenamiento y validación en carpetas diferentes.

Un archivo `.lst` es un archivo separado por tabulaciones con tres columnas que contiene una lista de archivos de imagen. La primera columna especifica el índice de imagen, la segunda columna el índice de la etiqueta de clase para la imagen y la tercera columna la ruta relativa del archivo de imagen. El índice de imagen de la primera columna debe ser único en todas las imágenes. El conjunto de índices de etiqueta de clase se numeran sucesivamente y el la numeración debe comenzar por 0. Por ejemplo, 0 para la clase de gatos, 1 para la clase de perros, y así sucesivamente en las clases adicionales. 

 A continuación se muestra un ejemplo de un archivo `.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
```

Por ejemplo, si sus imágenes de capacitación se almacenan en `s3://<your_bucket>/train/class_dog`, `s3://<your_bucket>/train/class_cat`, y así sucesivamente, especifique la ruta de su canal `train` como `s3://<your_bucket>/train`, que es el directorio de nivel superior de sus datos. En el archivo `.lst`, especifique la ruta relativa de un archivo individual denominado `train_image_dog1.jpg` en el directorio de clase `class_dog` como `class_dog/train_image_dog1.jpg`. También puede almacenar todos los archivos de imagen en un subdirectorio dentro del directorio `train`. En ese caso, utilice ese subdirectorio para la ruta relativa. Por ejemplo, `s3://<your_bucket>/train/your_image_directory`. 

### Capacitación con formato de imagen de manifiesto aumentado
<a name="IC-augmented-manifest-training"></a>

El formato de manifiesto aumentado le permite realizar la capacitación en modo de canalización mediante los archivos de imágenes sin necesidad de crear archivos RecordIO. Debe especificar los canales de capacitación y de validación como valores para el parámetro `InputDataConfig` de la solicitud [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). Cuando utilice el formato, es necesario generar un archivo de manifiesto de S3 que contenga la lista de imágenes y sus comentarios correspondientes. El formato del archivo de manifiesto debe tener el formato [líneas de JSON](http://jsonlines.org/) en el que cada línea representa una muestra. Las imágenes se especifican utilizando la etiqueta `'source-ref'` que apunta a la ubicación de S3 de la imagen. Los comentarios se proporcionan bajo el valor del parámetro `"AttributeNames"` tal y como se especifica en la solicitud [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). También puede contener metadatos adicionales en la etiqueta de `metadata` pero el algoritmo los omite. En el siguiente ejemplo, los `"AttributeNames"` se incluyen en la lista de referencias de imágenes y anotaciones `["source-ref", "class"]`. El valor de etiqueta correspondiente es `"0"` para la primera imagen y `“1”` para la segunda imagen:

```
{"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"}}
```

El orden de los archivos `"AttributeNames"` de entrada es importante a la hora de entrenar el ImageClassification algoritmo. Acepta datos canalizados en un orden específico, con `image` primero, seguido de `label`. Por lo tanto, en este ejemplo, los AttributeNames "" `"source-ref"` aparecen primero, seguidos de`"class"`. Cuando se utiliza el ImageClassification algoritmo con Augmented Manifest, el valor del `RecordWrapperType` parámetro debe ser`"RecordIO"`.

El entrenamiento de etiquetas múltiples también se admite mediante la especificación de una matriz de JSON de valores. El hiperparámetro `num_classes` debe establecerse para que coincida con el número total de clases. Hay dos formatos de etiqueta válidos: multi-hot y class-id. 

En el formato multi-hot, cada etiqueta es un vector codificado multi-hot de todas las clases, donde cada clase toma el valor de 0 o 1. En el siguiente ejemplo, existen tres clases. La primera imagen se etiqueta con las clases 0 y 2, mientras que la segunda imagen se etiqueta solo con la clase 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]"}
```

En el formato class-id, cada etiqueta es una lista de los identificadores de clase, de [0, `num_classes`), que se aplican al punto de datos. En su lugar, el ejemplo anterior se vería así:

```
{"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]"}
```

El formato multifunción es el predeterminado, pero se puede establecer de forma explícita en el tipo de contenido con el siguiente `label-format` parámetro: `"application/x-recordio; label-format=multi-hot".` El formato de identificador de clase, que es el formato que genera GroundTruth, debe configurarse de forma explícita: `"application/x-recordio; label-format=class-id".`

Para obtener más información sobre archivos de manifiesto aumentado, consulte [Archivos de manifiesto aumentados para trabajos de entrenamiento](augmented-manifest.md).

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

También puedes iniciar el entrenamiento de un nuevo modelo con los artefactos de un modelo que hayas entrenado previamente con IA. SageMaker El entrenamiento incremental ahorra tiempo de entrenamiento cuando quieres entrenar un nuevo modelo con datos iguales o similares. SageMaker Los modelos de clasificación de imágenes de IA solo se pueden integrar con otro modelo de clasificación de imágenes integrado y entrenado en SageMaker IA.

Para utilizar un modelo capacitado previamente, en la solicitud [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html), especifique el `ChannelName` como el "modelo" en el parámetro `InputDataConfig`. Establezca `ContentType` para el canal de modelo en `application/x-sagemaker-model` Los hiperparámetros de entrada del modelo nuevo y del modelo capacitado previamente cargado al canal de modelos tienen que tener la misma configuración para los parámetros de entrada `num_layers`, `image_shape` y `num_classes`. Estos parámetros definen la arquitectura de red. Para el archivo de modelo previamente entrenado, utilice los artefactos del modelo comprimidos (en formato.tar.gz) generados por AI. SageMaker Puede usar los formatos RecordIO o de imagen para los datos de entrada.

### Inferencia con el algoritmo Image Classification
<a name="IC-inference"></a>

Los modelos generados pueden alojarse para la inferencia y admiten formatos de imagen `.jpg` y `.png` codificados como tipo de contenido `image/png, image/jpeg` y `application/x-image`. El tamaño de la imagen de entrada se redimensiona automáticamente. La salida corresponde a los valores de probabilidad para todas las clases codificadas en formato JSON o en [formato de texto de líneas JSON](http://jsonlines.org/) para la transformación por lotes. El modelo de clasificación de imágenes procesa una sola imagen por solicitud por lo que devuelve únicamente una línea en el formato JSON o de líneas JSON. A continuación se muestra un ejemplo de una respuesta en formato de líneas JSON:

```
accept: application/jsonlines

 {"prediction": [prob_0, prob_1, prob_2, prob_3, ...]}
```

Para obtener más información sobre la capacitación y la inferencia, consulte las instancias de bloc de notas de muestra de clasificaciones de imágenes a las que se hace referencia en la introducción.

## Recomendación de instancias EC2 para el algoritmo de clasificación de imágenes
<a name="IC-instances"></a>

Para la clasificación de imágenes, admitimos instancias P2, P3, G4dn y G5. Recomendamos utilizar instancias de GPU con más memoria para la capacitación con tamaños grandes de lotes. También puede ejecutar el algoritmo en configuraciones de varias máquinas o varias GPU para la capacitación distribuida. Para la inferencia, se pueden usar instancias de CPU (como C4) o de GPU (P2, P3, G4dn o G5).

## Cuadernos de ejemplo de clasificación de imágenes
<a name="IC-sample-notebooks"></a>

Para ver un ejemplo de cuaderno que utiliza el algoritmo de clasificación de imágenes de SageMaker IA, consulte [Crear y registrar un modelo de clasificación de MXNet imágenes](https://github.com/aws-samples/amazon-sagemaker-pipelines-mxnet-image-classification/blob/main/image-classification-sagemaker-pipelines.ipynb) mediante canalizaciones. SageMaker Para obtener instrucciones sobre cómo crear instancias de Jupyter Notebook y acceder a ellas, que puede utilizar para ejecutar el ejemplo en SageMaker IA, consulte. [Instancias de Amazon SageMaker Notebook](nbi.md) Una vez que haya creado una instancia de bloc de notas y la haya abierto, seleccione la pestaña **Ejemplos de SageMaker IA** para ver una lista de todos los ejemplos de SageMaker IA. Los blocs de notas de clasificación de imágenes de ejemplo se encuentran en la sección sobre **introducción a algoritmos de Amazon**. Para abrir un cuaderno, haga clic en la pestaña **Usar** y seleccione **Crear copia**.