Przewodnik po segmentacji obrazu

Zadanie segmentacji obrazów MediaPipe pozwala dzielić obrazy na regiony na podstawie zdefiniowanych wstępnie kategorii. Dzięki tej funkcji możesz identyfikować określone obiekty lub tekstury, a potem stosować efekty wizualne, takie jak rozmycie tła. To zadanie obejmuje kilka modeli wytrenowanych specjalnie do segmentowania osób i ich cech w obrębie danych o obrazach, w tym:

  • Osoba i pochodzenie
  • Tylko włosy danej osoby
  • fryzury, twarz, skóra, ubrania i akcesoria;

To zadanie operuje na danych obrazów z użyciem modelu systemów uczących się (ML) z pojedynczymi obrazami lub ciągłym strumieniem wideo. Generuje listę posegmentowanych regionów, reprezentujących obiekty lub obszary obrazu w zależności od wybranego model.

Wypróbuj!

Rozpocznij

Zacznij od wykonania tego zadania, postępując zgodnie z instrukcjami podanymi w jednym z przewodników po implementacji dla platformy docelowej. Przewodniki dotyczące poszczególnych platform przeprowadzą Cię przez podstawowe wdrożenie tego zadania, w tym zalecany model i przykładowy kod z zalecanymi opcjami konfiguracji:

Szczegóły działania

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

Funkcje

  • Przetwarzanie obrazu wejściowego – przetwarzanie obejmuje obrót obrazu, zmianę jego rozmiaru, normalizację i konwersję przestrzeni kolorów.
Dane wejściowe zadań Wyniki działania
Dane wejściowe mogą być jednym z tych typów:
  • nieruchome obrazy;
  • Zdekodowane klatki wideo
  • Kanał z obrazem na żywo
Narzędzie do segmentacji obrazów generuje podzielone na segmenty dane o obrazach, które w zależności od wybranych opcji konfiguracji mogą zawierać jeden lub oba z tych elementów:
  • CATEGORY_MASK: lista zawierająca maskę podzieloną na segmenty jako obraz w formacie uint8. Każda wartość w pikselu wskazuje, czy należy ona do określonej kategorii segmentu obsługiwanej przez model.
  • CONFIDENCE_MASK: lista kanałów zawierających maskę podzieloną na segmenty z wartościami pikseli w formacie float32. Każda wartość piksela wskazuje poziom pewności, że należy on do określonej 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. Są 3 tryby:

IMAGE: tryb wprowadzania pojedynczych obrazów.

WIDEO: tryb dekodowanych klatek filmu.

TRANSMISJA NA ŻYWO: tryb transmisji danych wejściowych na żywo, np. z kamery. W tym trybie należy wywołać metodę resultListener, aby skonfigurować odbiornik, który będzie odbierał wyniki asynchronicznie.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
output_category_mask Jeśli ma wartość True, dane wyjściowe zawierają maskę podziału jako obraz uint8, w którym każda wartość piksela wskazuje zwycięską kategorię. {True, False} False
output_confidence_masks Jeśli ustawiona jest wartość True, dane wyjściowe zawierają maskę podziału w postaci obrazu z wartością zmiennoprzecinkową, w którym każda wartość zmiennoprzecinkowa reprezentuje mapę wskaźnika ufności kategorii. {True, False} True
display_names_locale Ustawia język etykiet, które mają być używane w przypadku nazw wyświetlanych w metadanych modelu zadania (jeśli są dostępne). Wartość domyślna w języku angielskim to en. Za pomocą TensorFlow Lite MetadataWriter API możesz dodawać zlokalizowane etykiety do metadanych modelu niestandardowego. Kod języka en
result_callback Ustawia detektor wyników, aby asynchronicznie otrzymywać wyniki podziału na segmenty, gdy moduł do segmentacji obrazów działa w trybie transmisji na żywo. Tego ustawienia można używać tylko wtedy, gdy tryb biegowy jest ustawiony na LIVE_STREAM Nie dotyczy Nie dotyczy

Modele

Do segmentacji obrazów można używać z więcej niż jednym modelem ML. Większość z tych modeli segmentacji jest stworzona i wytrenowana pod kątem przeprowadzania segmentacji z użyciem obrazów przedstawiających osoby. Model DeepLab-v3 jest jednak przeznaczony do segmentowania obrazów ogólnego przeznaczenia. Wybierz model, który najlepiej pasuje do Twojej aplikacji.

Model segmentacji selfie

Ten model umożliwia segmentację portretu osoby i może służyć do zastępowania lub modyfikowania tła obrazu. Model podaje 2 kategorie: tło w indeksie 0 i osobę w indeksie 1. Ten model ma wersje z różnymi kształtami danych wejściowych, w tym wersję kwadratową i poziomą. Może się to okazać bardziej efektywne w aplikacjach, w których dane wejściowe mają zawsze taki kształt, jak w rozmowach wideo.

Nazwa modelu Wprowadź kształt Typ kwantyzacji Karta modelu Wersje
Narzędzie do segmentacji selfie (kwadrat) 256 x 256 liczba zmiennoprzecinkowa 16 informacje Najnowsze
SelfieSegmenter (orientacja pozioma) 144 x 256 liczba zmiennoprzecinkowa 16 informacje Najnowsze

Model segmentacji włosów

Ten model wykonuje zdjęcia danej osoby, lokalizuje włosy na jej głowie i generuje dla nich mapę ich podziału na segmenty. Możesz go używać do zmiany koloru włosów lub nałożenia innych efektów. Model zwraca te kategorie podziału na segmenty:

0 - background
1 - hair
Nazwa modelu Wprowadź kształt Typ kwantyzacji Karta modelu Wersje
HairSegmenter 512 x 512 Brak (float32) informacje Najnowsze

Wieloklasowy model segmentacji selfie

Ten model wykonuje zdjęcie osoby, lokalizuje obszary dla różnych obszarów, takich jak włosy, skóra i ubranie, i generuje dla tych elementów mapę segmentacji obrazu. Za pomocą tego modelu możesz stosować różne efekty do osób na zdjęciach i filmach. Model na wyjściu generuje te kategorie podziału na segmenty:

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
Nazwa modelu Wprowadź kształt Typ kwantyzacji Karta modelu Wersje
SelfieMulticlass (256 x 256) 256 x 256 Brak (float32) informacje Najnowsze

Model DeepLab-v3

Ten model rozpoznaje segmenty z wielu kategorii, takich jak tło, osoba, kot, pies czy roślina w doniczce. Model wykorzystuje pulę piramid przestrzennych do zbierania informacji o większym zakresie. Więcej informacji znajdziesz w DeepLab-v3.

Nazwa modelu Wprowadź kształt Typ kwantyzacji Wersje
DeepLab-V3 257 x 257 Brak (float32) Najnowsze

Testy porównawcze działań

Oto porównania zadań dla całego potoku na podstawie powyższych wytrenowanych modeli. Wynik opóźnienia to średnie opóźnienie na Pixelu 6 przy użyciu procesora / GPU.

Nazwa modelu Czas oczekiwania procesora Opóźnienie GPU
Narzędzie do segmentacji selfie (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