Menselijke Acties Voorspellen

GitHub-repository van het project

skr

Details

Dit project was project #3 voor de Human Centered Robotics (CSCI473)-les van Dr. Zhang aan de Colorado School of Mines tijdens het voorjaarsemester van 2020. Het was ontworpen om een introductie te bieden in machine learning in robotica door het gebruik van Support Vector Machines (SVM). De oorspronkelijke projectopleveringen/beschrijving kunnen hier worden bekeken.

skr

Voor dit project werd de MSR Daily Activity 3D Dataset (Figuur 2), met enkele aanpassingen, gebruikt. Deze dataset bevat 16 menselijke activiteiten verzameld van een Xbox Kinetic-sensor en opgeslagen als skeletten. Skeletten is een array van coördinaten uit de echte wereld, (x, y, z), van 20 gewrichten van een mens, vastgelegd in één frame. Hier is een figuur die laat zien wat een skelet is:

skr

Om menselijke actievoorspelling te bereiken, moeten de ruwe gegevens worden weergegeven in een vorm die door een SVM kan worden verwerkt. Voor dit project werden de volgende representaties gebruikt:

  • Representatie van Relatieve Hoeken en Afstanden (RAD)
  • Histogram van Verschillen in Gewrichtspositie (HJPD)-representatie

Voor classificatie wordt de representatie(s) naar een SVM gestuurd, aangedreven door LIBSVM, om een model te creëren dat menselijke acties kan voorspellen. Er zullen twee modellen worden gemaakt, één met RAD en een andere met HJPD. Het doel is om deze modellen zo nauwkeurig mogelijk te maken en te zien welke representatie het beste presteert.

Met dit in gedachten, hier is een overzicht van wat de code doet:

  1. Laad de ruwe gegevens uit de aangepaste dataset
  2. Verwijder eventuele uitschieters en/of foutgegevens uit de geladen dataset
  3. Converteer de uiteindelijke ruwe gegevens naar RAD- en HJPD-representaties
  4. De representaties worden naar getunede SVM(’s) gestuurd om twee modellen te genereren
  5. De twee modellen worden vervolgens gevoed met test-ruwe gegevens en er wordt een confusion matrix gegenereerd om te meten hoe de model(len) presteerden.

Resultaten

Na het uitvoeren van de code en het tunen van de modellen naar beste kunnen, zijn hier de uiteindelijke confusion matrices voor zowel de RAD- als de HJPD-modellen:

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

Conclusie

Omdat beide nauwkeurigheden boven de 50% liggen, was dit project een succes. Ook lijkt de HJPD-representatie de nauwkeurigere representatie te zijn om te gebruiken voor deze classificatie. Hiermee is er een model(len) dat menselijke acties voorspelt met behulp van skeletgegevens. De model(len) hier zijn verre van perfect, maar het is beter dan willekeurig. Dit project was wat later aan de basis stond van het Moving Pose project.

Aanvullende Opmerkingen: