在过去多年里,码农们花了大量的精力用预先架构的精妙算法来节省计算资源。而机器学习在一定程度上把这事揽了过去。通过机器学习,现在我们可以将大量的数据丢给电脑让它自行计算,同时只占用很低的CPU和GPU。当然,真正做起来比这复杂很多,并且做好了不容易。但其结果将适用于一大类的识别——包括体感。
在开始机器学习之前,你首先要做的是收集大量的高质量数据。放在Kinect的例子就是数GB的深度标记的视频,视频中会有多名测试人员做出各种各样的手势、动作。然后这些视频片段需要进行人工标记来说明哪个节点上测试人员做了什么动作,这个过程其实类似传统的科研数据收集过程。最后这些人肉标记的数据被称为“底层事实”——也就是识别过程所依照的标准。
同时你还要注意的一个问题是明确方向。微软的团队过去在做抓握动作识别时采用的是判断手掌的形状是开放的还是闭合的,但很长时间没有什么进展;而Sol的团队采用的方式是直接判断抓握和松手的动作——这才是他们改善抓握动作界面的关键。
一旦你有了足够多的标记数据,那下一步该是决定用数据的那些属性(或者特性)来判断一个手势。这点做起来不仅是技术,而且是艺术——确实不容易把握。你用来做判断的这些特性还要易于计算,比如Windows的Kinect团队只有2毫秒的时间用于识别抓握的动作。
在这个动作的识别上,团队最先采用的是计算距离掌心的像素数量(由骨架检测子系统采集)作为机器学习算法的主要特性。但后来他们发现了比较麻烦的一点,手的位置不够稳定所以这一特性很难准确地捕捉到。为此他们不得不为此开发了辅助算法——考虑了多种手的位置以及识别过程中的位移。可惜这个方法收效平平。
最后,Sol改用深度标志数据中,抓握或松手时图像帧与帧之间的像素差异来判断这一动作,也就是每个像素点较前一帧的变化都会参与共同决定动作的发生。>>>3D试衣镜引领高科技时尚潮流