Project GameFace memberikan akses bermain game bagi siapa saja

JUN 12, 2023
Avneet Singh Product Manager Google Partner Innovation
Sisi Jin UX Designer Google PI
Lance Carr Collaborator

Pada I/O 2023, Google meluncurkan Project Gameface, ‘mouse’ gaming handsfree dan open source yang memungkinkan penggunanya mengontrol kursor komputer menggunakan gerakan kepala dan gestur wajah. Pengguna dapat mengangkat alis untuk mengklik dan menarik objek, atau membuka mulut untuk menggerakkan kursor, sehingga siapa saja dapat bermain game.

Proyek ini terinspirasi oleh kisah streamer video game yang juga penyandang quadriplegia bernama Lance Carr, yang hidup dengan distrofi otot, penyakit yang secara progresif melemahkan otot. Kami berkolaborasi dengan Lance untuk mewujudkan Project Gameface. Kisah lengkap di balik produk ini tersedia di blog Google Keyword di sini.

Memikirkan bagaimana kursor mouse dapat dikontrol dengan cara yang baru ini tentu merupakan pengalaman yang sangat menarik. Kami melakukan banyak eksperimen dan menemukan gerakan kepala dan ekspresi wajah dapat menjadi cara unik untuk memprogram kursor mouse. Face Landmarks Detection API yang baru dari MediaPipe dengan opsi blendshape memungkinkan developer untuk memanfaatkan 478 landmark wajah 3 dimensi dan 52 skor blendshape (koefisien yang mewakili ekspresi wajah) untuk menyimpulkan detail permukaan wajah secara real-time.

Konsep dan Detail Produk

Dalam artikel ini, kami membagikan detail teknis tentang bagaimana kami membangun Project Gameface dan berbagai teknologi open source yang kami manfaatkan untuk menciptakan produk yang menarik!

Menggunakan gerakan kepala untuk menggerakkan kursor mouse

Teks: Mengontrol gerakan kepala untuk menggerakkan kursor mouse dan menyesuaikan kecepatan kursor untuk beradaptasi dengan resolusi layar yang berbeda.

Melalui project ini, kami mengeksplorasi konsep penggunaan gerakan kepala untuk dapat menggerakkan kursor mouse. Kami berfokus pada dahi dan iris mata sebagai dua lokasi landmark kami. Kedua landmark dahi dan iris mata dikenal karena stabilitasnya. Namun, Lance menyadari bahwa kursor tidak berfungsi dengan baik saat menggunakan landmark iris. Alasannya adalah bahwa iris dapat sedikit bergerak saat berkedip, menyebabkan kursor bergerak secara tidak sengaja. Oleh karena itu, kami memutuskan untuk menggunakan landmark dahi sebagai opsi pelacakan default.

Ada juga beberapa orang yang mungkin mengalami kesulitan menggerakkan kepala mereka ke arah tertentu. Misalnya, Lance dapat menggerakkan kepalanya lebih cepat ke kanan daripada ke kiri. Untuk mengatasi masalah ini, kami memperkenalkan solusi yang mudah digunakan: penyesuaian kecepatan kursor terpisah untuk setiap arah. Fitur ini memungkinkan pengguna untuk menyesuaikan gerakan kursor sesuai dengan preferensi mereka, memfasilitasi navigasi yang lebih lancar dan lebih nyaman.

Kami ingin pengalaman ini semulus pengontrol genggam. Kursor mouse yang bergetar adalah salah satu masalah utama yang ingin kami atasi. Tampilan getaran kursor dapat dipengaruhi oleh berbagai faktor, termasuk pengaturan pengguna, kamera, banyaknya gangguan, dan kondisi pencahayaan. Kami menerapkan fitur gerakan mulus kursor yang dapat disesuaikan untuk memudahkan pengguna menyesuaikan fitur ini sehingga bisa sangat sesuai dengan keinginannya.

Menggunakan ekspresi wajah untuk melakukan tindakan pada mouse dan menekan keyboard

Sejak awal, salah satu wawasan utama kami adalah bahwa orang-orang memiliki tingkat kenyamanan yang bervariasi saat membuat ekspresi wajah yang berbeda. Gestur yang mungkin mudah dilakukan oleh seorang pengguna bisa sangat sulit dilakukan oleh pengguna lain. Misalnya, Lance dapat menggerakkan alisnya secara terpisah dengan mudah sementara anggota tim lainnya berjuang untuk melakukan kemampuan Lance tersebut. Oleh karena itu, kami memutuskan untuk membuat fungsionalitas bagi para pengguna untuk menyesuaikan ekspresi mana yang mereka gunakan untuk mengontrol mouse.

Teks: Menggunakan ekspresi wajah untuk mengontrol mouse

Anggap saja sebagai penetapan khusus terhadap suatu gerakan ke suatu tindakan pada mouse. Saat mempertimbangkan tindakan mouse apa saja yang harus dicantumkan pada produk, kami mencoba mengambil skenario umum seperti klik kiri dan kanan untuk melakukan scroll ke atas dan ke bawah. Namun, menggunakan kepala untuk mengontrol gerakan kursor mouse akan menjadi pengalaman yang berbeda dari cara yang biasanya. Kami ingin memberi opsi kepada pengguna untuk menyetel ulang kursor mouse ke tengah layar menggunakan gestur wajah juga.

Teks: Menggunakan ekspresi wajah untuk mengontrol keyboard

Rilis terbaru dari Face Landmarks Detection MediaPipe menghadirkan tambahan yang menarik: output blendshape. Dengan peningkatan ini, API menghasilkan 52 nilai blendshape wajah yang mewakili ekspresi dari 52 gestur wajah, seperti mengangkat alis kiri atau membuka mulut. Nilai-nilai ini dapat dipetakan secara efektif untuk mengontrol berbagai fungsi, menawarkan kemungkinan yang diperluas kepada pengguna untuk dapat melakukan kustomisasi dan manipulasi.

Kami dapat memperluas fungsi yang sama dan menambahkan opsi untuk pintasan tombol keyboard juga. Fungsi ini menggunakan gestur wajah pengguna untuk juga menekan beberapa tombol pintasan keyboard dengan cara yang serupa.

Menentukan Ukuran Gestur untuk mengatur kapan harus memicu tindakan pada mouse/keyboard

Teks: Menentukan ukuran gestur untuk memicu tindakan

Saat menguji software ini, kami menemukan bahwa ekspresi wajah bisa dianggap lebih atau kurang jelas bagi masing-masing orang, jadi kami telah memasukkan gagasan terkait ukuran gestur, yang memungkinkan pengguna untuk mengontrol seberapa besar gerakan yang perlu dilakukan untuk memicu tindakan pada mouse. Koefisien blendshape akan sangat membantu di sini dan pengguna yang berbeda kini dapat menetapkan ambang batas yang berbeda pada setiap ekspresi tertentu dan ini membantu mereka menyesuaikan pengalaman dengan kenyamanan mereka.

Menjaga agar feed kamera tetap menyala

Wawasan utama lain yang kami terima dari Lance adalah gamer sering memiliki banyak kamera. Agar model machine learning kami dapat beroperasi secara optimal, baiknya harus ada kamera yang mengarah langsung ke wajah pengguna dengan pencahayaan yang memadai. Maka, kami telah memasukkan kemampuan bagi pengguna untuk memilih kamera yang tepat untuk membantu memberikan fokus serta memberikan performa yang paling optimal.

Antarmuka pengguna produk kami menggunakan feed kamera langsung, sehingga menampilkan visibilitas real-time dari gerakan kepala dan gestur. Fitur ini membawa beberapa keuntungan. Pertama, pengguna dapat mengatur ambang batas gerakan secara lebih efektif dengan mengamati gerakan mereka sendiri secara langsung. Representasi visual tersebut memungkinkan dibuatnya keputusan berdasarkan informasi tentang ambang batas yang sesuai. Selain itu, feed kamera langsung dapat meningkatkan pemahaman pengguna tentang gestur yang berbeda saat mereka secara visual menghubungkan gerakan mereka dengan tindakan yang sesuai dalam aplikasi. Secara keseluruhan, feed kamera secara signifikan meningkatkan pengalaman pengguna, memfasilitasi setelan ambang batas gerakan yang akurat dan pemahaman gestur yang lebih mendalam.

Paket Produk

Langkah kami berikutnya adalah menciptakan kemampuan untuk mengontrol mouse dan keyboard menggunakan logika yang ditentukan secara khusus. Untuk mengaktifkan kontrol mouse dan keyboard dalam aplikasi Python kami, kami menggunakan dua library: PyAutoGUI untuk kontrol mouse dan PyDirectInput untuk kontrol keyboard. PyAutoGUI dipilih karena kemampuan kontrol mouse yang bagus, memungkinkan kita untuk menyimulasikan gerakan mouse, klik, dan tindakan lainnya. Di sisi lain, kami memanfaatkan PyDirectInput untuk kontrol keyboard karena menawarkan kompatibilitas yang telah ditingkatkan dengan berbagai aplikasi, termasuk game dan yang mengandalkan DirectX.

Untuk paket aplikasi, kami menggunakan PyInstaller untuk mengubah aplikasi kami yang berbasis Python menjadi dapat dieksekusi, sehingga memudahkan pengguna untuk menjalankan software kami tanpa perlu menginstal Python atau dependensi tambahan. PyInstaller menyediakan cara yang andal dan efisien untuk mendistribusikan aplikasi kami agar memastikan pengalaman pengguna yang lancar.

Produk ini memperkenalkan faktor bentuk baru guna melibatkan pengguna dalam fungsi penting seperti menangani kursor mouse. Membuat produk dan UI bersifat intuitif dan mudah diikuti adalah prioritas utama bagi tim desain dan teknik kami. Kami bekerja sama dengan Lance untuk menerapkan masukan darinya ke dalam pertimbangan UX kami, dan kami menemukan bahwa CustomtKinter mampu menangani sebagian besar pertimbangan UI kami dengan Python.

Kami tidak sabar ingin melihat potensi Project GameFace dan menunggu developer dan perusahaan memanfaatkannya untuk membangun pengalaman baru. Kode untuk GameFace tersedia secara open source di Github di sini.


Ucapan Terima kasih

Kami ingin mengucapkan terima kasih atas kontribusi tak ternilai untuk project ini dari orang-orang berikut: Lance Carr, David Hewlett, Laurence Moroney, Khanh LeViet, Glenn Cameron, Edwina Priest, Joe Fry, Feihong Chen, Boon Panichprecha, Dome Seelapun, Kim Nomrak, Pear Jaionnom, Lloyd Hightower