Przewodnik wykrywania punktów orientacyjnych dłoni

Dłoń trzymająca jajko. Kształt ręki jest oznaczony zarysem, który wskazuje zidentyfikowaną strukturę

Zadanie MediaPipe Hand Landmarker umożliwia wykrywanie punktów orientacyjnych dłoni na obrazie. Za pomocą tego zadania możesz zlokalizować kluczowe punkty dłoni i renderować na nich efekty wizualne. To zadanie działa na danych obrazów z modelem uczenia maszynowego (ML) jako dane statyczne lub ciągły strumień i wydaje punkty odniesienia dłoni w współrzędnych obrazu, punkty odniesienia dłoni w współrzędnych świata oraz rękę(lewą lub prawą) w przypadku wielu wykrytych rąk.

Wypróbuj to!

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:

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
Narzędzie Hand Landmarker akceptuje dane wejściowe w jednym z tych typów:
  • obrazy nieruchome,
  • Dekodowane klatki wideo
  • Transmisja na żywo
Funkcja Hand Landmarker zwraca te wyniki:
  • Dominująca ręka w przypadku wykrywanych dłoni
  • Punkty orientacyjne wykrytych rąk w współrzędnych obrazu
  • Punkty orientacyjne wykrytych rąk w współrzędnych globalnych

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
num_hands Maksymalna liczba rąk wykrywana przez detektor punktów orientacyjnych dłoni. Any integer > 0 1
min_hand_detection_confidence Minimalny wynik ufności wykrywania dłoni, który jest uznawany za udany w przypadku modelu wykrywania dłoni. 0.0 - 1.0 0.5
min_hand_presence_confidence Minimalny wynik 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 z modelu punktów orientacyjnych ręki jest poniżej tego progu, funkcja Hand Landmarker uruchamia model wykrywania dłoni. W przeciwnym razie lekki algorytm śledzenia dłoni określa położenie dłoni na potrzeby wykrywania kolejnych punktów orientacyjnych. 0.0 - 1.0 0.5
min_tracking_confidence Minimalny wynik ufności śledzenia dłoni, który jest uznawany za udany. To próg współczynnika podobieństwa ramki ograniczającej między dłońmi w bieżącej i ostatniej ramie. W trybie wideo i trybie strumieniowania w Hand Landmarker, jeśli śledzenie się nie powiedzie, Hand Landmarker uruchamia wykrywanie dłoni. W przeciwnym razie pomija wykrywanie dłoni. 0.0 - 1.0 0.5
result_callback Ustawia odbiornik wyników w celu asynchronicznego otrzymywania wyników wykrywania, gdy punkt odniesienia ręki jest w trybie transmisji na żywo. Ma zastosowanie tylko wtedy, gdy tryb działania ma wartość LIVE_STREAM Nie dotyczy Nie dotyczy

Modele

Narzędzie Hand Landmarker korzysta z paczki modeli z 2 modelami: modelem wykrywania dłoni i modelem wykrywania punktów orientacyjnych dłoni. Aby wykonać to zadanie, potrzebujesz pakietu modeli zawierającego oba te modele.

Nazwa modelu Kształt wejściowy Typ kwantowania Karta modelu Wersje
HandLandmarker (pełny) 192 x 192, 224 x 224 float 16 info Najnowsze

Pakiet modeli punktów orientacyjnych dłoni wykrywa lokalizację punktów kluczowych 21 współrzędnych stawów palców dłoni w wykrytych regionach dłoni. Model został wytrenowany na około 30 tys. zdjęć rzeczywistych oraz kilku wyrenderowanych syntetycznych modeli dłoni na różnych tłach.

Pakiet modeli punktów charakterystycznych dłoni zawiera model wykrywania dłoni i model wykrywania punktów charakterystycznych dłoni. Model wykrywania dłoni wykrywa dłonie na obrazie wejściowym, a model wykrywania punktów orientacyjnych dłoni identyfikuje określone punkty orientacyjne dłoni na wyciętym obrazie dłoni zdefiniowanym przez model wykrywania dłoni.

Uruchomienie modelu wykrywania dłoni jest czasochłonne, dlatego w trybie strumieniowego przetwarzania wideo lub transmisji na żywo Hand Landmarker używa ramki ograniczającej zdefiniowanej przez model punktów orientacyjnych dłoni w jednym ujęciu, aby zlokalizować obszar dłoni w kolejnych ujęciach. Hand Landmarker ponownie uruchamia model wykrywania dłoni tylko wtedy, gdy model punktów orientacyjnych dłoni nie rozpoznaje już obecności dłoni lub nie może śledzić dłoni w ramce. Zmniejsza to liczbę przypadków, w których wskaźnik Hand Landmarker uruchamia model wykrywania dłoni.

Porównania zadań

Poniżej znajdziesz benchmarki zadań dla całego przepływu danych opartego na wytrenowanych wstępnie modelach. Wynik opóźnienia to średnie opóźnienie na Pixelu 6 z wykorzystaniem procesora CPU lub GPU.

Nazwa modelu Czas oczekiwania procesora Opóźnienie GPU
HandLandmarker (full) 17,12 ms 12,27 ms