La tarea de incorporación de imágenes de MediaPipe te permite crear una representación numérica de una imagen, que es útil para realizar varias tareas de imagen basadas en AA. Esta funcionalidad se usa con frecuencia para comparar la similitud de dos imágenes con técnicas de comparación matemática, como la similitud de coseno. Esta tarea opera en datos de imágenes con un modelo de aprendizaje automático (AA) como datos estáticos o una transmisión continua, y genera una representación numérica de los datos de imagen como una lista de vectores de características de alta dimensión, también conocidos como vectores de incorporación, en formato de punto flotante o cuantificado.
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 con 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
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.
- Región de interés: Realiza la incorporación en una región de la imagen en lugar de en toda la imagen.
- Cálculo de similitud de incorporación: Es una función de utilidad integrada para calcular la similitud de coseno entre dos vectores de características.
- Cuantización: Admite la cuantificación escalar para los vectores de características.
Entradas de tareas | Resultados de las tareas |
---|---|
La entrada puede ser uno de los siguientes tipos de datos:
|
Image Embedder genera una lista de incorporaciones que consta de lo siguiente:
|
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 |
l2_normalize |
Indica si se debe normalizar el vector de características que se muestra con la norma L2. Usa esta opción solo si el modelo aún no contiene una operación nativa de TFLite L2_NORMALIZATION. En la mayoría de los casos, ya es así, y la normalización de L2 se logra a través de la inferencia de TFLite sin necesidad de esta opción. | Boolean |
False |
quantize |
Indica si la incorporación que se muestra debe cuantificarse en bytes a través de la cuantificación escalar. Se supone implícitamente que las incorporaciones tienen una norma de unidad y, por lo tanto, se garantiza que cualquier dimensión tenga un valor en [-1.0, 1.0]. Usa la opción l2_normalize si no es así. | Boolean |
False |
result_callback |
Establece el objeto de escucha de resultados para que reciba los resultados de incorporación de forma asíncrona cuando el incorporador de imágenes esté en el modo de transmisión en vivo. Solo se puede usar cuando el modo de ejecución está configurado como LIVE_STREAM . |
N/A | Sin establecer |
Modelos
El incorporador de imágenes requiere que se descargue y almacene un modelo de incorporación de imágenes en el directorio de tu proyecto. Comienza con el modelo predeterminado y recomendado para tu plataforma de destino cuando comiences a desarrollar con esta tarea. Los otros modelos disponibles suelen establecer compensaciones entre el rendimiento, la precisión, la resolución y los requisitos de recursos, y, en algunos casos, incluyen funciones adicionales.
Modelo MobileNetV3
Esta familia de modelos usa una arquitectura de MobileNet V3 y se entrenó con datos de ImageNet. Este modelo usa un multiplicador de 0.75 para la profundidad (cantidad de características) en las capas convolucionales para ajustar la compensación entre precisión y latencia. Además, MobileNet V3 viene en dos tamaños diferentes, pequeño y grande, para adaptar la red a casos de uso de recursos bajos o altos.
Nombre del modelo | Forma de entrada | Tipo de cuantización | Versiones |
---|---|---|---|
MobileNet-V3 (pequeño) | 224 x 224 | Ninguno (float32) | Más reciente |
MobileNet-V3 (grande) | 224 x 224 | 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 |
---|---|---|
MobileNet-V3 (pequeño) | 3.94 ms | 7.83 ms |
MobileNet-V3 (grande) | 9.75 ms | 9.08 ms |