Anleitung zur Erkennung von Handmarken

Mit der Aufgabe „MediaPipe Hand Landmarker“ können Sie die Markierungen der Hände in einem Bild erkennen. Sie können diese Aufgabe verwenden, um wichtige Handpunkte zu finden und visuelle Effekte darauf zu rendern. Bei dieser Aufgabe werden Bilddaten mit einem Modell für maschinelles Lernen (ML) als statische Daten oder einen kontinuierlichen Strom verarbeitet und gibt Handmarkierungen in Bildkoordinaten, Handmarkierungen in Weltkoordinaten und Händigkeit(links/rechts) mehrerer erkannter Hände aus.

Jetzt ausprobieren

Jetzt starten

Beginnen Sie mit dieser Aufgabe, indem Sie einem dieser Implementierungsleitfäden für Ihre Zielplattform folgen. Diese plattformspezifischen Leitfäden führen Sie durch eine grundlegende Implementierung dieser Aufgabe, einschließlich eines empfohlenen Modells und eines Codebeispiels mit empfohlenen Konfigurationsoptionen:

Taskdetails

In diesem Abschnitt werden die Funktionen, Eingaben, Ausgaben und Konfigurationsoptionen dieser Aufgabe beschrieben.

Funktionen

  • Eingabebildverarbeitung: Die Verarbeitung umfasst Bilddrehung, Größenanpassung, Normalisierung und Farbraumkonvertierung.
  • Punktzahl-Schwellenwert: Filtern Sie Ergebnisse basierend auf den Vorhersagewerten.
Aufgabeneingaben Aufgabenausgaben
Für Hand Landmarken sind folgende Datentypen zulässig:
  • Standbilder
  • Decodierte Videoframes
  • Live-Videofeed
Die Hand-Markierung gibt die folgenden Ergebnisse aus:
  • Händigkeit erkannter Hände
  • Sehenswürdigkeiten erkannter Hände in Bildkoordinaten
  • Sehenswürdigkeiten erkannter Hände in Weltkoordinaten

Konfigurationsoptionen

Diese Aufgabe hat die folgenden Konfigurationsoptionen:

Option Beschreibung Wertebereich Standardwert
running_mode Legt den Ausführungsmodus für die Task fest. Es gibt drei Modi:

IMAGE: Der Modus für Einzelbildeingaben.

VIDEO: Der Modus für decodierte Frames eines Videos.

LIVE_STREAM: Der Modus für einen Livestream der Eingabedaten, z. B. von einer Kamera. In diesem Modus muss resultListener aufgerufen werden, um einen Listener einzurichten, der die Ergebnisse asynchron empfängt.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
num_hands Die maximale Anzahl der Hände, die vom Hand-Ortserkennungserkennung erkannt wurden. Any integer > 0 1
min_hand_detection_confidence Der Mindestkonfidenzwert für die Handerkennung, um im Handflächenerkennungsmodell als erfolgreich zu gelten. 0.0 - 1.0 0.5
min_hand_presence_confidence Der minimale Konfidenzwert für den Wert der Handpräsenz im Modell zur Erkennung von Handmarkierungen. Wenn im Video- und Livestreammodus der Konfidenzwert zur Anwesenheit des Hand-Markierungsmodells unter diesem Grenzwert liegt, löst Hand Landmarker das Handflächenerkennungsmodell aus. Andernfalls ermittelt ein einfacher Algorithmus zur Handverfolgung die Position der Hand(en) für nachfolgende Erkennungen von Sehenswürdigkeiten. 0.0 - 1.0 0.5
min_tracking_confidence Der Mindestkonfidenzwert, der für eine erfolgreiche Verfolgung der Handzeichen erforderlich ist. Dies ist der IoU-Grenzwert des Begrenzungsrahmens zwischen Händen im aktuellen und im letzten Frame. Wenn im Video- und Stream-Modus der Hand-Markdown-Funktion das Tracking fehlschlägt, löst diese Funktion die Handerkennung aus. Andernfalls wird die Handerkennung übersprungen. 0.0 - 1.0 0.5
result_callback Legt den Ergebnis-Listener so fest, dass die Erkennungsergebnisse asynchron empfangen werden, wenn sich der Hand-Marker im Livestream-Modus befindet. Gilt nur, wenn der Laufmodus auf LIVE_STREAM eingestellt ist

Modelle

Hand Landmarker verwendet ein Modellpaket mit zwei verpackten Modellen: einem Modell zur Handmarkierungserkennung und einem Modell zur Erkennung von Handmarkierungen. Zum Ausführen dieser Aufgabe benötigen Sie ein Modell-Bundle, das beide Modelle enthält.

Modellname Form eingeben Quantisierungstyp Modellkarte Versionen
HandLandmarker (vollständig) 192 x 192, 224 x 224 Gleitkommazahl 16 Informationen Neueste

Das Modell-Bundle für Handmarkierungen erkennt die Keypoint-Lokalisierung von 21 Handknöchelkoordinaten innerhalb der erkannten Handbereiche. Das Modell wurde mit etwa 30.000 Bildern aus der realen Welt sowie mehreren gerenderten synthetischen Handmodellen trainiert, die auf verschiedenen Hintergründen angezeigt wurden.

Das Hand-Landmark-Modell-Bundle enthält ein Hand-Landmark-Erkennungsmodell und ein Modell zur Erkennung von Hand-Markierungen. Das Handflächenerkennungsmodell findet Hände im Eingabebild und das Modell zur Erkennung von Handmarkierungen erkennt bestimmte Handmarken auf dem zugeschnittenen Handbild, das durch das Handflächenerkennungsmodell definiert wurde.

Da das Ausführen des Handmarks-Erkennungsmodells zeitaufwendig ist, verwendet Hand Landmarker im Video- oder Livestreammodus den Begrenzungsrahmen, der vom Modell für Handmarkierungen definiert wurde, in einem Frame, um den Händebereich für nachfolgende Frames zu lokalisieren. Hand Landmarker löst das Modell zur Handflächenerkennung nur dann noch einmal aus, wenn das Modell für Handmarkierungen das Vorhandensein von Händen nicht mehr erkennt oder die Hände innerhalb des Rahmens nicht mehr verfolgt werden kann. Dadurch wird verringert, wie oft Hand Landmarker das Handflächenerkennungsmodell tigert.

Aufgaben-Benchmarks

Im Folgenden sind die Aufgaben-Benchmarks für die gesamte Pipeline basierend auf den oben vortrainierten Modellen aufgeführt. Das Latenzergebnis ist die durchschnittliche Latenz auf Pixel 6 mit CPU / GPU.

Modellname CPU-Latenz GPU-Latenz
HandLandmarkierung (vollständig) 17,12 ms 12,27 ms