Mit der MediaPipe-Aufgabe „Hand Landmarker“ können Sie die Markierungen der Hände in einem Bild erkennen. Mit dieser Aufgabe können Sie wichtige Punkte an den Händen finden und visuelle Effekte darauf rendern. Bei dieser Aufgabe werden Bilddaten mit einem ML-Modell als statische Daten oder als kontinuierlicher Stream verarbeitet. Es werden Handmarkierungen in Bildkoordinaten, Handmarkierungen in Weltkoordinaten und die Händigkeit (linke/rechte Hand) mehrerer erkannter Hände ausgegeben.
Jetzt starten
Folgen Sie einer dieser Implementierungsanleitungen für Ihre Zielplattform, um diese Aufgabe zu verwenden. In diesen plattformspezifischen Anleitungen werden Sie durch die grundlegende Implementierung dieser Aufgabe geführt. Sie finden dort auch ein empfohlenes Modell und ein Codebeispiel mit empfohlenen Konfigurationsoptionen:
- Android – Codebeispiel
- Python – Beispielcode
- Web – Codebeispiel – Anleitung
Taskdetails
In diesem Abschnitt werden die Funktionen, Eingaben, Ausgaben und Konfigurationsoptionen dieser Aufgabe beschrieben.
Funktionen
- Eingabebildverarbeitung: Die Verarbeitung umfasst Bilddrehung, Größenänderung, Normalisierung und Farbraumkonvertierung.
- Grenzwert für die Bewertung: Ergebnisse nach Bewertungen filtern.
Aufgabeneingaben | Aufgabenausgaben |
---|---|
Der Landmarker „Hand“ akzeptiert einen der folgenden Datentypen als Eingabe:
|
Der Landmarker „Hand“ gibt die folgenden Ergebnisse aus:
|
Konfigurationsoptionen
Für diese Aufgabe gibt es die folgenden Konfigurationsoptionen:
Option | Beschreibung | Wertebereich | Standardwert |
---|---|---|---|
running_mode |
Legt den Ausführungsmodus für die Aufgabe fest. Es gibt drei Modi: IMAGE: Der Modus für Eingaben mit einem einzelnen Bild. VIDEO: Der Modus für decodierte Frames eines Videos. LIVE_STREAM: Der Modus für einen Livestream von Eingabedaten, z. B. von einer Kamera. In diesem Modus muss resultListener aufgerufen werden, um einen Listener für den asynchronen Empfang von Ergebnissen einzurichten. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
num_hands |
Die maximale Anzahl von Händen, die vom Landmark-Detektor für Hände erkannt werden. | Any integer > 0 |
1 |
min_hand_detection_confidence |
Die Mindestpunktzahl für die Handerkennung, die im Modell für die Handflächenerkennung als erfolgreich gilt. | 0.0 - 1.0 |
0.5 |
min_hand_presence_confidence |
Der Mindestwert für die Konfidenz der Anwesenheit der Hand im Modell zur Erkennung von Handmarkierungen. Wenn im Video- und Livestream-Modus der Konfidenzwert für die Präsenz von Händen aus dem Modell für Handmarkierungen unter diesem Grenzwert liegt, löst der Hand-Landmarker das Modell zur Handflächenerkennung aus. Andernfalls bestimmt ein einfacher Algorithmus für die Handerkennung die Position der Hand(en) für die nachfolgenden Markierungserkennungen. | 0.0 - 1.0 |
0.5 |
min_tracking_confidence |
Der Mindestwert für die Konfidenz, damit die Handerkennung als erfolgreich gilt. Dies ist der IoU-Grenzwert des Begrenzungsrahmens zwischen den Händen im aktuellen und im letzten Frame. Wenn das Tracking im Video- und Streammodus von „Hand Landmarker“ fehlschlägt, löst „Hand Landmarker“ die Handerkennung aus. Andernfalls wird die Handerkennung übersprungen. | 0.0 - 1.0 |
0.5 |
result_callback |
Legt fest, dass der Ergebnisempfänger die Erkennungsergebnisse asynchron empfängt, wenn sich die Landmarker für Hände im Livestream-Modus befinden.
Nur anwendbar, wenn der Ausführungsmodus auf LIVE_STREAM gesetzt ist |
– | – |
Modelle
Der Hand-Landmarker verwendet ein Modellpaket mit zwei Modellen: einem Modell zur Handflächenerkennung und einem Modell zur Erkennung von Handmarkierungen. Sie benötigen ein Modellpaket, das beide Modelle enthält, um diese Aufgabe auszuführen.
Modellname | Eingabeform | Quantisierungstyp | Modellkarte | Versionen |
---|---|---|---|---|
HandLandmarker (vollständig) | 192 × 192, 224 × 224 | float 16 | info | Neueste |
Das Modellpaket für Handmarkierungen erkennt die Punktlokalisierung von 21 Knochenkoordinaten innerhalb der erkannten Handregionen. Das Modell wurde mit etwa 30.000 echten Bildern sowie mehreren gerenderten synthetischen Handmodellen trainiert, die auf verschiedene Hintergründe gelegt wurden.
Das Modellpaket für Handmarkierungen enthält ein Modell zur Erkennung von Handflächen und ein Modell zur Erkennung von Handmarkierungen. Das Modell zur Handflächenerkennung lokalisiert Hände im Eingabebild und das Modell zur Erkennung von Handmerkmalen identifiziert bestimmte Handmerkmale im vom Modell zur Handflächenerkennung zugeschnittenen Handbild.
Da die Ausführung des Modells zur Handerkennung zeitaufwendig ist, verwendet die Funktion „Hand Landmarker“ im Video- oder Livestream-Ausführungsmodus den Begrenzungsrahmen, der vom Modell für Handmarkierungen in einem Frame definiert wurde, um die Region der Hände für nachfolgende Frames zu lokalisieren. Der Landmarker für Hände löst das Modell zur Handflächenerkennung nur dann noch einmal aus, wenn das Modell für Handmarkierungen keine Hände mehr erkennt oder die Hände im Frame nicht mehr verfolgt. Dadurch wird die Anzahl der Auslösevorgänge des Modells zur Handflächenerkennung durch den Hand-Landmarker reduziert.
Benchmarks für Aufgaben
Hier sind die Aufgaben-Benchmarks für die gesamte Pipeline basierend auf den oben genannten vorab trainierten Modellen. Das Latenzergebnis ist die durchschnittliche Latenz auf Pixel 6 mit CPU / GPU.
Modellname | CPU-Latenz | GPU-Latenz |
---|---|---|
HandLandmarker (vollständig) | 17,12 ms | 12,27 ms |