Abstract We propose a new method to quickly and accurately predict 3D positions of body joints from a single depth image, using no temporal information. We take an object recognition approach, designing an intermediate body parts representation that maps the difficult pose estimation problem into a simpler per-pixel classification problem. Our large and highly varied training dataset allows the classifier to estimate body parts invariant to pose, body shape, clothing, etc. Finally we generate confidence-scored 3D proposals of several body joints by reprojecting the classification result and finding local modes. The system runs at 200 frames per second on consumer hardware. Our evaluation shows high accuracy on both synthetic and real test sets, and investigates the effect of several training parameters. We achieve state of the art accuracy in our comparison with related work and demonstrate improved generalization over exact whole-skeleton nearest neighbor matching.
导读
论文提出了一种从单张深度图片中实时识别人体姿态的方法。主要思路是将这个问题转化成从单张深度图片识别每个像素属于身体的那个部位以及对识别出来的身体部位进行3维关节点重建问题。
我们主要关注论文中如何使用随机森林解决第一步转化:从深度图片来识别身体部位。
训练数据的采集
如何得到大量,多样的训练数据是问题的关键。限制有二,使用计算机图形技术生成的真实图像会受到大量的颜色和纹理的影响,使得原始数据的有效信息退化成二维剪影信息,即使深度相机可以避免颜色纹理的影响,但是人体和衣服的形状各样性仍不能很好收集完全。
论文基于原始深度相机采集的图像,结合人物模型特性轻微改变身高和体重来生成更多的合成图像,以此来覆盖更多的人体形状。合成图像的目标是真实和多样。此外,结合用户的使用场景,论文的数据采集目标是覆盖人可能在娱乐场景中做出来的各种姿势。事实上,并不需要采集所有可能的姿态的组合数据,只要采集到大量范围广的的姿态信息就足够了。对采集的连续姿态序列,姿态之间相似冗余,因而使用定义了姿态间的欧式距离舍弃其中的部分冗余数据。
此外,为了进一步完善先前采集数据的缺失信息,可以迭代采集过程,不断完善数据库。
特征表达
论文使用深度比对来生成图像 中某一个像素 的特征。
- 首先,对于像素 ,定义一组位移探针 来获取像素 附近两个位置的深度差异。
- 基于 生成的两个像素点可以表示成, 和 。
- 两个像素探针的深度差可以计算如下
其中, 是通过正则化确保特征是深度无关的信息。
实验中,对于每张图片,每个像素点,定义了 2000 组这样的探针,每个探针 构成了该像素点的其中一个特征,也即生成了2000个特征。
每个单独的特征只提供了很弱的信号可以指示像素属于身体的哪个部位。但是对随机森林来说,这足够让这些特征组合提供足够的信息来准确分辨各个身体部分。
Insights
- a highly varied and large training set is required.
- 基于原始数据合成覆盖更广更多的数据。要求合成的数据真实且多样。
- 采集训练数据结合具体的测试场景。
- 对于RF,训练数据不需要穷尽所有的组合,只要数据分布广数量足够即可。
- 使用 furtherst neighbor clustering 丢弃相似冗余的数据。
- 迭代采样,弥补缺失训练数据
- 特征表达:使用足量的特征,每个特征提供(即使微弱的)信号