Paghuhula ng mga Gawaing Pantao

Repo ng GitHub ng Proyekto

skr

Mga Detalye

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

skr

Para sa proyektong ito, ginamit ang MSR Daily Activity 3D Dataset (Larawan 2), na may ilang pagbabago. Ang dataset na ito ay naglalaman ng 16 na gawaing pantao na nakalap mula sa isang Xbox Kinetic sensor at nakaimbak bilang mga kalansay. Ang mga kalansay ay isang array ng mga totoong koordinadang mundo na (x, y, z) ng 20 kasu-kasuan ng isang tao na naitala sa isang frame. Narito ang isang pigura na nagpapakita kung ano ang isang kalansay:

skr

Upang makamit ang paghuhula ng pagkilos ng tao, ang hilaw na datos ay dapat katawanin sa isang anyo na maaaring iproseso ng isang SVM. Para sa proyektong ito, ginamit ang mga sumusunod na representasyon:

  • Representasyong Relative Angles and Distances (RAD)
  • Representasyong Histogram of Joint Position Differences (HJPD)

Para sa klasipikasyon, ang representasyon(s) ay ipinapadala sa isang SVM, na pinapagana ng LIBSVM, upang lumikha ng isang modelo na maaaring humula ng mga gawaing pantao. Dalawang modelo ang lilikhain, isa gamit ang RAD at isa pa gamit ang HJPD. Ang layunin ay gawing kasing-eksakto hangga’t maaari ang mga modelong ito at tingnan kung aling representasyon ang pinakamahusay na gumaganap.

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

  1. I-load ang hilaw 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 huling hilaw na datos tungo sa mga representasyong RAD at HJPD
  4. Ipinapadala ang mga representasyon sa mga naka-tune na SVM upang makabuo ng dalawang modelo
  5. Pagkatapos ay pinapakain sa dalawang modelo ang test raw data at isang confusion matrix ang nililikha upang sukatin kung paano gumanap ang (mga) modelo.

Mga Resulta

Pagkatapos patakbuhin ang code at i-tune ang mga modelo sa abot ng aking makakaya, narito ang huling confusion matrix para sa parehong mga modelo ng RAD at 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

Konklusyon

Dahil parehong lampas 50% ang mga accuracy, naging matagumpay ang proyektong ito. Gayundin, ang representasyong HJPD ay tila ang mas tumpak na representasyong gamitin para sa klasipikasyong ito. Dahil dito, mayroong (mga) modelo na naghuhula ng mga gawaing pantao gamit ang datos ng kalansay. Ang (mga) modelo rito ay malayo sa perpekto ngunit mas mabuti ito kaysa sa random. Ang proyektong ito ang nagbigay-daan sa proyektong Moving Pose sa bandang huli.

Mga Karagdagang Tala: