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
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:
-
Aprendizaje residual profundo para el reconocimiento de imágenes
Kaiming He, et al., IEEE Conferencia de 2016 sobre visión artificial y reconocimiento de patrones
Temas
- Interfaz de entrada/salida para el algoritmo de clasificación de imágenes
- EC2Recomendación de instancia para el algoritmo de clasificación de imágenes
- Cuadernos de ejemplo de clasificación de imágenes
- Funcionamiento de la clasificación de imágenes
- Hiperparámetros de clasificación de imágenes
- Ajuste de un modelo de clasificación de imágenes
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/png
image/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'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
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