Prédire les actions humaines

Dépot GitHub du projet

skr

Détails

Ce projet était le projet n°3 pour le cours Human Centered Robotics (CSCI473) du Dr Zhang à la Colorado School of Mines pendant le semestre de printemps 2020. Il a été conçu pour fournir une introduction à l’apprentissage automatique en robotique grâce à l’utilisation de machines à vecteurs de support (SVM). Les livrables / la description du projet original peuvent être consultés ici.

skr

Pour ce projet, le MSR Daily Activity 3D Dataset (Figure 2), avec quelques modifications, a été utilisé. Ce jeu de données contient 16 activités humaines recueillies à partir d’un capteur Xbox Kinect et stockées sous forme de squelettes. Les squelettes sont un tableau de coordonnées du monde réel (x, y, z) de 20 articulations d’un humain enregistrées dans une seule image. Voici une figure qui montre ce qu’est un squelette :

skr

Pour réaliser la prédiction d’actions humaines, les données brutes doivent être représentées sous une forme pouvant être traitée par un SVM. Pour ce projet, les représentations suivantes ont été utilisées :

  • Représentation des angles et distances relatifs (RAD)
  • Histogramme des différences de position des articulations (HJPD)

Pour la classification, la/les représentation(s) est/sont envoyée(s) dans un SVM, alimenté par LIBSVM, afin de créer un modèle capable de prédire les actions humaines. Deux modèles seront créés, l’un utilisant le RAD et l’autre le HJPD. L’objectif est de rendre ces modèles aussi précis que possible et de voir quelle représentation donne les meilleurs résultats.

En sachant cela, voici un aperçu de ce que fait le code :

  1. Charger les données brutes du jeu de données modifié
  2. Supprimer toute donnée aberrante et/ou erronée du jeu de données chargé
  3. Convertir les données brutes finales en représentations RAD et HJPD
  4. Les représentations sont envoyées dans des SVM ajustés pour générer deux modèles
  5. Les deux modèles sont ensuite alimentés avec des données brutes de test et une matrice de confusion est générée pour mesurer la performance du/des modèle(s).

Résultats

Après avoir exécuté le code et ajusté les modèles au mieux de mes capacités, voici les matrices de confusion finales pour les modèles RAD et 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

Conclusion

Étant donné que les deux précisions dépassent 50 %, ce projet a été un succès. De plus, la représentation HJPD semble être la représentation la plus précise à utiliser pour ces classifications. Ainsi, il existe un ou des modèles qui prédisent les actions humaines à partir de données de squelette. Les modèles présentés ici sont loin d’être parfaits mais ils sont meilleurs que le hasard. Ce projet est à l’origine du projet Moving Pose qui a suivi.

Notes supplémentaires :