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

La tâche MediaPipe Main Markdown 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 de main clés et y afficher des effets visuels. Cette tâche s'exécute sur des données d'image avec un modèle de machine learning (ML) sous forme de données statiques ou de flux continu. Elle génère les points de repère de la main en coordonnées d'image, les points de repère de la main en coordonnées mondiales et la main dominante(gauche/droite) de plusieurs mains détectées.

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, y compris un modèle et un exemple de code recommandés, ainsi que 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.
Entrées des tâches Sorties de tâches
Le repère de main 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 repère de main génère les résultats suivants:
  • 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 Nombre maximal de mains détectées par le détecteur de points de repère 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 de points de repère de la main. En mode Vidéo et en mode diffusion en direct, 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 repère de main déclenche le modèle de détection de la paume de la main. Sinon, un algorithme léger de suivi de la main détermine la position des mains pour les détections de points de repère ultérieures. 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 Hand marker, en cas d'échec du suivi, celui-ci déclenche la détection des mains. Sinon, la détection des mains est ignorée. 0.0 - 1.0 0.5
result_callback Définit l'écouteur de résultats de sorte qu'il reçoive les résultats de la détection de manière asynchrone lorsque le repère d'aiguille est en mode flux en direct. S'applique uniquement lorsque le mode d'exécution est défini sur LIVE_STREAM N/A N/A

Modèles

Le repère de main utilise un lot de deux modèles en package: un modèle de détection de la paume de la main et un modèle de détection des points de repère de main. Vous avez besoin d'un groupe de modèles contenant ces deux modèles pour exécuter cette tâche.

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

Le bundle de modèles de points de repère de main détecte la localisation du point clé de 21 coordonnées de poingsie 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.

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 pour les mains. 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 au niveau de la main identifie des points de repère spécifiques 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 l'exécution du modèle de détection de la paume de la main prend du temps, en mode vidéo ou diffusion en direct, Hand Markerer utilise le cadre de délimitation défini par le modèle de points de repère de la main dans une image pour localiser la zone des aiguilles pour les images suivantes. Main Marker ne redéclenche le modèle de détection de la paume de la main que si le modèle de points de repère n'identifie plus la présence de mains ou ne parvient pas à les suivre dans le cadre. Cela réduit le nombre de fois où Hand Markerer déclenche le modèle de détection de la paume de la main.

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