Zadanie MediaPipe Hand Pointer umożliwia wykrywanie punktów orientacyjnych dłoni na zdjęciu. Możesz korzystać z tego zadania, aby znajdować najważniejsze punkty rąk i renderować na nie efekty wizualne. To zadanie polega na wykorzystaniu modelu systemów uczących się w postaci danych statycznych lub ciągłego strumienia i generuje punkty orientacyjne we współrzędnych obrazu, punkty orientacyjne we współrzędnych świata i ręka (lewa/prawa) wielu wykrytych rąk.
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
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 |
---|---|
Punkt orientacyjny ręcznie obsługuje dane wejściowe jednego z tych typów danych:
|
Punkt orientacyjny ręcznie 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 |
num_hands |
Maksymalna liczba rąk wykrytych przez detektor punktów orientacyjnych dłoni. | Any integer > 0 |
1 |
min_hand_detection_confidence |
Minimalny stopień pewności, że wykrywanie dłoni zostanie uznane za udane w modelu wykrywania dłoni. | 0.0 - 1.0 |
0.5 |
min_hand_presence_confidence |
Minimalny wskaźnik ufności dla wyniku obecności ręki w modelu wykrywania punktów orientacyjnych ręki. W trybie wideo i w trybie transmisji na żywo, jeśli wskaźnik ufności obecności ręki dla modelu punktu orientacyjnego dłoni jest poniżej tego progu, komponent wskazuje rękę ręcznie uruchamia model wykrywania dłoni. W przeciwnym razie do wykrywania punktów orientacyjnych potrzebny jest uproszczony algorytm śledzenia dłoni. | 0.0 - 1.0 |
0.5 |
min_tracking_confidence |
Minimalny wynik pewności, że śledzenie dłoni zostanie uznane za udane. Jest to próg interfejsu użytkownika w ramce ograniczającej między rękami w bieżącej a ostatniej klatce. W trybie wideo i trybie strumienia Wskaźnika ręcznego, jeśli śledzenie nie powiedzie się, wskazujesz rękę ręcznie. W przeciwnym razie pomijane jest wykrywanie rąk. | 0.0 - 1.0 |
0.5 |
result_callback |
Konfiguruje detektor wyników, aby asynchronicznie otrzymywać wyniki wykrywania, gdy punkt orientacyjny z ręczną ręką działa w trybie transmisji na żywo.
Ma zastosowanie tylko wtedy, gdy tryb działania jest ustawiony na LIVE_STREAM |
Nie dotyczy | Nie dotyczy |
Modele
W rysunku orientacyjnym do dłoni używany jest pakiet modeli z 2 spakowanymi modelami: model do wykrywania dłoni i model wykrywania punktów orientacyjnych. Aby uruchomić to zadanie, musisz mieć pakiet modeli zawierający oba te modele.
Nazwa modelu | Wprowadź kształt | Typ kwantyzacji | Karta modelu | Wersje |
---|---|---|---|---|
HandLandmarker (pełny) | 192 x 192, 224 x 224 | liczba zmiennoprzecinkowa 16 | informacje | Najnowsze |
Pakiet z modelami punktów orientacyjnych „dłoń” wykrywa lokalizację punktów kluczowych 21 współrzędnych wskazujących na rękę w wykrytych obszarach dłoni. Model został wytrenowany na około 30 tys. rzeczywistych obrazów, a także na kilku wyrenderowanych syntetycznych modelach dłoni nałożonych na różne tła.
Pakiet z modelami orientacyjnymi dłoni zawiera model wykrywania dłoni i model wykrywania punktów orientacyjnych. Model wykrywania dłoni znajduje dłonie na zdjęciu wyjściowym, a ten model identyfikuje konkretne punkty orientacyjne na przyciętym zdjęciu dłoni zdefiniowanym przez model wykrywania dłoni.
Uruchamianie modelu wykrywania dłoni jest czasochłonne, więc w trybie pokazu slajdów w filmach lub transmisjach na żywo narzędzie Hand Kraina używa ramki ograniczającej zdefiniowanej przez model punktów orientacyjnych w jednej klatce, aby zlokalizować dłonie na kolejnych klatkach. Narzędzie do oznaczania dłoni ponownie uruchamia model wykrywania dłoni tylko wtedy, gdy model punktów orientacyjnych nie wykrywa już obecności rąk lub nie śledzi ich dłoni w kadrze. Powoduje to zmniejszenie liczby wywołań modelu wykrywania dłoni.
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 |
---|---|---|
HandLandmarker (pełny) | 17,12 ms | 12,27 ms |