Guide des tâches de reconnaissance des gestes

La tâche de reconnaissance de gestes MediaPipe vous permet de reconnaître des gestes de la main en temps réel et fournit les résultats des gestes reconnus ainsi que les points de repère des mains détectées. Vous pouvez utiliser cette tâche pour reconnaître des gestes de la main spécifiques d'un utilisateur et appeler des fonctionnalités d'application qui correspondent à ces gestes.

Cette tâche traite des données d'image avec un modèle de machine learning (ML), et accepte des données statiques ou un flux continu. La tâche génère des points de repère de la main en coordonnées d'image, des points de repère de la main en coordonnées mondiales, de la main dominante (main gauche/droite) et des catégories de gestes de la main de plusieurs mains.

Essayer

Commencer

Commencez à utiliser cette tâche en suivant l'un de ces guides d'implémentation pour votre plate-forme cible. Ces guides spécifiques à la plate-forme vous guident tout au long d'une implémentation de base de cette tâche, à l'aide d'un modèle recommandé, et fournissent des exemples de code avec les options de configuration recommandées:

Détails de la tâche

Cette section décrit les capacités, les entrées, les sorties et les options de configuration de cette tâche.

Caractéristiques

  • Traitement de l'image d'entrée : le traitement comprend la rotation, le redimensionnement, la normalisation et la conversion de l'espace colorimétrique.
  • Seuil de score : filtre les résultats en fonction des scores de prédiction.
  • Liste d'autorisation et liste de blocage de libellés : spécifiez les catégories de gestes reconnues par le modèle.
Entrées des tâches Sorties de tâches
L'outil de reconnaissance de gestes accepte l'un des types de données suivants:
  • Images fixes
  • Images vidéo décodées
  • Flux vidéo en direct
L'outil de reconnaissance de gestes génère les résultats suivants:
  • Catégories de gestes de la main
  • Main dominante des mains détectées
  • Points de repère des mains détectées en coordonnées dans l'image
  • Points de repère des mains détectées en coordonnées mondiales

Options de configuration

Cette tâche comporte les options de configuration suivantes:

Nom de l'option Description Plage de valeurs Valeur par défaut
running_mode Définit le mode d'exécution de la tâche. Il existe trois modes:

IMAGE: mode pour les entrées d'une seule image.

VIDEO: mode pour les images décodées d'une vidéo.

LIVE_STREAM: mode de diffusion en direct de données d'entrée, issues par exemple d'une caméra. Dans ce mode, resultListener doit être appelé pour configurer un écouteur afin de recevoir les résultats de manière asynchrone.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
num_hands Le GestureRecognizer peut détecter le nombre maximal d'aiguilles. Any integer > 0 1
min_hand_detection_confidence Score de confiance minimal pour que la détection de la main soit considérée comme réussie dans le modèle de détection de la paume de la main. 0.0 - 1.0 0.5
min_hand_presence_confidence Score de confiance minimal du score de présence de la main dans le modèle de détection de points de repère de la main. En mode vidéo et en mode diffusion en direct de la reconnaissance de gestes, si le score de confiance de présence de la main du modèle de point de repère de la main est inférieur à ce seuil, le modèle de détection de la paume de la main est déclenché. Sinon, un algorithme léger de suivi de la main est utilisé pour déterminer la position des mains pour la détection ultérieure des points de repère. 0.0 - 1.0 0.5
min_tracking_confidence Score de confiance minimal pour que le suivi manuel soit considéré comme réussi. Il s'agit du seuil IoU du cadre de délimitation entre les aiguilles de la trame actuelle et de la dernière image. En mode Vidéo et en mode Flux de la reconnaissance de gestes, en cas d'échec du suivi, l'outil de reconnaissance de gestes déclenche la détection des mains. Sinon, la détection de la main est ignorée. 0.0 - 1.0 0.5
canned_gestures_classifier_options Options de configuration du comportement du classificateur de gestes prédéfinis. Les gestes prédéfinis sont les suivants : ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"]
  • Paramètres régionaux des noms à afficher: paramètres régionaux à utiliser pour les noms à afficher spécifiés via les métadonnées du modèle TFLite, le cas échéant.
  • Nombre maximal de résultats: nombre maximal de résultats de classification les mieux notés à renvoyer. Si la valeur est inférieure à 0, tous les résultats disponibles sont renvoyés.
  • Seuil de score: score en dessous duquel les résultats sont refusés. Si la valeur est définie sur 0, tous les résultats disponibles sont renvoyés.
  • Liste d'autorisation de catégories: liste d'autorisation des noms de catégories. S'ils ne sont pas vides, les résultats de classification dont la catégorie ne figure pas dans cet ensemble sont filtrés. Exclusion mutuelle avec la liste de blocage
  • Liste de blocage des catégories: liste de blocage des noms de catégories. S'ils ne sont pas vides, les résultats de classification dont la catégorie fait partie de cet ensemble seront filtrés. Exclusion mutuelle avec la liste d'autorisation.
    • Paramètres régionaux des noms à afficher: any string
    • Nombre maximal de résultats: any integer
    • Seuil de score: 0.0-1.0
    • Liste d'autorisation de catégories: vector of strings
    • Liste de blocage de la catégorie: vector of strings
    • Paramètres régionaux des noms à afficher: "en"
    • Nombre maximal de résultats: -1
    • Seuil de score: 0
    • Liste d'autorisation de catégories: vide
    • Liste de blocage de la catégorie: vide
    custom_gestures_classifier_options Options de configuration du comportement du classificateur de gestes personnalisés.
  • Paramètres régionaux des noms à afficher: paramètres régionaux à utiliser pour les noms à afficher spécifiés via les métadonnées du modèle TFLite, le cas échéant.
  • Nombre maximal de résultats: nombre maximal de résultats de classification les mieux notés à renvoyer. Si la valeur est inférieure à 0, tous les résultats disponibles sont renvoyés.
  • Seuil de score: score en dessous duquel les résultats sont refusés. Si la valeur est définie sur 0, tous les résultats disponibles sont renvoyés.
  • Liste d'autorisation de catégories: liste d'autorisation des noms de catégories. S'ils ne sont pas vides, les résultats de classification dont la catégorie ne figure pas dans cet ensemble sont filtrés. Exclusion mutuelle avec la liste de blocage
  • Liste de blocage des catégories: liste de blocage des noms de catégories. S'ils ne sont pas vides, les résultats de classification dont la catégorie fait partie de cet ensemble seront filtrés. Exclusion mutuelle avec la liste d'autorisation.
    • Paramètres régionaux des noms à afficher: any string
    • Nombre maximal de résultats: any integer
    • Seuil de score: 0.0-1.0
    • Liste d'autorisation de catégories: vector of strings
    • Liste de blocage de la catégorie: vector of strings
    • Paramètres régionaux des noms à afficher: "en"
    • Nombre maximal de résultats: -1
    • Seuil de score: 0
    • Liste d'autorisation de catégories: vide
    • Liste de blocage de la catégorie: vide
    result_callback Définit l'écouteur de résultat pour recevoir les résultats de la classification de manière asynchrone lorsque le programme de reconnaissance de gestes est en mode flux en direct. Ne peut être utilisé que lorsque le mode En cours d'exécution est défini sur LIVE_STREAM ResultListener N/A N/A

    Modèles

    L'outil de reconnaissance de gestes utilise un lot de modèles comprenant deux groupes de modèles prédéfinis: un lot de modèles de points de repère à la main et un lot de modèles de classification de gestes. Le modèle de point de repère détecte la présence de mains et la géométrie de la main, et le modèle de reconnaissance de gestes les reconnaît en fonction de la géométrie de la main.

    Nom du modèle Forme de saisie Type de quantification Fiche modèle Versions
    HandGestureClassifier 192 x 192, 224 x 224 nombre décimal 16 info Les plus récents

    Cette tâche permet également de modifier le groupe de modèles à l'aide de Model Maker. Pour en savoir plus sur l'utilisation de Model Maker afin de personnaliser les modèles pour cette tâche, consultez la page Personnaliser les modèles pour la reconnaissance de gestes.

    Lot de modèles de point de repère (main)

    Le bundle de modèles de points de repère de main détecte la localisation du point clé de 21 coordonnées de la main dans les régions détectées. Le modèle a été entraîné sur environ 30 000 images réelles, ainsi que sur plusieurs modèles de main synthétiques rendus imposés sur divers arrière-plans. Voir la définition des 21 points de repère ci-dessous:

    Le bundle de modèles de repères de main contient un modèle de détection de paume de la main et un modèle de détection de points de repère au niveau de la main. Le modèle de détection de la paume de la main localise la région des mains à partir de l'ensemble de l'image d'entrée. Le modèle de détection des points de repère de la main trouve les points de repère sur l'image de main recadrée définie par le modèle de détection de la paume de la main.

    Étant donné que le modèle de détection de la paume de la main prend beaucoup plus de temps, en mode vidéo ou en mode diffusion en direct, la reconnaissance de gestes utilise le cadre de délimitation défini par les points de repère détectés dans l'image actuelle pour localiser la zone des mains dans l'image suivante. Cela réduit le nombre de fois où la reconnaissance de gestes déclenche le modèle de détection de la paume de la main. Ce n'est que lorsque le modèle de points de repère de la main n'a plus pu identifier le nombre requis de mains présentes ou que le suivi de la main échoue, le modèle de détection de la paume de la main est appelé pour relocaliser les mains.

    Groupe de modèles de classification de gestes

    Le bundle de modèles de classification de gestes peut reconnaître les gestes de la main courants suivants:

    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 le modèle détecte des mains, mais ne reconnaît pas un geste, le programme de reconnaissance de gestes renvoie un résultat "Aucun". Si le modèle ne détecte pas les mains, la reconnaissance de gestes renvoie une valeur vide.

    Le groupe de modèles de classification de gestes contient un pipeline de réseau de neurones en deux étapes avec un modèle de représentation vectorielle continue des gestes suivi d'un modèle de classification de gestes. Pour en savoir plus, consultez la fiche sur le modèle de classification des gestes.

    Le modèle d'intégration de gestes encode les caractéristiques de l'image dans un vecteur de caractéristiques, tandis que le modèle de classification est un classificateur de gestes léger qui utilise le vecteur de caractéristiques comme entrée. Le groupe de modèles de classification de gestes fourni contient le classificateur de gestes standardisés, qui détecte les sept gestes de la main courants présentés ci-dessus. Vous pouvez étendre le groupe de modèles pour qu'il reconnaisse davantage de gestes en entraînant votre propre classificateur de gestes personnalisés. Pour en savoir plus, consultez la section Modèles personnalisés ci-dessous.

    L'outil de reconnaissance de gestes utilisant à la fois un classificateur de gestes standard et un classificateur de gestes personnalisé privilégie le geste personnalisé si les deux classificateurs reconnaissent le même geste dans leurs catégories. Si un classificateur de gestes seul reconnaît le geste, l'outil de reconnaissance de gestes génère directement le geste reconnu.

    Benchmarks de tâches

    Voici les benchmarks de tâches pour l'ensemble du pipeline, sur la base des modèles pré-entraînés ci-dessus. Le résultat correspond à la latence moyenne sur le Pixel 6 en utilisant le processeur / GPU.

    Nom du modèle Latence du processeur Latence du GPU
    GestureRecognizer 16,76 ms 20,87 ms

    Modèles personnalisés

    Si vous souhaitez améliorer ou modifier les fonctionnalités des modèles fournis dans cette tâche, vous pouvez utiliser Model Maker pour modifier les modèles existants. Les modèles personnalisés utilisés avec MediaPipe doivent être au format .task, qui correspond à un fichier de groupe de modèles. Nous vous conseillons d'utiliser Model Maker afin de modifier les modèles fournis pour cette tâche avant de créer les vôtres.

    Pour en savoir plus sur la personnalisation d'un modèle pour cette tâche, consultez Personnaliser des modèles pour la reconnaissance de gestes.