Tugas Pengenal Gestur MediaPipe memungkinkan Anda mengenali gestur tangan secara real time, dan memberikan hasil gestur tangan yang dikenali bersama dengan penanda 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 streaming berkelanjutan. Tugas ini menghasilkan penanda tangan dalam koordinat gambar, penanda tangan dalam koordinat dunia, tangan tangan (tangan kiri/kanan), dan kategori gestur tangan dari beberapa tangan.
Mulai
Mulai gunakan tugas ini dengan mengikuti salah satu panduan penerapan ini untuk platform target Anda. Panduan khusus platform ini akan memandu Anda dalam menerapkan dasar 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 opsi konfigurasi tugas ini.
Fitur
- Pemrosesan gambar input - Pemrosesan mencakup rotasi gambar, pengubahan ukuran, normalisasi, dan konversi ruang warna.
- Batas skor - Memfilter hasil berdasarkan skor prediksi.
- Daftar label yang diizinkan dan ditolak - Menentukan kategori gestur yang dikenali oleh model.
Input tugas | Output tugas |
---|---|
Pengenalan Gestur menerima input dari salah satu jenis data berikut:
|
Pengenalan 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: IMAGE: 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 yang menerima hasil secara asinkron. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
|
num_hands |
Jumlah maksimum jarum dapat dideteksi oleh
GestureRecognizer .
|
Any integer > 0 |
1 |
|
min_hand_detection_confidence |
Skor keyakinan minimum untuk deteksi tangan agar dianggap berhasil dalam model deteksi telapak tangan. | 0.0 - 1.0 |
0.5 |
|
min_hand_presence_confidence |
Skor keyakinan minimum skor kehadiran tangan di model deteksi penanda tangan. Dalam mode Video dan mode Live stream Pengenal Gestur, jika kehadiran tangan dengan skor pasti dari model penanda tangan di bawah batas ini, model deteksi telapak tangan akan terpicu. Jika tidak, algoritma pelacakan tangan ringan akan digunakan untuk menentukan lokasi tangan untuk deteksi penanda berikutnya. | 0.0 - 1.0 |
0.5 |
|
min_tracking_confidence |
Skor keyakinan minimum agar pelacakan tangan dianggap berhasil. Ini adalah ambang batas IoU kotak pembatas antara tangan di frame saat ini dan frame terakhir. Dalam mode Video dan mode Streaming Pengenal Gestur, jika pelacakan gagal, Pengenal Gestur 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 terekam. Gestur tersimpan ["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
Pengenalan Gestur menggunakan paket model dengan dua paket model yang telah dikemas sebelumnya: paket model tempat terkenal tangan dan paket model klasifikasi gestur. Model landmark mendeteksi kehadiran geometri tangan dan tangan, dan model pengenalan gestur mengenali gestur berdasarkan geometri tangan.
Nama model | Bentuk input | Jenis kuantisasi | Kartu Model | Versions |
---|---|---|---|---|
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 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 koordinat buku tangan dalam area tangan yang terdeteksi. Model ini dilatih dengan sekitar 30 ribu gambar dunia nyata, serta beberapa model tangan sintetis yang dirender dan diterapkan di berbagai latar belakang. Lihat definisi 21 {i>landmark<i} di bawah ini:
Paket model penanda tangan berisi model deteksi telapak tangan dan model deteksi tempat terkenal 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 jauh 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 area tangan di frame berikutnya. Ini mengurangi waktu Pengenal Gestur yang memicu model deteksi telapak tangan. Hanya jika model penanda tangan tidak lagi dapat mengidentifikasi jumlah kehadiran tangan yang diperlukan, atau pelacakan tangan gagal, model deteksi telapak tangan dipanggil untuk memindahkan tangan tersebut.
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, pengenal gestur akan menampilkan hasil "Tidak ada". Jika model tidak mendeteksi tangan, pengenal gestur akan menampilkan kosong.
Paket model klasifikasi gestur berisi pipeline jaringan neural dua langkah dengan model penyematan gestur yang diikuti dengan model klasifikasi gestur. Lihat detail selengkapnya di Kartu model klasifikasi gestur.
Model penyematan gestur mengenkode fitur gambar menjadi vektor fitur, dan model klasifikasi adalah pengklasifikasi gestur ringan yang menggunakan vektor fitur sebagai input. Paket model klasifikasi gestur yang disediakan berisi pengklasifikasi gestur yang direkam, 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 yang direkam dan pengklasifikasi gestur kustom lebih menyukai gestur kustom jika kedua pengklasifikasi mengenali gestur yang sama dalam kategorinya. Jika hanya satu pengklasifikasi gestur yang mengenali gestur, Pengenal Gestur akan menampilkan gestur yang dikenali secara langsung.
Tolok ukur tugas
Berikut adalah tolok ukur tugas untuk seluruh pipeline berdasarkan model terlatih di atas. Hasil latensi adalah latensi rata-rata di 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 tugas ini, 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
harus mempertimbangkan penggunaan Model Maker untuk memodifikasi model yang disediakan untuk tugas ini
sebelum membuat model Anda sendiri.
Untuk mengetahui informasi selengkapnya tentang menyesuaikan model untuk tugas ini, lihat Menyesuaikan model untuk Pengenal Gestur.