Zadanie MediaPipe Gesture Recognizer umożliwia rozpoznawanie gestów dłoni w czasie rzeczywistym. Wyniki rozpoznawania gestów są wyświetlane wraz z miejscami rozpoznawania dłoni. Za pomocą tego zadania możesz rozpoznawać określone gesty użytkownika i wywoływać funkcje aplikacji odpowiadające tym gestom.
To zadanie działa na danych obrazów za pomocą modelu uczenia maszynowego (ML) i akceptuje dane statyczne lub ciągły strumień. Zadanie zwraca punkty orientacyjne dłoni w współrzędnych obrazu, punkty orientacyjne dłoni w współrzędnych globalnych, stronność (lewa/prawa ręka) oraz kategorie gestów dłoni.
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 przy użyciu zalecanego modelu oraz przykłady kodu z zalecanymi opcjami konfiguracji:
- Android – przykład kodu
- Python – przykład kodu
- Web – 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.
- Lista dozwolonych i zablokowanych etykiet – określ kategorie gestów rozpoznawanych przez model.
Dane wejściowe zadania | Dane wyjściowe |
---|---|
Rozpoznawanie gestów obsługuje dane wejściowe jednego z tych typów:
|
Moduł rozpoznawania gestów 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 |
|
num_hands |
Maksymalna liczba dłoni, które może wykryć GestureRecognizer , to
|
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 obecności ręki w modelu wykrywania punktów orientacyjnych ręki. W trybie wideo i w trybie transmisji na żywo usługi rozpoznawania gestów, jeśli wskaźnik ufności obecności ręki z modelu punktów orientacyjnych ręki jest poniżej tego progu, uruchamia model wykrywania dłoni. W przeciwnym razie do określenia lokalizacji dłoni(dłoni) w celu wykrywania punktów orientacyjnych używany jest lekki algorytm śledzenia dłoni. | 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 strumień w rozpoznawaniu gestów, jeśli śledzenie zawiedzie, rozpoznawanie gestów uruchamia wykrywanie ręki. W przeciwnym razie wykrywanie dłoni zostanie pominięte. | 0.0 - 1.0 |
0.5 |
|
canned_gestures_classifier_options |
Opcje konfiguracji zachowania klasyfikatora gotowych gestów. Gotowe gesty: ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"] |
|
|
|
custom_gestures_classifier_options |
Opcje konfiguracji zachowania klasyfikatora niestandardowych gestów. |
|
|
|
result_callback |
Ustawia odbiornik wyników w celu asynchronicznego otrzymywania wyników klasyfikacji, gdy rozpoznawacz gestów jest w trybie transmisji na żywo.
Można go używać tylko wtedy, gdy tryb działania ma wartość LIVE_STREAM . |
ResultListener |
Nie dotyczy | Nie dotyczy |
Modele
Rozpoznawanie gestów korzysta z paczki modeli zawierającej 2 wstępnie skompilowane pakiety modeli: pakiet modelu punktów orientacyjnych dłoni i pakiet modelu klasyfikacji gestów. Model rozpoznawania punktów orientacyjnych wykrywa obecność dłoni i geometrię dłoni, a model rozpoznawania gestów rozpoznaje gesty na podstawie geometrii dłoni.
Nazwa modelu | Kształt wejściowy | Typ kwantowania | Karta modelu | Wersje |
---|---|---|---|---|
HandGestureClassifier | 192 x 192, 224 x 224 | float 16 | info | Najnowsze |
To zadanie umożliwia też modyfikowanie pakietu modeli za pomocą Model Maker. Więcej informacji o używaniu narzędzia Model Maker do dostosowywania modeli do tego zadania znajdziesz na stronie Dostosowywanie modeli do rozpoznawania gestów.
Pakiet modeli punktów orientacyjnych dłoni
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. Poniżej znajdziesz definicje 21 punktów orientacyjnych:
Pakiet modeli punktów orientacyjnych dłoni zawiera model wykrywania dłoni i model wykrywania punktów orientacyjnych dłoni. Model wykrywania dłoni lokalizuje obszar dłoni na całym obrazie wejściowym, a model wykrywania punktów orientacyjnych dłoni znajduje punkty orientacyjne na wyciętym obrazie dłoni zdefiniowanym przez model wykrywania dłoni.
Model wykrywania dłoni jest znacznie bardziej czasochłonny, dlatego w trybie wideo lub strumieniowania na żywo rozpoznawanie gestów używa ramki ograniczającej zdefiniowanej przez wykryte punkty dłoni w bieżącym ujęciu, aby zlokalizować obszar dłoni w następnym ujęciu. Dzięki temu funkcja rozpoznawania gestów rzadziej uruchamia model wykrywania dłoni. Tylko wtedy, gdy model punktów orientacyjnych dłoni nie może już wykryć wystarczającej liczby dłoni lub śledzenie dłoni nie powiedzie się, model wykrywania dłoni jest wywoływany, aby ponownie zlokalizować dłonie.
Pakiet modeli klasyfikacji gestów
Pakiet modeli do klasyfikacji gestów może rozpoznawać te gesty dłoni:
0 - Unrecognized gesture, label: Unknown
1 - Closed fist, label: Closed_Fist
2 - Open palm, label: Open_Palm
3 - Pointing up, label: Pointing_Up
4 - Thumbs down, label: Thumb_Down
5 - Thumbs up, label: Thumb_Up
6 - Victory, label: Victory
7 - Love, label: ILoveYou
Jeśli model wykryje ręce, ale nie rozpozna gestu, zwraca wartość „Brak”. Jeśli model nie wykryje rąk, rozpoznawacz gestów zwróci pustą wartość.
Pakiet modeli do klasyfikowania gestów zawiera dwuetapowy przetwarzanie za pomocą sieci neuronowej: najpierw model osadzania gestów, a potem model klasyfikacji gestów. Więcej informacji znajdziesz na karcie modelu klasyfikacji gestów.
Model osadzania gestów koduje cechy obrazu w wektory cech, a model klasyfikacji jest lekkim klasyfikatorem gestów, który przyjmuje wektor cech jako dane wejściowe. Dostarczony pakiet modelu klasyfikacji gestów zawiera gotowy klasyfikator gestów, który wykrywa 7 opisanych powyżej typowych gestów dłoni. Możesz rozszerzyć pakiet modeli, aby rozpoznawać więcej gestów, trenując własny klasyfikator gestów. Więcej informacji znajdziesz w sekcji Modele niestandardowe.
Rozpoznawanie gestów z klasyfikatorem gotowych gestów i klasyfikatorem gestów niestandardowych preferuje gest niestandardowy, jeśli oba klasyfikatory rozpoznają ten sam gest w swoich kategoriach. Jeśli gest rozpoznaje tylko jeden klasyfikator, funkcja Gesture Recognizer bezpośrednio wygeneruje rozpoznany gest.
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 |
---|---|---|
GestureRecognizer | 16,76 ms | 20,87 ms |
Modele niestandardowe
Jeśli chcesz ulepszyć lub zmienić możliwości modeli udostępnionych w tym zadaniu, możesz zmodyfikować istniejące modele za pomocą Kreatora modeli. Modele niestandardowe używane z MediaPipe muszą być w formacie .task
, czyli pliku pakietu modelu. Przed utworzeniem własnych modeli warto użyć narzędzia Model Maker, aby zmodyfikować udostępnione modele do tego zadania.
Więcej informacji o dostosowywaniu modelu do tego zadania znajdziesz w artykule Dostosowywanie modeli do rozpoznawania gestów.