Cascadeur: memprediksi pose enam poin karakter


Kami ingin menjabarkan secara umum tentang pencapaian pertama dengan pembelajaran mendalam dalam animasi karakter untuk program Cascadeur kami.

Saat mengerjakan Shadow Fight 3 , kami mengumpulkan banyak animasi pertarungan - sekitar 1.100 gerakan dengan durasi rata-rata sekitar 4 detik. Tampaknya bagi kita sejak lama bahwa ini bisa menjadi dataset yang baik untuk melatih beberapa jenis jaringan saraf.

Setelah kami perhatikan bahwa ketika animator membuat sketsa ide pertama di atas kertas, maka mereka hanya perlu menggambar orang yang benar-benar menempel untuk membayangkan pose karakter. Kami berpikir bahwa karena animator yang berpengalaman dapat mengatur pose dengan baik dalam pola yang sederhana, sangat mungkin jaringan saraf dapat mengatasinya. Dari pengamatan ini, ide sederhana lahir: mari kita ambil hanya 6 poin kunci dari setiap pose - pergelangan tangan, pergelangan kaki, panggul, dan pangkal leher. Jika jaringan saraf hanya mengetahui posisi titik-titik ini, dapatkah ia memprediksi sisa pose - posisi 37 titik karakter yang tersisa?

Cara mengatur proses pembelajaran, sudah jelas dari awal: di pintu masuk, jaringan menerima posisi 6 poin dari pose tertentu, pada output itu memberikan posisi 37 poin yang tersisa, dan kami membandingkannya dengan posisi yang berada di posisi awal. Dalam fungsi evaluasi, Anda dapat menggunakan metode kuadrat terkecil untuk jarak antara posisi yang diprediksi dari titik dan sumber.

Untuk dataset pelatihan, kami memiliki semua gerakan karakter dari Shadow Fight 3. Kami mengambil pose dari setiap frame, dan kami mendapat sekitar 115.000 pose. Tetapi set ini spesifik - karakternya hampir selalu melihat sepanjang sumbu X, dan kaki kiri selalu di depan pada awal gerakan. Untuk mengatasi masalah ini, kami memperluas set data secara artifisial dengan membuat pose cermin, dan juga secara acak memutar setiap pose di luar angkasa. Itu juga memungkinkan kami untuk meningkatkan dataset menjadi dua juta pose. Kami menggunakan 95% dataset kami untuk pelatihan jaringan dan 5% untuk parameterisasi dan pengujian.

gambar

Kami mengambil arsitektur jaringan saraf yang cukup sederhana - jaringan lima lapis yang sepenuhnya terhubung dengan fungsi aktivasi dan metode inisialisasi dari Self-Normalizing Neural Networks . Pada lapisan terakhir, aktivasi tidak digunakan. Memiliki 3 koordinat untuk setiap node, kita mendapatkan lapisan input 6 * 3 elemen dan lapisan output 37 * 3 elemen. Kami mencari arsitektur optimal untuk lapisan tersembunyi dan fokus pada arsitektur lima lapisan dengan 300, 400, 300, 200 neuron pada setiap lapisan tersembunyi, namun, jaringan dengan lapisan tersembunyi lebih sedikit juga menghasilkan hasil yang baik. Regularisasi parameter jaringan L2 juga sangat berguna, itu membuat prediksi lebih halus dan lebih berkelanjutan.

Jaringan saraf dengan parameter seperti itu memprediksi posisi titik dengan kesalahan rata-rata 3,5 cm. Ini adalah kesalahan yang sangat tinggi, tetapi spesifik masalah harus diperhitungkan. Untuk satu set nilai input, mungkin ada banyak nilai output yang mungkin. Oleh karena itu, jaringan saraf akhirnya belajar mengeluarkan prediksi yang paling mungkin dan rata-rata. Namun, ketika jumlah titik input meningkat menjadi 16, kesalahan berkurang setengahnya, yang dalam praktiknya menghasilkan prediksi pose yang sangat akurat.

Tetapi pada saat yang sama, jaringan saraf tidak bisa memberikan pose yang benar-benar benar, menjaga panjang semua tulang dan sendi yang benar. Karena itu, kami juga meluncurkan proses pengoptimalan yang meluruskan semua benda padat dan sambungan model fisik kami.

Dalam praktiknya, hasilnya cukup meyakinkan - Anda dapat melihatnya di video kami. Tetapi ada juga kekhasan karena fakta bahwa dataset pelatihan adalah animasi pertarungan dari game pertempuran dengan senjata. Sebagai contoh, seorang karakter tampaknya menganggap bahwa ia berbalik dengan satu bahu ke arah musuh, seperti dalam posisi bertarung, dan dengan demikian memutar kaki dan kepalanya. Dan ketika Anda mengulurkan tangannya, sikat tidak berputar seolah-olah itu dipukul dengan kepalan, tetapi seperti ketika ditabrak pedang.



Gagasan logis dari langkah selanjutnya datang dari ini - untuk melatih beberapa jaringan lagi dengan serangkaian titik yang diperluas yang menentukan orientasi tangan, kaki, dan kepala, serta posisi lutut dan siku. Kami telah menambahkan skema 16 poin dan 28 poin. Ternyata hasil dari jaringan ini dapat digabungkan sehingga pengguna dapat mengatur posisi ke set poin yang sewenang-wenang. Misalnya, pengguna memutuskan untuk menggerakkan siku kiri, tetapi tidak menyentuh yang kanan. Kemudian posisi siku kanan dan bahu kanan diprediksi dalam pola 6 titik, dan posisi bahu kiri diprediksi dalam pola 16 titik.



Tampaknya ini ternyata menjadi alat yang sangat menarik untuk bekerja dengan pose karakter. Potensinya belum terungkap sampai akhir, dan kami memiliki ide tentang bagaimana meningkatkannya dan menerapkannya tidak hanya untuk bekerja dengan pose. Versi pertama dari alat ini sudah tersedia di versi Cascadeur saat ini. Anda dapat mencobanya jika mendaftar untuk tes beta tertutup di situs web kami cascadeur.com

Kami akan senang mengetahui pendapat Anda dan menjawab pertanyaan.

Tim Banzai Games membutuhkan peneliti pembelajaran mendalam. Baca lebih lanjut tentang lowongan di sini .

Source: https://habr.com/ru/post/id469221/


All Articles