Pagtataya ng Mga Aksyon ng Tao

Repo ng GitHub ng Proyekto

balangkas

Detalye

Ang proyektong ito ay proyekto #3 para sa Human Centered Robotics (CSCI473) na klase ni Dr. Zhang sa Colorado School of Mines noong Spring 2020 na semestre. Ito ay idinisenyo upang magbigay ng isang panimula sa machine learning sa robotics sa pamamagitan ng paggamit ng Support Vector Machines (SVM). Ang orihinal na mga deliverable/deskripsyon ng proyekto ay makikita dito.

balangkas

Para sa proyektong ito ginamit ang MSR Pang-araw-araw na Aktibidad 3D Dataset (Figure 2), na may ilang mga pagbabago. Ang dataset na ito ay naglalaman ng 16 na gawain ng tao na nakalap mula sa isang Xbox Kinetic sensor at nakaimbak bilang mga balangkas. Ang mga balangkas ay isang array ng totoong mundo, (x, y, z), mga koordinato ng 20 kasukasuan ng isang tao na naitala sa isang frame. Narito ang isang larawan na nagpapakita kung ano ang isang balangkas:

balangkas

Upang makamit ang prediksyon ng aksyon ng tao, ang raw na datos ay dapat irepresenta sa isang anyo na maaaring iproseso ng isang SVM. Para sa proyektong ito, ginamit ang mga sumusunod na representasyon:

  • Relatibong Mga Anggulo at Distansya (RAD) na representasyon
  • Histogram ng Mga Pagkakaiba sa Posisyon ng Kasukasuan (HJPD) na representasyon

Para sa klasipikasyon, ang mga representasyon ay ipinapadala sa isang SVM, na pinapagana ng LIBSVM, upang lumikha ng isang modelo na maaaring humula ng mga aksyon ng tao. Dalawang mga modelo ang gagawin, isa gamit ang RAD at isa pa gamit ang HJPD. Ang layunin ay gawing kasing tumpak ng maaari ang mga modelong ito at tingnan kung alin sa mga representasyon ang pinakamabisa.

Batay dito, narito ang isang pangkalahatang-ideya ng ginagawa ng code:

  1. I-load ang raw na datos mula sa binagong dataset
  2. Alisin ang anumang outlier at/o error na datos mula sa na-load na dataset
  3. I-convert ang pinal na raw na datos sa mga representasyon ng RAD at HJPD
  4. Ang mga representasyon ay ipinapadala sa na-tune na SVM(s) upang makabuo ng dalawang modelo
  5. Ang dalawang modelo ay saka pinapakain ng test raw na datos at isang confusion matrix ang nabubuo upang sukatin kung paano nag-perform ang mga modelo

Resulta

Matapos patakbuhin ang code at i-tune ang mga modelo ayon sa aking makakaya, narito ang panghuling confusion matrix para sa parehong RAD at HJPD na mga modelo:

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

Konklusyon

Dahil ang parehong mga accuracy ay higit sa 50%, matagumpay ang proyektong ito. Mukhang ang HJPD na representasyon ang mas tumpak na representasyon na gamitin para sa mga klasipikasyong ito. Sa pamamagitan nito, mayroong modelo/mga modelo na humuhula ng mga aksyon ng tao gamit ang datos ng balangkas. Ang mga modelong ito ay malayo pa sa perpekto ngunit mas maganda kaysa sa random. Ang proyektong ito ang naging dahilan ng pagsilang ng proyektong Moving Pose mamaya.

Karagdagang Tala: