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.
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:
- Android – przykładowy kod – przewodnik
- Python – przykładowy kod
- Sieć – przykładowy kod – przewodnik
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:
|
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:
|
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 |