Przewodnik wykrywania punktów orientacyjnych dłoni

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.

Wypróbuj!

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:

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:
  • nieruchome obrazy;
  • Zdekodowane klatki wideo
  • Kanał z obrazem na żywo
Punkt orientacyjny ręcznie generuje następujące wyniki:
  • Ręka wykrytych rąk
  • Punkty orientacyjne wykrywanych dłoni we współrzędnych zdjęcia
  • Punkty orientacyjne zidentyfikowanych rąk we współrzędnych świata

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