Aufgaben zur Bildklassifizierung

Mithilfe der Aufgabe „MediaPipe-Bildklassifikator“ können Sie Bilder klassifizieren. Mit dieser Aufgabe können Sie ermitteln, was ein Bild aus einer Reihe von Kategorien, die zum Zeitpunkt des Trainings definiert wurden, darstellt. Diese Aufgabe verarbeitet Bilddaten mit einem Modell für maschinelles Lernen (ML) als statische Daten oder einen kontinuierlichen Stream und gibt eine Liste potenzieller Kategorien aus, die nach absteigender Wahrscheinlichkeitswert sortiert sind.

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 mit einem empfohlenen Modell durch eine grundlegende Implementierung dieser Aufgabe 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 Klassifizierung wird nur für einen Bereich des Bildes und nicht für das gesamte Bild vorgenommen.
  • Gebietsschema für Labelkarte: Legen Sie die Sprache für Anzeigenamen fest.
  • Punktzahl-Schwellenwert: Filtern Sie Ergebnisse basierend auf den Vorhersagewerten.
  • Top-K-Klassifizierung: Begrenzen Sie die Anzahl der Klassifizierungsergebnisse.
  • Zulassungs- und Sperrliste für Labels: Geben Sie die klassifizierten Kategorien an.
Aufgabeneingaben Aufgabenausgaben
Folgende Datentypen können als Eingabe verwendet werden:
  • Standbilder
  • Decodierte Videoframes
  • Live-Videofeed
Der Bildklassifikator gibt eine Liste von Kategorien aus, die Folgendes enthalten:
  • Kategorieindex: Der Index der Kategorie in den Modellausgaben
  • Wert: der Konfidenzwert für diese Kategorie, normalerweise eine Wahrscheinlichkeit in [0,1]
  • Kategoriename (optional): Der Name der Kategorie, wie in den TFLite-Modellmetadaten angegeben, falls verfügbar
  • Anzeigename der Kategorie (optional): ein Anzeigename für die Kategorie, wie in den TFLite-Modellmetadaten angegeben, in der Sprache, die über die Sprachoptionen für Anzeigenamen angegeben wird (falls verfügbar)

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
display_names_locale Legt die Sprache von Labels fest, die für Anzeigenamen bereitgestellt werden, die in den Metadaten des Aufgabenmodells angegeben sind, sofern verfügbar. Der Standardwert für Englisch ist en. Mit der TensorFlow Lite Metadata Writer API können Sie den Metadaten eines benutzerdefinierten Modells lokalisierte Labels hinzufügen. Sprachcode en
max_results Legt die optionale maximale Anzahl der Klassifizierungsergebnisse mit den besten Bewertungen fest, die zurückgegeben werden sollen. Wenn < 0, werden alle verfügbaren Ergebnisse zurückgegeben. Beliebige positive Zahlen -1
score_threshold Legt den Schwellenwert für den Vorhersagewert fest, der den in den Modellmetadaten angegebenen Grenzwert überschreibt (falls vorhanden). Ergebnisse unter diesem Wert werden abgelehnt. Beliebige Gleitkommazahl Nicht festgelegt
category_allowlist Legt die optionale Liste der zulässigen Kategorienamen fest. Wenn das Feld nicht leer ist, werden Klassifizierungsergebnisse herausgefiltert, deren Kategoriename nicht in diesem Set enthalten ist. Doppelte oder unbekannte Kategorienamen werden ignoriert. Diese Option und category_denylist schließen sich gegenseitig aus und die Verwendung beider Werte führt zu einem Fehler. Beliebige Strings Nicht festgelegt
category_denylist Legt die optionale Liste der nicht zulässigen Kategorienamen fest. Wenn das Feld nicht leer ist, werden Klassifizierungsergebnisse herausgefiltert, deren Kategoriename in diesem Satz enthalten ist. Doppelte oder unbekannte Kategorienamen werden ignoriert. Diese Option und category_allowlist schließen sich gegenseitig aus und die Verwendung beider Optionen führt zu einem Fehler. Beliebige Strings Nicht festgelegt
result_callback Legt den Ergebnis-Listener so fest, dass die Klassifizierungsergebnisse asynchron empfangen werden, wenn sich der Bildklassifikator im Livestreammodus befindet. Kann nur verwendet werden, wenn der Laufmodus auf LIVE_STREAM festgelegt ist Nicht festgelegt

Modelle

Der Bildklassifikator erfordert, dass ein Bildklassifizierungsmodell heruntergeladen und in Ihrem Projektverzeichnis gespeichert wird. Beginnen Sie mit dem standardmäßigen, empfohlenen Modell für Ihre Zielplattform, wenn Sie mit dieser Aufgabe beginnen. Die anderen verfügbaren Modelle machen in der Regel Kompromisse zwischen Leistung, Genauigkeit, Auflösung und Ressourcenanforderungen und beinhalten in einigen Fällen zusätzliche Funktionen.

Das EffizienteNet-Lite0-Modell verwendet eine EffizienteNet-Architektur und wurde mit ImageNet trainiert,um 1.000 Klassen zu erkennen, z. B. Bäume, Tiere, Nahrung, Fahrzeuge, Personen usw. Hier finden Sie eine vollständige Liste der unterstützten Labels. EffizienteNet-Lite0- ist als int8- und Float 32-Modell verfügbar. Dieses Modell wird empfohlen, da es ein Gleichgewicht zwischen Latenz und Genauigkeit erzielt. Sie ist genau und leicht genug für viele Anwendungsfälle.

Modellname Form eingeben Quantisierungstyp Versionen
EffizienteNet-Lite0 (int8) 224 × 224 int8 Neueste
EffizienteNet-Lite0 (Gleitkommazahl 32) 224 × 224 Keine (float32) Neueste

EffizienteNet-Lite2-Modell

Das EffizienteNet-Lite2-Modell verwendet eine Effiziente-Net-Architektur und wurde mit ImageNet trainiert,um 1.000 Klassen zu erkennen, z. B. Bäume, Tiere, Nahrung, Fahrzeuge, Personen usw. Die vollständige Liste der unterstützten Labels finden Sie hier. EffizienteNet-Lite2-Modelle sind als Int8- und Float 32-Modelle verfügbar. Dieses Modell ist in der Regel genauer als EffizienteNet-Lite0-Modell, ist aber auch langsamer und speicherintensiver. Dieses Modell eignet sich für Anwendungsfälle, bei denen die Genauigkeit eine höhere Priorität als Geschwindigkeit oder Größe hat.

Modellname Form eingeben Quantisierungstyp Versionen
EffizienteNet-Lite2 (int8) 224 × 224 int8 Neueste
EffizienteNet-Lite2-Wert2 (Gleitkommazahl 32) 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
EffizienteNet-Lite0 (Gleitkommazahl 32) 23,52 ms 18,90 ms
EffizienteNet-Lite0 (int8) 10,08 ms -
EffizienteNet-Lite2 (Gleitkommazahl 32) 44,17 ms 22,20 ms
EffizienteNet-Lite2 (int8) 19,43 ms -

Benutzerdefinierte Modelle

Sie können für diese Aufgabe ein benutzerdefiniertes ML-Modell verwenden, wenn Sie die Funktionen der bereitgestellten Modelle verbessern oder ändern möchten. Sie können Model Maker verwenden, um die vorhandenen Modelle zu ändern, oder ein Modell mit Tools wie TensorFlow erstellen. Benutzerdefinierte Modelle, die mit MediaPipe verwendet werden, müssen im TensorFlow Lite-Format vorliegen und bestimmte Metadaten enthalten, die die Betriebsparameter des Modells beschreiben. Sie sollten die Verwendung von Model Maker in Betracht ziehen, um die bereitgestellten Modelle für diese Aufgabe zu ändern, bevor Sie eigene erstellen.

Wenn Sie einen benutzerdefinierten Bildklassifikator mit Ihrem eigenen Dataset erstellen möchten, beginnen Sie mit der Anleitung Bildklassifikator anpassen.