Segmentación

La segmentación de imágenes es el proceso de dividir una imagen digital en varios segmentos (conjuntos de píxeles, también conocidos como objetos de imagen). El objetivo de la segmentación es simplificar y/o cambiar la representación de una imagen en algo que sea más significativo y más fácil de analizar.

La siguiente imagen muestra el resultado del modelo de segmentación de imágenes en Android. El modelo creará una máscara sobre los objetos de destino con gran precisión.

Empezar

Si es nuevo en TensorFlow Lite y está trabajando con Android o iOS, se recomienda que explore las siguientes aplicaciones de ejemplo que pueden ayudarlo a comenzar.

Puede aprovechar la API lista para usar de la biblioteca de tareas de TensorFlow Lite para integrar modelos de segmentación de imágenes con solo unas pocas líneas de código. También puede integrar el modelo mediante la API Java de intérprete de TensorFlow Lite .

El siguiente ejemplo de Android demuestra la implementación de ambos métodos como lib_task_api y lib_interpreter , respectivamente.

Ver ejemplo de Android

Ver ejemplo de iOS

Si usa una plataforma que no sea Android o iOS, o si ya está familiarizado con las API de TensorFlow Lite , puede descargar nuestro modelo de segmentación de imágenes de inicio.

Descargar modelo de inicio

Descripcion del modelo

DeepLab es un modelo de aprendizaje profundo de última generación para la segmentación semántica de imágenes, donde el objetivo es asignar etiquetas semánticas (por ejemplo, persona, perro, gato) a cada píxel de la imagen de entrada.

Cómo funciona

La segmentación semántica de imágenes predice si cada píxel de una imagen está asociado con una determinada clase. Esto contrasta con la detección de objetos , que detecta objetos en regiones rectangulares, y la clasificación de imágenes , que clasifica la imagen en general.

La implementación actual incluye las siguientes características:

  1. DeepLabv1: utilizamos una convolución atrosa para controlar explícitamente la resolución a la que se calculan las respuestas de características dentro de las redes neuronales convolucionales profundas.
  2. DeepLabv2: utilizamos agrupación espacial piramidal atrous (ASPP) para segmentar de manera sólida objetos en múltiples escalas con filtros en múltiples frecuencias de muestreo y campos de visión efectivos.
  3. DeepLabv3: aumentamos el módulo ASPP con la función de nivel de imagen [5, 6] para capturar información de mayor alcance. También incluimos parámetros de normalización por lotes [7] para facilitar el entrenamiento. En particular, aplicamos una convolución atrosa para extraer características de salida en diferentes pasos de salida durante el entrenamiento y la evaluación, lo que permite entrenar BN de manera eficiente en pasos de salida = 16 y logra un alto rendimiento en pasos de salida = 8 durante la evaluación.
  4. DeepLabv3+: Ampliamos DeepLabv3 para incluir un módulo decodificador simple pero efectivo para refinar los resultados de la segmentación, especialmente a lo largo de los límites de los objetos. Además, en esta estructura de codificador-decodificador, se puede controlar arbitrariamente la resolución de las características del codificador extraídas mediante una convolución atrosa para compensar la precisión y el tiempo de ejecución.

Puntos de referencia de rendimiento

Los números de referencia de rendimiento se generan con la herramienta que se describe aquí .

Nombre del modelo Tamaño del modelo Dispositivo GPU UPC
laboratorio profundo v3 2.7 MB Píxel 3 (Android 10) 16ms 37ms*
Píxel 4 (Android 10) 20ms 23ms*
iPhone XS (iOS 12.4.1) 16ms 25ms**

* 4 hilos utilizados.

** 2 subprocesos utilizados en iPhone para obtener el mejor resultado de rendimiento.

Más lecturas y recursos