La tarea Reconocedor de gestos de MediaPipe te permite reconocer gestos de la mano en tiempo real y proporciona los resultados reconocidos de gestos manuales junto con los puntos de referencia de las manos detectadas. Puedes usar esta tarea para reconocer gestos de la mano específicos de un usuario e invocar 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 una transmisión continua. La tarea muestra los puntos de referencia de la mano en coordenadas de imagen, los puntos de referencia de la mano en coordenadas mundiales, la mano (izquierda/derecha) y las categorías de gestos manuales de varias manos.
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
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.
- Umbral de puntuación: Filtra los resultados en función de las puntuaciones de predicción.
- Lista de etiquetas permitidas y listas de bloqueo: Especifica las categorías de gestos que reconoce el modelo.
Entradas de tareas | Resultados de la tarea |
---|---|
El Reconocedor de gestos acepta una entrada de uno de los siguientes tipos de datos:
|
El reconocimiento de gestos genera los siguientes resultados:
|
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 |
|
num_hands |
GestureRecognizer puede detectar la cantidad máxima de manos.
|
Any integer > 0 |
1 |
|
min_hand_detection_confidence |
Puntuación de confianza mínima para que la detección de la mano se considere exitosa en el modelo de detección de palma. | 0.0 - 1.0 |
0.5 |
|
min_hand_presence_confidence |
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 los modos de video y 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 palma. De lo contrario, se usa un algoritmo ligero de seguimiento de la mano para determinar la ubicación de las manos y detectar puntos de referencia posteriormente. | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
La puntuación de confianza mínima para que el seguimiento de la mano se considere exitoso. Este es el umbral de IoU del cuadro de límite entre las manos en el marco actual y el último fotograma. En los modos de video y de transmisión del Reconocedor de gestos, si falla el seguimiento, el Reconocedor de gestos activa la detección de la mano. De lo contrario, se omitirá la detección de la mano. | 0.0 - 1.0 |
0.5 |
|
canned_gestures_classifier_options |
Opciones para configurar el comportamiento del clasificador de gestos estándar. Los gestos estándar son ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"] |
|
|
|
custom_gestures_classifier_options |
Opciones para configurar el comportamiento del clasificador de gestos personalizado. |
|
|
|
result_callback |
Configura el objeto de escucha de resultados para recibir los resultados de 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 en LIVE_STREAM |
ResultListener |
N/A | N/A |
ajustables
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 mano y un paquete de modelos de clasificación de gestos. El modelo de punto de referencia detecta la presencia de manos y la geometría de estas, y el modelo de reconocimiento de gestos reconoce gestos según 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. Si quieres obtener más información sobre el uso de Model Maker para personalizar modelos para esta tarea, consulta la página Personaliza modelos para el Reconocedor de gestos.
Conjunto de modelos de puntos de referencia de la mano
El paquete de modelo de punto de referencia de la mano detecta la localización de los puntos clave de 21 coordenadas en las coordenadas manuales dentro de las regiones detectadas de la mano. El modelo se entrenó con alrededor de 30,000 imágenes del mundo real, así como con varios modelos de mano sintética renderizados sobre varios fondos. Consulta la definición de los 21 puntos de referencia a continuación:
El paquete de modelos del punto de referencia de la mano contiene el modelo de detección de la palma y el modelo de detección de los puntos de referencia de la mano. El modelo de detección de la palma localiza la región de las manos a partir de 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 la palma.
Como el modelo de detección de la palma requiere mucho más tiempo, en los modos de video o de transmisión en vivo, el Reconocedor de gestos usa un cuadro de límite definido por los puntos de referencia detectados de la mano en el fotograma actual para localizar la región de las manos en el siguiente fotograma. De esta forma, se reduce el tiempo que tarda el Reconocedor de gestos en activar el modelo de detección de palma. Solo cuando el modelo de puntos de referencia de la mano ya no pudo identificar la cantidad suficiente de manos presentes o falla el seguimiento de la mano, se invoca al modelo de detección de la palma para relocalizar las manos.
Conjunto de modelos de clasificación de gestos
El paquete de modelos de clasificación de gestos puede reconocer estos gestos manuales comunes:
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 las manos, pero no reconoce un gesto, el reconocedor de gestos muestra el resultado "None". Si el modelo no detecta las manos, el reconocedor de gestos se muestra vacío.
El paquete de modelos de clasificación de gestos contiene una canalización de red neuronal de dos pasos con un modelo de incorporación de gestos seguido de un modelo de clasificación de gestos. Obtén más detalles en la tarjeta de modelo de clasificación de gestos.
El modelo de incorporación de gestos codifica los atributos 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 estándar, que detecta los 7 gestos comunes de la mano que se presentaron anteriormente. Puedes extender el paquete de modelos para que reconozca más gestos entrenando tu propio clasificador de gestos personalizado. Obtén más detalles en la siguiente sección Modelos personalizados.
El Reconocedor de gestos con clasificador de gestos estándar y clasificador de gestos personalizado 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 genera el gesto reconocido directamente.
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 |
---|---|---|
GestureRecognizer | 16.76ms | 20.87ms |
Modelos personalizados
Si deseas mejorar o modificar 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. Debes considerar usar Model Maker para modificar los modelos proporcionados para esta tarea antes de compilar los tuyos.
Si quieres obtener más información para personalizar un modelo en esta tarea, consulta Cómo personalizar modelos para el reconocedor de gestos.