Tugas Pengenal Gestur MediaPipe memungkinkan Anda mengenali gestur tangan secara real time, dan memberikan hasil gestur tangan yang dikenali beserta landmark tangan yang terdeteksi. Anda dapat menggunakan tugas ini untuk mengenali gestur tangan tertentu dari pengguna, dan memanggil fitur aplikasi yang sesuai dengan {i>gesture <i}tersebut.
Tugas ini beroperasi pada data gambar dengan model machine learning (ML), dan menerima data statis atau {i>continuous stream<i}. Tugas itu menghasilkan {i>landmark<i} di tangan koordinat gambar, penanda tangan dalam koordinat dunia, kekuasaan tangan (tangan kiri/kanan), dan kategori gestur tangan dari beberapa tangan.
Mulai
Mulai gunakan tugas ini dengan mengikuti salah satu panduan implementasi berikut untuk platform target. Panduan khusus platform ini memandu Anda memahami implementasi tugas ini, menggunakan model yang direkomendasikan, dan memberikan contoh kode dengan opsi konfigurasi yang direkomendasikan:
- Android - Contoh kode - Panduan
- Python - Contoh kode - Panduan
- Web - Contoh kode - Panduan
Detail tugas
Bagian ini menjelaskan kemampuan, input, output, dan konfigurasi opsi untuk tugas ini.
Fitur
- Pemrosesan gambar input - Pemrosesan mencakup rotasi gambar, pengubahan ukuran, normalisasi, dan konversi ruang warna.
- Ambang batas skor - Memfilter hasil berdasarkan skor prediksi.
- Daftar yang diizinkan dan tolak label - Menentukan kategori gestur dikenali oleh model.
Input tugas | Output tugas |
---|---|
Pengenal Gestur menerima input dari salah satu jenis data berikut:
|
Pengenal Gestur memberikan 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
moda: IMAGE: Mode untuk input gambar tunggal. VIDEO: Mode untuk frame video yang didekode. LIVE_STREAM: Mode untuk live stream input besar, seperti dari kamera. Dalam mode ini, resultListener harus dipanggil untuk menyiapkan pemroses yang akan 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 kepercayaan minimum untuk deteksi tangan dianggap berhasil dalam model deteksi telapak tangan. | 0.0 - 1.0 |
0.5 |
|
min_hand_presence_confidence |
Skor keyakinan minimum dari skor kehadiran tangan di tangan model deteksi landmark. Dalam mode Video dan mode Live stream Pengenal Gestur, jika skor keyakinan kehadiran tangan dari model penanda tangan di bawah ambang batas ini akan memicu model deteksi telapak tangan. Jika tidak, algoritma pelacakan tangan ringan digunakan untuk menentukan lokasi tangan untuk deteksi penanda berikutnya. | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
Skor keyakinan minimum untuk pelacakan tangan yang akan dipertimbangkan berhasil. Ini adalah ambang batas IoU kotak pembatas antara tangan di {i>frame<i} saat ini dan {i>frame<i} terakhir. Dalam mode Video dan mode Streaming Pengenal Gestur, jika pelacakan gagal, Pengenal Gestur akan memicu tangan deteksi. Jika tidak, deteksi tangan akan dilewati. | 0.0 - 1.0 |
0.5 |
|
canned_gestures_classifier_options |
Opsi untuk mengonfigurasi perilaku pengklasifikasi gestur terekam. Template pesan 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 saat mode lari disetel ke LIVE_STREAM |
ResultListener |
T/A | T/A |
Model
Pengenal Gestur menggunakan paket model dengan dua paket model yang telah dikemas sebelumnya: paket model penanda tangan dan paket model klasifikasi gestur. Tujuan model landmark mendeteksi kehadiran geometri tangan dan tangan, serta pengenalan gestur mengenali gestur berdasarkan geometri tangan.
Nama model | Bentuk input | Jenis kuantisasi | Kartu Model | Versi |
---|---|---|---|---|
HandGestureClassifier | 192 x 192, 224 x 224 | mengambang 16 | info | Terbaru |
Tugas ini juga mendukung modifikasi paket model menggunakan Model Maker. Untuk informasi selengkapnya tentang penggunaan Model Maker guna menyesuaikan model untuk tugas ini, lihat halaman Menyesuaikan model untuk Pengenal Gestur.
Paket model penanda tangan
Paket model penanda tangan mendeteksi pelokalan keypoint dari 21 jari tangan koordinat dalam area tangan yang terdeteksi. Model ini dilatih dengan sekitar 30 ribu gambar dunia nyata, serta beberapa tangan sintetis yang dirender yang diterapkan di berbagai latar belakang. Lihat definisi 21 tempat terkenal di bawah ini:
Paket model penanda tangan berisi model deteksi telapak tangan dan model deteksi penanda tangan. Model deteksi telapak tangan melokalkan wilayah 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 jauh lebih memakan waktu, dalam mode Video atau Live mode streaming, Pengenal Gestur menggunakan kotak pembatas yang ditentukan oleh tangan yang terdeteksi {i>landmark<i} dalam {i>frame <i}saat ini untuk melokalkan area tangan pada {i>frame<i}. Tindakan ini akan mengurangi waktu Pengenal Gestur memicu model deteksi telapak tangan. Hanya ketika model penanda tangan tidak lagi dapat mengidentifikasi cukup yang diperlukan jumlah kehadiran tangan, atau pelacakan tangan gagal, model deteksi telapak tangan dipanggil untuk melokalkan ulang tangan.
Paket model klasifikasi gestur
Paket model klasifikasi gestur dapat mengenali gestur tangan umum ini:
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, gestur pengenal menampilkan hasil "None". Jika model tidak mendeteksi tangan, pengenal gestur menampilkan kosong.
Paket model klasifikasi gestur berisi pipeline jaringan neural dua langkah dengan model penyematan gestur diikuti dengan 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 mengambil fitur vektor sebagai input. Paket model klasifikasi gestur yang disediakan berisi Pengklasifikasi gerakan tangan yang siap pakai, 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 berikut Model kustom.
Pengenal Gestur dengan pengklasifikasi gestur tersimpan dan pengklasifikasi gestur kustom memilih {i>gesture <i}khusus jika kedua pengklasifikasi mengenali {i>gesture <i}yang sama kategori mereka. Jika hanya satu pengklasifikasi gestur yang mengenali {i>gesture-<i} tersebut, Pengenal Gestur menghasilkan gestur yang dikenali secara langsung.
{i>Benchmark tugas<i}
Berikut adalah benchmark tugas untuk seluruh pipeline berdasarkan hal di atas model terlatih. Hasil latensi adalah latensi rata-rata pada Pixel 6 yang menggunakan CPU / GPU.
Nama Model | Latensi CPU | Latensi GPU |
---|---|---|
GestureRecognizer | 16,76 md | 20,87 md |
Model kustom
Jika Anda ingin meningkatkan atau mengubah
kemampuan model yang disediakan dalam
Anda dapat menggunakan Model Maker untuk memodifikasi model yang ada. Model kustom yang digunakan
dengan MediaPipe harus dalam format .task
, yang merupakan file paket model. Anda
sebaiknya gunakan Model Maker untuk memodifikasi model yang disediakan untuk tugas ini
sebelum membangun portofolio Anda sendiri.
Untuk mengetahui informasi selengkapnya tentang menyesuaikan model untuk tugas ini, lihat Sesuaikan model untuk Pengenal Gestur.