Mit der Aufgabe „MediaPipe-Bildeinbettung“ können Sie eine numerische Darstellung eines Bildes erstellen. Dies ist für verschiedene ML-basierte Bildaufgaben nützlich. Diese Funktionalität wird häufig verwendet, um die Ähnlichkeit von zwei Bildern mithilfe mathematischer Vergleichstechniken wie Kosinus-Ähnlichkeit zu vergleichen. Bei dieser Aufgabe werden Bilddaten mit einem Modell für maschinelles Lernen (ML) als statische Daten oder einen kontinuierlichen Strom verarbeitet. Dabei wird eine numerische Darstellung der Bilddaten als Liste hochdimensionaler Featurevektoren (auch Einbettungsvektoren genannt) entweder in Gleitkomma- oder quantisierter Form ausgegeben.
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 mit einem empfohlenen Modell und enthalten Codebeispiele mit den empfohlenen Konfigurationsoptionen:
- Android – Codebeispiel – Anleitung
- 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.
- Interessierende Region: Die Einbettung wird in einen Bereich des Bildes anstatt im gesamten Bild eingebettet.
- Berechnung der Einbettungsähnlichkeit – Integrierte Dienstfunktion zur Berechnung der Kosinus-Ähnlichkeit zwischen zwei Featurevektoren
- Quantisierung: Unterstützt die skalare Quantisierung für die Featurevektoren.
Aufgabeneingaben | Aufgabenausgaben |
---|---|
Folgende Datentypen können als Eingabe verwendet werden:
|
Der Bildeinbetter gibt eine Liste mit Einbettungen aus, die aus Folgendem bestehen:
|
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 |
l2_normalize |
Gibt an, ob der zurückgegebene Featurevektor mit der L2-Norm normalisiert werden soll. Verwenden Sie diese Option nur, wenn das Modell noch keinen nativen L2_NORMALIZATION TFLite-Vorgang enthält. In den meisten Fällen ist dies bereits der Fall und die L2-Normalisierung wird daher durch TFLite-Inferenz erreicht, ohne dass diese Option erforderlich ist. | Boolean |
False |
quantize |
Gibt an, ob die zurückgegebene Einbettung über eine skalare Quantisierung in Byte quantisiert werden soll. Bei Einbettungen wird implizit davon ausgegangen, dass es sich um eine Einheitsnorm handelt. Daher hat jede Dimension garantiert einen Wert bei [-1,0, 1,0]. Sollte dies nicht der Fall sein, verwenden Sie die Option „l2_normalize“. | Boolean |
False |
result_callback |
Legt den Ergebnis-Listener so fest, dass er die Einbettungsergebnisse asynchron empfängt, wenn sich der Bildeinbetter im Livestreammodus befindet. Kann nur verwendet werden, wenn der Laufmodus auf LIVE_STREAM festgelegt ist |
– | Nicht festgelegt |
Modelle
Für den Bildeinbetter muss ein Bildeinbettungsmodell heruntergeladen und in Ihrem Projektverzeichnis gespeichert werden. Beginnen Sie mit dem empfohlenen Standardmodell für Ihre Zielplattform, wenn Sie mit dieser Aufgabe beginnen. Die anderen verfügbaren Modelle schließen in der Regel Kompromisse zwischen Leistung, Genauigkeit, Auflösung und Ressourcenanforderungen ein und beinhalten in einigen Fällen zusätzliche Merkmale.
MobileNetV3-Modell
Diese Modellfamilie verwendet eine MobileNet V3-Architektur und wurde mit ImageNet-Daten trainiert. Dieses Modell verwendet einen Multiplikator von 0,75 für die Tiefe (Anzahl der Features) in den Faltungsschichten, um den Kompromiss bei der Genauigkeit und Latenz abzustimmen. Darüber hinaus ist MobileNet V3 in zwei verschiedenen Größen (klein und groß) verfügbar, um das Netzwerk an Anwendungsfälle mit geringen oder hohen Ressourcen anzupassen.
Modellname | Form eingeben | Quantisierungstyp | Versionen |
---|---|---|---|
MobileNet-V3 (klein) | 224 × 224 | Keine (float32) | Neueste |
MobileNet-V3 (groß) | 224 × 224 | Keine (float32) | Neueste |
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 |
---|---|---|
MobileNet-V3 (klein) | 3,94 ms | 7,83 ms |
MobileNet-V3 (groß) | 9,75 ms | 9,08 ms |