Predizione delle Azioni Umane

Repository GitHub del progetto

skr

Dettagli

Questo progetto è stato il progetto n. 3 per la classe Human Centered Robotics (CSCI473) del Dr. Zhang alla Colorado School of Mines durante il semestre primaverile 2020. È stato progettato per fornire un’introduzione al machine learning in robotica tramite l’uso di Support Vector Machines (SVM). I deliverable/descrizione originali del progetto possono essere consultati qui.

skr

Per questo progetto è stato utilizzato, con alcune modifiche, il Dataset MSR Daily Activity 3D (Figura 2). Questo dataset contiene 16 attività umane raccolte da un sensore Xbox Kinetic e memorizzate come scheletri. Gli scheletri sono un array di coordinate reali (x, y, z) di 20 giunti di un umano registrati in un singolo frame. Qui c’è una figura che mostra cos’è uno scheletro:

skr

Per ottenere la previsione delle azioni umane, i dati grezzi devono essere rappresentati in una forma che possa essere elaborata da una SVM. Per questo progetto, sono state utilizzate le seguenti rappresentazioni:

  • Rappresentazione Angoli Relativi e Distanze (RAD)
  • Rappresentazione Istogramma delle Differenze di Posizione delle Articolazioni (HJPD)

Per la classificazione, la/le rappresentazione/i viene/no inviato/e a una SVM, alimentata da LIBSVM, per creare un modello che possa prevedere le azioni umane. Saranno creati due modelli, uno usando RAD e un altro usando HJPD. L’obiettivo è rendere questi modelli il più accurati possibile e vedere quale rappresentazione si comporta meglio.

Detto ciò, ecco una panoramica di ciò che fa il codice:

  1. Caricare i dati grezzi dal dataset modificato
  2. Rimuovere eventuali outlier e/o dati errati dal dataset caricato
  3. Convertire i dati grezzi finali nelle rappresentazioni RAD e HJPD
  4. Le rappresentazioni vengono inviate a SVM sintonizzate per generare due modelli
  5. I due modelli vengono quindi alimentati con dati grezzi di test e viene generata una matrice di confusione per misurare le prestazioni del/i modello/i.

Risultati

Dopo aver eseguito il codice e ottimizzato i modelli al meglio delle mie capacità, ecco le matrici di confusione finali per entrambi i modelli RAD e 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

Conclusione

Poiché entrambe le accuratezze sono superiori al 50%, questo progetto è stato un successo. Inoltre, la rappresentazione HJPD sembra essere la rappresentazione più accurata da usare per queste classificazioni. Con questo, esiste/no modello/i che predicono le azioni umane usando i dati scheletrici. I modello/i qui sono lontani dall’essere perfetti ma sono meglio del caso casuale. Questo progetto è stato ciò che ha dato origine al progetto Moving Pose successivamente.

Note aggiuntive: