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. fournit les résultats du geste reconnu de la main, ainsi que les points de repère détection des mains. Vous pouvez utiliser cette tâche pour reconnaître des gestes de la main spécifiques et d'invoquer les fonctionnalités d'application correspondant à ces gestes.

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

<ph type="x-smartling-placeholder"></ph> Essayez !

Premiers pas

Commencez à effectuer cette tâche en suivant l'un de ces guides d'implémentation pour votre la plate-forme cible. Ces guides spécifiques à chaque plate-forme vous guident à travers un la mise en œuvre de cette tâche à l'aide d'un modèle recommandé et de fournir des exemples de code avec les options de configuration recommandées:

Détails de la tâche

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

Fonctionnalités

  • Traitement de l'image d'entrée : le traitement inclut la rotation, le redimensionnement, la normalisation et la conversion de l'espace colorimétrique.
  • Seuil de score : filtre les résultats en fonction de scores de prédiction.
  • Liste d'autorisation et de blocage des libellés : spécifiez les catégories de gestes. reconnue par le modèle.
Entrées de la tâche Sorties des tâches
L'outil de reconnaissance de gestes accepte une entrée correspondant à l'un des types de données suivants:
<ph type="x-smartling-placeholder">
    </ph>
  • 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:
<ph type="x-smartling-placeholder">
    </ph>
  • Catégories de gestes de la main
  • Main dominante des mains détectées
  • Points de repère représentant des mains détectées dans les coordonnées d'une image
  • Points de repère représentant 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 y en a trois modes:

IMAGE: mode utilisé pour la saisie d'une seule image.

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

LIVE_STREAM: mode d'une diffusion en direct des entrées provenant d'un appareil photo, par exemple. 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 nombre maximal de mains peut être détecté par le GestureRecognizer. Any integer > 0 1
min_hand_detection_confidence Score de confiance minimal pour que la détection de la main soit considéré comme efficace dans le modèle de détection de paume de la main. 0.0 - 1.0 0.5
min_hand_presence_confidence Score de confiance minimal du score de présence d'une main dans la main de détection de points de repère. En mode Vidéo et Diffusion en direct de l'outil de reconnaissance de gestes, si le score de confiance de présence de la main du modèle de repère de la main est inférieur à ce seuil déclenche le modèle de détection de la paume de la main. Sinon, un l'algorithme léger de suivi des mains est utilisé pour déterminer la position les 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 de la main soit pris en compte réussi. Il s'agit du seuil IoU du cadre de délimitation entre les mains dans le l’image actuelle et la dernière image. Lorsque les modes Vidéo et Flux de Outil de reconnaissance de gestes (en cas d'échec du suivi), il déclenche la reconnaissance de gestes la détection automatique. 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 standardisés sont ["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 de 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 < 0, tous les résultats disponibles sont renvoyés.
  • Seuil de score: score en dessous duquel les résultats sont rejeté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. Si cette valeur n'est pas vide, les résultats de classification dont la catégorie n'est pas dans cet ensemble seront filtrés. Exclusion mutuelle avec la liste de blocage.
  • Liste de blocage des catégories: liste de blocage des noms de catégories. Si cette valeur n'est pas vide, les résultats de classification dont la catégorie appartient à cet ensemble seront filtrés. Exclusion mutuelle avec la liste d'autorisation.
    • Paramètres régionaux pour les 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 catégorie: vector of strings
    • Paramètres régionaux pour les noms à afficher: "en"
    • Nombre maximal de résultats: -1
    • Seuil de score: 0
    • Liste d'autorisation de catégories: vide
    • Liste de blocage de catégories: 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 de 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 < 0, tous les résultats disponibles sont renvoyés.
  • Seuil de score: score en dessous duquel les résultats sont rejeté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. Si cette valeur n'est pas vide, les résultats de classification dont la catégorie n'est pas dans cet ensemble seront filtrés. Exclusion mutuelle avec la liste de blocage.
  • Liste de blocage des catégories: liste de blocage des noms de catégories. Si cette valeur n'est pas vide, les résultats de classification dont la catégorie appartient à cet ensemble seront filtrés. Exclusion mutuelle avec la liste d'autorisation.
    • Paramètres régionaux pour les 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 catégorie: vector of strings
    • Paramètres régionaux pour les noms à afficher: "en"
    • Nombre maximal de résultats: -1
    • Seuil de score: 0
    • Liste d'autorisation de catégories: vide
    • Liste de blocage de catégories: vide
    result_callback Définit l'écouteur des résultats pour qu'il reçoive les résultats de la classification. de manière asynchrone lorsque la reconnaissance de gestes est en mode diffusion en direct. Ne peut être utilisé que lorsque le mode d'exécution est défini sur LIVE_STREAM ResultListener N/A N/A

    Modèles

    L'outil de reconnaissance de gestes utilise un groupe de modèles avec deux lots de modèles prédéfinis: un un lot de modèles de points de repère "main" et un lot de modèles de classification des gestes. La de base détecte la présence de mains et de géométries de la main, ainsi que le geste reconnaît les gestes en fonction de la géométrie de la main.

    <ph type="x-smartling-placeholder">
    Nom du modèle Forme d'entrée Type de quantification Fiche de modèle Versions
    <ph type="x-smartling-placeholder"></ph> HandGestureClassifier 192 x 192, 224 x 224 float 16 <ph type="x-smartling-placeholder"></ph> infos <ph type="x-smartling-placeholder"></ph> Nouveautés

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

    Lot de modèles avec point de repère Main

    Le bundle de modèles du point de repère "main" détecte la localisation du point clé de 21 articulations de la main dans les zones de la main détectées. Le modèle a été entraîné sur environ 30 000 images réelles, et plusieurs mains synthétiques affichées sur des arrière-plans variés. Reportez-vous à 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 de détection de points de repère de la main. Le modèle de détection de paume de la main localise des mains sur l'ensemble de l'image d'entrée, et 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 paume de la main.

    Comme le modèle de détection de la paume de la main prend beaucoup plus de temps, en mode Vidéo ou En direct, mode flux, la reconnaissance de gestes utilise un cadre de délimitation défini par la main détectée points de repère dans l'image actuelle pour localiser la région des mains dans la prochaine cadre. 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. Uniquement lorsque le modèle des points de repère de la main n'a plus pu identifier les éléments nécessaires nombre 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 des gestes

    Le lot de modèles de classification des 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 geste le programme de reconnaissance renvoie le résultat « None ». Si le modèle ne détecte pas les mains, la reconnaissance de gestes renvoie un résultat vide.

    Le lot de modèles de classification des gestes contient un pipeline de réseau de neurones en deux étapes avec un modèle de représentation vectorielle continue et un modèle de classification de gestes. Pour en savoir plus, consultez Fiche du modèle de classification des gestes.

    Le modèle de représentation vectorielle continue de gestes encode les caractéristiques d'image dans un vecteur de caractéristiques. le modèle de classification est un classificateur de gestes léger vecteur d'entrée. Le bundle de modèles de classification des gestes fourni contient classificateur de gestes prédéfinis, qui détecte les 7 gestes de la main courants introduits ci-dessus. Vous pouvez étendre le bundle de modèles afin de reconnaître plus de gestes par entraînement votre propre classificateur de gestes personnalisés. Pour en savoir plus, consultez Modèles personnalisés.

    Reconnaissance de gestes avec le classificateur de gestes standardisés et le classificateur de gestes personnalisé préfère le geste personnalisé si les deux classificateurs reconnaissent le même geste leurs catégories. Si un seul classificateur de gestes reconnaît le geste, L'outil de reconnaissance de gestes génère directement le geste reconnu.

    Analyses comparatives des tâches

    Voici les benchmarks de tâches pour l'ensemble du pipeline, en fonction de ce qui précède des modèles pré-entraînés. Le résultat de la latence correspond à la latence moyenne du Pixel 6 avec CPU / 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 capacités des modèles fournis dans ce vous pouvez utiliser Model Maker pour modifier les modèles existants. Modèles personnalisés utilisés avec MediaPipe doit être au format .task, qui est un fichier de bundle de modèle. Toi nous vous conseillons d'utiliser Model Maker pour modifier les modèles fournis pour cette tâche avant de créer le vôtre.

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