Predicción de Acciones Humanas

Repositorio de GitHub del Proyecto

skr

Detalles

Este proyecto fue el proyecto #3 para la clase de Robótica Centrada en el Humano (CSCI473) del Dr. Zhang en la Escuela de Minas de Colorado durante el semestre de Primavera de 2020. Fue diseñado para proporcionar una introducción al aprendizaje automático en robótica a través del uso de Máquinas de Vectores de Soporte (SVM). Los entregables/descripción originales del proyecto se pueden ver aquí.

skr

Para este proyecto se utilizó el Conjunto de Datos de Actividades Diarias MSR 3D (Figura 2), con algunas modificaciones. Este conjunto de datos contiene 16 actividades humanas recopiladas de un sensor Xbox Kinetic y almacenadas como esqueletos. Los esqueletos son un arreglo de coordenadas del mundo real, (x, y, z), de 20 articulaciones de un humano registradas en un marco. Aquí hay una figura que muestra qué es un esqueleto:

skr

Para lograr la predicción de acciones humanas, los datos en bruto deben ser representados en una forma que pueda ser procesada por un SVM. Para este proyecto, se utilizaron las siguientes representaciones:

  • Representación de Ángulos y Distancias Relativas (RAD)
  • Representación de Histograma de Diferencias de Posición de Articulaciones (HJPD)

Para la clasificación, la(s) representación(es) se envían a un SVM, impulsado por LIBSVM, para crear un modelo que pueda predecir acciones humanas. Se crearán dos modelos, uno utilizando RAD y otro utilizando HJPD. El objetivo es hacer que estos modelos sean lo más precisos posible y ver cuál representación funciona mejor.

Sabiendo esto, aquí hay un resumen de lo que hace el código:

  1. Cargar los datos en bruto del conjunto de datos modificado
  2. Eliminar cualquier dato atípico y/o erróneo del conjunto de datos cargado
  3. Convertir los datos en bruto finales en representaciones RAD y HJPD
  4. Las representaciones se envían a SVM(s) ajustados para generar dos modelos
  5. Los dos modelos se alimentan con datos en bruto de prueba y se genera una matriz de confusión para medir cómo se desempeñaron el(los) modelo(s).

Resultados

Después de ejecutar el código y ajustar los modelos lo mejor que pude, aquí están las matrices de confusión finales para ambos modelos RAD y HJPD:

Representación: RAD
Precisión: 62.5%
Clasificación LIBSVM   8.0   10.0  12.0  13.0  15.0  16.0
Número de Actividad Real
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
Representación: HJPD
Precisión: 70.83%
Clasificación LIBSVM   8.0   10.0  12.0  13.0  15.0  16.0
Número de Actividad Real
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

Conclusión

Dado que ambas precisiones están por encima del 50%, este proyecto fue un éxito. Además, la representación HJPD parece ser la representación más precisa para usar en estas clasificaciones. Con esto, hay un modelo(s) que predice acciones humanas utilizando datos de esqueleto. El(los) modelo(s) aquí están lejos de ser perfectos, pero son mejores que aleatorios. Este proyecto fue lo que dio origen al proyecto Moving Pose más adelante.

Notas Adicionales: