Guía de tareas de clasificación de imágenes

La tarea Clasificador de imágenes de MediaPipe te permite realizar la clasificación de imágenes. Puedes usar esta tarea para identificar lo que representa una imagen entre un conjunto de categorías definidas en el momento del entrenamiento. Esta tarea opera en datos de imagen con un modelo de aprendizaje automático (AA) como datos estáticos o una transmisión continua y da como resultado una lista de categorías potenciales clasificadas por puntuación de probabilidad descendente.

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 mediante un modelo recomendado, y se proporcionan ejemplos 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.
  • Región de interés: realiza la clasificación en una región de la imagen en lugar de toda la imagen.
  • Configuración regional del mapa de etiquetas: Establece el idioma que se usa para los nombres visibles.
  • Umbral de puntuación: Filtra los resultados en función de las puntuaciones de predicción.
  • Clasificación de k superior: Limita la cantidad de resultados de clasificación.
  • Lista de etiquetas permitidas y listas de bloqueo: Especifica las categorías clasificadas.
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 clasificador de imágenes genera una lista de categorías que contiene lo siguiente:
  • Índice de categoría: el índice de la categoría en los resultados del modelo
  • Puntuación: La puntuación de confianza para esta categoría, por lo general, una probabilidad en [0,1]
  • Nombre de la categoría (opcional): Es el nombre de la categoría como se especifica en los metadatos del modelo de TFLite, si está disponible.
  • Nombre visible de la categoría (opcional): Un nombre visible de la categoría como se especifica en los metadatos del modelo de TFLite, en el idioma especificado a través de las opciones de configuración regional de los nombres visibles, si están disponibles

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
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
max_results Configura la cantidad máxima opcional de resultados de clasificación con puntuación más alta que se mostrarán. Si es inferior a 0, se devolverán todos los resultados disponibles. Cualquier número positivo -1
score_threshold Establece el umbral de puntuación de predicción que anula el proporcionado en los metadatos del modelo (si corresponde). Se rechazarán los resultados inferiores a este valor. Cualquier número de punto flotante No establecida
category_allowlist Establece la lista opcional de nombres de categorías permitidas. Si no está vacío, se filtrarán los resultados de clasificación cuyo nombre de categoría no esté en este conjunto. Los nombres de categorías duplicados o desconocidos se ignoran. Esta opción es mutuamente excluyente con category_denylist, y el uso de ambos da como resultado un error. Cualquier cadena No establecida
category_denylist Establece la lista opcional de nombres de categorías que no están permitidas. Si no está vacío, se filtrarán los resultados de clasificación cuyo nombre de categoría se encuentre en este conjunto. Los nombres de categorías duplicados o desconocidos se ignoran. Esta opción es mutuamente exclusiva con category_allowlist, y el uso de ambas da como resultado un error. Cualquier cadena No establecida
result_callback Configura el objeto de escucha de resultados para recibir los resultados de clasificación de forma asíncrona cuando el clasificador de imágenes está en el modo de transmisión en vivo. Solo se puede usar cuando el modo de ejecución está configurado en LIVE_STREAM N/A No establecida

ajustables

El clasificador de imágenes requiere que se descargue y almacene un modelo de clasificación de imágenes en el directorio del proyecto. Comienza con el modelo predeterminado y recomendado para la plataforma de destino cuando comiences a desarrollar con esta tarea. Por lo general, los otros modelos disponibles ofrecen compensaciones entre el rendimiento, la precisión, la resolución y los requisitos de recursos y, en algunos casos, incluyen características adicionales.

El modelo EfficientNet-Lite0 usa una arquitectura EfficientNet y se entrenó con ImageNet para reconocer 1,000 clases, como árboles, animales, comida, vehículos, personas, etcétera. Consulta la lista completa de etiquetas admitidas. EfficientNet-Lite0 está disponible como modelos int8 y float 32. Se recomienda este modelo porque logra un equilibrio entre latencia y exactitud. Es lo suficientemente preciso y ligero para muchos casos de uso.

Nombre del modelo Forma de entrada Tipo de cuantización Versiones
EfficientNet-Lite0 (int8) 224 × 224 int8 Más reciente
EfficientNet-Lite0 (float 32) 224 × 224 Ninguna (float32) Más reciente

Modelo EfficientNet-Lite2

El modelo EfficientNet-Lite2 usa una arquitectura EfficientNet y se entrenó con ImageNet para reconocer 1,000 clases, como árboles, animales, comida, vehículos, personas, etcétera. Consulta la lista completa de etiquetas admitidas. EfficientNet-Lite2 está disponible como modelos int8 y float 32. Por lo general, este modelo es más preciso que EfficientNet-Lite0, pero también es más lento y requiere más memoria. Este modelo es apropiado para casos de uso en los que la exactitud es una prioridad más alta que la velocidad o el tamaño.

Nombre del modelo Forma de entrada Tipo de cuantización Versiones
EfficientNet-Lite2 (int8) 224 × 224 int8 Más reciente
EfficientNet-Lite2 (float 32) 224 × 224 Ninguna (float32) Más reciente

Comparativas de tareas

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

Nombre del modelo Latencia de la CPU Latencia de GPU
EfficientNet-Lite0 (float 32) 23.52ms 18.90ms
EfficientNet-Lite0 (int8) 10.08ms -
EfficientNet-Lite2 (float 32) 44.17ms 22.20ms
EfficientNet-Lite2 (int8) 19.43ms -

Modelos personalizados

Puedes usar un modelo de AA personalizado con esta tarea si quieres mejorar o alterar las capacidades de los modelos proporcionados. Puedes usar Model Maker para modificar los modelos existentes o compilar un modelo con herramientas como TensorFlow. Los modelos personalizados que se usan con MediaPipe deben estar en formato de TensorFlow Lite y deben incluir metadatos específicos que describan los parámetros operativos del modelo. Considera usar Model Maker para modificar los modelos proporcionados para esta tarea antes de compilar los tuyos.

Si te interesa crear un clasificador de imágenes personalizado con tu propio conjunto de datos, comienza con el instructivo sobre la personalización del clasificador de imágenes.