Aufgabenanleitung zur Gestenerkennung

Mit der Aufgabe „MediaPipe-Gestenerkennung“ können Sie Handgesten in Echtzeit erkennen zeigt die erkannten Handgesten-Ergebnisse sowie Orientierungspunkte der Hände, die erkannt wurden. Mit dieser Aufgabe können Sie bestimmte Handgesten von einem und App-Funktionen aufrufen, die diesen Gesten entsprechen.

Diese Aufgabe arbeitet mit Bilddaten mit einem ML-Modell und akzeptiert entweder statische Daten oder einen kontinuierlichen Stream. Die Aufgabe gibt Hand-Markierungen Bildkoordinaten, Handsymbole in Weltkoordinaten, Händigkeit (links/rechts) und die Gesten-Kategorien mit mehreren Händen.

<ph type="x-smartling-placeholder"></ph> Jetzt testen!

Jetzt starten

Beginnen Sie mit dieser Aufgabe, indem Sie einen dieser Implementierungsleitfäden für Ihr Zielplattform. Diese plattformspezifischen Anleitungen führen Sie durch Implementierung dieser Aufgabe unter Verwendung eines empfohlenen Modells und stellen Codebeispiele bereit mit den empfohlenen Konfigurationsoptionen:

Taskdetails

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

Funktionen

  • Verarbeitung von Eingabebildern – Die Verarbeitung umfasst Rotation, Größenanpassung und Normalisierung und Farbraumkonvertierung.
  • Punktzahl-Schwellenwert - Filtern Sie Ergebnisse basierend auf den Vorhersagewerten.
  • Zulassungsliste und Sperrliste für Labels: Sie können die Gestenkategorien festlegen. vom Modell erkannt wird.
Aufgabeneingaben Aufgabenausgaben
Die Gestenerkennung akzeptiert Eingaben eines der folgenden Datentypen:
<ph type="x-smartling-placeholder">
    </ph>
  • Standbilder
  • Decodierte Videoframes
  • Live-Videofeed
Die Gestenerkennung gibt die folgenden Ergebnisse aus:
<ph type="x-smartling-placeholder">
    </ph>
  • Kategorien von Gesten
  • Händigkeit der erkannten Hände
  • Orientierungspunkte für erkannte Hände in Bildkoordinaten
  • Orientierungspunkte für erkannte 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 mit Eingabe zum Beispiel von einer Kamera. In diesem Modus muss der resultListener wird aufgerufen, um einen Listener für den Empfang von Ergebnissen einzurichten asynchron programmiert.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
num_hands Die maximale Anzahl von Händen kann erkannt werden durch GestureRecognizer. Any integer > 0 1
min_hand_detection_confidence Der minimale Konfidenzwert für die Handerkennung im Handflächenerkennungsmodell als erfolgreich erachtet. 0.0 - 1.0 0.5
min_hand_presence_confidence Der minimale Konfidenzwert des Handpräsenzwerts in der Hand Erkennung von Sehenswürdigkeiten. Im Video- und Livestreammodus der Bewegungserkennung wenn der Wert für die Konfidenz der Hand-Anwesenheit des Hand-Landmark-Modells unter dem folgenden Wert liegt: wird das Handflächenerkennungsmodell ausgelöst. Andernfalls wird ein mit einem leichten Handverfolgungs-Algorithmus die Hand(n) für die nachfolgende Erkennung von Sehenswürdigkeiten. 0.0 - 1.0 0.5
min_tracking_confidence Der minimale Konfidenzwert für das Hand-Tracking, das berücksichtigt werden soll erfolgreich war. Dies ist der IoU-Grenzwert des Begrenzungsrahmens zwischen den Händen im den aktuellen und den letzten Frame. Im Video- und Stream-Modus von Gestenerkennung: Wenn das Tracking fehlschlägt, löst die Gestenerkennung die Hand aus. -Erkennung. 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. Die vorgefertigten Touch-Gesten sind ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"]
  • Gebietsschema für Anzeigenamen: Das Gebietsschema, das für Anzeigenamen verwendet werden soll, die über die TFLite-Modellmetadaten angegeben werden, sofern vorhanden.
  • Max. Ergebnisse: die maximale Anzahl der am besten bewerteten Klassifizierungsergebnisse, die zurückgegeben werden sollen. Wenn < 0 setzen, werden alle verfügbaren Ergebnisse zurückgegeben.
  • Punktzahl-Schwellenwert: der Wert, unter dem Ergebnisse abgelehnt werden. Wenn dieser Wert auf 0 gesetzt ist, werden alle verfügbaren Ergebnisse zurückgegeben.
  • Kategorie-Zulassungsliste: Zulassungsliste der Kategorienamen. Ist dieses Feld nicht leer, werden Klassifizierungsergebnisse herausgefiltert, deren Kategorie nicht in diesem Satz enthalten ist. Gegenseitiges Ausschließen mit Sperrliste.
  • Kategorie-Sperrliste: Sperrliste der Kategorienamen. Ist dieses Feld nicht leer, werden Klassifizierungsergebnisse, deren Kategorie in diesem Satz vorhanden ist, herausgefiltert. Sich gegenseitig ausschließen mit Zulassungsliste.
    • Sprache für Anzeigenamen: any string
    • Max. Ergebnisse: any integer
    • Punktzahl-Schwellenwert: 0.0-1.0
    • Zulassungsliste für Kategorien: vector of strings
    • Kategorie-Sperrliste: vector of strings
    • Sprache für Anzeigenamen: "en"
    • Max. Ergebnisse: -1
    • Punktzahl-Schwellenwert: 0
    • Zulassungsliste für Kategorien: leer
    • Sperrliste für Kategorie: leer
    custom_gestures_classifier_options Optionen zum Konfigurieren des Verhaltens des benutzerdefinierten Gestenklassifikators.
  • Gebietsschema für Anzeigenamen: Das Gebietsschema, das für Anzeigenamen verwendet werden soll, die über die TFLite-Modellmetadaten angegeben werden, sofern vorhanden.
  • Max. Ergebnisse: die maximale Anzahl der am besten bewerteten Klassifizierungsergebnisse, die zurückgegeben werden sollen. Wenn < 0 setzen, werden alle verfügbaren Ergebnisse zurückgegeben.
  • Punktzahl-Schwellenwert: der Wert, unter dem Ergebnisse abgelehnt werden. Wenn dieser Wert auf 0 gesetzt ist, werden alle verfügbaren Ergebnisse zurückgegeben.
  • Kategorie-Zulassungsliste: Zulassungsliste der Kategorienamen. Ist dieses Feld nicht leer, werden Klassifizierungsergebnisse herausgefiltert, deren Kategorie nicht in diesem Satz enthalten ist. Gegenseitiges Ausschließen mit Sperrliste.
  • Kategorie-Sperrliste: Sperrliste der Kategorienamen. Ist dieses Feld nicht leer, werden Klassifizierungsergebnisse, deren Kategorie in diesem Satz vorhanden ist, herausgefiltert. Sich gegenseitig ausschließen mit Zulassungsliste.
    • Sprache für Anzeigenamen: any string
    • Max. Ergebnisse: any integer
    • Punktzahl-Schwellenwert: 0.0-1.0
    • Zulassungsliste für Kategorien: vector of strings
    • Kategorie-Sperrliste: vector of strings
    • Sprache für Anzeigenamen: "en"
    • Max. Ergebnisse: -1
    • Punktzahl-Schwellenwert: 0
    • Zulassungsliste für Kategorien: leer
    • Sperrliste für Kategorie: leer
    result_callback Legt den Ergebnis-Listener so fest, dass er die Klassifizierungsergebnisse empfängt asynchron, wenn sich die Bewegungserkennung im Livestream-Modus befindet. Kann nur verwendet werden, wenn der Ausführungsmodus auf LIVE_STREAM festgelegt ist ResultListener

    Modelle

    Für die Gestenerkennung wird ein Modell-Bundle mit zwei vorkonfigurierten Modell-Bundles verwendet: ein Hand-Landmark-Modell-Bundle und Gestenklassifizierung-Modell-Bundle Die das Modell der Anwesenheit von Händen und Handgeometrie erkennt, und die Geste Erkennungsmodell erkennt Gesten anhand der Handgeometrie.

    <ph type="x-smartling-placeholder">
    Modellname Eingabeform Quantisierungstyp Modellkarte Versionen
    <ph type="x-smartling-placeholder"></ph> HandGestureClassifier 192 x 192, 224 x 224 Gleitkommazahl 16 <ph type="x-smartling-placeholder"></ph> Informationen <ph type="x-smartling-placeholder"></ph> Neueste

    Diese Aufgabe unterstützt auch die Änderung des Modell-Bundles mit Model Maker. Weitere Informationen zum Anpassen von Modellen für diese Aufgabe mit Model Maker finden Sie unter Modelle für die Gestenerkennung anpassen.

    Paket mit Sehenswürdigkeiten

    Das Hand-Landmark-Modell-Bundle erkennt die Schlüsselpunktlokalisierung von 21 Handringen innerhalb der erkannten Handbereiche. Das Modell wurde mit etwa 30.000 realen Bildern sowie mehrere gerenderte synthetische Hand- verschiedenen Hintergründen zu testen. Nachfolgend finden Sie eine Definition zu den 21 Markierungen:

    Das Hand-Landmark-Modell enthält ein Palmerkennungsmodell und Modell zur Erkennung von Hand-Sehenswürdigkeiten. Das Palmerkennungsmodell lokalisiert die Region vom gesamten Eingabebild aus. Das Modell zur Erkennung von Hand-Markierungen findet die Orientierungspunkte auf dem zugeschnittenen Bild von Hand, die durch das Handflächenerkennungsmodell definiert wurden.

    Da das Handflächenerkennungsmodell im Videomodus oder Live im Streammodus verwendet, nutzt die Gestenerkennung einen Begrenzungsrahmen, der von der erkannten Hand definiert wird. Sehenswürdigkeiten im aktuellen Frame, um den Bereich der Hände im nächsten zu lokalisieren Frame. Dadurch verkürzt sich die Zeit, in der die Gestenerkennung das Modell zur Handflächenerkennung auslöst. Nur wenn das Modell der Hand-Landmarks nicht mehr genug die erforderlichen oder das Hand-Tracking funktioniert nicht, wird das Handflächenerkennungsmodell aufgerufen, um die Hände neu zu lokalisieren.

    Modell-Bundle für die Bewegungsklassifizierung

    Das Modellpaket zur Bewegungsklassifizierung kann die folgenden häufigen Handgesten 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
    

    Erkennt das Modell zwar Ihre Hände, aber keine Geste, Erkennung gibt das Ergebnis "None" zurück. Wenn das Modell keine Hände erkennt, gibt das Feld für die Bewegungserkennung leer zurück.

    Das Bundle für das Gestenklassifizierungsmodell enthält die zweistufige neuronale Netzwerkpipeline mit einem Modell zum Einbetten von Gesten, gefolgt von einem Modell zur Bewegungsklassifizierung. Weitere Informationen finden Sie auf der Karte mit dem Modell zur Bewegungsklassifizierung.

    Das Modell für die Bewegungseinbettung codiert die Bildmerkmale in einen Featurevektor. Das Klassifizierungsmodell ist ein kompakter Gestenklassifikator, Vektoren als Eingabe an. Das bereitgestellte Paket mit dem Modell zur Bewegungsklassifizierung enthält Folgendes: Klassifikator für gespeicherte Gesten, der die 7 häufigen Handgesten erkennt, oben. Du kannst das Modell-Bundle erweitern, um durch Training mehr Gesten zu erkennen Ihren eigenen benutzerdefinierten Gestenklassifikator. Weitere Details finden Sie unten. Benutzerdefinierte Modelle.

    Gestenerkennung mit vorgefertigtem Gestenklassifikator und benutzerdefiniertem Gestenklassifikator bevorzugt die benutzerdefinierte Geste, wenn beide Klassifikatoren in ihre Kategorien. Erkennt nur ein Gestenklassifikator die Geste, Die Gestenerkennung gibt die erkannte Geste direkt aus.

    Aufgaben-Benchmarks

    Hier sind die Aufgaben-Benchmarks für die gesamte Pipeline basierend auf vortrainierten Modellen. 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 Modelle in diesem können Sie die vorhandenen Modelle mit dem Modell-Erstellungstool ändern. Verwendete benutzerdefinierte Modelle mit MediaPipe muss das Format .task haben, bei dem es sich um eine Modell-Bundle-Datei handelt. Ich sollten erwägen, die bereitgestellten Modelle für diese Aufgabe mit Model Maker zu ändern bevor Sie Ihre eigenen erstellen.

    Weitere Informationen zum Anpassen eines Modells für diese Aufgabe finden Sie unter Modelle für die Gestenerkennung anpassen