Leitfaden zur Bildsegmentierung

Mit der Aufgabe „MediaPipe Image Segmenter“ können Sie Bilder anhand vordefinierter Kategorien in Regionen unterteilen. Sie können damit bestimmte Objekte oder Texturen identifizieren und dann visuelle Effekte wie das Weichzeichnen des Hintergrunds anwenden. Diese Aufgabe umfasst mehrere Modelle, die speziell für die Segmentierung von Personen und ihrer Funktionen in Bilddaten trainiert wurden, darunter:

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

Bei dieser Aufgabe werden Bilddaten mit einem Modell für maschinelles Lernen (ML) mit Einzelbildern oder einem kontinuierlichen Videostream verarbeitet. Es wird eine Liste segmentierter Regionen ausgegeben, die je nach ausgewähltem model Objekte oder Bereiche in einem Bild darstellen.

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, einschließlich eines empfohlenen Modells und eines Codebeispiels mit 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.
Aufgabeneingaben Aufgabenausgaben
Folgende Datentypen können als Eingabe verwendet werden:
  • Standbilder
  • Decodierte Videoframes
  • Live-Videofeed
Der Image Segmenter gibt segmentierte Bilddaten aus, die je nach den von Ihnen festgelegten Konfigurationsoptionen eines oder beide der folgenden Elemente enthalten können:
  • CATEGORY_MASK: eine Liste mit einer segmentierten Maske als Bild im Uint8-Format. Jeder Pixelwert gibt an, ob er zu einer bestimmten, vom Modell unterstützten Segmentkategorie gehört.
  • CONFIDENCE_MASK: eine Liste von Kanälen, die eine segmentierte Maske mit Pixelwerten im Gleitkommazahl32-Format enthalten. Jeder Pixelwert gibt an, wie wahrscheinlich es ist, dass er zu einer bestimmten, vom Modell unterstützten Kategorie gehört.

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
output_category_mask Wenn True festgelegt ist, enthält die Ausgabe eine Segmentierungsmaske als uint8-Bild, wobei jeder Pixelwert den Wert der erfolgreichen Kategorie angibt. {True, False} False
output_confidence_masks Wenn True festgelegt ist, enthält die Ausgabe eine Segmentierungsmaske als Gleitkommazahlbild, wobei jeder Gleitkommawert die Konfidenzwertzuordnung der Kategorie darstellt. {True, False} True
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
result_callback Legt den Ergebnis-Listener so fest, dass die Segmentierungsergebnisse asynchron empfangen werden, wenn sich der Bildsegmentierer im Livestream-Modus befindet. Kann nur verwendet werden, wenn der Laufmodus auf LIVE_STREAM festgelegt ist

Modelle

Der Image Segmenter kann mit mehr als einem ML-Modell verwendet werden. Die meisten der folgenden Segmentierungsmodelle wurden für die Segmentierung mit Bildern von Personen entwickelt und trainiert. Das DeepLab-v3 -Modell wurde jedoch zum Segmentieren von Bildern für allgemeine Zwecke entwickelt. Wählen Sie das Modell aus, das für Ihre Anwendung am besten geeignet ist.

Selfie-Segmentierungsmodell

Dieses Modell kann das Porträt einer Person segmentieren und zum Ersetzen oder Ändern des Hintergrunds in einem Bild verwendet werden. Das Modell gibt zwei Kategorien aus: Hintergrund bei Index 0 und Person bei Index 1. Dieses Modell hat Versionen mit verschiedenen Eingabeformen, einschließlich der quadratischen Version und einer Version im Querformat, die für Anwendungen, bei denen die Eingabe immer diese Form ist, wie beispielsweise Videoanrufe, effizienter sein können.

Modellname Form eingeben Quantisierungstyp Modellkarte Versionen
SelfieSegmenter (quadratisch) 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 ihrem Kopf und gibt eine Bildsegmentierungskarte für die Haare aus. Sie können dieses Modell nutzen, um Haare neu zu färben oder andere Haareffekte anzuwenden. Das Modell gibt die folgenden Segmentierungskategorien aus:

0 - background
1 - hair
Modellname Form eingeben Quantisierungstyp Modellkarte Versionen
HairSegmenter 512 × 512 Keine (float32) Informationen Neueste

Segmentierungsmodell für mehrklassige Selfies

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

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

DeepLab-v3-Modell

Dieses Modell identifiziert Segmente für eine Reihe von Kategorien, einschließlich Hintergrund, Person, Katze, Hund und Topfpflanze. Das Modell verwendet atrousische räumliche Pyramiden-Pooling, um Informationen über größere Entfernungen zu erfassen. Weitere Informationen finden Sie unter DeepLab-v3.

Modellname Form eingeben Quantisierungstyp Versionen
DeepLab-V3 257 x 257 Keine (float32) Neueste

Aufgaben-Benchmarks

Hier sind die Aufgaben-Benchmarks für die gesamte Pipeline, die auf den oben trainierten vortrainierten Modellen basieren. Das Latenzergebnis ist die durchschnittliche Latenz von Pixel 6 mit CPU / GPU.

Modellname CPU-Latenz GPU-Latenz
SelfieSegmenter (quadratisch) 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