Prédire les actions humaines

Dépôt GitHub du projet

skr

Détails

Ce projet était le projet n°3 du cours de Robotique centrée sur l’humain (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 à travers l’utilisation des machines à vecteurs de support (SVM). Les livrables/description du projet original peuvent être consultés ici.

skr

Pour ce projet, le jeu de données MSR Daily Activity 3D (Figure 2), avec quelques modifications, a été utilisé. Ce jeu de données contient 16 activités humaines recueillies à partir d’un capteur Xbox Kinetic 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 en une seule image. Voici une figure qui montre ce qu’est un squelette :

skr

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

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

Pour la classification, la ou les représentations sont envoyées dans une SVM, alimentée 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 RAD et l’autre HJPD. L’objectif est de rendre ces modèles aussi précis que possible et de voir quelle représentation est la plus performante.

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

  1. Charger les données brutes à partir 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 à des SVM ajustées 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 les performances du ou des modèles.

Résultats

Après avoir exécuté le code et ajusté les modèles du mieux possible, voici la matrice de confusion finale 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

Comme les deux précisions sont supérieures à 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 cette classification. Avec cela, il existe un ou des modèles qui prédisent les actions humaines à l’aide de données squelettiques. Le ou les modèles ici sont loin d’être parfaits, mais ils sont meilleurs que le hasard. C’est ce projet qui a donné naissance plus tard au projet Moving Pose.

Notes supplémentaires :