Vorhersage menschlicher Aktionen
GitHub-Repository des Projekts

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.

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:

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:
- Laden der Rohdaten aus dem modifizierten Datensatz
- Entfernen von Ausreißern und/oder fehlerhaften Daten aus dem geladenen Datensatz
- Konvertieren der endgültigen Rohdaten in RAD- und HJPD-Darstellungen
- Die Darstellungen werden in abgestimmte SVM(s) eingespeist, um zwei Modelle zu erzeugen
- 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:
- Dieses Projekt wurde mit Python Version 3.8.13 getestet.
- Für dieses Projekt wird der komplette MDA3‑Datensatz und ein modifizierter MDA3‑Datensatz verwendet. Der modifizierte MDA3 enthält nur die Aktivitäten 8, 10, 12, 13, 15 und 16. Außerdem enthält die modifizierte Version einige „beschädigte“ Datenpunkte, die im kompletten Datensatz nicht vorkommen.
- Raum‑Zeit-Darstellung von Personen basierend auf 3D‑Skelettdaten: Ein Überblick
- YouTube: Wie der Kinect‑Tiefensensor in 2 Minuten funktioniert
- Medium: Verständnis der Kinect V2‑Gelenke & Koordinatensystem
- Kinect Wikipedia‑Seite
- Jameco Xbox Kinect
- Informationen zu SVM(s) & LibSVM: cjlin libsvm, libsvm‑PyPI‑Seite, & libsvm‑GitHub
- SVM‑ & LIBSVM‑Logik & Dokumentation: cjlin‑Leitfaden‑Papier & cjlin‑libsvmtools‑Datensätze
- Informationen zum verwendeten/modifizierten Datensatz