Narzędzie do rozpoznawania gestów MediaPipe umożliwia rozpoznawanie gestów w czasie rzeczywistym. udostępnia rozpoznane gesty dłoni wraz z punktami orientacyjnymi wykryte ręce. Możesz używać tego zadania do rozpoznawania określonych gestów użytkownika i wywoływać funkcje aplikacji odpowiadające tym gestom.
To zadanie działa na danych obrazów z użyciem modelu systemów uczących się i akceptuje ze statycznym lub ciągłym strumieniem. Zadanie wyświetla punkty orientacyjne w języku: współrzędne obrazu, punkty orientacyjne we współrzędnych świata, ręka (lewa/prawa ręka) i kategorie gestów dla wielu rąk.
Rozpocznij
Aby zacząć z niego korzystać, postępuj zgodnie z jednym z tych przewodników po implementacji platformy docelowej. Te przewodniki dotyczące konkretnych platform przeprowadzą Cię przez wdrożenia tego zadania przy użyciu zalecanego modelu i podanie przykładów kodu z zalecanymi opcjami konfiguracji:
- Android – Przykładowy kod – Przewodnik
- Python – przykładowy kod – Przewodnik
- Sieć – Przykładowy kod – Przewodnik
Szczegóły zadania
W tej sekcji opisujemy możliwości, dane wejściowe, wyjściowe i konfigurację. aby wykonać tę czynność.
Funkcje
- Wprowadzanie obrazów – przetwarzanie obrazu – przetwarzanie obejmuje obrót, zmianę rozmiaru normalizację i konwersję przestrzeni kolorów.
- Próg wyniku – filtruj wyniki na podstawie wyników prognozy.
- Lista dozwolonych etykiet i list odrzuconych – określ kategorie gestów rozpoznane przez model.
Dane wejściowe zadania | Wyniki zadania |
---|---|
Moduł do rozpoznawania gestów akceptuje dane wejściowe jednego z tych typów:
|
Moduł rozpoznawania gestów generuje te wyniki:
|
Opcje konfiguracji
To zadanie zawiera te opcje konfiguracji:
Nazwa opcji | Opis | Zakres wartości | Wartość domyślna | |
---|---|---|---|---|
running_mode |
Ustawia tryb działania zadania. Są trzy
tryby: IMAGE: tryb wprowadzania pojedynczego obrazu. WIDEO: tryb zdekodowanych klatek filmu. LIVE_STREAM: tryb transmisji danych wejściowych na przykład z kamery. W tym trybie detektor wyników musi mieć wartość wywołano, aby skonfigurować detektor i otrzymywać wyniki asynchronicznie. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
|
num_hands |
Maksymalną liczbę rąk może wykryć
GestureRecognizer .
|
Any integer > 0 |
1 |
|
min_hand_detection_confidence |
Minimalny wskaźnik ufności, jaki musi osiągnąć wykrywanie ręki uznane za udane w modelu wykrywania dłoni. | 0.0 - 1.0 |
0.5 |
|
min_hand_presence_confidence |
Minimalny wynik ufności dłoni na ręce model wykrywania punktów orientacyjnych. W trybie wideo i trybie transmisji na żywo modułu rozpoznawania gestów jeśli wynik pewności obecności ręki z modelu punktu orientacyjnego ręki jest poniżej ten próg aktywuje model wykrywania dłoni. W przeciwnym razie lekki algorytm śledzenia dłoni jest używany do określania lokalizacji ręce do późniejszego wykrycia punktu orientacyjnego. | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
Minimalny wskaźnik ufności, z którego można korzystać podczas śledzenia dłoni udało się. Jest to wartość progowa współczynnika podobieństwa między dłońmi bieżącej i ostatniej klatki. W trybie wideo i w trybie strumienia Moduł rozpoznawania gestów, jeśli śledzenie nie działa, moduł rozpoznawania gestów uruchamia dłoń wykrywaniem zagrożeń. W przeciwnym razie wykrywanie rąk zostanie pominięte. | 0.0 - 1.0 |
0.5 |
|
canned_gestures_classifier_options |
Opcje konfiguracji działania klasyfikatora gestów bazujących na szablonach. Gotowe gesty: ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"] |
|
|
|
custom_gestures_classifier_options |
Opcje konfigurowania działania klasyfikatora gestów niestandardowych. |
|
|
|
result_callback |
Konfiguruje detektor wyników, aby otrzymywać wyniki klasyfikacji
asynchronicznie, gdy moduł rozpoznawania gestów działa w trybie transmisji na żywo.
Tej opcji można używać tylko wtedy, gdy tryb działania jest ustawiony na LIVE_STREAM |
ResultListener |
Nie dotyczy | Nie dotyczy |
Modele
Moduł do rozpoznawania gestów używa pakietu modeli zawierającego dwa gotowe pakiety modeli: pakiet modeli dłoni i modelu klasyfikacji gestów. model punktu orientacyjnego wykrywa obecność rąk i ich geometrii oraz gest rozpoznaje gesty na podstawie ich geometrii.
Nazwa modelu | Wpisz kształt | Typ kwantyzacji | Karta modelu | Wersje |
---|---|---|---|---|
HandGestureClassifier | 192 x 192, 224 x 224 | liczba zmiennoprzecinkowa 16 | informacje | Najnowsze |
To zadanie obsługuje też modyfikowanie pakietu modeli za pomocą Kreatora modeli. Więcej informacji o dostosowywaniu modeli do tego zadania za pomocą Kreatora modeli zobacz stronę Dostosowywanie modeli do rozpoznawania gestów.
Pakiet modeli z ręką
Pakiet modeli rękodzieła wykrywa najważniejszą lokalizację 21 kastetów i współrzędnych w wykrytych obszarach dłoni. Model został wytrenowany ok. 30 tys. rzeczywistych obrazów oraz kilka renderowanych zdjęć syntetycznych. narzucanych na różne tła. Definicję 21 punktów orientacyjnych znajdziesz poniżej:
Pakiet modeli punktów orientacyjnych dłoni zawiera model wykrywania dłoni model wykrywania punktów orientacyjnych na dłoni. Model wykrywania dłoni lokalizuje region dłoni z całego zdjęcia wejściowego, a model wykrywający punkty orientacyjne na przyciętym obrazie dłoni zdefiniowanego przez model wykrywania dłoni.
Model wykrywania dłoni jest znacznie bardziej czasochłonny w trybie wideo lub na żywo trybu strumienia, Rozpoznawanie gestów używa ramki ograniczającej zdefiniowanej przez wykrytą rękę punkty orientacyjne w bieżącej ramce, aby zlokalizować obszar rąk w następnej kolejności ramki. Zmniejsza to liczbę przypadków wyzwalania przez czytnik gestów wyzwalania modelu wykrywania dłoni. Tylko wtedy, gdy model punktów orientacyjnych w rękach nie może określić wystarczająco wymaganych liczba obecności rąk lub śledzenie rąk się nie udaje, model wykrywania dłoni jest w celu zmiany lokalizacji rąk.
Pakiet modeli klasyfikacji gestów
Pakiet modeli klasyfikacji gestów rozpoznaje te typowe gesty:
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 dłonie, ale nie rozpozna gestu, moduł rozpoznawania zwraca wynik „None” (Brak). Jeśli model nie wykryje rąk, moduł rozpoznawania gestów zwraca wartość pustą.
Pakiet modeli klasyfikacji gestów zawiera dwuetapowy potok sieci neuronowej z modelem umieszczania gestów oraz modelem klasyfikacji gestów. Szczegółowe informacje znajdziesz w artykule Karta modelu klasyfikacji gestów.
model osadzania gestów koduje cechy obrazu jako wektor cech, model klasyfikacji to prosty klasyfikator gestów, który wykorzystuje funkcję jako wektor. Podany pakiet modeli klasyfikacji gestów zawiera klasyfikator gestów bazujących na szablonie, który wykrywa 7 najczęściej wprowadzonych gestów powyżej. Możesz rozszerzyć pakiet modeli, aby rozpoznawał więcej gestów przez trenowanie za pomocą własnego klasyfikatora gestów. Więcej szczegółów znajdziesz w tych artykułach: Sekcja Modele niestandardowe.
Moduł do rozpoznawania gestów z klasyfikatorem gestów bazujących na szablonie i klasyfikatorem gestów niestandardowych preferuje gest niestandardowy, jeśli oba klasyfikatory rozpoznają ten sam gest w ich kategoriach. Jeśli tylko 1 klasyfikator gestów rozpozna gest, Rozpoznawanie gestów bezpośrednio generuje rozpoznany gest.
Testy porównawcze zadań
Oto testy porównawcze zadań dla całego potoku przygotowane na podstawie powyższych danych już wytrenowanych modeli. Wynik opóźnienia to średnie opóźnienie na Pixelu 6 przy użyciu: CPU / GPU.
Nazwa modelu | Opóźnienie procesora | Opóźnienie GPU |
---|---|---|
GestureRecognizer | 16,76 ms | 20,87 ms |
Modele niestandardowe
Jeśli chcesz zwiększyć lub zmienić możliwości modeli dostępnych w tym
możesz za pomocą Kreatora modeli modyfikować istniejące modele. Używane modele niestandardowe
z MediaPipe musi być w formacie .task
, który jest plikiem pakietu modeli. Ty
powinien rozważyć skorzystanie z Kreatora modeli, aby zmodyfikować podane modele
zanim utworzysz własny.
Więcej informacji o dostosowywaniu modelu na potrzeby tego zadania znajdziesz w sekcji Dostosuj modele do rozpoznawania gestów.