La tâche de reconnaissance des gestes MediaPipe vous permet de reconnaître les gestes de la main en temps réel et fournit les résultats de la reconnaissance des gestes de la main, ainsi que les repères 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 les fonctionnalités de l'application qui correspondent à ces gestes.
Cette tâche fonctionne sur 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 produit des repères de main en coordonnées d'image, des repères de main en coordonnées mondiales, une latéralité (main gauche/droite) et les catégories de gestes de plusieurs mains.
Premiers pas
Pour commencer à utiliser cette tâche, suivez l'un de ces guides d'implémentation pour votre plate-forme cible. Ces guides spécifiques à la plate-forme vous expliquent comment implémenter de manière basique cette tâche à l'aide d'un modèle recommandé et fournissent des exemples de code avec les options de configuration recommandées:
- Android – Exemple de code
- Python – Exemple de code
- Web – Exemple de code – Guide
Détails de la tâche
Cette section décrit les fonctionnalités, les entrées, les sorties et les options de configuration de cette tâche.
Fonctionnalités
- Traitement des images d'entrée : le traitement comprend la rotation, le redimensionnement, la normalisation et la conversion d'espaces colorimétriques des images.
- Seuil de score : filtrez les résultats en fonction des scores de prédiction.
- Étiquetter la liste d'autorisation et la liste de blocage : spécifiez les catégories de gestes reconnues par le modèle.
Entrées de tâche | Sorties de tâche |
---|---|
Le détecteur de gestes accepte l'un des types de données suivants:
|
Le détecteur de gestes génère les résultats suivants:
|
Options de configuration
Cette tâche propose 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 des images décodées d'une vidéo. LIVE_STREAM: mode de diffusion en direct des données d'entrée, par exemple à partir 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 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é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 des repères de la main. En mode Vidéo et en mode Diffusion en direct du service de reconnaissance des gestes, si le score de confiance de la présence de la main du modèle de repère de la main est inférieur à ce seuil, le modèle de détection de la paume est déclenché. Sinon, un algorithme de suivi des mains léger est utilisé pour déterminer l'emplacement de la ou des mains afin de détecter les repères par la suite. | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
Score de confiance minimal pour que le suivi des mains soit considéré comme réussi. Il s'agit du seuil d'IoU du cadre de délimitation entre les mains dans le frame actuel et le dernier frame. En mode Vidéo et en mode Flux du service de reconnaissance des gestes, si le suivi échoue, le service de reconnaissance des 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 ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"] . |
|
|
|
custom_gestures_classifier_options |
Options permettant de configurer le comportement du classificateur de gestes personnalisés. |
|
|
|
result_callback |
Définit l'écouteur de résultats pour qu'il reçoive les résultats de classification de manière asynchrone lorsque le détecteur de gestes est en mode flux 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
Le détecteur de gestes utilise un bundle de modèles avec deux bundles de modèles préemballés: un bundle de modèles de repères manuels et un bundle de modèles de classification des gestes. Le modèle de repère détecte la présence de mains et la géométrie des mains, et le modèle de reconnaissance des gestes reconnaît les gestes en fonction de la géométrie des mains.
Nom du modèle | Forme d'entrée | Type de quantification | Fiche de modèle | Versions |
---|---|---|---|---|
HandGestureClassifier | 192 x 192, 224 x 224 | float 16 | info | Nouveautés |
Cette tâche permet également de modifier le bundle de modèles à l'aide de Model Maker. Pour en savoir plus sur l'utilisation de Model Maker pour personnaliser des modèles pour cette tâche, consultez la page Personnaliser des modèles pour le détecteur de gestes.
Lot de modèles de repères manuels
Le bundle de modèle de repère de la main détecte la localisation des points clés de 21 coordonnées de jointures de la main dans les régions de la main détectées. Le modèle a été entraîné sur environ 30 000 images réelles, ainsi que sur plusieurs modèles d'images synthétiques de mains superposés à différents arrière-plans. Consultez la définition des 21 points de repère ci-dessous:
Le bundle de modèles de repères de la main contient le modèle de détection de la paume et le modèle de détection des repères de la main. Le modèle de détection de la paume localise la région des mains dans l'ensemble de l'image d'entrée, et le modèle de détection des repères de la main trouve les repères sur l'image recadrée de la main définie par le modèle de détection de la paume.
Étant donné que le modèle de détection de la paume de la main est beaucoup plus long, en mode Vidéo ou en mode flux en direct, le service de reconnaissance des gestes utilise la zone de délimitation définie par les repères de la main détectés dans le frame actuel pour localiser la région des mains dans le frame suivant. Cela réduit le nombre de fois où le détecteur de gestes déclenche le modèle de détection de la paume de la main. Le modèle de détection de la paume de la main n'est appelé que lorsque le modèle de repères de la main ne parvient plus à identifier suffisamment de présences de mains ou que le suivi des mains échoue.
Bundle de modèles de classification des gestes
Le bundle 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 de geste, le système de reconnaissance gestuelle renvoie le résultat "None". Si le modèle ne détecte pas de mains, le système de reconnaissance des gestes renvoie une valeur vide.
Le bundle de modèles de classification des gestes contient un pipeline de réseau de neurones en deux étapes avec un modèle d'encapsulation des gestes suivi d'un modèle de classification des gestes. Pour en savoir plus, consultez la fiche du modèle de classification des gestes.
Le modèle d'encapsulation de gestes encode les caractéristiques de l'image dans un vecteur de caractéristiques, et le modèle de classification est un classificateur de gestes léger qui utilise le vecteur de caractéristiques comme entrée. Le bundle de modèle de classification des gestes fourni contient le classificateur de gestes prédéfinis, qui détecte les sept gestes de la main courants présentés ci-dessus. Vous pouvez étendre le bundle de modèles pour reconnaître davantage de gestes en entraînant votre propre classificateur de gestes personnalisé. Pour en savoir plus, consultez la section Modèles personnalisés suivante.
Le détecteur de gestes avec un classificateur de gestes prédéfini et un classificateur de gestes personnalisé préfère le geste personnalisé si les deux classificateurs reconnaissent le même geste dans leurs catégories. Si un seul classificateur de gestes reconnaît le geste, le service de reconnaissance des gestes génère directement le geste reconnu.
Benchmarks des tâches
Voici les benchmarks de tâche pour l'ensemble du pipeline basés sur les modèles pré-entraînés ci-dessus. Le résultat de la latence correspond à la latence moyenne sur le Pixel 6 à l'aide du 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 est un fichier de bundle de modèle. Nous vous recommandons d'utiliser Model Maker pour 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 la section Personnaliser des modèles pour le détecteur de gestes.