Guía de tareas de reconocimiento de gestos

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.

Pruébalo.

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:

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

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"]
  • Configuración regional de los nombres visibles: Es la configuración regional que se usa para los nombres visibles que se especifican a través de 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 < 0, se devolverán todos los resultados disponibles.
  • Umbral de puntuación: Es la puntuación por debajo del cual se rechazan los resultados. Si se establece en 0, se devolverá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. Este campo y la lista de bloqueo son mutuamente excluyentes.
  • Lista de bloqueo de categoría: 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. Mutuamente excluyentes con la lista de entidades permitidas.
    • Configuración regional de los nombres visibles: any string
    • Máx. de resultados: any integer
    • Umbral de puntuación: 0.0-1.0
    • Lista de categorías permitidas: vector of strings
    • Lista de bloqueo de categoría: vector of strings
    • Configuración regional de los nombres visibles: "en"
    • Máx. de resultados: -1
    • Umbral de puntuación: 0
    • Lista de categorías permitidas: vacía
    • Lista de bloqueo de la categoría: vacía
    custom_gestures_classifier_options Opciones para configurar el comportamiento del clasificador de gestos personalizados.
  • Configuración regional de los nombres visibles: Es la configuración regional que se usa para los nombres visibles que se especifican a través de 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 < 0, se devolverán todos los resultados disponibles.
  • Umbral de puntuación: Es la puntuación por debajo del cual se rechazan los resultados. Si se establece en 0, se devolverá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. Este campo y la lista de bloqueo son mutuamente excluyentes.
  • Lista de bloqueo de categoría: 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. Mutuamente excluyentes con la lista de entidades permitidas.
    • Configuración regional de los nombres visibles: any string
    • Máx. de resultados: any integer
    • Umbral de puntuación: 0.0-1.0
    • Lista de categorías permitidas: vector of strings
    • Lista de bloqueo de categoría: vector of strings
    • Configuración regional de los nombres visibles: "en"
    • Máx. de resultados: -1
    • Umbral de puntuación: 0
    • Lista de categorías permitidas: vacía
    • Lista de bloqueo de la 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á 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.