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

La SageMaker El algoritmo de segmentación 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, el SageMaker Clasificación de imágenes - MXNetes 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. La salida de segmentación se representa como una imagen en escala de grises, denominadamáscara de segmentación. Una máscara de segmentación es una imagen en escala de grises con la misma forma que la imagen de entrada.

La SageMaker El algoritmo de segmentación semántica se construye utilizando elMarco MXNet Gluon y el kit de herramientas Gluon CV. Le ofrece una selección de tres algoritmos integrados para entrenar una red neuronal profunda. Puede utilizar elAlgoritmo de red totalmente convolucional (FCN),algoritmo Pyramid Scene Parsing (PSP), oDeepLabV3.

Cada uno de los tres algoritmos tiene dos componentes distintos:

  • Lacoraje(oencoder): una red que produce mapas de activación confiables de entidades.

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

También tiene opciones de redes troncales para FCN, PSP y DeepLabAlgoritmos V3 ResNet50 o ResNet101. Estas redes troncales incluyen artefactos previamente entrenados que originalmente se entrenaron en elImageNettarea de clasificación. 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 para la inferencia, utilice el SageMaker servicio de hosting. 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.

Blocs de notas de muestra de segmentación semántica

Para ver un cuaderno de Jupyter de muestra que usa el SageMaker algoritmo de segmentación semántica para entrenar un modelo e implementarlo para realizar inferencias, consulte laEjemplo de segmentación semántica. Para obtener instrucciones sobre cómo crear y acceder a instancias de notebook de Jupyter que puede usar para ejecutar el ejemplo en SageMaker, consulteAmazon SageMaker Instancias de portátiles.

Para ver una lista de todas las SageMaker muestras, cree y abra una instancia de notebook y elija laSageMaker EjemplosTabulador. 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é activadoAmazon Simple Storage Service (Amazon S3). Una vez entrenado, produce los artefactos de modelo resultantes en Amazon S3. El formato de interfaz de entrada para el SageMaker La segmentación semántica es similar a la de la mayoría de los conjuntos de datos de referencia de segmentación semántica estandarizados. Se espera que el conjunto de datos de Amazon S3 se presente en dos canales, uno paratrainy uno paravalidationutilizando 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 recibir formación en el modo de entrada de tuberías 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 proporcionas estos archivos JSON, SageMaker proporciona el mapa de etiquetas establecido por defecto.

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 apoyar esto, el SageMaker El algoritmo de segmentación semántica proporciona una opción de reescalado para reducir los valores a valores de etiqueta reales. 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 estar enLíneas JSON, tal como se describe en laCreateTrainingJobsolicitud. Cada línea del manifiesto es una entrada que contiene el URI de Amazon S3 de la imagen y el URI de la imagen de anotación.

Cada objeto JSON del archivo de manifiesto debe contener una clave source-ref. Lasource-refdebe contener el valor del URI de Amazon S3 de 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 Proporcione metadatos del conjunto de datos a trabajos de capacitación con un archivo de manifiesto aumentado.

Capacitación 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 el SageMaker Segmentación semántica.

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 SageMaker salidas. 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 Utilice 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

La SageMaker El algoritmo de segmentación 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 grandes. El algoritmo se puede entrenar con instancias P2, P3, G4dn o G5 en configuraciones de una sola máquina.

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