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
Folder bernama 'Jalankan' berisi 3 folder 1, 2 dan 3, masing-masing folder sesuai dengan bingkai itu dalam urutan
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 .
sumber
Jawaban:
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:
Mulailah dengan menyiapkan lapisan CNN untuk setiap folder "RUN_ *", bersama dengan
dropout
dan / atau diflattening
antara setiap lapisan.Mulailah dengan menyiapkan vektor panjang tunggal yang mewakili semua tahapan urutan, kemudian tambahkan beberapa lapisan CNN, juga dengan
dropout
dan / atauflattening
.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.
sumber