Predizendo Ações Humanas

Repositório do GitHub do Projeto

skr

Detalhes

Este projeto foi o projeto #3 para a aula de Robótica Centrada no Humano (CSCI473) do Dr. Zhang na Colorado School of Mines durante o semestre da Primavera de 2020. Foi projetado para fornecer uma introdução ao aprendizado de máquina em robótica através do uso de Máquinas de Vetores de Suporte (SVM). Os entregáveis/descrição do projeto original podem ser visualizados aqui.

skr

Para este projeto, o Conjunto de Dados de Atividades Diárias MSR 3D (Figura 2), com algumas modificações, foi utilizado. Este conjunto de dados contém 16 atividades humanas coletadas de um sensor Xbox Kinetic e armazenadas como esqueletos. Esqueletos são um array de coordenadas do mundo real, (x, y, z), de 20 articulações de um humano registradas em um quadro. Aqui está uma figura que mostra o que é um esqueleto:

skr

Para alcançar a previsão de ações humanas, os dados brutos devem ser representados de uma forma que possa ser processada por um SVM. Para este projeto, as seguintes representações foram utilizadas:

  • Representação de Ângulos e Distâncias Relativas (RAD)
  • Representação de Histograma de Diferenças de Posição das Juntas (HJPD)

Para classificação, a(s) representação(ões) é enviada para um SVM, alimentado por LIBSVM, para criar um modelo que pode prever ações humanas. Dois modelos serão criados, um usando RAD e outro usando HJPD. O objetivo é tornar esses modelos o mais precisos possível e ver qual representação tem o melhor desempenho.

Sabendo disso, aqui está uma visão geral do que o código faz:

  1. Carrega os dados brutos do conjunto de dados modificado
  2. Remove quaisquer dados de outliers e/ou erros do conjunto de dados carregado
  3. Converte os dados brutos finais em representações RAD e HJPD
  4. As representações são enviadas para SVM(s) ajustados para gerar dois modelos
  5. Os dois modelos são então alimentados com dados brutos de teste e uma matriz de confusão é gerada para medir como o(s) modelo(s) se saíram.

Resultados

Após executar o código e ajustar os modelos da melhor forma possível, aqui estão as matrizes de confusão finais para os modelos RAD e HJPD:

Representação: RAD
Precisão: 62.5%
Classificação LIBSVM   8.0   10.0  12.0  13.0  15.0  16.0
Número da Atividade 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
Representação: HJPD
Precisão: 70.83%
Classificação LIBSVM   8.0   10.0  12.0  13.0  15.0  16.0
Número da Atividade 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

Conclusão

Como ambas as precisões estão acima de 50%, este projeto foi um sucesso. Além disso, a representação HJPD parece ser a representação mais precisa a ser utilizada para essas classificações. Com isso, há um(s) modelo(s) que prevêem ações humanas usando dados de esqueleto. O(s) modelo(s) aqui estão longe de ser perfeitos, mas é melhor do que aleatório. Este projeto foi o que deu origem ao projeto Moving Pose mais tarde.

Notas Adicionais: