Leitfaden zur Bildsegmentierung

Nebeneinanderliegende Beispiele für eine Nahaufnahme eines Mannes neben der Bildmaske, die die Form des Mannes umreißt

Mit der Aufgabe „MediaPipe Image Segmenter“ können Sie Bilder anhand vordefinierter Kategorien in Regionen unterteilen. Mit dieser Funktion können Sie 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 deren Merkmalen in Bilddaten trainiert wurden, darunter:

  • 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 Bildern oder einem kontinuierlichen Videostream verarbeitet. Es gibt eine Liste der segmentierten Regionen aus, die je nach ausgewähltem Modell Objekte oder Bereiche in einem Bild darstellen.

Jetzt testen!

Jetzt starten

Folgen Sie einer dieser Implementierungsanleitungen für Ihre Zielplattform, um diese Aufgabe zu verwenden. In diesen plattformspezifischen Anleitungen werden Sie durch die grundlegende Implementierung dieser Aufgabe geführt. Sie finden dort auch ein empfohlenes Modell und ein Codebeispiel mit empfohlenen Konfigurationsoptionen:

Taskdetails

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

Funktionen

  • Eingabebildverarbeitung: Die Verarbeitung umfasst Bilddrehung, Größenänderung, Normalisierung und Farbraumkonvertierung.
Aufgabeneingaben Aufgabenausgaben
Die Eingabe kann einen der folgenden Datentypen haben:
  • Standbilder
  • Decodierte Videoframes
  • Live-Videofeed
Der Bildsegmentierungstool gibt segmentierte Bilddaten aus, die je nach den von Ihnen festgelegten Konfigurationsoptionen eine oder beide der folgenden Optionen 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 Segmentkategorie gehört, die vom Modell unterstützt wird.
  • CONFIDENCE_MASK: Eine Liste von Kanälen, die eine segmentierte Maske mit Pixelwerten im Format „float32“ enthält. Jeder Pixelwert gibt an, wie wahrscheinlich es ist, dass er zu einer bestimmten vom Modell unterstützten Kategorie gehört.

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
output_category_mask Wenn dieser Wert auf True festgelegt ist, enthält die Ausgabe eine Segmentierungsmaske als uint8-Bild, bei der jeder Pixelwert den Wert der Gewinnerkategorie angibt. {True, False} False
output_confidence_masks Wenn dieser Parameter auf True festgelegt ist, enthält die Ausgabe eine Segmentierungsmaske als Bild mit Gleitkommawerten. Dabei steht jeder Gleitkommawert für die Konfidenzkarte der Kategorie. {True, False} True
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
result_callback Legt fest, dass der Ergebnisempfänger die Segmentierungsergebnisse asynchron empfängt, wenn sich der Bildsegmenter im Modus LIVE_STREAM befindet. Kann nur verwendet werden, wenn der Ausführungsmodus auf LIVE_STREAM festgelegt ist.

Modelle

Der Bildsegmenter kann mit mehreren ML-Modellen verwendet werden. Die meisten der folgenden Segmentierungsmodelle wurden für die Segmentierung von Bildern von Personen erstellt und trainiert. Das DeepLab-v3-Modell wurde jedoch als Bildsegmentierungstool 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 verwendet werden, um den Hintergrund in einem Bild zu ersetzen oder zu ändern. Das Modell gibt zwei Kategorien aus: „Hintergrund“ mit dem Index 0 und „Person“ mit dem Index 1. Dieses Modell hat Versionen mit verschiedenen Eingabeformen, darunter eine quadratische Version und eine Querformatversion, die für Anwendungen, bei denen die Eingabe immer diese Form hat, effizienter sein kann, z. B. für Videoanrufe.

Modellname Eingabeform Quantisierungstyp Modellkarte Versionen
SelfieSegmenter (quadratisch) 256 x 256 float 16 info Neueste
SelfieSegmenter (Querformat) 144 × 256 float 16 info Neueste

Haarsegmentierungsmodell

Dieses Modell nimmt ein Bild einer Person auf, lokalisiert das Haar auf ihrem Kopf und gibt eine Bildsegmentierungskarte für ihr Haar aus. Sie können dieses Modell verwenden, um Haare neu zu färben oder andere Haareffekte anzuwenden. Das Modell gibt die folgenden Segmentierungskategorien aus:

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

Mehrfachklassiges Selfie-Segmentierungsmodell

Dieses Modell nimmt ein Bild einer Person auf, lokalisiert Bereiche für verschiedene Bereiche wie Haare, Haut und Kleidung und gibt eine Bildsegmentierungskarte für diese Elemente aus. Mit diesem Modell können Sie Personen in Bildern oder Videos verschiedene Effekte hinzufügen. 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) info Neueste

DeepLab-v3-Modell

Dieses Modell identifiziert Segmente für eine Reihe von Kategorien, darunter Hintergrund, Person, Katze, Hund und Topfpflanze. Das Modell verwendet atrous spatial pyramid pooling, um Informationen mit größerer Reichweite zu erfassen. Weitere Informationen finden Sie unter DeepLab-v3.

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

Benchmarks für Aufgaben

Hier sind die Aufgaben-Benchmarks für die gesamte Pipeline basierend auf den oben genannten vorab trainierten Modellen. Das Latenzergebnis ist die durchschnittliche Latenz auf 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 × 256) 217,76 ms 71,24 ms
DeepLab-V3 123,93 ms 103,30 ms