预测人类动作

项目的 GitHub 代码仓库

skr

详细信息

这个项目是张博士的人本机器人(CSCI473)课程的第 3 个项目,于 2020 年春季学期在科罗拉多矿业学院进行。它旨在通过使用支持向量机(SVM)为机器人中的机器学习提供入门介绍。原始项目交付物/说明可在这里查看。

skr

对于这个项目,使用了带有一些修改的 MSR Daily Activity 3D 数据集(图 2)。该数据集包含从 Xbox Kinetic 传感器收集并以骨架形式存储的 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 项目。

其他说明: