Clasificación de imágenes - MXNet - Amazon SageMaker

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

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 SageMaker de imágenes de Amazon es Apache MXNet Recordio. Sin embargo, también pueden utilizar imágenes sin procesar en formato .jpg o .png. Consulte este análisis 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 Amazon. SageMaker

Para obtener más información sobre redes convolucionales, consulte:

Interfaz de entrada/salida para el algoritmo de clasificación de imágenes

El algoritmo de clasificación de SageMaker imágenes admite los tipos de contenido application/x-recordio RecordIO () e imagen (image/pngimage/jpeg, yapplication/x-image) para el entrenamiento en modo archivo, y admite el tipo de contenido RecordIO (application/x-recordio) para el entrenamiento en modo vertical. 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

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 CreateTrainingJob. 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

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 CreateTrainingJob. 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 lee los datos de entrenamiento y validación por separado de los distintos canales, por lo que debe 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

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 CreateTrainingJob. 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 de JSONlíneas, en el que cada línea represente 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 CreateTrainingJob. 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".

También se admite el entrenamiento con varias etiquetas especificando una JSON matriz 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 multihot 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, debe configurarse de forma explícita: GroundTruth "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 formación.

Entrenamiento incremental

También puedes iniciar el entrenamiento de un nuevo modelo con los artefactos de un modelo con el que te hayas entrenado anteriormente. SageMaker El entrenamiento incremental ahorra tiempo de entrenamiento cuando se quiere entrenar un nuevo modelo con datos iguales o similares. SageMaker los modelos de clasificación de imágenes solo se pueden sembrar con otro modelo de clasificación de imágenes integrado con el que se haya entrenado. SageMaker

Para utilizar un modelo capacitado previamente, en la solicitud CreateTrainingJob, 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. SageMaker Puede usar los formatos RecordIO o de imagen para los datos de entrada.

Inferencia con el algoritmo Image Classification

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. El resultado son los valores de probabilidad de todas las clases codificados en JSON formato o en formato de texto de JSON líneas para la transformación por lotes. El modelo de clasificación de imágenes procesa una sola imagen por solicitud y, por lo tanto, solo genera una línea en el formato JSON o JSON líneas. El siguiente es un ejemplo de una respuesta en formato de JSON líneas:

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.

EC2Recomendación de instancia para el algoritmo de clasificación de imágenes

Para la clasificación de imágenes, admitimos instancias P2, P3, G4dn y G5. Recomendamos utilizar GPU instancias con más memoria para el entrenamiento con lotes de gran tamaño. También puedes ejecutar el algoritmo en configuraciones de varios o GPU varios equipos para un entrenamiento distribuido. Tanto las CPU instancias (como la C4) como la GPU (P2, P3, G4dn o G5) se pueden usar para la inferencia.

Cuadernos de ejemplo de clasificación de imágenes

Para ver un ejemplo de cuaderno que usa el algoritmo de clasificación de SageMaker imágenes, consulta Cómo crear y registrar un modelo de clasificación de imágenes mediante canalizaciones. MXNet SageMaker Para obtener instrucciones sobre cómo crear instancias de Jupyter Notebook y acceder a ellas con las que puede ejecutar el ejemplo, consulte. SageMaker Instancias de Amazon SageMaker Notebook Una vez que haya creado una instancia de bloc de notas y la haya abierto, seleccione la pestaña SageMakerEjemplos para ver una lista de todos los SageMaker ejemplos. 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.