Segmentación

La segmentación de imágenes es el proceso de dividir una imagen digital en múltiples 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 objetivo con alta 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 utilizando la API Java de TensorFlow Lite Interpreter .

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 está utilizando una plataforma que no sea Android o iOS, o ya está familiarizado con las API de TensorFlow Lite , puede descargar nuestro modelo inicial de segmentación de imágenes.

Descargar modelo inicial

Descripcion del modelo

DeepLab es un modelo de aprendizaje profundo de última generación para la segmentación de imágenes semánticas, 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 atroz para controlar explícitamente la resolución a la que se calculan las respuestas de las características dentro de las redes neuronales convolucionales profundas.
  2. DeepLabv2: utilizamos una atroz agrupación de pirámides espaciales (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 atroz para extraer características de salida en diferentes pasos de salida durante el entrenamiento y la evaluación, lo que permite entrenar eficientemente BN en un paso de salida = 16 y logra un alto rendimiento en un paso 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 codificador-decodificador se puede controlar arbitrariamente la resolución de las características extraídas del codificador mediante una convolución atroz para equilibrar 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 37 ms*
Píxel 4 (Android 10) 20 ms 23 ms*
iPhone XS (iOS 12.4.1) 16ms 25 ms**

*Se utilizan 4 hilos.

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

Más lecturas y recursos