Panduan tugas pengenalan gestur

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.

Cobalah!

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:

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:
  • Gambar diam
  • Frame video yang didekode
  • Feed video live
Pengenalan Gestur menampilkan hasil berikut:
  • Kategori gestur tangan
  • Tangan yang terdeteksi menggunakan tangan
  • Tempat terkenal tangan yang terdeteksi dalam koordinat gambar
  • Tempat terkenal tangan yang terdeteksi dalam 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 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"]
  • Lokal nama tampilan: lokal yang digunakan untuk nama tampilan yang ditentukan melalui Metadata Model TFLite, jika ada.
  • Hasil maks: jumlah maksimum hasil klasifikasi dengan skor tertinggi yang akan ditampilkan. Jika < 0, semua hasil yang tersedia akan ditampilkan.
  • Nilai minimum 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.
    • Lokalitas 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
    • Lokalitas nama tampilan: "en"
    • Hasil maks: -1
    • Nilai minimum skor: 0
    • Daftar kategori yang diizinkan: kosong
    • Daftar kategori yang ditolak: kosong
    custom_gestures_classifier_options Opsi untuk mengonfigurasi perilaku pengklasifikasi gestur kustom.
  • Lokal nama tampilan: lokal yang digunakan untuk nama tampilan yang ditentukan melalui Metadata Model TFLite, jika ada.
  • Hasil maks: jumlah maksimum hasil klasifikasi dengan skor tertinggi yang akan ditampilkan. Jika < 0, semua hasil yang tersedia akan ditampilkan.
  • Nilai minimum 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.
    • Lokalitas 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
    • Lokalitas nama tampilan: "en"
    • Hasil maks: -1
    • Nilai minimum skor: 0
    • Daftar kategori yang diizinkan: kosong
    • Daftar kategori yang ditolak: 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

    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.