Artikel ini adalah blog teknis yang disusun oleh AI Research Institute, dengan judul asli Gunakan mata Anda dan Pembelajaran Mendalam untuk mengendalikan komputer Anda - A.I. Odyssey bagian. 2, ditulis oleh Julien Despois. Terjemahan | Tao Yulong, pengoreksian Lao Zhao | Ulasan Lamaric | Lamaric
Pernahkah Anda mengalami pengalaman ini, ketika Anda sedang makan, Anda mendapati bahwa Anda tidak memiliki tangan ekstra untuk mengatur volume film atau mengatur kecerahan layar? Pada artikel ini, kita akan melihat cara menggunakan teknologi kecerdasan buatan tercanggih untuk mengatasi masalah ini, dan mengirim perintah yang sesuai ke komputer Anda melalui gerakan mata.
Catatan: Setelah Anda selesai membaca artikel ini, saya mengundang Anda untuk melanjutkan membaca posting tindak lanjut yang didedikasikan untuk detail implementasi (https://medium.com/@juliendespois/ai-odyssey-part-2-implementation-details-f126f18bd320# .t4gpenon3).
pengantar
Apa yang ingin kami capai
Tujuan dari proyek ini adalah menggunakan mata kita untuk memicu tindakan di komputer. Ini adalah pertanyaan yang sangat komprehensif, jadi pertama-tama kita perlu menjelaskan apa yang ingin kita capai.
Misalnya, kita bisa mendeteksi saat mata menghadap ke sudut tertentu, lalu bekerja dari sudut itu. Namun, ini sangat terbatas dan tidak terlalu fleksibel, ditambah lagi kami harus menggabungkan sudut. Jadi sebagai gantinya, kami menggunakan jaringan saraf berulang untuk belajar mengenali gerakan mata lengkap.
Data
Kami tidak ingin menggunakan kumpulan data eksternal untuk pekerjaan kami, melainkan kami membuat kumpulan data sendiri. Kami menggunakan sumber data dan metode pemrosesan yang sama dalam tahap pelatihan dan prediksi model, yang sangat bermanfaat bagi proyek kami.
Tak diragukan lagi, cara paling efektif untuk mengekstrak informasi dari mata kita adalah dengan menggunakan lensa close-up khusus. Dengan bantuan perangkat keras tersebut, kita bisa langsung melacak pusat pupil untuk membuat berbagai data yang menakjubkan.
Saya tidak ingin menggunakan kamera eksternal, jadi saya memutuskan untuk menggunakan kamera 720P laptop saya yang sudah usang.
proses kerja
Sebelum kita langsung ke pembahasan teknis, mari kita ulas langkah-langkah proses ini. Inilah proses yang saya usulkan:
-
Ambil gambar dengan kamera dan temukan matanya.
-
Memproses gambar dan mengekstrak fitur penting (apakah Anda mencoba mengatakan bahwa gambar tersebut diimplementasikan menggunakan jaringan saraf?).
-
Tetap menjalankan rekaman dari beberapa bingkai ekstraksi fitur terakhir.
-
Sadarilah prediksi gerakan mata berdasarkan catatan lari.
Kami akan menggunakan metode pipeline untuk memproses gambar.
Kami akan melakukannya melalui langkah-langkah berikut di artikel ini, mari kita mulai!
Dapatkan gambar mata
Deteksi mata
Langsung melalui kamera, lakukan down-sample gambar dan ubah menjadi gambar grayscale (saluran multi-warna akan menghasilkan banyak informasi yang berlebihan), yang akan membuat operasi selanjutnya lebih cepat dan membantu model berjalan dalam waktu nyata.
Untuk deteksi, kami akan menggunakan HAAR Cascades (pengklasifikasi kaskade berbasis fitur Haar) ( karena cepat dan dengan penyesuaian sederhana, kami dapat Hasil yang baik didapat, tetapi akan menyebabkan banyak alarm palsu saat mendeteksi mata secara langsung. Untuk menghilangkan efek ini, kami mendeteksi wajah manusia, bukan mata dalam gambar, lalu kami dapat menemukan mata di wajah manusia.
Setelah kotak pembatas yang berisi mata diperoleh, kita dapat mengekstrak gambar dari pengambilan awal kamera ukuran penuh sehingga tidak ada informasi yang hilang.
Data yang telah diproses sebelumnya
Setelah kami menemukan matanya, kami perlu memprosesnya untuk kumpulan data kami. Untuk melakukan ini, kita cukup membentuk kembali mata menjadi persegi tetap, berukuran 24px, dan menggunakan normalisasi histogram untuk menghilangkan bayangan.
Langkah-langkah untuk mengekstrak mata
Kemudian kita dapat langsung menggunakan gambar standar sebagai masukan, tetapi kita memiliki kesempatan untuk melakukan pekerjaan yang lebih bermanfaat. Alih-alih menggunakan gambar mata, kami menghitung perbedaan antara mata di bingkai saat ini dan bingkai sebelumnya. Ini adalah cara yang sangat efektif untuk menyandikan tindakan, yang pada akhirnya kami butuhkan.
** Perhatikan bahwa untuk semua grafik kecuali GIF di bawah ini, saya akan menggunakan gambar mata untuk merepresentasikan perbedaan mata karena perbedaan pada layar terlihat mengerikan. **
Perbandingan antara bingkai standar dan perbedaan bingkai
Sekarang setelah kita memproses mata, kita dapat memilih untuk memperlakukannya secara terpisah sebagai dua perwakilan dari kelas yang sama, atau menggunakannya bersama seolah-olah mereka adalah satu gambar. Saya memilih yang terakhir karena meskipun mata harus mengikuti gerakan yang sama persis, kedua masukan akan membuat model lebih kokoh.
* Namun demikian, yang harus kami lakukan adalah lebih pintar daripada menyatukan gambar-gambar itu.
Satukan mata Anda
Buat kumpulan data
rekaman
Saya telah merekam 50 sampel untuk dua tindakan terpisah (satu terlihat seperti "gamma" dan yang lainnya terlihat seperti "Z"). Saya mencoba mengubah posisi, skala, dan kecepatan sampel untuk membantu promosi model. Saya juga menambahkan 50 contoh "diam", yang berisi gerakan mata tanpa pola umum dan bingkai foto.
Contoh aksi-'gamma ',' mount ',' Z ',' idle '
Sayangnya, 150 sampel berukuran kecil untuk tugas semacam itu, jadi kami perlu memperluas kumpulan data dengan sampel baru.
Perluasan data
Hal pertama yang dapat kita lakukan adalah memperbaiki panjang urutan apa pun 100 bingkai. Dari sana, kami dapat memperlambat sampel yang lebih pendek dan mempercepat sampel yang lebih lama. Karena kecepatan tidak dapat menentukan pergerakan, hal ini dimungkinkan.
Pada saat yang sama, karena urutan kurang dari 100 bingkai dapat dideteksi kapan saja dalam jendela 100 bingkai, kita dapat menambahkan contoh pengisian.
Digunakan untuk mengisi jendela geser dengan sampel di bawah 100 bingkai.
Melalui teknik ini, kami dapat memperluas kumpulan data menjadi sekitar 1000-2000 contoh.
Kumpulan data akhir
Rekap dan coba pahami data kami. Kami telah merekam beberapa sampel dengan tag yang relevan. Setiap sampel terdiri dari rangkaian dua gambar persegi 24 piksel.
Perhatikan bahwa ada kumpulan data untuk setiap mata.
Deskripsi sensor dari kumpulan data
model
Sekarang setelah kita memiliki kumpulan data, kita perlu membangun model yang benar untuk mempelajari dan mempromosikan data. Kami dapat menulis spesifikasi berikut:
Model kami harus dapat mengekstrak informasi dari dua gambar pada setiap langkah waktu dan menggabungkan fitur ini untuk memprediksi gerakan yang dilakukan dengan mata.
Sistem yang kompleks seperti itu membutuhkan penggunaan jaringan saraf model kecerdasan buatan yang kuat. Mari kita lihat bagaimana membangun jaringan yang memenuhi kebutuhan kita. Lapisan jaringan saraf mirip dengan blok penyusun, kita hanya perlu memilih blok yang tepat dan meletakkannya di tempat yang tepat.
Fitur Visual-Jaringan Neural Konvolusional
Untuk mengekstrak informasi dari gambar, kita membutuhkan lapisan konvolusional. Ini bagus dalam memproses gambar untuk mendapatkan fitur visual. (Diperkenalkan di bagian pertama)
Kita perlu memperlakukan setiap mata secara terpisah, lalu menggabungkan fitur-fitur ini melalui lapisan yang terhubung sepenuhnya. Jaringan saraf konvolusional (CNN) yang dihasilkan akan mencoba mengekstrak pengetahuan yang relevan dari mata.
Jaringan saraf konvolusional - dua lapisan konvolusional paralel mengekstrak fitur visual, lalu keduanya digabungkan.
Karakteristik waktu-jaringan saraf berulang
Sekarang kita memiliki deskripsi gambar yang sederhana, kita perlu memprosesnya secara bergantian. Oleh karena itu, jaringan memori rekursif lapisan-panjang dan jangka pendek digunakan. Jaringan memori jangka panjang dan pendek memperbarui statusnya melalui fitur yang diekstrak dari langkah waktu saat ini dan status sebelumnya.
Akhirnya, ketika kami telah memproses urutan gambar ini, status jaringan memori jangka pendek diteruskan ke pengklasifikasi softmax untuk memprediksi probabilitas setiap tindakan.
Model keseluruhan
Pada akhirnya, jaringan saraf perlu menggunakan urutan gambar berpasangan sebagai masukan, dan keluarannya adalah kemungkinan dari setiap tindakan. Kuncinya adalah kita membangun model dalam satu bagian, sehingga dapat dilatih secara menyeluruh melalui propagasi mundur.
Kita dapat menyebutnya sebagai jaringan saraf berulang ganda dengan konvolusi yang dalam dari memori jangka panjang dan pendek, tetapi tidak ada yang mengatakan itu.
Jaringan saraf konvolusional mengekstrak fitur dari masukan, yang diproses di setiap langkah oleh unit memori jangka panjang dan pendek.
hasil
Model terlatih ini mencapai akurasi lebih dari 85% pada set pengujian. Mengingat set pelatihan sebelum perluasan sangat kecil, hasil ini sangat baik. Dengan lebih banyak waktu dan kontribusi, saya dapat merekam setidaknya 100-200 contoh dari setiap kategori, mungkin 3-4 tindakan, bukan 2 (+ diam), yang meningkatkan efeknya.
Satu-satunya langkah yang tersisa adalah menggunakan pengklasifikasi secara real time, menyesuaikannya untuk menghindari alarm palsu, dan menerapkan logika yang memicu operasi (mengubah volume, membuka aplikasi, menjalankan makro, dll.). Lebih banyak konten akan ditulis dalam artikel lanjutan.
Kesimpulannya
Di sini, kita telah melihat cara menggunakan HAAR Cascades untuk mendeteksi mata dalam gambar, cara membersihkan gambar, dan cara menggunakan perbedaan gambar untuk membantu objek terkait gerakan.
Kami juga telah melihat cara memperluas kumpulan data secara manual dan menggunakan jaringan neural dalam untuk menyesuaikan data melalui lapisan konvolusional, lapisan yang terhubung sepenuhnya, dan lapisan rekursif.
Saya harap Anda menikmati penelitian ini dan saya senang mendengar tanggapan Anda.
- "Trilogi Republik Tiongkok" Jiang Wen secara sempurna bertepatan dengan Piala Dunia. Bagaimana "Kejahatan Tidak Menekan Kebenaran"?
- Sudahkah Anda menebak sneaker pemenangnya? Sneaker Crepe City 2017 menampilkan TOP 20 sneakers termahal!
- * ST Xinneng, * ST Oil Service dan stok lainnya segera "dibuka". Jangan lewatkan "saham potensial" ini di saham ST
- Apple WWDC19 akan dibuka pada 3 Juni, dan iOS 13 akan segera hadir. Kejutan apa yang akan dihadirkan Apple?
- KDD 2018 dibuka hari ini, Liu Bing dan Tang Jie memenangkan Penghargaan Inovasi dan Penghargaan Layanan Luar Biasa
- Riasan Audrey Hepburn telah menarik banyak aktris untuk mengikutinya, dan dia adalah satu-satunya di China yang memiliki pesona paling menawan!