Aufgabenübersicht zur Objekterkennung

Mit der Aufgabe „MediaPipe-Objektdetektor“ können Sie das Vorhandensein und den Standort mehrerer Klassen von Objekten in Bildern oder Videos erkennen. Ein Objektdetektor kann beispielsweise Hunde in einem Bild finden. Bei dieser Aufgabe werden Bilddaten mit einem Modell für maschinelles Lernen (ML) verarbeitet, das statische Daten oder einen kontinuierlichen Videostream als Eingabe akzeptiert und eine Liste mit Erkennungsergebnissen ausgibt. Jedes Erkennungsergebnis stellt ein Objekt dar, das im Bild oder Video erscheint.

Jetzt ausprobieren

Jetzt starten

Beginnen Sie mit dieser Aufgabe. Folgen Sie dazu einer der folgenden Implementierungsleitfäden für die Plattform, an der Sie gerade arbeiten:

Diese plattformspezifischen Leitfäden führen Sie durch eine grundlegende Implementierung dieser Aufgabe, einschließlich eines empfohlenen Modells und eines Codebeispiels mit empfohlenen Konfigurationsoptionen.

Taskdetails

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

Funktionen

  • Eingabebildverarbeitung: Die Verarbeitung umfasst Bilddrehung, Größenanpassung, Normalisierung und Farbraumkonvertierung.
  • Gebietsschema für Labelkarte: die Sprache für Anzeigenamen festlegen
  • Punktzahl-Schwellenwert: Filtern Sie Ergebnisse basierend auf den Vorhersagewerten.
  • Top-K-Erkennung: Filtern Sie die Ergebnisse der Nummernerkennung.
  • Zulassungs- und Sperrliste für Labels: Geben Sie die erkannten Kategorien an.
Aufgabeneingaben Aufgabenausgaben
Die Object Detector API akzeptiert Eingaben mit einem der folgenden Datentypen:
  • Standbilder
  • Decodierte Videoframes
  • Live-Videofeed
Die Object Detector API gibt für erkannte Objekte die folgenden Ergebnisse aus:
  • Objektkategorie
  • Wahrscheinlichkeitswert
  • Koordinaten von Begrenzungsrahmen

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 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 Ergebnisse mit den besten Bewertungen fest, die zurückgegeben werden sollen. Beliebige positive Zahlen -1 (alle Ergebnisse werden zurückgegeben)
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 Erkennungsergebnisse herausgefiltert, deren Kategoriename nicht in diesem Satz 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 Erkennungsergebnisse 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

Modelle

Für die Object Detector API muss ein Objekterkennungsmodell heruntergeladen und in Ihrem Projektverzeichnis gespeichert werden. Wenn Sie noch kein Modell haben, beginnen Sie mit dem empfohlenen Standardmodell. Bei den anderen in diesem Abschnitt vorgestellten Modellen werden Kompromisse zwischen Latenz und Genauigkeit gemacht.

Das EffizienteDet-Lite0-Modell verwendet einen EffizienteNet-Lite0-Backbone mit einer Eingabegröße von 320 x 320 und einem BiFPN-Feature-Netzwerk. Das Modell wurde mit dem COCO-Dataset trainiert, einem umfangreichen Dataset zur Objekterkennung, das 1,5 Millionen Objektinstanzen und 80 Objektlabels enthält. Hier finden Sie eine vollständige Liste der unterstützten Labels. EffizienteDet-Lite0 ist als int8-, FLOAT16- oder FLOAT32-Datei 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
EffizienteDet-Lite0 (int8) 320 x 320 int8 Neueste
EffizienteDet-Lite0 (Gleitkommazahl 16) 320 x 320 Gleitkommazahl 16 Neueste
EffizienteDet-Lite0 (Gleitkommazahl 32) 320 x 320 Keine (float32) Neueste

EffizienteDet-Lite2-Modell

Das EffizienteDet-Lite2-Modell verwendet einen EffizienteNet-Lite2-Backbone mit einer Eingabegröße von 448 x 448 und einem BiFPN-Feature-Netzwerk. Das Modell wurde mit dem COCO-Dataset trainiert, einem umfangreichen Dataset zur Objekterkennung, das 1,5 Millionen Objektinstanzen und 80 Objektlabels enthält. Hier finden Sie eine vollständige Liste der unterstützten Labels. EffizienteDet-Lite2-Modell ist als int8-, FLOAT16- oder FLOAT32-Modell verfügbar. Dieses Modell ist in der Regel genauer als EffizienteDet-Lite0, 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 und Größe hat.

Modellname Form eingeben Quantisierungstyp Versionen
EffizienteDet-Lite2 (int8) 448 x 448 int8 Neueste
EffizienteDet-Lite2 (Gleitkommazahl 16) 448 x 448 Gleitkommazahl 16 Neueste
EffizienteDet-Lite2 (Gleitkommazahl 32) 448 x 448 Keine (float32) Neueste

SSD MobileNetV2-Modell

Das SSD MobileNetV2-Modell verwendet einen MobileNetV2-Backbone mit einer Eingabegröße von 256 × 256 und ein SSD-Feature-Netzwerk. Das Modell wurde mit dem COCO-Dataset trainiert, einem umfangreichen Dataset zur Objekterkennung, das 1,5 Millionen Objektinstanzen und 80 Objektlabels enthält. Hier finden Sie eine vollständige Liste der unterstützten Labels. SSD MobileNetV2 ist als Int8- und Gleitkommazahl 32-Modell verfügbar. Dieses Modell ist schneller und leichter als EffizienteDet-Lite0, aber auch im Allgemeinen weniger genau. Dieses Modell eignet sich für Anwendungsfälle, die ein schnelles, leichtes Modell erfordern, das eine gewisse Genauigkeit vernachlässigt.

Modellname Form eingeben Quantisierungstyp Versionen
SSDMobileNet-V2 (int8) 256 x 256 int8 Neueste
SSDMobileNet-V2 (Gleitkommazahl 32) 256 x 256 Keine (float32) Neueste

Modellanforderungen und Metadaten

In diesem Abschnitt werden die Anforderungen an benutzerdefinierte Modelle beschrieben, wenn Sie ein Modell für diese Aufgabe erstellen möchten. Benutzerdefinierte Modelle müssen im TensorFlow Lite-Format vorliegen und Metadaten enthalten, die die Betriebsparameter des Modells beschreiben.

Designanforderungen

Eingabe Form Beschreibung
Eingabebild Float32-Tensor der Form[1, Höhe, Breite, 3] Das normalisierte Eingabebild.
Ausgabe Form Beschreibung
detection_boxes Float32-Tensor der Form [1, num_boxes, 4] Position des Felds für jedes erkannte Objekt.
detection_classes Float32-Tensor der Form [1, num_boxes] Indexe der Klassennamen für jedes erkannte Objekt.
detection_scores Tensor 32 der Form [1, num_boxes] Vorhersagewerte für jedes erkannte Objekt.
num_boxes Float32-Tensor der Größe 1 Die Anzahl der erkannten Boxen.

Anforderungen an Metadaten

Parameter Beschreibung Beschreibung
input_norm_mean Der in der Eingabetensor-Normalisierung verwendete Mittelwert. Das normalisierte Eingabebild.
input_norm_std Die in der Normalisierung des Eingabetensors verwendete Feldnorm. Position des Felds für jedes erkannte Objekt.
label_file_paths Die Pfade zu den Tensorlabel-Dateien der Kategorie. Wenn das Modell keine Labeldateien hat, übergeben Sie eine leere Liste. Indexe der Klassennamen für jedes erkannte Objekt.
score_calibration_md Informationen zum Kalibrierungsvorgang für den Wert im Klassifizierungstensor. Dieser Parameter ist nicht erforderlich, wenn das Modell keine Kalibrierung
für die Punktzahl verwendet.
Vorhersagewerte für jedes erkannte Objekt.
num_boxes Float32-Tensor der Größe 1 Die Anzahl der erkannten Boxen.

Aufgaben-Benchmarks

Hier sind die Aufgaben-Benchmarks für die oben genannten vortrainierten Modelle. Das Latenzergebnis ist die durchschnittliche Latenz von Pixel 6 mit CPU / GPU.

Modellname CPU-Latenz GPU-Latenz
EffizienteDet-Lite0-FLOAT32-Modell 61,30 ms 27,83 ms
EffizienteDet-Lite0-FLOAT16-Modell 53,97 ms 27,97 ms
EffizienteDet-Lite0-Int8-Modell 29,31 ms -
EffizienteDet-Lite2-FLOAT32-Modell 197,98 ms 41,15 ms
EffizienteDet-Lite2-FLOAT16-Modell 198,77 ms 47,31 ms
EffizienteDet-Lite2-Int8-Modell 70,91 ms -
SSD MobileNetV2-FLOAT32-Modell 36,30 ms 24,01 ms
SSD MobileNetV2-FLOAT16-Modell 37,35 ms 28,16 ms