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.
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:
- Android - Ejemplo de código - Guía
- Python - Ejemplo de código - Guía
- Web - Ejemplo de código - Guía
- iOS - Ejemplo de código - Guía
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:
|
El clasificador de imágenes genera una lista de categorías que contiene lo siguiente:
|
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.
Modelo EfficientNet-Lite0 (recomendado)
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.