La tarea del Reconocedor de gestos de MediaPipe te permite reconocer gestos manuales en tiempo real y proporciona los resultados reconocidos junto con los puntos de referencia de las manos detectadas. Puedes usar esta tarea para reconocer gestos específicos de la mano de un usuario y, luego, invocar las funciones de la aplicación que correspondan a esos gestos.
Esta tarea opera en datos de imagen con un modelo de aprendizaje automático (AA) y acepta datos estáticos o un flujo continuo. La tarea genera puntos de referencia de la mano en coordenadas de imagen, puntos de referencia de la mano en coordenadas mundiales, lateralidad (mano izquierda o derecha) y las categorías de gestos de la mano de varias manos.
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
- Python: ejemplo de código
- 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.
- Umbral de puntuación: Filtra los resultados según las puntuaciones de predicción.
- Etiqueta la lista de entidades permitidas y la lista de bloqueo: Especifica las categorías de gestos que reconoce el modelo.
Entradas de tareas | Resultados de las tareas |
---|---|
El Gesto Recognizer acepta una entrada de uno de los siguientes tipos de datos:
|
El Reconocedor de gestos muestra los siguientes resultados:
|
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 |
|
num_hands |
GestureRecognizer puede detectar la cantidad máxima de manos.
|
Any integer > 0 |
1 |
|
min_hand_detection_confidence |
Es la puntuación de confianza mínima para que la detección de la mano se considere exitosa en el modelo de detección de la palma. | 0.0 - 1.0 |
0.5 |
|
min_hand_presence_confidence |
Es la puntuación de confianza mínima de la puntuación de presencia de la mano en el modelo de detección de puntos de referencia de la mano. En el modo de video y en el modo de transmisión en vivo del Reconocedor de gestos, si la puntuación de confianza de la presencia de la mano del modelo de punto de referencia de la mano está por debajo de este umbral, se activa el modelo de detección de palmas. De lo contrario, se usa un algoritmo de seguimiento de manos ligero para determinar la ubicación de las manos para la detección de puntos de referencia posterior. | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
Es la puntuación de confianza mínima para que el seguimiento de manos se considere exitoso. Este es el umbral de IoU del cuadro de límite entre las manos en el fotograma actual y el último. En el modo de video y el modo de transmisión del Reconocedor de gestos, si el seguimiento falla, el Reconocedor de gestos activa la detección de la mano. De lo contrario, se omite la detección de manos. | 0.0 - 1.0 |
0.5 |
|
canned_gestures_classifier_options |
Son opciones para configurar el comportamiento del clasificador de gestos predefinidos. Los gestos predeterminados son ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"] . |
|
|
|
custom_gestures_classifier_options |
Son opciones para configurar el comportamiento del clasificador de gestos personalizados. |
|
|
|
result_callback |
Establece el objeto de escucha de resultados para que reciba los resultados de la clasificación de forma asíncrona cuando el reconocedor de gestos esté en el modo de transmisión en vivo.
Solo se puede usar cuando el modo de ejecución está configurado como LIVE_STREAM . |
ResultListener |
N/A | N/A |
Modelos
El Reconocedor de gestos usa un paquete de modelos con dos paquetes de modelos empaquetados previamente: un paquete de modelos de puntos de referencia de la mano y un paquete de modelos de clasificación de gestos. El modelo de puntos de referencia detecta la presencia de manos y su geometría, y el modelo de reconocimiento de gestos reconoce los gestos en función de la geometría de la mano.
Nombre del modelo | Forma de entrada | Tipo de cuantización | Tarjeta de modelo | Versiones |
---|---|---|---|---|
HandGestureClassifier | 192 × 192, 224 × 224 | Número de punto flotante 16 | info | Más reciente |
Esta tarea también admite la modificación del paquete de modelos con Model Maker. Para obtener más información sobre el uso de Model Maker para personalizar modelos para esta tarea, consulta la página Cómo personalizar modelos para el Reconocedor de gestos.
Paquete de modelos de lugares de interés manuales
El paquete del modelo de punto de referencia de la mano detecta la localización de puntos clave de 21 coordenadas de nudillos de la mano dentro de las regiones de la mano detectadas. El modelo se entrenó con aproximadamente 30,000 imágenes del mundo real, así como varios modelos de manos sintéticas renderizados que se impusieron sobre varios fondos. Consulta la definición de los 21 puntos de referencia a continuación:
El paquete de modelos de marcadores de mano contiene el modelo de detección de palmas y el modelo de detección de marcadores de mano. El modelo de detección de palmas localiza la región de las manos de toda la imagen de entrada, y el modelo de detección de puntos de referencia de la mano encuentra los puntos de referencia en la imagen de la mano recortada que define el modelo de detección de palmas.
Dado que el modelo de detección de palmas requiere mucho más tiempo, en el modo de video o en el modo de transmisión en vivo, el Reconocedor de gestos usa un cuadro delimitador definido por los puntos de referencia de la mano detectados en el fotograma actual para localizar la región de las manos en el siguiente fotograma. Esto reduce las veces que el Reconocedor de gestos activa el modelo de detección de la palma. Solo cuando el modelo de puntos de referencia de la mano ya no puede identificar la cantidad requerida de presencia de manos o falla el seguimiento de manos, se invoca el modelo de detección de palmas para volver a localizar las manos.
Paquete del modelo de clasificación de gestos
El paquete del modelo de clasificación de gestos puede reconocer estos gestos comunes de la mano:
0 - Unrecognized gesture, label: Unknown
1 - Closed fist, label: Closed_Fist
2 - Open palm, label: Open_Palm
3 - Pointing up, label: Pointing_Up
4 - Thumbs down, label: Thumb_Down
5 - Thumbs up, label: Thumb_Up
6 - Victory, label: Victory
7 - Love, label: ILoveYou
Si el modelo detecta manos, pero no reconoce un gesto, el reconocedor de gestos muestra un resultado de "None". Si el modelo no detecta manos, el reconocedor de gestos muestra un resultado vacío.
El paquete del modelo de clasificación de gestos contiene un flujo de trabajo de red neuronal de dos pasos con un modelo de incorporación de gestos seguido de un modelo de clasificación de gestos. Consulta más detalles en la tarjeta del modelo de clasificación de gestos.
El modelo de incorporación de gestos codifica las características de la imagen en un vector de atributos, y el modelo de clasificación es un clasificador de gestos ligero que toma el vector de atributos como entrada. El paquete de modelos de clasificación de gestos proporcionado contiene el clasificador de gestos precompilados, que detecta los 7 gestos comunes de la mano que se mencionaron anteriormente. Puedes entrenar tu propio clasificador de gestos personalizado para extender el paquete de modelos y reconocer más gestos. Obtén más información en la siguiente sección Modelos personalizados.
El Reconocedor de gestos con el clasificador de gestos preestablecidos y el clasificador de gestos personalizados prefiere el gesto personalizado si ambos clasificadores reconocen el mismo gesto en sus categorías. Si solo un clasificador de gestos reconoce el gesto, el Reconocedor de gestos muestra el gesto reconocido directamente.
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 |
---|---|---|
GestureRecognizer | 16.76 ms | 20.87 ms |
Modelos personalizados
Si deseas mejorar o alterar las capacidades de los modelos proporcionados en esta tarea, puedes usar Model Maker para modificar los modelos existentes. Los modelos personalizados que se usan con MediaPipe deben estar en formato .task
, que es un archivo de paquete de modelos. Considera usar Model Maker para modificar los modelos proporcionados para esta tarea antes de crear el tuyo.
Para obtener más información sobre cómo personalizar un modelo para esta tarea, consulta Cómo personalizar modelos para el Reconocedor de gestos.