预测人类行为

项目的 GitHub 仓库

skr

细节

该项目是张博士的以人为本的机器人学(CSCI473)课程在科罗拉多矿业学院2020年春季学期的第3个项目。它旨在通过使用支持向量机(SVM)为机器人学提供机器学习的入门。原始项目交付物/描述可在此处查看。

skr

对于本项目,使用了MSR Daily Activity 3D 数据集(图 2),并进行了一些修改。该数据集包含从 Xbox Kinect 传感器收集的 16 种人类活动,并以骨架形式存储。骨架是一个数组,包含在单帧中记录的人体 20 个关节的真实世界 (x, y, z) 坐标。以下图示展示了骨架的样子:

skr

为了实现人类动作预测,原始数据必须以可由 SVM 处理的形式表示。对于本项目,使用了以下表示方法:

  • 相对角度和距离(RAD)表示
  • 关节位置差异直方图(HJPD)表示

在分类时,将表示(们)输入由LIBSVM提供支持的 SVM,以创建能够预测人类动作的模型。将创建两个模型,一个使用 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项目。

附加说明: