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:
- Android – Exemple de code – Guide
- Python - Exemple de code - Guide
- Web – Exemple de code – Guide
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:
|
L'outil de reconnaissance de gestes génère les résultats suivants:
|
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"] |
|
|
|
custom_gestures_classifier_options |
Options de configuration du comportement du classificateur de gestes personnalisés. |
|
|
|
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 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 l'utilisation de Model Maker afin de personnaliser des modèles 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.