Mit der Aufgabe „MediaPipe-Gestenerkennung“ können Sie Handgesten in Echtzeit erkennen. Sie erhalten die Ergebnisse der erkannten Gesten sowie die Markierungen der erkannten Hände. Sie können diese Aufgabe verwenden, um bestimmte Gesten eines Nutzers zu erkennen und Anwendungsfunktionen aufzurufen, die diesen Gesten entsprechen.
Diese Aufgabe verarbeitet Bilddaten mit einem Modell für maschinelles Lernen (ML) und akzeptiert entweder statische Daten oder einen kontinuierlichen Stream. Die Aufgabe gibt Orientierungspunkte in Bildkoordinaten, Handmarkierungen in Weltkoordinaten, Händigkeit (links/rechts) und Handgesten mit mehreren Händen aus.
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 mit einem empfohlenen Modell durch eine grundlegende Implementierung dieser Aufgabe und enthalten Codebeispiele mit den empfohlenen Konfigurationsoptionen:
- Android – Codebeispiel – Leitfaden
- Python – Codebeispiel – Anleitung
- Web – Codebeispiel – Leitfaden
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.
- Zulassungsliste und Sperrliste für Labels: Geben Sie die vom Modell erkannten Gestenkategorien an.
Aufgabeneingaben | Aufgabenausgaben |
---|---|
Für die Bewegungserkennung sind folgende Datentypen zulässig:
|
Die Bewegungserkennung gibt folgende Ergebnisse aus:
|
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 von Händen kann von GestureRecognizer erkannt werden.
|
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 die Handpräsenz im Modell zur Erkennung von Handmarkierungen. Wenn im Video- und Livestream-Modus der Bewegungserkennung der Konfidenzwert für die Anwesenheitserkennung vom Modell für Handmarkierungen unter diesem Grenzwert liegt, wird das Handflächenerkennungsmodell ausgelöst. Andernfalls wird ein leichter Algorithmus zur Handverfolgung verwendet, um die Position der Hand(en) für die nachfolgende Erkennung von Sehenswürdigkeiten zu bestimmen. | 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 Streammodus der Bewegungserkennung die Bewegungserkennung fehlschlägt, löst die Bewegungserkennung die Handerkennung aus, wenn das Tracking fehlschlägt. Andernfalls wird die Handerkennung übersprungen. | 0.0 - 1.0 |
0.5 |
|
canned_gestures_classifier_options |
Optionen zum Konfigurieren des Verhaltens des Klassifikators für gespeicherte Gesten. Vordefinierte Touch-Gesten sind ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"] |
|
|
|
custom_gestures_classifier_options |
Optionen zum Konfigurieren des Verhaltens des benutzerdefinierten Gestenklassifikators. |
|
|
|
result_callback |
Legt den Ergebnis-Listener so fest, dass er die Klassifizierungsergebnisse asynchron empfängt, wenn sich die Gestenerkennung im Livestream-Modus befindet.
Kann nur verwendet werden, wenn der Laufmodus auf LIVE_STREAM festgelegt ist |
ResultListener |
– | – |
Modelle
Für die Gestenerkennung wird ein Modell-Bundle mit zwei vorkonfigurierten Modellpaketen verwendet: ein Bundle mit Hand-Markierungen und ein Modell-Bundle für die Gestenklassifizierung. Das Sehenswürdigkeitenmodell erkennt, ob Hände und Hand geometrische Formen vorhanden sind, und das Modell zur Bewegungserkennung erkennt Gesten anhand der Handgeometrie.
Modellname | Form eingeben | Quantisierungstyp | Modellkarte | Versionen |
---|---|---|---|---|
HandGestureClassifier | 192 x 192, 224 x 224 | Gleitkommazahl 16 | Informationen | Neueste |
Diese Aufgabe unterstützt auch das Ändern des Modell-Bundles mit Model Maker. Weitere Informationen zur Verwendung von Model Maker zum Anpassen von Modellen für diese Aufgabe finden Sie auf der Seite Modelle für die Gestenerkennung anpassen.
Bundle mit Handmarkierungsmodellen
Das Modell-Bundle für Hand-Markierungen erkennt die Keypoint-Lokalisierung von 21 Handknöchel-Koordinaten innerhalb der erkannten Handbereiche. Das Modell wurde mit etwa 30.000 Bildern aus der realen Welt sowie mit mehreren gerenderten synthetischen Handmodellen trainiert, die auf verschiedenen Hintergründen angezeigt wurden. Unten sehen Sie die Definition der 21 Orientierungspunkte:
Das Hand-Landmark-Modell-Bundle enthält ein Modell zur Handmarkierungserkennung und ein Modell zur Handmarkierungserkennung. Das Palmerkennungsmodell lokalisiert den Bereich der Hände aus dem gesamten Eingabebild und das Modell zur Erkennung von Handmarkierungen findet die Orientierungspunkte auf dem zugeschnittenen Handbild, das vom Handflächenerkennungsmodell definiert wurde.
Da das Modell zur Handflächenerkennung wesentlich zeitaufwendiger ist, verwendet die Gestenerkennung im Video- oder Livestream-Modus den Begrenzungsrahmen, der durch die im aktuellen Frame erkannten Markierungen der Hand definiert wird, um den Handbereich im nächsten Frame zu lokalisieren. Dadurch wird das Modell zur Handflächenerkennung durch die Bewegungserkennung seltener ausgelöst. Erst wenn das Modell für Handmarkierungen nicht mehr die erforderliche Anzahl von Händen identifizieren konnte oder das Handtracking fehlschlägt, wird das Handerkennungsmodell aufgerufen, um die Hände neu zu lokalisieren.
Bundle für Gestenklassifizierungsmodell
Das Modellpaket für die Gestenklassifizierung kann die folgenden gängigen Gesten erkennen:
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
Wenn das Modell Hände erkennt, aber keine Geste erkennen, gibt die Gestenerkennung das Ergebnis „None“ zurück. Wenn das Modell keine Hände erkennt, gibt die Gestenerkennung einen leeren Wert zurück.
Das Modell-Bundle zur Gestenklassifizierung enthält eine zweistufige neuronale Netzwerkpipeline mit einem Gesteneinbettungsmodell, gefolgt von einem Gestenklassifizierungsmodell. Weitere Informationen finden Sie auf der Karte für das Gestenklassifizierungsmodell.
Das Gesteneinbettungsmodell codiert die Bildmerkmale in einen Featurevektor und das Klassifizierungsmodell ist ein einfacher Gestenklassifikator, der den Featurevektor als Eingabe verwendet. Das bereitgestellte Modellpaket zur Gestenklassifizierung enthält den Klassifikator für gespeicherte Gesten, der die sieben oben vorgestellten häufigen Handgesten erkennt. Sie können das Modell-Bundle erweitern, um mehr Gesten zu erkennen. Dazu trainieren Sie Ihren eigenen benutzerdefinierten Gestenklassifikator. Weitere Informationen finden Sie im folgenden Abschnitt Benutzerdefinierte Modelle.
Die Gestenerkennung mit vorgefertigtem Gestenklassifikator und dem benutzerdefinierten Gestenklassifikator eignet sich besser, wenn beide Klassifikatoren dieselbe Geste in ihren Kategorien erkennen. Wenn nur ein Bewegungsklassifikator die Geste erkennt, gibt die Gestenerkennung die erkannte Geste direkt aus.
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 |
---|---|---|
GestureRecognizer | 16,76 ms | 20,87 ms |
Benutzerdefinierte Modelle
Wenn Sie die Funktionen der in dieser Aufgabe bereitgestellten Modelle verbessern oder ändern möchten, können Sie die vorhandenen Modelle mithilfe von Model Maker ändern. Benutzerdefinierte Modelle, die mit MediaPipe verwendet werden, müssen im Format .task
vorliegen. Das ist eine Modell-Bundle-Datei. Sie sollten die Verwendung von Model Maker in Betracht ziehen, um die bereitgestellten Modelle für diese Aufgabe zu ändern, bevor Sie eigene erstellen.
Weitere Informationen zum Anpassen eines Modells für diese Aufgabe finden Sie unter Modelle für die Gestenerkennung anpassen.