Dengan tugas Pengenal Gestur MediaPipe, Anda dapat mengenali gestur tangan secara real time, dan memberikan hasil gestur tangan yang dikenali beserta penanda dari tangan yang terdeteksi. Anda dapat menggunakan tugas ini untuk mengenali gestur tangan tertentu dari pengguna, dan memanggil fitur aplikasi yang sesuai dengan gestur tersebut.
Tugas ini beroperasi pada data gambar dengan model machine learning (ML), dan menerima data statis atau aliran berkelanjutan. Tugas ini menghasilkan penanda tangan dalam koordinat gambar, penanda tangan dalam koordinat dunia, preferensi tangan (tangan kiri/kanan), dan kategori gestur tangan dari beberapa tangan.
Mulai
Mulai gunakan tugas ini dengan mengikuti salah satu panduan penerapan berikut untuk platform target Anda. Panduan khusus platform ini akan memandu Anda melakukan penerapan dasar tugas ini, menggunakan model yang direkomendasikan, dan memberikan contoh kode dengan opsi konfigurasi yang direkomendasikan:
- Android - Contoh kode
- Python - Contoh kode
- Web - [Contoh kode](https://github.com/google-ai-edge/mediapipe-samples-web/blob/main/src/tasks/gesture-recognizer.ts - Panduan
Detail tugas
Bagian ini menjelaskan kemampuan, input, output, dan opsi konfigurasi tugas ini.
Fitur
- Pemrosesan gambar input - Pemrosesan mencakup rotasi, pengubahan ukuran, normalisasi, dan konversi ruang warna gambar.
- Nilai minimum - Memfilter hasil berdasarkan skor prediksi.
- Daftar yang diizinkan dan daftar tolak label - Tentukan kategori gestur yang dikenali oleh model.
| Input tugas | Output tugas |
|---|---|
Pengenal Gestur menerima input salah satu jenis data berikut:
|
Pengenal Gestur menampilkan hasil berikut:
|
Opsi konfigurasi
Tugas ini memiliki opsi konfigurasi berikut:
| Nama Opsi | Deskripsi | Rentang Nilai | Nilai Default | |
|---|---|---|---|---|
running_mode |
Menetapkan mode berjalan untuk tugas. Ada tiga mode: GAMBAR: Mode untuk input gambar tunggal. VIDEO: Mode untuk frame video yang didekode. LIVE_STREAM: Mode untuk livestream data input, seperti dari kamera. Dalam mode ini, resultListener harus dipanggil untuk menyiapkan pemroses guna menerima hasil secara asinkron. |
{IMAGE, VIDEO, LIVE_STREAM} |
IMAGE |
|
num_hands |
Jumlah maksimum tangan yang dapat dideteksi oleh
GestureRecognizer.
|
Any integer > 0 |
1 |
|
min_hand_detection_confidence |
Skor keyakinan minimum agar deteksi tangan dianggap berhasil dalam model deteksi telapak tangan. | 0.0 - 1.0 |
0.5 |
|
min_hand_presence_confidence |
Skor keyakinan minimum skor kehadiran tangan dalam model deteksi penanda tangan. Dalam mode Video dan mode Live stream Gesture Recognizer, jika skor keyakinan kehadiran tangan dari model penanda tangan di bawah nilai minimum ini, model deteksi telapak tangan akan dipicu. Jika tidak, algoritma pelacakan tangan ringan digunakan untuk menentukan lokasi tangan untuk deteksi titik penting berikutnya. | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
Skor keyakinan minimum agar pelacakan tangan dianggap berhasil. Ini adalah nilai minimum IoU kotak pembatas antara tangan dalam frame saat ini dan frame terakhir. Dalam mode Video dan mode Streaming Gesture Recognizer, jika pelacakan gagal, Gesture Recognizer akan memicu deteksi tangan. Jika tidak, deteksi tangan akan dilewati. | 0.0 - 1.0 |
0.5 |
|
canned_gestures_classifier_options |
Opsi untuk mengonfigurasi perilaku pengklasifikasi gestur bawaan. Gestur tersimpan adalah ["None", "Closed_Fist", "Open_Palm", "Pointing_Up", "Thumb_Down", "Thumb_Up", "Victory", "ILoveYou"] |
|
|
|
custom_gestures_classifier_options |
Opsi untuk mengonfigurasi perilaku pengklasifikasi gestur kustom. |
|
|
|
result_callback |
Menetapkan pemroses hasil untuk menerima hasil klasifikasi
secara asinkron saat pengenal gestur berada dalam mode live stream.
Hanya dapat digunakan jika mode operasi disetel ke LIVE_STREAM |
ResultListener |
T/A | T/A |
Model
Gesture Recognizer menggunakan paket model dengan dua paket model yang telah dikemas sebelumnya: paket model penanda tangan dan paket model klasifikasi gestur. Model landmark mendeteksi keberadaan tangan dan geometri tangan, dan model pengenalan gestur mengenali gestur berdasarkan geometri tangan.
| Nama model | Bentuk input | Jenis kuantisasi | Kartu Model | Versi |
|---|---|---|---|---|
| HandGestureClassifier | 192 x 192, 224 x 224 | float 16 | info | Terbaru |
Tugas ini juga mendukung modifikasi paket model menggunakan Model Maker. Untuk mengetahui informasi selengkapnya tentang penggunaan Model Maker untuk menyesuaikan model bagi tugas ini, lihat halaman Menyesuaikan model untuk Gesture Recognizer.
Paket model penanda tangan
Paket model penanda tangan mendeteksi pelokalan titik utama dari 21 koordinat buku jari tangan dalam wilayah tangan yang terdeteksi. Model ini dilatih menggunakan sekitar 30 ribu gambar dunia nyata, serta beberapa model tangan sintetis yang dirender dan ditempatkan di berbagai latar belakang. Lihat definisi 21 landmark di bawah:

Paket model penanda titik acuan tangan berisi model deteksi telapak tangan dan model deteksi penanda titik acuan tangan. Model deteksi telapak tangan melokalkan area tangan dari seluruh gambar input, dan model deteksi penanda tangan menemukan penanda pada gambar tangan yang dipangkas yang ditentukan oleh model deteksi telapak tangan.
Karena model deteksi telapak tangan lebih memakan waktu, dalam mode Video atau mode Live stream, Pengenal Gestur menggunakan kotak pembatas yang ditentukan oleh penanda tangan yang terdeteksi dalam frame saat ini untuk melokalkan wilayah tangan dalam frame berikutnya. Hal ini mengurangi frekuensi Pemicu Pengenal Gestur memicu model deteksi telapak tangan. Hanya jika model penanda tangan tidak dapat lagi mengidentifikasi kehadiran tangan dalam jumlah yang cukup, atau pelacakan tangan gagal, model deteksi telapak tangan dipanggil untuk melokalisasi ulang tangan.
Paket model klasifikasi gestur
Paket model klasifikasi Gestur dapat mengenali gestur tangan umum berikut:
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
Jika model mendeteksi tangan, tetapi tidak mengenali gestur, pengenal gestur akan menampilkan hasil "Tidak Ada". Jika model tidak mendeteksi tangan, pengenal gestur akan menampilkan hasil kosong.
Paket model klasifikasi gestur berisi pipeline jaringan neural dua langkah dengan model penyematan gestur yang diikuti oleh model klasifikasi gestur. Lihat detail selengkapnya di kartu model klasifikasi gestur.
Model penyematan gestur mengenkode fitur gambar ke dalam vektor fitur, dan model klasifikasi adalah pengklasifikasi gestur ringan yang menggunakan vektor fitur sebagai input. Paket model klasifikasi gestur yang disediakan berisi pengklasifikasi gestur standar, yang mendeteksi 7 gestur tangan umum yang diperkenalkan di atas. Anda dapat memperluas paket model untuk mengenali lebih banyak gestur dengan melatih pengklasifikasi gestur kustom Anda sendiri. Lihat detail selengkapnya di bagian Model kustom berikut.
Pengenal Gestur dengan pengklasifikasi gestur bawaan dan pengklasifikasi gestur kustom lebih memilih gestur kustom jika kedua pengklasifikasi mengenali gestur yang sama dalam kategorinya. Jika hanya satu pengklasifikasi gestur yang mengenali gestur, Pengenal Gestur akan menghasilkan gestur yang dikenali secara langsung.
Tolok ukur tugas
Berikut adalah tolok ukur tugas untuk seluruh pipeline berdasarkan model pra-latih di atas. Hasil latensi adalah latensi rata-rata di Pixel 6 menggunakan CPU / GPU.
| Nama Model | Latensi CPU | Latensi GPU |
|---|---|---|
| GestureRecognizer | 16,76 md | 20,87 md |
Model kustom
Jika ingin meningkatkan atau mengubah kemampuan model yang disediakan dalam tugas ini, Anda dapat menggunakan Model Maker untuk mengubah model yang ada. Model kustom yang digunakan dengan MediaPipe harus dalam format .task, yang merupakan file paket model. Anda
harus mempertimbangkan untuk menggunakan Model Maker guna mengubah model yang disediakan untuk tugas ini
sebelum membuat model Anda sendiri.
Untuk mengetahui informasi selengkapnya tentang cara menyesuaikan model untuk tugas ini, lihat Menyesuaikan model untuk Gesture Recognizer.