Guide de détection des points de repère de la main

Main tenant un œuf. La forme de la main est marquée d'une maquette fonctionnelle qui indique la structure identifiée.

La tâche MediaPipe Hand Landmarker vous permet de détecter les points de repère des mains dans une image. Vous pouvez utiliser cette tâche pour localiser les points clés des mains et y appliquer des effets visuels. Cette tâche fonctionne sur des données d'image avec un modèle de machine learning (ML) en tant que données statiques ou flux continu, et produit des repères de la main en coordonnées d'image, des repères de la main en coordonnées mondiales et la latéralité(main gauche/droite) de plusieurs mains détectées.

Essayez !

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, y compris un modèle recommandé et un exemple 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 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.
Entrées de tâche Sorties de tâche
Le repère de la main accepte l'un des types de données suivants:
  • Images fixes
  • Images vidéo décodées
  • Flux vidéo en direct
Le repère de la main produit les résultats suivants:
  • Main dominante des mains détectées
  • Points de repère des mains détectées en coordonnées d'image
  • Points de repère des mains détectées en coordonnées mondiales

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 Nombre maximal de mains détectées par le détecteur de repères de main. 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 pour le 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, si le score de confiance de la présence de la main du modèle de repères de la main est inférieur à ce seuil, le repère de la main déclenche le modèle de détection de la paume. Sinon, un algorithme de suivi des mains léger détermine l'emplacement de la ou des mains pour les détections de repères ultérieures. 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 de Hand Landmarker, si le suivi échoue, Hand Landmarker déclenche la détection de la main. Dans le cas contraire, la détection de la main est ignorée. 0.0 - 1.0 0.5
result_callback Définit l'écouteur de résultats pour qu'il reçoive les résultats de détection de manière asynchrone lorsque le repère de la main est en mode diffusion en direct. Uniquement applicable lorsque le mode d'exécution est défini sur LIVE_STREAM N/A N/A

Modèles

Le détecteur de repères de la main utilise un lot de modèles avec deux modèles empaquetés: un modèle de détection de paume et un modèle de détection de repères de la main. Pour exécuter cette tâche, vous avez besoin d'un bundle de modèles contenant ces deux modèles.

Nom du modèle Forme d'entrée Type de quantification Fiche de modèle Versions
HandLandmarker (full) 192 x 192, 224 x 224 float 16 info Nouveautés

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.

Le bundle de modèles de repères de la main contient un modèle de détection de paume et un modèle de détection de repères de la main. Le modèle de détection de la paume de la main localise les mains dans l'image d'entrée, et le modèle de détection des points de repère de la main identifie des points de repère spécifiques sur l'image de la main recadrée définie par le modèle de détection de la paume de la main.

Étant donné que l'exécution du modèle de détection de la paume de la main prend du temps, en mode d'exécution de la vidéo ou du streaming en direct, Hand Landmarker utilise la zone de délimitation définie par le modèle de repères de la main dans un seul frame pour localiser la région des mains pour les frames suivants. Le repère de la main ne réactive le modèle de détection de la paume que si le modèle de repère de la main n'identifie plus la présence de mains ou ne parvient pas à suivre les mains dans le cadre. Cela réduit le nombre de fois où Hand Landmarker déclenche le modèle de détection de la paume de la main.

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
HandLandmarker (complet) 17,12 ms 12,27 ms