Panduan tugas pengenalan gestur

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.

Cobalah!

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:

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:
  • Gambar diam
  • Frame video yang didekode
  • Feed video live
Pengenal Gestur memberikan hasil berikut:
  • Kategori gestur tangan
  • Kecenderungan penggunaan tangan yang terdeteksi
  • Penanda tangan yang terdeteksi pada koordinat gambar
  • Tolok ukur tangan yang terdeteksi di koordinat dunia

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"]
  • Lokal nama tampilan: lokal yang akan digunakan untuk nama tampilan yang ditentukan melalui Metadata Model TFLite, jika ada.
  • Hasil maksimum: jumlah maksimum hasil klasifikasi dengan skor tertinggi yang akan ditampilkan. Jika < 0, semua hasil yang tersedia akan ditampilkan.
  • Ambang batas skor: skor di bawah hasil yang ditolak. Jika ditetapkan ke 0, semua hasil yang tersedia akan ditampilkan.
  • Daftar kategori yang diizinkan: daftar nama kategori yang diizinkan. Jika tidak kosong, hasil klasifikasi yang kategorinya tidak ada dalam kumpulan ini akan difilter. Tidak dapat muncul bersamaan dengan daftar tolak.
  • Daftar tolak kategori: daftar tolak nama kategori. Jika tidak kosong, hasil klasifikasi yang kategorinya ada dalam kumpulan ini akan difilter. Tidak dapat muncul bersamaan dengan daftar yang diizinkan.
    • Lokal nama tampilan: any string
    • Hasil maks: any integer
    • Nilai minimum skor: 0.0-1.0
    • Daftar kategori yang diizinkan: vector of strings
    • Daftar tolak kategori: vector of strings
    • Lokal nama tampilan: "en"
    • Hasil maks: -1
    • Nilai minimum skor: 0
    • Daftar kategori yang diizinkan: kosong
    • Daftar tolak kategori: kosong
    custom_gestures_classifier_options Opsi untuk mengonfigurasi perilaku pengklasifikasi gestur kustom.
  • Lokal nama tampilan: lokal yang akan digunakan untuk nama tampilan yang ditentukan melalui Metadata Model TFLite, jika ada.
  • Hasil maksimum: jumlah maksimum hasil klasifikasi dengan skor tertinggi yang akan ditampilkan. Jika < 0, semua hasil yang tersedia akan ditampilkan.
  • Ambang batas skor: skor di bawah hasil yang ditolak. Jika ditetapkan ke 0, semua hasil yang tersedia akan ditampilkan.
  • Daftar kategori yang diizinkan: daftar nama kategori yang diizinkan. Jika tidak kosong, hasil klasifikasi yang kategorinya tidak ada dalam kumpulan ini akan difilter. Tidak dapat muncul bersamaan dengan daftar tolak.
  • Daftar tolak kategori: daftar tolak nama kategori. Jika tidak kosong, hasil klasifikasi yang kategorinya ada dalam kumpulan ini akan difilter. Tidak dapat muncul bersamaan dengan daftar yang diizinkan.
    • Lokal nama tampilan: any string
    • Hasil maks: any integer
    • Nilai minimum skor: 0.0-1.0
    • Daftar kategori yang diizinkan: vector of strings
    • Daftar tolak kategori: vector of strings
    • Lokal nama tampilan: "en"
    • Hasil maks: -1
    • Nilai minimum skor: 0
    • Daftar kategori yang diizinkan: kosong
    • Daftar tolak kategori: kosong
    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.