Prédire les Actions Humaines

Repo GitHub du Projet

skr

Détails

Ce projet était le projet #3 pour le cours de Robotique Centrée sur l’Homme (CSCI473) de Dr. Zhang à l’École des Mines du Colorado 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/description du projet original peuvent être consultés ici.

skr

Pour ce projet, le Jeu de Données d’Activités Quotidiennes MSR 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 réelles (x, y, z) de 20 articulations d’un humain enregistrées dans un cadre. Voici une figure qui montre ce qu’est un squelette :

skr

Pour réaliser la prédiction des 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)
  • 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 un SVM, alimenté par LIBSVM, pour 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 utilisant HJPD. L’objectif est de rendre ces modèles aussi précis que possible et de voir quelle représentation fonctionne le mieux.

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 réglé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 comment les modèles ont performé.

Résultats

Après avoir exécuté le code et réglé les modèles du mieux que je pouvais, voici la matrice de confusion finale pour les modèles RAD et HJPD :

Représentation : RAD
Précision : 62.5%
Classification LIBSVM   8.0   10.0  12.0  13.0  15.0  16.0
Numéro d'Activité Réelle
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
Représentation : HJPD
Précision : 70.83%
Classification LIBSVM   8.0   10.0  12.0  13.0  15.0  16.0
Numéro d'Activité Réelle
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 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 ces classifications. Avec cela, il y a un ou des modèles qui prédisent les actions humaines en utilisant des données de squelette. Les modèles ici sont loin d’être parfaits mais ils sont meilleurs que le hasard. Ce projet a donné naissance au projet Moving Pose par la suite.

Notes Supplémentaires :