Algoritmo de segmentación semántica - 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.

Algoritmo de segmentación semántica

El algoritmo de segmentación SageMaker semántica proporciona un enfoque detallado a nivel de píxeles para desarrollar aplicaciones de visión artificial. Etiqueta todos los píxeles en una imagen con una etiqueta de clase a partir de un conjunto de clases predefinido. El etiquetado es fundamental para comprender las escenas, algo crucial para un número cada vez mayor de aplicaciones de visión artificial tales como vehículos autónomos, diagnóstico de imágenes médicas y detección en robots.

A modo de comparación, SageMaker Clasificación de imágenes - MXNet se trata de un algoritmo de aprendizaje supervisado que analiza solo imágenes completas y las clasifica en una de las múltiples categorías de salida. Detección de objetos - MXNet es un algoritmo de aprendizaje supervisado que detecta y clasifica todas las instancias de un objeto en una imagen. Indica la ubicación y escala de cada objeto en la imagen con un cuadro delimitador rectangular.

Como el algoritmo de segmentación semántica clasifica todos los píxeles de una imagen, también proporciona información sobre las formas de los objetos incluidos en ella. El resultado de la segmentación se representa como una imagen de escala de grises, llamada máscara de segmentación. Una máscara de segmentación es una imagen de escala de grises con la misma forma que la imagen de entrada.

El algoritmo de segmentación SageMaker semántica se crea utilizando el marco MXNet Gluon y el kit de herramientas Gluon CV. Le permite elegir entre tres algoritmos integrados para entrenar una red neuronal profunda. Puede utilizar el algoritmo de red totalmente convolucional (FCN), el algoritmo de análisis de escenas piramidales (PSP) o la versión V3. DeepLab

Cada uno de los tres algoritmos tiene dos componentes distintos:

  • La base (o el codificador): una red que produce mapas de activación de características fiables.

  • El decodificador: una red que construye la máscara de segmentación a partir de los mapas de activación codificados.

También puedes elegir entre varios sistemas troncales para los algoritmos FCN, PSP y V3:50 o 101. DeepLab ResNet ResNet Estas estructuras troncales incluyen artefactos previamente entrenados que se entrenaron originalmente para la tarea de clasificación. ImageNet Puede ajustar estos núcleos para la segmentación con sus propios datos. O bien, puede inicializar y capacitar estas redes desde cero usando solo sus propios datos. Los descodificadores nunca se capacitan previamente.

Para implementar el modelo entrenado con fines de inferencia, utilice el SageMaker servicio de alojamiento. Durante la inferencia, puede solicitar la máscara de segmentación como imagen PNG o como un conjunto de probabilidades para cada clase para cada píxel. Puede usar estas máscaras como parte de una canalización mayor que incluya un procesamiento posterior adicional de las imágenes u otras aplicaciones.

Cuadernos de ejemplo de segmentación semántica

Para ver un ejemplo de cuaderno de Jupyter que utiliza el algoritmo de segmentación SageMaker semántica para entrenar un modelo y desplegarlo para realizar inferencias, consulte el ejemplo de segmentación semántica. 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

Para ver una lista de todos los SageMaker ejemplos, cree y abra una instancia de bloc de notas y seleccione la pestaña SageMaker Ejemplos. Los blocs de notas de segmentación semántica de ejemplo se encuentran en la sección sobre introducción a algoritmos de Amazon. Para abrir un bloc de notas, elija su pestaña Use (Usar) y elija Create copy (Crear copia).

Interfaz de entrada/salida para el algoritmo de segmentación semántica

SageMaker La segmentación semántica espera que el conjunto de datos de entrenamiento del cliente esté en Amazon Simple Storage Service (Amazon S3). Una vez que se ha entrenado, produce los artefactos del modelo resultantes en Amazon S3. El formato de interfaz de entrada para la segmentación SageMaker semántica es similar al de la mayoría de los conjuntos de datos de evaluación comparativa de segmentación semántica estandarizados. Se espera que el conjunto de datos de Amazon S3 se presente en dos canales, uno para train y otro para validation, mediante cuatro directorios, dos para imágenes y dos para anotaciones. Se espera que los comentarios sean imágenes PNG sin comprimir. El conjunto de datos también podría tener un mapa de etiqueta que describa cómo se establecen los mapeos de comentarios. En caso contrario, el algoritmo usa un valor predeterminado. También admite el formato de imagen de manifiesto aumentado (application/x-image) para el entrenamiento en modo de entrada de canalización directamente desde Amazon S3. Para la inferencia, un punto de enlace acepta imágenes con un tipo de contenido image/jpeg.

Cómo funciona la capacitación

Los datos de capacitación se dividen en cuatro directorios: train, train_annotation, validation y validation_annotation. Existe un canal para cada uno de estos directorios. El conjunto de datos también esperaba tener un archivo label_map.json por canal para train_annotation y validation_annotation respectivamente. Si no proporciona estos archivos JSON, SageMaker proporciona el mapa de etiquetas predeterminado.

El conjunto de datos que especifica estos archivos debe tener un aspecto similar al siguiente ejemplo:

s3://bucket_name | |- train | | - 0000.jpg | - coffee.jpg |- validation | | - 00a0.jpg | - bananna.jpg |- train_annotation | | - 0000.png | - coffee.png |- validation_annotation | | - 00a0.png | - bananna.png |- label_map | - train_label_map.json | - validation_label_map.json

Cada imagen JPG de los directorios de validación y capacitación tiene una imagen de etiqueta PNG correspondiente con el mismo nombre en los directorios train_annotation y validation_annotation. Esta convención de nomenclatura ayuda al algoritmo a asociar una etiqueta a su imagen correspondiente durante la capacitación. Los canales train, train_annotation, validation y validation_annotation son obligatorios. Los comentarios son imágenes PNG de un solo canal. El formato funciona siempre que los metadatos (modos) de la imagen ayuden al algoritmo a leer las imágenes de comentarios en un número entero sin firmar de 8 bits de un solo canal. Para obtener más información sobre nuestra compatibilidad con los modos, consulte la documentación de la biblioteca de imágenes Python. Recomendamos usar el modo P de color verdadero y píxel de 8 bits.

La imagen que se codifica es un entero de 8 bits sencillo al usar los modos. Para acceder de este mapeo a un mapa de una etiqueta, el algoritmo usa un archivo de mapeo por canal, denominado mapa de etiqueta. El mapa de etiqueta se usa para asignar los valores de la imagen con índices de etiqueta reales. En el mapa de etiqueta predeterminado, que se proporciona de forma predeterminada si no facilita uno, el valor de píxel de una matriz de comentarios (imagen) indexa la etiqueta directamente. Estas imágenes pueden ser archivos PNG de escala de grises o archivos PNG indexados de 8 bits. El archivo de mapa de etiqueta para el caso predeterminado sin escala es el siguiente:

{ "scale": "1" }

Para proporcionar contraste para su visualización, un software de comentarios escala las imágenes de etiqueta mediante una cantidad constante. Para respaldar esto, el algoritmo de segmentación SageMaker semántica ofrece una opción de reescalado para reducir los valores a los valores reales de las etiquetas. Al reducir el escalado, no se convierte el valor en un entero adecuado, el valor predeterminado del algoritmo es el número entero mayor, menor o igual al valor de escala. El siguiente código muestra cómo establecer el valor de escala para cambiar el escalado de los valores de etiqueta:

{ "scale": "3" }

En el siguiente ejemplo se muestra cómo se usa este valor "scale" para cambiar el escalado de los valores encoded_label de la imagen de comentario de entrada cuando se asignan a los valores mapped_label que se van a usar en la capacitación. Los valores de etiqueta de la imagen de comentario de entrada son 0, 3, 6, con escala 3, por lo que se asignan a 0, 1, 2 para la capacitación:

encoded_label = [0, 3, 6] mapped_label = [0, 1, 2]

En algunos casos, podría tener que especificar un mapeo de color concreto para cada clase. Use la opción de mapa en el mapeo de etiqueta como se muestra en el siguiente ejemplo de un archivo label_map:

{ "map": { "0": 5, "1": 0, "2": 2 } }

Este mapeo de etiqueta para este ejemplo es:

encoded_label = [0, 5, 2] mapped_label = [1, 0, 2]

Con los mapeos de etiqueta, puede usar diferentes sistemas de comentarios y software de comentarios para obtener datos sin mucho procesamiento previo. Puede proporcionar un mapa de etiqueta por canal. Los archivos para un mapa de etiqueta del canal label_map deben seguir las convenciones de nomenclatura para la estructura de cuatro directorios. Si no proporciona un mapa de etiqueta, el algoritmo adopta una escala de 1 (el valor predeterminado).

Capacitación con el formato 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. El archivo de manifiesto aumentado contiene objetos de datos y debe aparecer en el formato de líneas JSON, como se describe en la solicitud CreateTrainingJob. Cada línea del manifiesto es una entrada que contiene el URI de Amazon S3 para la imagen y el URI para la imagen de la anotación.

Cada objeto JSON del archivo de manifiesto debe contener una clave source-ref. La clave source-ref debe contener el valor del URI de Amazon S3 a la imagen. Las etiquetas se proporcionan en el valor de parámetro AttributeNames, como se especifica en la solicitud de CreateTrainingJob. También puede contener metadatos adicionales en la etiqueta de metadatos, pero el algoritmo los omite. En el ejemplo siguiente, los AttributeNames se encuentran en la lista de imagen y referencias de anotaciones ["source-ref", "city-streets-ref"]. Estos nombres deben llevar -ref añadido. Cuando se utiliza el algoritmo de segmentación semántica con manifiesto aumentado, el valor del parámetroRecordWrapperType debe ser "RecordIO" y el valor del parámetro ContentType debe ser application/x-recordio.

{"source-ref": "S3 bucket location", "city-streets-ref": "S3 bucket location", "city-streets-metadata": {"job-name": "label-city-streets", }}

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 puede propagar la capacitación de un nuevo modelo con un modelo que ha capacitado previamente mediante SageMaker. Esta capacitación incremental ahorra tiempo de capacitación si desea capacitar un nuevo modelo con los mismos datos o datos similares. Actualmente, el entrenamiento incremental solo se admite para los modelos entrenados con la segmentación semántica integrada. SageMaker

Para usar su propio modelo capacitado previamente, especifique ChannelName como "modelo" en InputDataConfig para la solicitud de CreateTrainingJob. Establezca ContentType para el canal de modelo en application/x-sagemaker-model Los parámetros de entrada backbone, algorithm, crop_size y num_classes que definen la arquitectura de red deben especificarse de forma coherente en los hiperparámetros de entrada del nuevo modelo y el modelo capacitado previamente que cargó en el canal de modelo. Para el archivo de modelo previamente entrenado, puede usar los artefactos comprimidos (.tar.gz) de las salidas. SageMaker Solo puede usar formatos de imagen para los datos de entrada. Para obtener más información sobre la capacitación incremental e instrucciones sobre cómo usarla, consulte Utiliza la formación incremental en Amazon SageMaker.

Producir interfaces

Para consultar un modelo capacitado que se implementa en un punto de enlace, debe proporcionar una imagen y un AcceptType que indica el tipo de salida necesaria. El punto de enlace toma imágenes JPEG con un tipo de contenido image/jpeg. Si solicita un AcceptType de image/png, el algoritmo genera un archivo PNG con una máscara de segmentación en el mismo formato que las propias etiquetas. Si solicita un tipo de aceptación deapplication/x-recordio-protobuf, el algoritmo devuelve probabilidades de clase codificadas en formato recordio-protobuf. El último formato genera un tensor 3D donde la tercera dimensión tiene el mismo tamaño que el número de clases. Este componente denota la probabilidad de cada etiqueta de clase para cada píxel.

Recomendación de la instancia EC2 para el algoritmo de segmentación semántica

El algoritmo de segmentación SageMaker semántica solo admite instancias de GPU para el entrenamiento, y recomendamos usar instancias de GPU con más memoria para el entrenamiento con lotes de gran tamaño. El algoritmo se puede entrenar con instancias P2, P3, G4dn o G5 en configuraciones de una sola máquina.

Para la inferencia, puede usar instancias CPU (como C5 y M5) e instancias GPU (como P3 y G4dn) o ambas. Para obtener información sobre los tipos de instancias que proporcionan distintas combinaciones de CPU, GPU, memoria y capacidad de red para la inferencia, consulte Tipos de instancias de Amazon SageMaker ML.