Zadanie Wykrywacz twarzy MediaPipe umożliwia wykrywanie twarzy na zdjęciu lub filmie. Dzięki temu możesz zlokalizować twarze w kadrze. To zadanie wykorzystuje model systemów uczących się (ML), który działa z pojedynczymi obrazami lub ciągłym strumieniem obrazów. Zadanie określa lokalizacje twarzy i uwzględnia te najważniejsze punkty: lewe i prawe oko, opuszka nosa, usta, tragie dla lewego oka oraz tragie w prawym oku.
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 – przewodnik
- Sieć – przykładowy kod – przewodnik
- iOS – 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.
- Próg wyniku – filtrowanie wyników na podstawie wyników prognozy.
Dane wejściowe zadań | Wyniki działania |
---|---|
Wykrywacz twarzy akceptuje dane jednego z tych typów:
|
Wykrywacz twarzy generuje następujące wyniki:
|
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 |
min_detection_confidence |
Minimalny stopień pewności, że wykrywanie twarzy zostanie uznane za udane. | Float [0,1] |
0.5 |
min_suppression_threshold |
Minimalny próg niemaksymalnego ograniczenia wykrywania twarzy, który ma być uznawany za nakładający się. | Float [0,1] |
0.3 |
result_callback |
Powoduje, że detektor wyników będzie asynchronicznie otrzymywać wyniki wykrywania, gdy czytnik twarzy działa w trybie transmisji na żywo. Tej opcji można używać tylko wtedy, gdy tryb biegowy jest ustawiony na LIVE_STREAM . |
N/A |
Not set |
Modele
Modele wykrywania twarzy mogą się różnić w zależności od przeznaczenia, np. wykrywania małego i dużego zasięgu. Modele zwykle kompromiują też wymagania dotyczące wydajności, dokładności, rozdzielczości i zasobów, a w niektórych przypadkach zawierają dodatkowe funkcje.
Modele wymienione w tej sekcji to warianty BlazeFace – lekkiego i precyzyjnego wykrywania twarzy zoptymalizowanego pod kątem wnioskowania przez GPU. Modele BlazeFace nadają się do takich zastosowań jak szacowanie kluczowych punktów twarzy w 3D, klasyfikacja ekspresji i segmentacja obszarów twarzy. BlazeFace korzysta z lekkiej sieci wyodrębniania funkcji podobnej do MobileNetV1/V2.
BlazeFace (krótki zasięg)
Lekki model do wykrywania pojedynczych twarzy lub wielu twarzy na zdjęciach przypominających selfie, które robi się aparaty fotograficzne lub kamery w smartfonie. Model jest zoptymalizowany pod kątem zdjęć z krótkiego zakresu wykonanego przednim aparatem telefonu. W architekturze modelu wykorzystywana jest technika splotowa detektora pojedynczego zdjęcia (SSD) z własnym koderem. Więcej informacji znajdziesz w publikacji badawczej na temat wykrywacza wielofunkcyjnego pojedynczego ujęcia.
Nazwa modelu | Wprowadź kształt | Typ kwantyzacji | Karta modelu | Wersje |
---|---|---|---|---|
BlazeFace (krótki zasięg) | 128 x 128 | liczba zmiennoprzecinkowa 16 | informacje | Najnowsze |
BlazeFace (pełny zakres)
Względnie lekki model do wykrywania pojedynczych twarzy lub wielu twarzy na zdjęciach zrobionych za pomocą aparatu lub kamery internetowej w smartfonie. Model jest zoptymalizowany pod kątem zdjęć w pełnym zakresie, np. wykonanych tylnym aparatem telefonu. Architektura modelu korzysta z metody podobnej do sieci splotowej CenterNet z niestandardowym koderem.
Nazwa modelu | Wprowadź kształt | Typ kwantyzacji | Karta modelu | Wersje |
---|---|---|---|---|
BlazeFace (pełny zakres) | 128 x 128 | liczba zmiennoprzecinkowa 16 | informacje | Wkrótce |
BlazeFace Sparse (pełny zakres)
Lżejsza wersja zwykłego, pełnozakresowego modelu BlazeFace. Jest mniejsza o około 60%. Model jest zoptymalizowany pod kątem zdjęć w pełnym zakresie, np. wykonanych tylnym aparatem telefonu. W architekturze modelu stosowana jest technika podobna do metody konwolucyjnej CenterNet z własnym koderem.
Nazwa modelu | Wprowadź kształt | Typ kwantyzacji | Karta modelu | Wersje |
---|---|---|---|---|
BlazeFace Sparse (pełny zakres) | 128 x 128 | liczba zmiennoprzecinkowa 16 | informacje | Wkrótce |
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 korzystającym z procesora / GPU.
Nazwa modelu | Czas oczekiwania procesora | Opóźnienie GPU |
---|---|---|
BlazeFace (krótki zasięg) | 2,94 ms | 7,41 ms |