开源项目VNect使用普通手机摄像头进行动作捕捉,媲美深度摄像头
动作捕捉在各行各业都有着重要的作用,我们实现它的方法主要有两种。一是在电影和游戏当中经常使用的方式,通过在关节处贴上标志来记录运动轨迹; 二则是深度摄像头,通过红外来测量用户的身体,这个大家都十分熟悉了。前者根本无法普及,后者在强光下效率低下,但拥有一个共同的优良品质—昂贵。 而市场上充满的是普通智能手机,如果能够仅仅通过普通智能手机的摄像头实现身体追踪,那这将是一个巨大的进步。 除了便宜,普通摄像头较深度摄像头的另一大优势就是视野广,可以用于大场景的使用。同时基于红外的深度摄像头在户外阳光直射的条件下难以工作,2D摄像头却没有这个烦恼。 目前,马克思普朗克计算机科学研究所的科学家们研发出了一款只通过单个普通的2D摄像头(比如普通智能手机的摄像头),就能实时捕捉视频中的3D动作的系统。其效果可以媲美多个摄像头或者深度摄像头如Kinect的效果。 使用2D摄像头获得3D画面是科技前沿的开发者一直在做的事情,我们曾多次提到过,简单点说就是通过深度学习,也就是看得多了就能通过2D画面得出3D动作,例如通过照片就能的出一个人样貌的3D画面。 用2D摄像头捕捉3D动作也是科学家们一直在做的,其中骨骼姿势是其中的一大难题。前人的解决方案中,3D关节是十分不稳定的,会发生严重的偏离,重新投影时会不准确匹配2D位置。即使准确,也只是在极短的时间内,长时间下还是不稳定的。这导致他们大多数只能稳定捕获局部3D动作,而不是全身。 VNect解决了时间问题,可以在短时间内骨骼姿势稳定,同时还是全身动作捕捉。 VNect采用卷积神经网络(CNN),抛弃了以往的100层设计,因为运算时间过长,不适合实时运算,改为更浅的50层。同时了全新的公式,使得能以高精度输出,同时运行在30Hz以上。 在CNN的骨骼预测当中,最重要的骨盆的3D姿势,他们提出的姿态公式得出的结果,吻合度可与世界最先进的离线方法媲美。通过组合预测2D和3D关节位置来确保关节的稳定,同时应用滤波步骤来确保随着时间的推移还能够平滑的跟踪,提高了跟踪姿态的稳定性。 根据图片拓展出来了2D热图,再捕获关节的相对位置x、y、z,变为关节H。根据关节之间的长度计算骨骼的长度,这将成为预测动作的重要依据。采集了通常考虑的17个关节,还采取了脚尖的位置。 系统使用的是骨骼的平均数据,在刚开始的时候会有不稳定的现象,因为单个摄像头没有其他数据可以参考,所以需要被跟踪对象提供一次身高的数据,来实现稳定的追踪。 同时系统是完全卷积的,可以在目标周围缺少紧凑物的情况下运作,并能预测不同的场景,这无疑给准确的测量提供了坚实的基础。 在训练时,选择了八个项目,五个与胸同高,2个与头同高并向下倾斜,一个与膝盖同高并向上倾斜,来学习在不同角度下保持稳定。同时采用了多种组合,如背景、衣物(增多衣物)、障碍物(如椅子)等等。 结果是喜人的,在使用低端手机的相机条件下,在3D角色控制、姿态跟踪等方面,质量与深度摄像头相当,例如Xbox上的Kinect(也就是一代和二代,可不是最新的四代)。 在速度上,CNN计算需要18ms,骨架拟合需要7到10ms,预处理和过滤需要5ms,最多时间也只有33ms。 除去前文介绍的优势,该方案还具备深度摄像头不具备的功能,比如坐在凳子上或其他四肢靠近场景物体时,Kinect发生明显错乱,而2D解决方案却成功了。不过当双腿交叉时,就较为困难了,这将是一个挑战。 通过VNect,任何一个智能手机都能变成轻量级的全自动手持动作捕捉传感器,这将使许多应用变成可能,同时它还是开源的,可以使更多人参与到开发当中。 不过它也存在着许多不足,VNect脚踝追踪十分稳定,但头部准确性十分差。而且单个2D摄像头在深度捕捉上严重不足,任何一点细微的不准确都可能导致很大的不同。在时间上也不够长,长时间下追踪也会发生抖动。此外,遮挡还是一个十分严峻的挑战,十分快的运动也是。 阅读推荐