Przewodnik po segmentacji obrazu

Dwa przykłady zbliżenia na mężczyznę obok maski obrazu przedstawiającej jego kształt

Zadanie MediaPipe Image Segmenter umożliwia dzielenie obrazów na regiony na podstawie zdefiniowanych wcześniej kategorii. Dzięki tej funkcji możesz identyfikować określone obiekty lub tekstury, a następnie stosować efekty wizualne, takie jak rozmycie tła. To zadanie obejmuje kilka modeli specjalnie trenowanych pod kątem segmentacji osób i ich cech na podstawie danych obrazowych, w tym:

  • Osoba i tło
  • Tylko włosy
  • włosy, twarz, skóra, ubrania i akcesoria

To zadanie działa na danych obrazów z modelem systemów uczących się, z pojedynczymi obrazami lub ciągłym strumieniem wideo. Wypisuje listę podzielonych na segmenty obszarów reprezentujących obiekty lub obszary na obrazie w zależności od wybranego modelu.

Wypróbuj to!

Rozpocznij

Aby zacząć korzystać z tego zadania, postępuj zgodnie z jednym z tych przewodników dotyczących wdrażania na platformie docelowej. Te przewodniki dotyczące poszczególnych platform zawierają podstawowe informacje o wdrażaniu tego zadania, w tym zalecany model i przykład kodu z zalecanymi opcjami konfiguracji:

Szczegóły działania

W tej sekcji opisano możliwości, dane wejściowe, dane wyjściowe i opcje konfiguracji tego zadania.

Funkcje

  • Przetwarzanie wejściowego obrazu – przetwarzanie obejmuje obrót, zmianę rozmiaru, normalizację i konwersję przestrzeni barw.
Dane wejściowe zadania Dane wyjściowe
Dane wejściowe mogą być jednym z tych typów danych:
  • obrazy nieruchome,
  • Dekodowane klatki wideo
  • Transmisja na żywo
Narzędzie do podziału obrazu na segmenty generuje dane obrazu podzielonego na segmenty, które mogą zawierać jeden lub oba z tych elementów, w zależności od ustawień konfiguracji:
  • CATEGORY_MASK: lista zawierająca maskę segmentowaną jako obraz w formacie uint8. Każda wartość piksela wskazuje, czy jest ona częścią konkretnej kategorii segmentu obsługiwanej przez model.
  • CONFIDENCE_MASK: lista kanałów zawierająca maskę z segmentami z wartościami pikseli w formacie float32. Każda wartość piksela wskazuje poziom pewności, że należy on do konkretnej kategorii obsługiwanej przez model.

Opcje konfiguracji

To zadanie ma te opcje konfiguracji:

Nazwa opcji Opis Zakres wartości Wartość domyślna
running_mode Ustawia tryb działania zadania. Dostępne są 3 tryby:

OBRAZ: tryb dla pojedynczych obrazów wejściowych.

FILM: tryb dekodowanych klatek filmu.

LIVE_STREAM: tryb transmisji na żywo danych wejściowych, takich jak dane z kamery. W tym trybie należy wywołać metodę resultListener, aby skonfigurować odbiornik, który będzie asynchronicznie odbierał wyniki.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
output_category_mask Jeśli ustawisz tę opcję na True, dane wyjściowe będą zawierać maskę segmentacji w postaci obrazu uint8, w którym każda wartość piksela wskazuje zwycięską kategorię. {True, False} False
output_confidence_masks Jeśli ustawisz tę opcję na True, dane wyjściowe będą zawierać maskę segmentacji w postaci obrazu z wartością zmiennoprzecinkową, gdzie każda wartość zmiennoprzecinkowa reprezentuje mapę współczynnika zaufania danej kategorii. {True, False} True
display_names_locale Określa język etykiet, których należy używać do wyświetlanych nazw podanych w metadanych modelu zadania (jeśli są dostępne). Wartość domyślna to en w przypadku języka angielskiego. Możesz dodawać zlokalizowane etykiety do metadanych modelu niestandardowego, korzystając z interfejsu TensorFlow Lite Metadata Writer API. Kod języka en
result_callback Ustawia odbiornik wyników tak, aby asynchronicznie otrzymywał wyniki podziału na segmenty, gdy segmentator obrazu jest w trybie LIVE_STREAM. Można go używać tylko wtedy, gdy tryb działania ma wartość LIVE_STREAM. Nie dotyczy Nie dotyczy

Modele

Segmentator obrazów może być używany z kilkoma modelami systemów uczących się. Większość z tych modeli segmentacji jest tworzona i trenowana do wykonywania segmentacji na podstawie obrazów przedstawiających ludzi. Model DeepLab-v3 został jednak stworzony jako ogólny segmentator obrazu. Wybierz model, który najlepiej pasuje do Twojej aplikacji.

Model segmentacji selfie

Ten model może podzielić na segmenty portret osoby i może służyć do zastępowania lub modyfikowania tła na zdjęciu. Model zwraca 2 kategorie: tło (indeks 0) i osoba (indeks 1). Ten model ma wersje z różnymi kształtami danych wejściowych, w tym wersję kwadratową i wersję poziomą, które mogą być bardziej wydajne w przypadku aplikacji, w których dane wejściowe mają zawsze ten kształt, na przykład w przypadku połączeń wideo.

Nazwa modelu Kształt wejściowy Typ kwantowania Karta modelu Wersje
SelfieSegmenter (kwadrat) 256 x 256 float 16 info Najnowsze
SelfieSegmenter (orientacja pozioma) 144 x 256 float 16 info Najnowsze

Model segmentacji włosów

Ten model pobiera zdjęcie osoby, wykrywa włosy na jej głowie i wyprowadza mapę podziału obrazu na obszary odpowiadające włosom. Możesz użyć tego modelu do zmiany koloru włosów lub zastosowania innych efektów. Model wyprowadza te kategorie segmentacji:

0 - background
1 - hair
Nazwa modelu Kształt wejściowy Typ kwantowania Karta modelu Wersje
HairSegmenter 512 x 512 Brak (float32) info Najnowsze

Model segmentacji selfie wieloklasowego

Model ten przetwarza obraz osoby, wykrywa różne obszary, takie jak włosy, skóra i odzież, a następnie generuje mapę podziału obrazu na te elementy. Możesz użyć tego modelu do stosowania różnych efektów do osób na zdjęciach lub filmach. Model wyprowadza te kategorie segmentacji:

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
Nazwa modelu Kształt wejściowy Typ kwantowania Karta modelu Wersje
SelfieMulticlass (256 x 256) 256 x 256 Brak (float32) info Najnowsze

model DeepLab-v3.

Ten model identyfikuje segmenty w różnych kategoriach, takich jak tło, osoba, kot, pies i roślina w doniczce. Model wykorzystuje łączenie piramidalne z atrous, aby rejestrować informacje z większego zakresu. Więcej informacji znajdziesz w DeepLab-v3.

Nazwa modelu Kształt wejściowy Typ kwantowania Wersje
DeepLab-V3 257 x 257 Brak (float32) Najnowsze

Porównania zadań

Poniżej znajdziesz benchmarki zadań dla całego przepływu danych opartego na wytrenowanych wstępnie modelach. Wynik opóźnienia to średnie opóźnienie na Pixelu 6 z wykorzystaniem procesora CPU lub GPU.

Nazwa modelu Czas oczekiwania procesora Opóźnienie GPU
SelfieSegmenter (kwadrat) 33,46 ms 35,15 ms
SelfieSegmenter (orientacja pozioma) 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