La tarea de reconocimiento de gestos de MediaPipe te permite reconocer gestos de la mano en tiempo real. proporciona los resultados de gestos reconocidos con la mano 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 e invocar funciones de la aplicación que correspondan a esos gestos.
Esta tarea opera en datos de imágenes con un modelo de aprendizaje automático (AA) y acepta ya sea datos estáticos o un flujo continuo. La tarea muestra puntos de referencia de la mano coordenadas de imágenes, puntos de referencia de las manos en coordenadas mundiales, mano (mano izquierda/derecha) y las categorías de gestos de varias manos.
Comenzar
Comienza a usar esta tarea siguiendo una de estas guías de implementación para tu plataforma de destino. Estas guías específicas para plataformas te guiarán a través de un la implementación de esta tarea con un modelo recomendado y proporcionar 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 la configuración opciones de esta tarea.
Funciones
- Procesamiento de imágenes de entrada: el procesamiento incluye la rotación, el cambio de tamaño y el cambio de tamaño. normalización y conversión de espacio de color.
- Umbral de puntuación: Filtra los resultados en función de las puntuaciones de predicción.
- Lista de etiquetas de entidades permitidas y listas de bloqueo: Especifica las categorías de gestos. que el modelo reconoce.
Entradas de tareas | Resultados de la tarea |
---|---|
El Reconocedor de gestos 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 de los fotogramas decodificados de un video. LIVE_STREAM: Es el modo para una transmisión en vivo de entradas. datos, como los de una cámara. En este modo, resultListener debe se llama para configurar un objeto de escucha que reciba resultados de forma asíncrona. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
|
num_hands |
La cantidad máxima de manos puede ser detectada por
GestureRecognizer
|
Any integer > 0 |
1 |
|
min_hand_detection_confidence |
La puntuación de confianza mínima para la detección de la mano considerado exitoso en el modelo de detección de palma. | 0.0 - 1.0 |
0.5 |
|
min_hand_presence_confidence |
La puntuación de confianza mínima de la puntuación de presencia de la mano en la mano de detección de puntos de referencia. En el modo video y 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 es inferior este umbral, activa el modelo de detección de palma. De lo contrario, el algoritmo de rastreo de manos livianos se usa para determinar la ubicación de las manos para la posterior detección de puntos de referencia. | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
La puntuación de confianza mínima para que se considere el seguimiento de la mano y exitoso. Este es el umbral de IoU del cuadro delimitador entre manos en el fotograma actual y el último. En los modos Video y Transmisión de Reconocedor de gestos; si falla el seguimiento, Reconocedor de gestos activa la mano de detección de intrusiones. 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 personalizados. |
|
|
|
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á establecido en LIVE_STREAM |
ResultListener |
N/A | N/A |
Modelos
El Reconocedor de gestos usa un paquete de modelos con dos paquetes de modelos empaquetados previamente: uno paquete de modelo de punto de referencia manual y paquete de modelo de clasificación de gestos. El modelo de punto de referencia detecta la presencia de manos y la geometría de estas, así como el gesto Reconoce los gestos basándose en la geometría de la mano.
Nombre del modelo | Forma de la entrada | Tipo de cuantización | Tarjeta de modelo | Versiones |
---|---|---|---|---|
HandGestureClassifier | 192 x 192, 224 x 224 | número de punto flotante 16 | Información | Más recientes |
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 en esta tarea, consulta la página Cómo personalizar modelos para el Reconocedor de gestos.
Paquete de modelo de punto de referencia de la mano
El paquete del modelo del punto de referencia de la mano detecta la localización del punto clave de 21 nudillos de la mano coordenadas de una mano dentro de las regiones detectadas de la mano. El modelo se entrenó aproximadamente 30,000 imágenes reales, así como varias manos sintéticas renderizadas impuestos sobre diversos contextos. Consulta la definición de los 21 puntos de referencia a continuación:
El paquete del modelo del sistema de puntos de referencia de la mano contiene un modelo de detección de palma y de detección de puntos de referencia de la mano. El modelo de detección de palma localiza la región de 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 recortada de la mano definida por el modelo de detección de palma.
Como el modelo de detección de palma lleva mucho más tiempo, en modo de video o en vivo. de transmisión, el Reconocedor de gestos usa un cuadro delimitador definido por la mano detectada puntos de referencia en el fotograma actual para localizar la región de las manos en el próximo marco. Esto reduce los tiempos en que el Reconocedor de gestos activa el modelo de detección de palma. Solo cuando el modelo de puntos de referencia de la mano ya no pudo identificar la cantidad necesaria de la cantidad de manos, o falla el seguimiento de la mano, el modelo de detección de palma se invoca para relocalizar las manos.
Paquete de modelos de clasificación de gestos
El paquete del modelo de clasificación de gestos puede reconocer estos gestos comunes con 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, ese gesto reconocedor muestra un resultado de “Ninguno”. Si el modelo no detecta manos, la el reconocimiento de gestos muestra un valor 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. Puedes obtener más detalles en la tarjeta de 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 la función vector como entrada. El paquete del modelo de clasificación de gestos proporcionado contiene el de gestos estándar, que detecta los 7 gestos comunes con la mano arriba. Puedes extender el paquete de modelos para reconocer más gestos mediante el entrenamiento tu clasificador de gestos personalizado. Consulta más detalles a continuación Sección Modelos personalizados.
Reconocedor de gestos con clasificador de gestos estándar y 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 lo anterior modelos previamente entrenados. El resultado de la latencia es la latencia promedio en el Pixel 6 con CPU / GPU
Nombre del modelo | Latencia de CPU | Latencia de GPU |
---|---|---|
GestureRecognizer | 16.76ms | 20.87ms |
Modelos personalizados
Si quieres mejorar o alterar las capacidades de los modelos proporcionados en esta
puedes usar Model Maker para modificar los modelos existentes. Modelos personalizados usados
con MediaPipe debe tener el formato .task
, que es un archivo de paquete de modelo. Tú
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 Personaliza modelos para el Reconocedor de gestos.