Mit der Aufgabe „MediaPipe-Bildklassifikator“ können Sie Bilder klassifizieren. Mit dieser Aufgabe können Sie ermitteln, was ein Bild in einer Reihe von Kategorien darstellt, die beim Training definiert wurden. Bei dieser Aufgabe werden Bilddaten mit einem ML-Modell als statische Daten oder als kontinuierlicher Stream verarbeitet. Es wird eine Liste potenzieller Kategorien ausgegeben, die nach absteigendem Wahrscheinlichkeitswert sortiert ist.
Jetzt starten
Folgen Sie einer dieser Implementierungsanleitungen für Ihre Zielplattform, um diese Aufgabe zu verwenden. In diesen plattformspezifischen Anleitungen erfahren Sie, wie Sie diese Aufgabe mit einem empfohlenen Modell implementieren. Außerdem finden Sie Codebeispiele mit den empfohlenen Konfigurationsoptionen:
- Android – Codebeispiel – Anleitung
- Python – Codebeispiel – Anleitung
- Web – Codebeispiel – Anleitung
- iOS – Codebeispiel – Anleitung
Taskdetails
In diesem Abschnitt werden die Funktionen, Eingaben, Ausgaben und Konfigurationsoptionen dieser Aufgabe beschrieben.
Funktionen
- Eingabebildverarbeitung: Dazu gehören Bilddrehung, Größenänderung, Normalisierung und Farbraumkonvertierung.
- Erforderlicher Bereich: Die Klassifizierung wird nicht auf das gesamte Bild, sondern auf einen Bereich des Bildes angewendet.
- Label-Zuordnungs-Locale: Legen Sie die Sprache fest, die für Anzeigenamen verwendet wird.
- Grenzwert für die Bewertung: Ergebnisse nach Bewertungen filtern.
- Top-K-Klassifizierung: Begrenzt die Anzahl der Klassifizierungsergebnisse.
- Zulassungs- und Sperrliste für Labels: Hier können Sie die Kategorien angeben, die klassifiziert werden sollen.
Aufgabeneingaben | Aufgabenausgaben |
---|---|
Die Eingabe kann einen der folgenden Datentypen haben:
|
Der Bildklassifikator gibt eine Liste von Kategorien mit folgenden Elementen aus:
|
Konfigurationsoptionen
Für diese Aufgabe gibt es die folgenden Konfigurationsoptionen:
Option | Beschreibung | Wertebereich | Standardwert |
---|---|---|---|
running_mode |
Legt den Ausführungsmodus für die Aufgabe fest. Es gibt drei Modi: IMAGE: Der Modus für Eingaben mit einem einzelnen Bild. VIDEO: Der Modus für decodierte Frames eines Videos. LIVE_STREAM: Der Modus für einen Livestream von Eingabedaten, z. B. von einer Kamera. In diesem Modus muss resultListener aufgerufen werden, um einen Listener für den asynchronen Empfang von Ergebnissen einzurichten. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
display_names_locale |
Legt die Sprache der Labels fest, die für die Anzeigenamen verwendet werden, die in den Metadaten des Modells der Aufgabe angegeben sind, sofern verfügbar. Der Standardwert ist en für Englisch. Mit der TensorFlow Lite Metadata Writer API können Sie den Metadaten eines benutzerdefinierten Modells lokalisierte Labels hinzufügen. |
Gebietscode | de |
max_results |
Legt die optionale maximale Anzahl der Klassifizierungsergebnisse mit der höchsten Punktzahl fest, die zurückgegeben werden sollen. Wenn der Wert kleiner als 0 ist, werden alle verfügbaren Ergebnisse zurückgegeben. | Beliebige positive Zahlen | -1 |
score_threshold |
Legt den Schwellenwert für die Vorhersagebewertung fest, der den in den Modellmetadaten angegebenen Wert (falls vorhanden) überschreibt. Ergebnisse unter diesem Wert werden abgelehnt. | Beliebiger Float | Nicht festgelegt |
category_allowlist |
Legt die optionale Liste der zulässigen Kategorienamen fest. Wenn die Liste nicht leer ist, werden Klassifizierungsergebnisse herausgefiltert, deren Kategoriename nicht in dieser Liste enthalten ist. Doppelte oder unbekannte Kategorienamen werden ignoriert.
Diese Option schließt category_denylist aus. Die Verwendung beider Optionen führt zu einem Fehler. |
Beliebige Strings | Nicht festgelegt |
category_denylist |
Hiermit wird eine optionale Liste der nicht zulässigen Kategorienamen festgelegt. Wenn der Wert nicht leer ist, werden Klassifizierungsergebnisse herausgefiltert, deren Kategoriename in diesem Set enthalten ist. Doppelte oder unbekannte Kategorienamen werden ignoriert. Diese Option schließt category_allowlist aus. Die Verwendung beider Optionen führt zu einem Fehler. |
Beliebige Strings | Nicht festgelegt |
result_callback |
Legt fest, dass der Ergebnisempfänger die Klassifizierungsergebnisse asynchron empfängt, wenn sich der Bildklassifikator im Livestream-Modus befindet. Kann nur verwendet werden, wenn der Ausführungsmodus auf LIVE_STREAM festgelegt ist. |
– | Nicht festgelegt |
Modelle
Für den Bildklassifikator muss ein Bildklassifizierungsmodell heruntergeladen und im Projektverzeichnis gespeichert werden. Beginnen Sie mit dem standardmäßigen, empfohlenen Modell für Ihre Zielplattform, wenn Sie mit dieser Aufgabe beginnen. Bei den anderen verfügbaren Modellen müssen in der Regel Kompromisse zwischen Leistung, Genauigkeit, Auflösung und Ressourcenanforderungen eingegangen werden. In einigen Fällen sind auch zusätzliche Funktionen verfügbar.
EfficientNet-Lite0-Modell (empfohlen)
Das EfficientNet-Lite0-Modell verwendet eine EfficientNet-Architektur und wurde mit ImageNet trainiert, um 1.000 Klassen zu erkennen, z. B. Bäume, Tiere, Lebensmittel, Fahrzeuge und Personen. Eine vollständige Liste der unterstützten Labels finden Sie hier. EfficientNet-Lite0 ist als int8- und als Float32-Modell verfügbar. Dieses Modell wird empfohlen, da es eine gute Balance zwischen Latenz und Genauigkeit bietet. Sie ist für viele Anwendungsfälle sowohl genau als auch effizient.
Modellname | Eingabeform | Quantisierungstyp | Versionen |
---|---|---|---|
EfficientNet-Lite0 (int8) | 224 x 224 | int8 | Neueste |
EfficientNet-Lite0 (Float 32) | 224 x 224 | Keine (float32) | Neueste |
EfficientNet-Lite2-Modell
Das EfficientNet-Lite2-Modell verwendet eine EfficientNet-Architektur und wurde mit ImageNet trainiert, um 1.000 Klassen wie Bäume, Tiere, Lebensmittel, Fahrzeuge und Personen zu erkennen. Eine vollständige Liste der unterstützten Labels finden Sie hier. EfficientNet-Lite2 ist als int8- und als Float32-Modell verfügbar. Dieses Modell ist im Allgemeinen genauer als EfficientNet-Lite0, aber auch langsamer und speicherintensiver. Dieses Modell eignet sich für Anwendungsfälle, bei denen die Genauigkeit Vorrang vor Geschwindigkeit oder Größe hat.
Modellname | Eingabeform | Quantisierungstyp | Versionen |
---|---|---|---|
EfficientNet-Lite2 (int8) | 224 x 224 | int8 | Neueste |
EfficientNet-Lite2 (float 32) | 224 x 224 | Keine (float32) | Neueste |
Benchmarks für Aufgaben
Hier sind die Aufgaben-Benchmarks für die gesamte Pipeline, die auf den oben genannten vorab trainierten Modellen basieren. Das Latenzergebnis ist die durchschnittliche Latenz auf Pixel 6 mit CPU / GPU.
Modellname | CPU-Latenz | GPU-Latenz |
---|---|---|
EfficientNet-Lite0 (Float 32) | 23,52 ms | 18,90 ms |
EfficientNet-Lite0 (int8) | 10,08 ms | - |
EfficientNet-Lite2 (Gleitkommazahl 32) | 44,17 ms | 22,20 ms |
EfficientNet-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. Mit Model Maker können Sie vorhandene Modelle ändern oder mit Tools wie TensorFlow ein Modell erstellen. Benutzerdefinierte Modelle, die mit MediaPipe verwendet werden, müssen im TensorFlow Lite-Format vorliegen und spezifische metadata enthalten, die die Betriebsparameter des Modells beschreiben. Sie sollten die bereitgestellten Modelle für diese Aufgabe mit dem Model Maker anpassen, bevor Sie ein eigenes Modell erstellen.
Wenn Sie einen benutzerdefinierten Bildklassifikator mit Ihrem eigenen Dataset erstellen möchten, beginnen Sie mit dem Tutorial zum Anpassen des Bildklassifikators.