Vorhersage menschlicher Aktionen

GitHub-Repository des Projekts

Skelett

Details

Dieses Projekt war Projekt #3 für Dr. Zhangs Kurs Human Centered Robotics (CSCI473) an der Colorado School of Mines im Frühjahrssemester 2020. Es wurde entwickelt, um eine Einführung in maschinelles Lernen in der Robotik durch die Verwendung von Support Vector Machines (SVM) zu bieten. Die ursprünglichen Projektlieferungen/Beschreibung können hier eingesehen werden.

Skelett

Für dieses Projekt wurde der MSR Daily Activity 3D Datensatz (Abbildung 2) mit einigen Modifikationen verwendet. Dieser Datensatz enthält 16 menschliche Aktivitäten, die von einem Xbox Kinect‑Sensor erfasst und als Skelette gespeichert wurden. Skelette sind ein Array von realen (x, y, z)-Koordinaten von 20 Gelenken eines Menschen, die in einem Bild aufgenommen wurden. Hier ist eine Abbildung, die zeigt, was ein Skelett ist:

Skelett

Um die Vorhersage menschlicher Aktionen zu erreichen, müssen die Rohdaten in einer Form dargestellt werden, die von einem SVM verarbeitet werden kann. Für dieses Projekt wurden die folgenden Darstellungen verwendet:

  • Relative Winkel und Abstände (RAD)-Darstellung
  • Histogramm der Gelenkpositionsunterschiede (HJPD)-Darstellung

Zur Klassifizierung werden die Darstellung(en) in ein SVM eingespeist, das von LIBSVM unterstützt wird, um ein Modell zu erstellen, das menschliche Aktionen vorhersagen kann. Es werden zwei Modelle erstellt, eines mit RAD und ein weiteres mit HJPD. Das Ziel ist, diese Modelle so genau wie möglich zu machen und zu sehen, welche Darstellung die beste Leistung erbringt.

In Anbetracht dessen, hier ein Überblick darüber, was der Code macht:

  1. Laden der Rohdaten aus dem modifizierten Datensatz
  2. Entfernen von Ausreißern und/oder fehlerhaften Daten aus dem geladenen Datensatz
  3. Konvertieren der endgültigen Rohdaten in RAD- und HJPD-Darstellungen
  4. Die Darstellungen werden in abgestimmte SVM(s) eingespeist, um zwei Modelle zu erzeugen
  5. Die beiden Modelle erhalten dann Test‑Rohdaten und eine Verwirrungsmatrix wird erzeugt, um zu messen, wie die Modelle abgeschnitten haben.

Ergebnisse

Nach dem Ausführen des Codes und dem Abstimmen der Modelle nach bestem Können, hier die endgültige Verwirrungsmatrix für sowohl das RAD- als auch das HJPD-Modell:

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

Fazit

Da beide Genauigkeiten über 50 % liegen, war dieses Projekt ein Erfolg. Außerdem scheint die HJPD-Darstellung die genauere Darstellung für diese Klassifikationen zu sein. Damit gibt es ein Modell(e), das/die menschliche Aktionen anhand von Skelettdaten vorhersagt. Die Modelle hier sind weit von perfekt entfernt, aber besser als zufällig. Dieses Projekt war die Geburtsstunde des Moving Pose-Projekts, das später entstand.

Zusätzliche Hinweise: