Menggunakan RNN (LSTM) untuk Sistem Pengenalan Gerakan

10

Saya mencoba membangun sistem pengenalan gerakan untuk mengklasifikasikan ASL (American Sign Language) Gestures, jadi input saya seharusnya adalah urutan frame baik dari kamera atau file video kemudian mendeteksi urutan dan memetakannya sesuai kelas (tidur, membantu, makan, lari, dll.)

Masalahnya adalah saya sudah membangun sistem yang sama tetapi untuk gambar statis (tidak ada gerakan termasuk), itu berguna untuk menerjemahkan huruf hanya di mana membangun CNN adalah tugas lurus, karena tangan tidak banyak bergerak dan struktur kumpulan data juga dapat dikelola karena saya menggunakan keras dan mungkin masih berniat untuk melakukannya (setiap folder berisi sekumpulan gambar untuk tanda tertentu dan nama folder adalah nama kelas dari tanda ini ex: A, B, C , ..)

Pertanyaan saya di sini, bagaimana saya bisa mengatur set data saya untuk dapat memasukkannya ke RNN dalam keras dan fungsi-fungsi tertentu apa yang harus saya gunakan untuk secara efektif melatih model saya dan parameter yang diperlukan, beberapa orang menyarankan menggunakan kelas TimeDistributed tetapi saya tidak punya ide yang jelas tentang bagaimana menggunakannya untuk kebaikan saya, dan memperhitungkan bentuk input dari setiap lapisan dalam jaringan.

juga mempertimbangkan bahwa kumpulan data saya akan terdiri dari gambar, saya mungkin akan memerlukan lapisan convolutional, bagaimana mungkin untuk menggabungkan lapisan konv ke dalam LSTM (maksud saya dalam hal kode).

Misalnya saya membayangkan data saya diatur menjadi seperti ini

struktur kumpulan data

Folder bernama 'Jalankan' berisi 3 folder 1, 2 dan 3, masing-masing folder sesuai dengan bingkai itu dalam urutan

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Jadi Run_1 akan berisi beberapa set gambar untuk frame pertama, Run_2 untuk frame kedua dan Run_3 untuk frame ketiga, tujuan model saya adalah dilatih dengan urutan ini untuk menampilkan kata Run .

Anasovich
sumber
Dataset mana yang Anda gunakan untuk ASL?
Sam Johnson
Maaf tapi kami mencatat dataset kami sendiri dan tidak berhasil merilisnya ke publik, itu tidak sebanyak itu dan tidak memberikan akurasi yang diharapkan.
Anasovich
Ini tentu bisa dilakukan dan tidak terlihat seperti terlalu banyak pengkodean tambahan dari artikel yang disebutkan di bawah, tapi saya tidak berbicara dari pengalaman karena ini bukan arsitektur yang saya gunakan sebelumnya. Semoga artikel ini akan mengarahkan Anda ke arah yang benar: machinelearningmastery.com/cnn-long-short-term-memory-networks
Ollie Graham

Jawaban:

2

Berdasarkan pemahaman saya, ini sepertinya bermuara pada masalah klasifikasi multi-kelas (setiap set / urutan gerakan tangan akhirnya sesuai dengan kata / simbol). Arsitektur RNN / LSTM / GRU adalah tempat yang bagus untuk memulai, tetapi akan mahal secara komputasi dan agak lambat untuk dilatih. Namun, apakah Anda benar-benar membutuhkan satu atau lebih dari ini tergantung pada bagaimana data Anda disusun, dan apakah Anda dapat pergi dengan memperlakukan gambar Anda sebagai satu set, daripada berurutan.

Berikut adalah beberapa ide potensial:

  1. Mulailah dengan menyiapkan lapisan CNN untuk setiap folder "RUN_ *", bersama dengan dropoutdan / atau di flatteningantara setiap lapisan.

  2. Mulailah dengan menyiapkan vektor panjang tunggal yang mewakili semua tahapan urutan, kemudian tambahkan beberapa lapisan CNN, juga dengan dropoutdan / atau flattening.

Ini akan membutuhkan beberapa eksplorasi dan penyetelan pada akhirnya untuk melihat apa yang paling berhasil, dan Anda harus memilih dengan metrik evaluasi yang ingin Anda optimalkan (misalnya presisi / penarikan)

Alasan saya menyarankan CNN adalah karena, dalam kasus-kasus tertentu, CNN dapat memberikan kinerja yang serupa dengan model berulang, tetapi dengan biaya yang sangat kecil. Sayangnya, sulit untuk mengatakan tanpa sedikit informasi tentang data Anda.

ngopal
sumber