Przewidywanie ludzkich działań

Repozytorium GitHub projektu

skr

Szczegóły

Ten projekt był projektem nr 3 na zajęciach dr. Zhanga Human Centered Robotics (CSCI473) w Colorado School of Mines podczas semestru wiosennego 2020. Został zaprojektowany, aby zapewnić wprowadzenie do uczenia maszynowego w robotyce poprzez wykorzystanie maszyn wektorów nośnych (SVM). Oryginalne materiały projektu/opis można zobaczyć tutaj.

skr

Do tego projektu użyto MSR Daily Activity 3D Dataset (Rysunek 2), z pewnymi modyfikacjami. Zestaw danych zawiera 16 ludzkich aktywności zebranych z czujnika Xbox Kinetic i zapisanych jako szkielety. Szkielety to tablica rzeczywistych współrzędnych (x, y, z) 20 stawów człowieka zarejestrowanych w jednej klatce. Oto rysunek pokazujący, czym jest szkielet:

skr

Aby uzyskać przewidywanie ludzkich działań, surowe dane muszą zostać przedstawione w formie, którą może przetworzyć SVM. W tym projekcie użyto następujących reprezentacji:

  • Reprezentacja względnych kątów i odległości (RAD)
  • Reprezentacja histogramu różnic położeń stawów (HJPD)

Do klasyfikacji reprezentacja(y) jest wysyłana do SVM, obsługiwanego przez LIBSVM, aby utworzyć model, który może przewidywać ludzkie działania. Zostaną utworzone dwa modele, jeden z użyciem RAD, a drugi z użyciem HJPD. Celem jest uczynienie tych modeli jak najdokładniejszymi i sprawdzenie, która reprezentacja działa najlepiej.

Mając to na uwadze, oto przegląd tego, co robi kod:

  1. Wczytuje surowe dane z zmodyfikowanego zestawu danych
  2. Usuwa wszelkie dane odstające i/lub błędne z wczytanego zestawu danych
  3. Konwertuje końcowe surowe dane do reprezentacji RAD i HJPD
  4. Reprezentacje są wysyłane do dostrojonych SVM-ów, aby wygenerować dwa modele
  5. Następnie dwa modele są zasilane testowymi surowymi danymi, a macierz pomyłek jest generowana w celu zmierzenia, jak model(e) się sprawdziły.

Wyniki

Po uruchomieniu kodu i dostrojeniu modeli najlepiej, jak potrafiłem, oto końcowe macierze pomyłek dla obu modeli RAD i 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

Wnioski

Ponieważ obie dokładności są powyżej 50%, projekt zakończył się sukcesem. Również reprezentacja HJPD wydaje się być dokładniejszą reprezentacją do użycia w tej klasyfikacji. Dzięki temu istnieje model(e), który przewiduje ludzkie działania z użyciem danych szkieletowych. Modele tutaj są dalekie od doskonałości, ale są lepsze niż losowe. To właśnie ten projekt dał początek projektowi Moving Pose później.

Dodatkowe uwagi: