Предсказание действий человека

Репозиторий GitHub проекта

skr

Подробности

Этот проект был проектом №3 для курса доктора Чжана Human Centered Robotics (CSCI473) в Школе горного дела Колорадо в весеннем семестре 2020 года. Он был предназначен для того, чтобы дать введение в машинное обучение в робототехнике посредством использования метода опорных векторов (SVM). С исходным заданием/описанием проекта можно ознакомиться здесь.

skr

Для этого проекта использовался MSR Daily Activity 3D Dataset (рисунок 2) с некоторыми изменениями. Этот набор данных содержит 16 человеческих действий, собранных с датчика Xbox Kinetic и сохранённых в виде скелетов. Скелеты — это массив координат реального мира (x, y, z) 20 суставов человека, записанных в одном кадре. Вот рисунок, показывающий, что такое скелет:

skr

Для достижения предсказания действий человека сырые данные должны быть представлены в форме, которую можно обработать с помощью SVM. Для этого проекта использовались следующие представления:

  • Представление относительных углов и расстояний (RAD)
  • Представление гистограммы различий положений суставов (HJPD)

Для классификации представление(я) отправляется в SVM, работающий на базе LIBSVM, чтобы создать модель, которая может предсказывать действия человека. Будут созданы две модели: одна с использованием RAD, а другая — с использованием HJPD. Цель состоит в том, чтобы сделать эти модели как можно более точными и посмотреть, какое представление работает лучше.

Зная это, вот обзор того, что делает код:

  1. Загрузить сырые данные из изменённого набора данных
  2. Удалить любые выбросы и/или ошибочные данные из загруженного набора данных
  3. Преобразовать окончательные сырые данные в представления RAD и HJPD
  4. Представления отправляются в настроенные SVM для генерации двух моделей
  5. Затем эти две модели получают тестовые сырые данные, и генерируется матрица ошибок для измерения того, как хорошо модель(и) справилась.

Результаты

После запуска кода и настройки моделей насколько это было в моих силах, вот конечная матрица ошибок для обеих моделей RAD и 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

Заключение

Поскольку обе точности выше 50%, этот проект был успешным. Кроме того, представление HJPD, похоже, является более точным представлением для использования в этой классификации. Благодаря этому существует модель(и), которая предсказывает действия человека с использованием данных скелета. Модель(и) здесь далеки от идеала, но они лучше случайного угадывания. Именно этот проект позже дал начало проекту Moving Pose.

Дополнительные примечания: