Panduan tugas pengenalan gestur

Tangan yang mengacungkan jempol yang diidentifikasi sebagai gestur acungan jempol oleh model dengan rating keyakinan 63%

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.

Cobalah!

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:

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:
  • Gambar diam
  • Frame video yang didekode
  • Feed video live
Pengenal Gestur menampilkan hasil berikut:
  • Kategori gestur tangan
  • Preferensi tangan dari tangan yang terdeteksi
  • Penanda tangan yang terdeteksi dalam koordinat gambar
  • Landmark 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:

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"]
  • Lokalitas nama tampilan: lokalitas yang akan 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 bawahnya hasil ditolak. Jika ditetapkan ke 0, semua hasil yang tersedia akan ditampilkan.
  • Daftar yang diberi akses ke kategori: daftar nama kategori yang diberi akses. Jika tidak kosong, hasil klasifikasi yang kategorinya tidak ada dalam set ini akan difilter. Tidak dapat muncul bersamaan dengan daftar yang ditolak.
  • Daftar tolak kategori: daftar tolak nama kategori. Jika tidak kosong, hasil klasifikasi yang kategorinya ada dalam set 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 yang diizinkan kategori: vector of strings
    • Daftar tolak kategori: vector of strings
    • Lokalitas nama tampilan: "en"
    • Hasil maks: -1
    • Nilai minimum skor: 0
    • Daftar yang diberi akses ke kategori: kosong
    • Daftar tolak kategori: kosong
    custom_gestures_classifier_options Opsi untuk mengonfigurasi perilaku pengklasifikasi gestur kustom.
  • Lokalitas nama tampilan: lokalitas yang akan 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 bawahnya hasil ditolak. Jika ditetapkan ke 0, semua hasil yang tersedia akan ditampilkan.
  • Daftar yang diberi akses ke kategori: daftar nama kategori yang diberi akses. Jika tidak kosong, hasil klasifikasi yang kategorinya tidak ada dalam set ini akan difilter. Tidak dapat muncul bersamaan dengan daftar yang ditolak.
  • Daftar tolak kategori: daftar tolak nama kategori. Jika tidak kosong, hasil klasifikasi yang kategorinya ada dalam set 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 yang diizinkan kategori: vector of strings
    • Daftar tolak kategori: vector of strings
    • Lokalitas nama tampilan: "en"
    • Hasil maks: -1
    • Nilai minimum skor: 0
    • Daftar yang diberi akses ke kategori: 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 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:

    Kode untuk titik penanda tangan tertentu

    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.