Leitfaden zur Bildsegmentierung

Mit der Aufgabe MediaPipe Image Segmenter können Sie Bilder basierend auf vordefinierten Kategorien. Sie können diese Funktionalität nutzen, um bestimmte Objekte oder Texturen erstellen und dann visuelle Effekte wie das Weichzeichnen des Hintergrunds anwenden. Diese Aufgabe umfasst mehrere Modelle, die speziell für die Segmentierung von Personen und Funktionen in Bilddaten, einschließlich:

  • Person und Hintergrund
  • Nur Haare der Person
  • Haare, Gesicht, Haut, Kleidung und Accessoires der Person

Bei dieser Aufgabe werden Bilddaten mit einem ML-Modell (maschinelles Lernen) mit einzelnen oder einen kontinuierlichen Videostream. Es wird eine Liste segmentierter Regionen ausgegeben, Sie können Objekte oder Bereiche in einem Bild darstellen, je nachdem, welches Modell Sie verwenden auswählen.

Jetzt testen!

Jetzt starten

Beginnen Sie mit dieser Aufgabe, indem Sie einen dieser Implementierungsleitfäden für Ihr Zielplattform. Diese plattformspezifischen Anleitungen führen Sie durch Implementierung dieser Aufgabe, einschließlich eines empfohlenen Modells und eines Codebeispiels mit den empfohlenen Konfigurationsoptionen:

Taskdetails

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

Funktionen

  • Verarbeitung von Eingabebildern – Die Verarbeitung umfasst Rotation, Größenanpassung und Normalisierung und Farbraumkonvertierung.
Aufgabeneingaben Aufgabenausgaben
Folgende Datentypen sind zulässig:
  • Standbilder
  • Decodierte Videoframes
  • Live-Videofeed
Die Bildsegmentierung gibt segmentierte Bilddaten aus, die ein oder Dies hängt von den von Ihnen festgelegten Konfigurationsoptionen ab:
  • CATEGORY_MASK: eine Liste mit einer segmentierten Maske als Bild im Uint8-Format. Jeder Pixelwert gibt an, ob er Teil einer bestimmten Segmentkategorie ist, die vom Modell unterstützt wird.
  • CONFIDENCE_MASK: eine Liste von Kanälen, die einen segmentierte Maske mit Pixelwerten im Float32-Format. Jeder Pixelwert gibt an, wie wahrscheinlich es ist, dass er zu einer bestimmten Kategorie gehört. die vom Modell unterstützt werden.

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 mit Eingabe zum Beispiel von einer Kamera. In diesem Modus muss der resultListener wird aufgerufen, um einen Listener für den Empfang von Ergebnissen einzurichten asynchron programmiert.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
output_category_mask Wenn True festgelegt ist, enthält die Ausgabe eine Segmentierungsmaske als Uint8-Bild, wobei jeder Pixelwert die Gewinnerkategorie angibt Wert. {True, False} False
output_confidence_masks Wenn True festgelegt ist, enthält die Ausgabe eine Segmentierungsmaske als Gleitkommawert, wobei jeder Gleitkommawert den Konfidenzwert darstellt Kurzübersicht der Kategorie. {True, False} True
display_names_locale Legt die Sprache der Labels fest, die für Anzeigenamen in der Metadaten des Aufgabenmodells, falls verfügbar. Standardwert ist en für Englisch. Sie können den Metadaten eines benutzerdefinierten Modells lokalisierte Labels hinzufügen mit der TensorFlow Lite Metadata Writer API Gebietsschemacode de
result_callback Legt den Ergebnis-Listener fest, der die Segmentierungsergebnisse empfangen soll asynchron, wenn sich der Bildsegmentierer im LIVE_STREAM-Modus befindet. Kann nur verwendet werden, wenn der Ausführungsmodus auf LIVE_STREAM festgelegt ist

Modelle

Der Image Segmenter kann mit mehr als einem ML-Modell verwendet werden. Die meisten der folgenden Segmentierungsmodelle erstellt und trainiert, um eine Segmentierung mit Bildern von Menschen. Das DeepLab-v3 -Modell wird jedoch als allgemeine verwendet werden. Wählen Sie das Modell aus, das am besten zu Ihrer Anwendung passt.

Selfie-Segmentierungsmodell

Dieses Modell kann das Porträt einer Person segmentieren und als Ersatz für oder den Hintergrund in einem Bild ändern. Das Modell gibt zwei Kategorien aus: Hintergrund bei Index 0 und Person bei Index 1. Dieses Modell hat Versionen mit verschiedene Eingabeformen, darunter eine quadratische Version und eine Version im Querformat, für Anwendungen, bei denen die Eingabe immer diese Form aufweist, z. B. Videoanrufe.

Modellname Eingabeform Quantisierungstyp Modellkarte Versionen
Selfie-Segmenter (Quadrat) 256 x 256 Gleitkommazahl 16 Informationen Neueste
SelfieSegmenter (Querformat) 144 x 256 Gleitkommazahl 16 Informationen Neueste

Haarsegmentierungsmodell

Dieses Modell nimmt ein Bild einer Person auf, sucht nach den Haaren auf dem Kopf und gibt eine Bildsegmentierungs-Map für ihr Haar aus. Sie können dieses Modell für Haarneufärben oder andere Haareffekte. Das Modell gibt Folgendes aus: Segmentierungskategorien:

0 - background
1 - hair
Modellname Eingabeform Quantisierungstyp Modellkarte Versionen
HairSegmenter 512 x 512 Keine (float32) Informationen Neueste

Selfie-Segmentierungsmodell mit mehreren Klassen

Dieses Modell nimmt ein Bild einer Person auf, ermittelt Bereiche für verschiedene Bereiche wie Haare, Haut und Kleidung und gibt eine Bildsegmentierungs-Map für diese Artikel aus. Mit diesem Modell können Sie verschiedene Effekte auf Personen in Bildern oder Video. Das Modell gibt die folgenden Segmentierungskategorien aus:

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
Modellname Eingabeform Quantisierungstyp Modellkarte Versionen
SelfieMulticlass (256 × 256) 256 x 256 Keine (float32) Informationen Neueste

DeepLab-v3-Modell

Dieses Modell identifiziert Segmente für eine Reihe von Kategorien, darunter Hintergrund-, Person, Katze, Hund und Topfpflanze. Das Modell verwendet eine atroose Raumpyramide um Informationen aus längeren Entfernungen zu erfassen. Weitere Informationen finden Sie unter DeepLab-v3 auf.

Modellname Eingabeform Quantisierungstyp Versionen
DeepLab V3 257 x 257 Keine (float32) Neueste

Aufgaben-Benchmarks

Hier sind die Aufgaben-Benchmarks für die gesamte Pipeline basierend auf den oben vortrainierten Modelle. Das Latenzergebnis ist die durchschnittliche Latenz auf Pixel 6 mit CPU / GPU.

Modellname CPU-Latenz GPU-Latenz
Selfie-Segmenter (Quadrat) 33,46 ms 35,15 ms
SelfieSegmenter (Querformat) 34,19 ms 33,55 ms
HairSegmenter 57,90 ms 52,14 ms
SelfieMulticlass (256 x 256) 217,76 ms 71,24 ms
DeepLab V3 123,93 ms 103,30 ms