Guía de segmentación de imágenes

La tarea Segmentador de imágenes de MediaPipe te permite dividir las imágenes en regiones según categorías predefinidas. Puedes usar esta funcionalidad para identificar texturas o objetos específicos y, luego, aplicar efectos visuales, como el desenfoque del fondo. Esta tarea incluye varios modelos entrenados de forma específica para la segmentación de personas y sus funciones en los datos de imágenes, incluidos los siguientes:

  • Persona y antecedentes
  • Solo cabello de la persona
  • Cabello, rostro, piel, ropa y accesorios de la persona

Esta tarea opera en datos de imagen con un modelo de aprendizaje automático (AA) con imágenes únicas o una transmisión de video continua. Genera una lista de regiones segmentadas, que representan objetos o áreas en una imagen, según el model que elijas.

Probar

Comenzar

Comienza a utilizar esta tarea siguiendo una de estas guías de implementación para la plataforma de destino. En estas guías específicas de la plataforma, se explica la implementación básica de esta tarea, incluidos un modelo recomendado y un ejemplo de código con las opciones de configuración recomendadas:

Detalles de la tarea

En esta sección, se describen las capacidades, entradas, salidas y opciones de configuración de esta tarea.

Funciones

  • Procesamiento de imágenes de entrada: El procesamiento incluye la rotación de imágenes, el cambio de tamaño, la normalización y la conversión del espacio de color.
Entradas de tareas Resultados de la tarea
La entrada puede ser uno de los siguientes tipos de datos:
  • Imágenes fijas
  • Fotogramas de video decodificados
  • Feed de video en vivo
El Segmentador de imágenes genera datos de imágenes segmentados, que pueden incluir una de las siguientes opciones o ambas, según las opciones de configuración que definas:
  • CATEGORY_MASK: Es una lista que contiene una máscara segmentada como una imagen de formato uint8. Cada valor de píxel indica si forma parte de una categoría de segmento específica admitida por el modelo.
  • CONFIDENCE_MASK: Es una lista de canales que contienen una máscara segmentada con valores de píxeles en formato float32. Cada valor de píxel indica el nivel de confianza de que forma parte de una categoría específica admitida por el modelo.

Opciones de configuración

Esta tarea incluye las siguientes opciones de configuración:

Nombre de la opción Descripción Rango de valores Valor predeterminado
running_mode Establece el modo de ejecución para la tarea. Existen tres modos:

IMAGE: El modo para entradas de una sola imagen.

VIDEO: Es el modo para los fotogramas decodificados de un video.

LIVE_STREAM: Es el modo para una transmisión en vivo de datos de entrada, como los que provienen de una cámara. En este modo, se debe llamar a resultListener para configurar un objeto de escucha a fin de recibir resultados de forma asíncrona.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
output_category_mask Si se configura en True, el resultado incluye una máscara de segmentación como una imagen uint8, en la que cada valor de píxel indica el valor de la categoría ganadora. {True, False} False
output_confidence_masks Si se configura como True, el resultado incluye una máscara de segmentación como una imagen de valor flotante, en la que cada valor flotante representa el mapa de puntuación de confianza de la categoría. {True, False} True
display_names_locale Configura el idioma de las etiquetas que se usarán para los nombres visibles proporcionados en los metadatos del modelo de la tarea, si están disponibles. El valor predeterminado es en para inglés. Puedes agregar etiquetas localizadas a los metadatos de un modelo personalizado con la API de Metadata Writer de TensorFlow Lite Código de configuración regional en
result_callback Configura el objeto de escucha de resultados para recibir los resultados de la segmentación de forma asíncrona cuando el segmentador de imágenes está en modo de transmisión en vivo. Solo se puede usar cuando el modo de ejecución está configurado en LIVE_STREAM N/A N/A

ajustables

El Segmentador de imágenes se puede usar con más de un modelo de AA. La mayoría de los siguientes modelos de segmentación están compilados y entrenados para realizar la segmentación con imágenes de personas. Sin embargo, el modelo DeepLab-v3 se compila como un segmentador de imágenes de uso general. Selecciona el modelo que mejor se adapte a tu aplicación.

Modelo de segmentación de selfie

Este modelo puede segmentar el retrato de una persona y se puede usar para reemplazar o modificar el fondo de una imagen. El resultado del modelo es de dos categorías: el segundo plano en el índice 0 y la persona en el índice 1. Este modelo tiene versiones con diferentes formas de entrada, incluida la versión cuadrada y una horizontal, que puede ser más eficiente para las aplicaciones en las que la entrada siempre tiene esa forma, como las videollamadas.

Nombre del modelo Forma de entrada Tipo de cuantización Tarjeta de modelo Versiones
Segmentador de selfies (cuadrado) 256 x 256 número de punto flotante 16 info Más reciente
SelfieSegmenter (horizontal) 144 × 256 número de punto flotante 16 info Más reciente

Modelo de segmentación de cabello

Este modelo toma una imagen de una persona, localiza el cabello en su cabeza y muestra un mapa de segmentación de imágenes para su cabello. Puedes usar este modelo para recolorear el cabello o aplicar otros efectos para el cabello. El modelo genera las siguientes categorías de segmentación:

0 - background
1 - hair
Nombre del modelo Forma de entrada Tipo de cuantización Tarjeta de modelo Versiones
HairSegmenter 512 × 512 Ninguna (float32) info Más reciente

Modelo de segmentación de selfies de varias clases

En este modelo, se toma una imagen de una persona, se localizan áreas de diferentes áreas, como el cabello, la piel y la ropa, y se genera un mapa de segmentación de imágenes para estos artículos. Puedes usar este modelo para aplicar varios efectos a las personas en imágenes o videos. El modelo genera las siguientes categorías de segmentación:

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
Nombre del modelo Forma de entrada Tipo de cuantización Tarjeta de modelo Versiones
SelfieMulticlass (256 × 256) 256 x 256 Ninguna (float32) info Más reciente

Modelo de DeepLab v3

Este modelo identifica segmentos para varias categorías, como fondo, persona, gato, perro y planta en maceta. El modelo usa la reducción de pirámides espaciales atros para capturar información de mayor Para obtener más información, consulta DeepLab-v3.

Nombre del modelo Forma de entrada Tipo de cuantización Versiones
DeepLab-V3 257 × 257 Ninguna (float32) Más reciente

Comparativas de tareas

Estas son las comparativas de tareas para toda la canalización según los modelos previamente entrenados anteriores. El resultado de latencia es la latencia promedio del Pixel 6 usando CPU / GPU.

Nombre del modelo Latencia de la CPU Latencia de GPU
Segmentador de selfies (cuadrado) 33.46ms 35.15ms
Segmentador de selfies (horizontal) 34.19ms 33.55ms
HairSegmenter 57.90ms 52.14ms
SelfieMulticlass (256 x 256) 217.76ms 71.24ms
DeepLab V3 123.93ms 103.30ms