Memprediksi Tindakan Manusia
Rincian
Proyek ini adalah proyek #3 untuk kelas Human Centered Robotics (CSCI473) Dr. Zhang di Colorado School of Mines selama semester Musim Semi 2020. Proyek ini dirancang untuk memberikan pengantar ke pembelajaran mesin dalam robotika melalui penggunaan Support Vector Machines (SVM). Dokumentasi/pengiriman proyek asli dapat dilihat di sini.
Untuk proyek ini digunakan MSR Daily Activity 3D Dataset (Gambar 2), dengan beberapa modifikasi. Dataset ini berisi 16 aktivitas manusia yang dikumpulkan dari sensor Xbox Kinetic dan disimpan sebagai kerangka. Kerangka adalah array koordinat dunia nyata, (x, y, z), dari 20 sendi manusia yang direkam dalam satu frame. Berikut sebuah gambar yang menunjukkan apa itu kerangka:
Untuk mencapai prediksi tindakan manusia, data mentah harus direpresentasikan dalam bentuk yang dapat diproses oleh SVM. Untuk proyek ini, representasi berikut digunakan:
- Representasi Sudut Relatif dan Jarak (RAD)
- Representasi Histogram Perbedaan Posisi Sendi (HJPD)
Untuk klasifikasi, representasi dikirimkan ke SVM, yang ditenagai oleh LIBSVM, untuk membuat model yang dapat memprediksi tindakan manusia. Dua model akan dibuat, satu menggunakan RAD dan satu lagi menggunakan HJPD. Tujuannya adalah membuat model-model ini seakurat mungkin dan melihat representasi mana yang berkinerja terbaik.
Dengan mengetahui hal ini, berikut gambaran umum tentang apa yang dilakukan kode:
- Memuat data mentah dari dataset yang dimodifikasi
- Menghapus data outlier dan/atau data error dari dataset yang dimuat
- Mengonversi data mentah akhir ke dalam representasi RAD dan HJPD
- Representasi dikirim ke SVM yang telah dituning untuk menghasilkan dua model
- Kedua model kemudian diberi data mentah uji dan matriks kebingungan dihasilkan untuk mengukur bagaimana model-model tersebut berkinerja.
Hasil
Setelah menjalankan kode dan menyetel model semampu saya, berikut matriks kebingungan akhir untuk kedua model RAD dan HJPD:
Representation: RAD
Accuracy: 62.5%
LIBSVM Classification 8.0 10.0 12.0 13.0 15.0 16.0
Actual Activity Number
8.0 8 0 0 0 0 0
10.0 1 5 0 0 1 1
12.0 0 1 1 0 3 3
13.0 0 0 0 6 1 1
15.0 0 0 0 1 5 2
16.0 0 0 0 0 3 5
Representation: HJPD
Accuracy: 70.83%
LIBSVM Classification 8.0 10.0 12.0 13.0 15.0 16.0
Actual Activity Number
8.0 7 1 0 0 0 0
10.0 1 5 0 0 0 2
12.0 0 0 7 0 1 0
13.0 2 0 1 5 0 0
15.0 0 0 0 0 7 1
16.0 0 2 0 0 3 3
Kesimpulan
Karena kedua akurasi lebih dari 50%, proyek ini berhasil. Selain itu, representasi HJPD tampaknya merupakan representasi yang lebih akurat untuk digunakan pada klasifikasi ini. Dengan ini, ada model yang memprediksi tindakan manusia menggunakan data kerangka. Model-model di sini masih jauh dari sempurna tetapi lebih baik daripada acak. Proyek ini adalah yang melahirkan proyek Moving Pose kemudian.
Catatan Tambahan:
- Proyek ini diuji pada Python versi 3.8.13
- Untuk proyek ini, digunakan dataset MDA3 lengkap dan dataset MDA3 yang dimodifikasi. MDA3 yang dimodifikasi hanya berisi aktivitas 8, 10, 12, 13, 15, & 16. Selain itu versi yang dimodifikasi memiliki beberapa titik data yang “rusak” sementara dataset lengkap tidak.
- Representasi Ruang-Waktu Orang Berdasarkan Data Kerangka 3D: Sebuah Tinjauan
- YouTube: Bagaimana Sensor Kedalaman Kinect Bekerja dalam 2 Menit
- Medium: Memahami Sendi Kinect V2 & Sistem Koordinat
- Halaman Wikipedia Kinect
- Jameco Xbox Kinect
- Informasi Tentang SVM(s) & LibSVM: cjlin libsvm, halaman pypi libsvm, & github libsvm
- Logika & Dokumentasi SVM & LIBSVM: makalah panduan cjlin & cjlin libsvmtools datasets
- Informasi Tentang Dataset yang Digunakan/Dimodifikasi