Guía de tareas de reconocimiento de gestos

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.

Probar

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:

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:
  • Imágenes fijas
  • Fotogramas de video decodificados
  • Feed de video en vivo
El reconocimiento de gestos genera los siguientes resultados:
  • Categorías de gestos de la mano
  • Mano de las manos detectadas
  • Puntos de referencia de manos detectadas en coordenadas de imagen
  • Puntos de referencia de manos detectadas en coordenadas mundiales

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"]
  • Configuración regional de nombres visibles: Es la configuración regional que se usará para los nombres visibles especificados mediante los metadatos del modelo de TFLite, si corresponde.
  • Resultados máximos: La cantidad máxima de resultados de clasificación con la puntuación más alta que se mostrarán. Si es inferior a 0, se devolverá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 categorías permitidas: lista de nombres de categorías permitidas. Si no está vacío, se filtrarán los resultados de clasificación cuya categoría no esté en este conjunto. Este campo y la lista de bloqueo son mutuamente excluyentes.
  • Lista de bloqueo de categorías: Es la lista de bloqueo de los nombres de categorías. Si no está vacío, se filtrarán los resultados de clasificación cuya categoría se encuentre en este conjunto. Este campo y la lista de entidades permitidas son mutuamente excluyentes.
    • 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 la categoría: vector of strings
    • Lista de entidades bloqueadas de la categoría: 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 entidades bloqueadas de categoría: vacía
    custom_gestures_classifier_options Opciones para configurar el comportamiento del clasificador de gestos personalizado.
  • Configuración regional de nombres visibles: Es la configuración regional que se usará para los nombres visibles especificados mediante los metadatos del modelo de TFLite, si corresponde.
  • Resultados máximos: La cantidad máxima de resultados de clasificación con la puntuación más alta que se mostrarán. Si es inferior a 0, se devolverá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 categorías permitidas: lista de nombres de categorías permitidas. Si no está vacío, se filtrarán los resultados de clasificación cuya categoría no esté en este conjunto. Este campo y la lista de bloqueo son mutuamente excluyentes.
  • Lista de bloqueo de categorías: Es la lista de bloqueo de los nombres de categorías. Si no está vacío, se filtrarán los resultados de clasificación cuya categoría se encuentre en este conjunto. Este campo y la lista de entidades permitidas son mutuamente excluyentes.
    • 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 la categoría: vector of strings
    • Lista de entidades bloqueadas de la categoría: 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 entidades bloqueadas de categoría: vacía
    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.