Guía de tareas de reconocimiento de gestos

Una mano que hace un gesto de pulgar hacia arriba que el modelo identifica como un gesto de pulgar hacia arriba con una calificación de confianza del 63%

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.

Pruébala.

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:

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:
  • Imágenes fijas
  • Fotogramas de video decodificados
  • Feed de video en vivo
El Reconocedor de gestos muestra los siguientes resultados:
  • Categorías de gestos con las manos
  • Lateralidad de las manos detectadas
  • Puntos de referencia de las manos detectadas en coordenadas de imagen
  • Puntos de referencia de las manos detectadas en coordenadas globales

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"]
.
  • Configuración regional de los nombres visibles: Es la configuración regional que se usará para los nombres visibles especificados a través de los metadatos del modelo de TFLite, si los hay.
  • Max results: Es la cantidad máxima de resultados de clasificación con la puntuación más alta que se mostrarán. Si es menor que 0, se mostrarán todos los resultados disponibles.
  • Umbral de puntuación: Es la puntuación por debajo de la cual se rechazan los resultados. Si se establece en 0, se mostrarán todos los resultados disponibles.
  • Lista de entidades permitidas de categorías: Es la lista de entidades permitidas de nombres de categorías. Si no está vacío, se filtrarán los resultados de clasificación cuya categoría no esté en este conjunto. Es mutuamente excluyente con la lista de entidades rechazadas.
  • Lista de bloqueo de categorías: Es la lista de bloqueo de nombres de categorías. Si no está vacío, se filtrarán los resultados de clasificación cuya categoría esté en este conjunto. Es mutuamente excluyente con la lista de entidades permitidas.
    • Configuración regional de los nombres visibles: any string
    • Resultados máximos: any integer
    • Umbral de puntuación: 0.0-1.0
    • Lista de entidades permitidas de categorías: vector of strings
    • Lista de bloqueo de categorías: vector of strings
    • Configuración regional de los nombres visibles: "en"
    • Resultados máximos: -1
    • Umbral de puntuación: 0
    • Lista de entidades permitidas de categorías: vacía
    • Lista de bloqueo de categorías: vacía
    custom_gestures_classifier_options Son opciones para configurar el comportamiento del clasificador de gestos personalizados.
  • Configuración regional de los nombres visibles: Es la configuración regional que se usará para los nombres visibles especificados a través de los metadatos del modelo de TFLite, si los hay.
  • Max results: Es la cantidad máxima de resultados de clasificación con la puntuación más alta que se mostrarán. Si es menor que 0, se mostrarán todos los resultados disponibles.
  • Umbral de puntuación: Es la puntuación por debajo de la cual se rechazan los resultados. Si se establece en 0, se mostrarán todos los resultados disponibles.
  • Lista de entidades permitidas de categorías: Es la lista de entidades permitidas de nombres de categorías. Si no está vacío, se filtrarán los resultados de clasificación cuya categoría no esté en este conjunto. Es mutuamente excluyente con la lista de entidades rechazadas.
  • Lista de bloqueo de categorías: Es la lista de bloqueo de nombres de categorías. Si no está vacío, se filtrarán los resultados de clasificación cuya categoría esté en este conjunto. Es mutuamente excluyente con la lista de entidades permitidas.
    • Configuración regional de los nombres visibles: any string
    • Resultados máximos: any integer
    • Umbral de puntuación: 0.0-1.0
    • Lista de entidades permitidas de categorías: vector of strings
    • Lista de bloqueo de categorías: vector of strings
    • Configuración regional de los nombres visibles: "en"
    • Resultados máximos: -1
    • Umbral de puntuación: 0
    • Lista de entidades permitidas de categorías: vacía
    • Lista de bloqueo de categorías: vacía
    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:

    Códigos para puntos de referencia de manos específicos

    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.