Zadanie MediaPipe Face Detector umożliwia wykrywanie twarzy na obrazie lub w filmie. Możesz użyć tego zadania, aby zlokalizować twarze i cechy twarzy w ramce. To zadanie wykorzystuje model uczenia maszynowego, który działa z pojedynczymi obrazami lub ciągłym strumieniem obrazów. Usługa zwraca lokalizacje twarzy wraz z tymi punktami kluczowymi: lewe oko, prawe oko, czubek nosa, usta, lewy i prawy punkt tragion.
Rozpocznij
Aby zacząć korzystać z tego zadania, postępuj zgodnie z jednym z tych przewodników po implementacji na platformie docelowej. Te przewodniki dotyczące poszczególnych platform zawierają podstawowe informacje o wdrażaniu tego zadania, w tym zalecany model i przykładowy kod z zalecanymi opcjami konfiguracji:
- Android - Przykład kodu - Przewodnik
- Python - Przykład kodu - Przewodnik
- Sieć – przykład kodu – 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 obracanie obrazu, zmianę rozmiaru, normalizację i konwersję przestrzeni kolorów.
- Próg wyniku – filtruj wyniki na podstawie wyników prognozy.
| Dane wejściowe zadania | Dane wyjściowe działania |
|---|---|
Wykrywacz twarzy akceptuje dane wejściowe w jednym z tych typów:
|
Detektor twarzy zwraca te wyniki:
|
Opcje konfiguracji
To zadanie ma te opcje konfiguracji:
| Nazwa opcji | Opis | Zakres wartości | Wartość domyślna |
|---|---|---|---|
running_mode |
Ustawia tryb uruchamiania zadania. Dostępne są 3 tryby: OBRAZ: tryb dla pojedynczych obrazów. WIDEO: tryb dla zdekodowanych klatek filmu. LIVE_STREAM: tryb transmisji na żywo danych wejściowych, np. z kamery. W tym trybie należy wywołać funkcję resultListener, aby skonfigurować odbiornik do asynchronicznego odbierania wyników. |
{IMAGE, VIDEO, LIVE_STREAM} |
IMAGE |
min_detection_confidence |
Minimalny poziom ufności, przy którym wykrywanie twarzy jest uznawane za udane. | Float [0,1] |
0.5 |
min_suppression_threshold |
Minimalny próg tłumienia niemaksymalnego, przy którym wykrywanie twarzy jest uznawane za nakładające się. | Float [0,1] |
0.3 |
result_callback |
Ustawia odbiornik wyników, aby asynchronicznie odbierać wyniki wykrywania, gdy detektor twarzy jest w trybie transmisji na żywo. Można go używać tylko wtedy, gdy tryb działania jest ustawiony na LIVE_STREAM. |
N/A |
Not set |
Modele
Modele wykrywania twarzy mogą się różnić w zależności od zamierzonego zastosowania, np. wykrywania z bliskiej lub dalekiej odległości. Modele zwykle wymagają kompromisu między wydajnością, dokładnością, rozdzielczością i wymaganiami dotyczącymi zasobów, a w niektórych przypadkach zawierają dodatkowe funkcje.
Modele wymienione w tej sekcji to warianty BlazeFace, lekkiego i dokładnego detektora twarzy zoptymalizowanego pod kątem wnioskowania na mobilnych procesorach graficznych. Modele BlazeFace nadają się do zastosowań takich jak szacowanie kluczowych punktów twarzy w 3D, klasyfikacja wyrazu twarzy i segmentacja obszaru twarzy. BlazeFace korzysta z lekkiej sieci do wyodrębniania cech podobnej do MobileNetV1/V2.
BlazeFace (krótki zasięg)
Lekki model do wykrywania jednej lub wielu twarzy na zdjęciach typu selfie z aparatu smartfona lub kamery internetowej. Model jest zoptymalizowany pod kątem zdjęć z przedniego aparatu telefonu zrobionych z bliskiej odległości. Architektura modelu wykorzystuje technikę sieci konwolucyjnej Single Shot Detector (SSD) z niestandardowym koderem. Więcej informacji znajdziesz w artykule naukowym na temat Single Shot MultiBox Detector.
| Nazwa modelu | Kształt wejściowy | Typ kwantyzacji | Karta modelu | Wersje |
|---|---|---|---|---|
| BlazeFace (krótkiego zasięgu) | 128 x 128 | float 16 | informacje | Najnowsze |
BlazeFace (pełny zakres)
Stosunkowo lekki model do wykrywania jednej lub wielu twarzy na zdjęciach z aparatu smartfona lub kamery internetowej. Model jest zoptymalizowany pod kątem obrazów o pełnym zakresie, takich jak zdjęcia zrobione tylnym aparatem telefonu. Architektura modelu wykorzystuje technikę podobną do sieci konwolucyjnej CenterNet z niestandardowym koderem.
| Nazwa modelu | Kształt wejściowy | Typ kwantyzacji | Karta modelu | Wersje |
|---|---|---|---|---|
| BlazeFace (full-range) | 128 x 128 | float 16 | informacje | Najnowsze |
BlazeFace Sparse (pełny zakres)
Lżejsza wersja zwykłego modelu BlazeFace o pełnym zakresie, około 60% mniejsza. Model jest zoptymalizowany pod kątem obrazów o pełnym zakresie, takich jak zdjęcia zrobione tylnym aparatem telefonu. Architektura modelu wykorzystuje technikę podobną do sieci konwolucyjnej CenterNet z niestandardowym koderem.
| Nazwa modelu | Kształt wejściowy | Typ kwantyzacji | Karta modelu | Wersje |
|---|---|---|---|---|
| BlazeFace Sparse (full-range) | 128 x 128 | float 16 | informacje | Najnowsze |
Testy porównawcze zadań
Poniżej znajdziesz testy porównawcze zadań dla całego potoku na podstawie powyższych wstępnie wytrenowanych modeli. Wynik czasu oczekiwania to średni czas oczekiwania na Pixelu 6 przy użyciu procesora lub GPU.
| Nazwa modelu | Opóźnienie procesora | Opóźnienie GPU |
|---|---|---|
| BlazeFace (krótki zasięg) | 2,94 ms | 7,41 ms |