Zadanie MediaPipe Face Detector umożliwia wykrywanie twarzy na obrazie lub w filmie. Za pomocą tego zadania możesz zlokalizować twarze i cechy twarzy w ramce. W tym zadaniu używamy modelu uczenia maszynowego, który działa z pojedynczymi obrazami lub ciągłym strumieniem obrazów. Zadanie zwraca położenie twarzy oraz następujące punkty kluczowe twarzy: lewe oko, prawe oko, czubek nosa, usta, lewy kąt oka i prawy kąt oka.
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:
- Android – przykład kodu – przewodnik
 - Python – przykład kodu – przewodnik
 - Sieć – przykład kodu – przewodnik
 - iOS – przykład kodu – przewodnik
 
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.
 - Progień wyniku – filtrowanie wyników według progu wyniku prognozy.
 
| Dane wejściowe zadania | Dane wyjściowe | 
|---|---|
Detektor twarzy akceptuje dane wejściowe jednego 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 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 | 
      
      
    
min_detection_confidence | 
      Minimalny wynik ufności, który pozwala uznać wykrywanie twarzy za skuteczne. | Float [0,1] | 
      0.5 | 
    
min_suppression_threshold | 
      Minimalny próg wygaszania niemaksymalizowanego wykrywania twarzy, który ma być traktowany jako nakładanie się. | Float [0,1] | 
      0.3 | 
    
result_callback | 
      Gdy detektor twarzy jest w trybie transmisji na żywo, ustawia odbiornik wyników tak, aby otrzymywał wyniki asynchronicznie. Można go używać tylko wtedy, gdy tryb działania ma wartość LIVE_STREAM. | 
      N/A | 
      Not set | 
    
Modele
Modele wykrywania twarzy mogą się różnić w zależności od ich przeznaczenia, np. wykrywania z dużej lub małej odległości. Modele zwykle wymagają kompromisu między wydajnością, dokładnością, rozdzielczością i zasobami, a w niektórych przypadkach obejmują dodatkowe funkcje.
Modele wymienione w tej sekcji to warianty BlazeFace, lekkiego i dokładnego narzędzia do wykrywania twarzy zoptymalizowanego pod kątem wnioskowania na GPU w urządzeniach mobilnych. Modele BlazeFace nadają się do zastosowań takich jak szacowanie 3D punktów charakterystycznych twarzy, klasyfikacja wyrazu twarzy i segmentacja obszarów twarzy. BlazeFace korzysta z lekkie sieci do wyodrębniania cech, która jest podobna do MobileNetV1/V2.
BlazeFace (krótkodystansowy)
Lekki model do wykrywania pojedynczych lub wielu twarzy na zdjęciach typu selfie wykonanych za pomocą aparatu w smartfonie lub kamery internetowej. Model jest zoptymalizowany pod kątem zdjęć z przedniego aparatu telefonu w przypadku krótkiego zasięgu. Architektura modelu wykorzystuje technikę sieci konwolucyjnej Single Shot Detector (SSD) z niestandardowym koderem. Więcej informacji znajdziesz w artykule naukowym Single Shot MultiBox Detector.
| Nazwa modelu | Kształt wejściowy | Typ kwantowania | Karta modelu | Wersje | 
|---|---|---|---|---|
| BlazeFace (krótki zasięg) | 128 x 128 | float 16 | info | Najnowsze | 
BlazeFace (pełny zakres)
stosunkowo lekki model do wykrywania pojedynczych lub wielu twarzy na zdjęciach z aparatu w smartfonie lub kamery internetowej; Model jest zoptymalizowany pod kątem zdjęć o pełnym zakresie, takich jak zdjęcia zrobione tylnym aparatem telefonu. Architektura modelu wykorzystuje technikę podobną do sieci koniunkcyjnej CenterNet z niestandardowym koderem.
| Nazwa modelu | Kształt wejściowy | Typ kwantowania | Karta modelu | Wersje | 
|---|---|---|---|---|
| BlazeFace (pełny zakres) | 128 x 128 | float 16 | informacje | Wkrótce | 
BlazeFace Sparse (pełny zakres)
Lżejsza wersja zwykłego modelu BlazeFace o pełnym zakresie, mniejsza o około 60%. Model jest zoptymalizowany pod kątem obrazów o pełnym zakresie, takich jak zdjęcia wykonane aparatem tylnym telefonu. Architektura modelu wykorzystuje technikę podobną do sieci koniunkcyjnej CenterNet z niestandardowym koderem.
| Nazwa modelu | Kształt wejściowy | Typ kwantowania | Karta modelu | Wersje | 
|---|---|---|---|---|
| BlazeFace Sparse (pełny zakres) | 128 x 128 | float 16 | informacje | Wkrótce | 
Porównania zadań
Poniżej znajdziesz punkty odniesienia zadań dla całego potoku na podstawie wymienionych powyżej wstępnie wytrenowanych modeli. Wynik opóźnienia to średnie opóźnienie na Pixelu 6 z wykorzystaniem procesora CPU lub GPU.
| Nazwa modelu | Czas oczekiwania procesora | Opóźnienie GPU | 
|---|---|---|
| BlazeFace (krótkodystansowy) | 2,94 ms | 7,41 ms |