Panduan tugas pengenalan gestur

Tangan yang membuat gerakan jempol ke atas yang diidentifikasi sebagai gestur jempol ke atas
oleh model dengan rating
keyakinan 63%

Tugas Pengenal Gestur MediaPipe memungkinkan Anda mengenali gestur tangan secara real time, dan memberikan hasil gestur tangan yang dikenali beserta 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 aliran data berkelanjutan. Tugas ini menghasilkan penanda tangan dalam koordinat gambar, penanda tangan dalam koordinat dunia, tangan dominan (tangan kiri/kanan), dan kategori gestur tangan dari beberapa tangan.

Coba sekarang.

Mulai

Mulai gunakan tugas ini dengan mengikuti salah satu panduan penerapan ini untuk platform target Anda. Panduan khusus platform ini akan memandu Anda dalam 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 gambar, pengubahan ukuran, normalisasi, dan konversi ruang warna.
  • Batas skor - Memfilter hasil berdasarkan skor prediksi.
  • Daftar yang diizinkan dan ditolak label - Tentukan kategori gestur yang 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 menghasilkan output berikut:
  • Kategori gestur tangan
  • Preferensi tangan dari tangan yang terdeteksi
  • Penanda tangan yang terdeteksi dalam koordinat gambar
  • Penanda 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 live stream 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 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 dari skor kehadiran tangan dalam model deteksi penanda tangan. Dalam mode Video dan mode Live stream Pengenal Gestur, jika skor keyakinan kehadiran tangan dari model penanda tangan berada di bawah ambang batas ini, skor tersebut akan memicu model deteksi telapak tangan. 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 nilai minimum IoU kotak pembatas antara tangan dalam 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 standar. Gestur standar 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 maksimum: 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 akan ditolak. Jika ditetapkan ke 0, semua hasil yang tersedia akan ditampilkan.
  • Daftar yang diizinkan kategori: daftar yang diizinkan untuk nama kategori. 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 diizinkan 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 maksimum: 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 akan ditolak. Jika ditetapkan ke 0, semua hasil yang tersedia akan ditampilkan.
  • Daftar yang diizinkan kategori: daftar yang diizinkan untuk nama kategori. 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 diizinkan 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 berjalan 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. Model penanda 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 informasi selengkapnya tentang cara menggunakan Model Maker untuk menyesuaikan model untuk tugas ini, lihat halaman Menyesuaikan model untuk Pengenal Gestur.

    Paket model penanda tangan

    Paket model penanda tangan mendeteksi pelokalan titik kunci dari 21 koordinat buku jari tangan dalam area tangan yang terdeteksi. Model ini dilatih pada sekitar 30 ribu gambar dunia nyata, serta beberapa model tangan sintetis yang dirender dan diterapkan di berbagai latar belakang. Lihat definisi 21 penanda di bawah:

    Kode untuk titik penanda tangan tertentu

    Paket model penanda tangan berisi model deteksi telapak tangan dan model deteksi penanda 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. Hal ini mengurangi frekuensi Pengenal Gestur memicu model deteksi telapak tangan. Hanya jika model penanda tangan tidak dapat lagi mengidentifikasi jumlah kehadiran tangan yang diperlukan, atau pelacakan tangan gagal, model deteksi telapak tangan akan dipanggil untuk melokalkan 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 kosong.

    Paket model klasifikasi gestur berisi pipeline neural network 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 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 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.

    Pengenali Gestur dengan pengklasifikasi gestur standar 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 langsung menghasilkan gestur yang dikenali.

    Tolok ukur tugas

    Berikut adalah benchmark tugas untuk seluruh pipeline berdasarkan model pre-trained 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 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. Sebaiknya Anda mempertimbangkan untuk menggunakan Model Maker guna mengubah model yang disediakan untuk tugas ini sebelum membuat model Anda sendiri.

    Untuk informasi selengkapnya tentang cara menyesuaikan model untuk tugas ini, lihat Menyesuaikan model untuk Pengenal Gestur.