Anleitung zum Einbetten von Bildern

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 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 mit einem empfohlenen Modell und enthalten Codebeispiele mit den 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.
  • 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:
  • Standbilder
  • Decodierte Videoframes
  • Live-Videofeed
Der Bildeinbetter gibt eine Liste mit Einbettungen aus, die aus Folgendem bestehen:
  • Einbettung: der Featurevektor selbst, entweder in Gleitkommaform oder skalarquantisiert.
  • Head-Index: Der Index für den Kopf, der diese Einbettung erzeugt hat.
  • Name des Kopfs (optional): der Name des Kopfes, der diese Einbettung erzeugt hat.

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