Guía de segmentación de imágenes

Ejemplos en paralelo de una fotografía en primer plano de un hombre junto a la máscara de la imagen que delinea la forma del hombre

La tarea de MediaPipe Image Segmenter te permite dividir imágenes en regiones según categorías predefinidas. Puedes usar esta funcionalidad para identificar objetos o texturas específicos y, luego, aplicar efectos visuales, como desenfoque de fondo. Esta tarea incluye varios modelos entrenados específicamente para segmentar a las personas y sus características dentro de los datos de imágenes, incluidos los siguientes:

  • Persona y fondo
  • Solo el cabello de la persona
  • Cabello, rostro, piel, ropa y accesorios de una persona

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

Pruébala.

Comenzar

Para comenzar a usar esta tarea, sigue una de estas guías de implementación para tu plataforma de destino. En estas guías específicas de la plataforma, se explica una implementación básica de esta tarea, incluido 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, las entradas, las salidas y las 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 de espacios de color.
Entradas de tareas Resultados de las tareas
La entrada puede ser uno de los siguientes tipos de datos:
  • Imágenes fijas
  • Fotogramas de video decodificados
  • Feed de video en vivo
Image Segmenter genera datos de imágenes segmentadas, que pueden incluir uno o ambos de los siguientes, según las opciones de configuración que establezcas:
  • CATEGORY_MASK: Es una lista que contiene una máscara segmentada como una imagen en formato uint8. Cada valor de píxel indica si forma parte de una categoría de segmento específica que admite el modelo.
  • CONFIDENCE_MASK: Es una lista de canales que contiene 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 que admite el modelo.

Opciones de configuración

Esta tarea tiene 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 de la tarea. Existen tres modos:

IMAGE: Es el modo para entradas de una sola imagen.

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

LIVE_STREAM: Es el modo de transmisión en vivo de datos de entrada, como los de una cámara. En este modo, se debe llamar a resultListener para configurar un objeto de escucha que reciba resultados de forma asíncrona.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
output_category_mask Si se establece 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 establece en True, el resultado incluye una máscara de segmentación como una imagen de valor de punto flotante, en la que cada valor de punto flotante representa el mapa de puntuación de confianza de la categoría. {True, False} True
display_names_locale Establece 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 el 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 Establece el objeto de escucha de resultados para que reciba los resultados de la segmentación de forma asíncrona cuando el segmentador de imágenes esté en el modo LIVE_STREAM. Solo se puede usar cuando el modo de ejecución está configurado como LIVE_STREAM. N/A N/A

Modelos

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 se compilan y entrenan 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 selfies

Este modelo puede segmentar el retrato de una persona y se puede usar para reemplazar o modificar el fondo de una imagen. El modelo genera dos categorías: fondo en el índice 0 y persona en el índice 1. Este modelo tiene versiones con diferentes formas de entrada, incluida una versión cuadrada y una versión horizontal, que pueden ser más eficientes 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
SelfieSegmenter (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 genera un mapa de segmentación de imágenes para su cabello. Puedes usar este modelo para cambiar el color del cabello o aplicar otros efectos. 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 x 512 Ninguno (float32) info Más reciente

Modelo de segmentación de selfies de varias clases

Este modelo toma una imagen de una persona, localiza áreas para diferentes áreas, como el cabello, la piel y la ropa, y genera un mapa de segmentación de imágenes para estos elementos. 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 x 256) 256 x 256 Ninguno (float32) info Más reciente

Modelo DeepLab-v3

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

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

Comparativas de tareas

Estas son las comparativas de tareas de toda la canalización según los modelos previamente entrenados anteriores. El resultado de la latencia es la latencia promedio en el Pixel 6 con CPU o GPU.

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