Echo
2013年刚从清华大学物理系毕业的李诚,如今在清华大学东门外创办了一家公司,从事计算机视觉领域的研究。出于对人工智能的兴趣,学物理的李诚很早就开始研究机器学习(人工智能中改善计算机算法的学科)的相关内容,还参加过学校机器人足球队的研究团队。不过要说起计算机视觉研究领域的研究,还要从他大三的时候说起。
第一人称手部识别
大三的暑假,李诚参加了学校的对外交流学习项目,前往卡内基梅隆大学(CMU)进行交流学习。在导师的介绍下,李诚认识了一位美籍日裔博士后Kris,当时Kris正在研究第一人称的物体识别。
第一人称物体识别也是“可穿戴设备”的一个重要的技术支持。一般情况下,“可穿戴设备”都会配备一个第一人称摄像头,也就是让用户在头部佩戴一个与其视线一致的摄像头,它不仅有摄像摄影的功能,还能承担动作指令的作用。
“第一人称手部识别!”听说这个课题,李诚马上就来劲儿了,“我在大一参加Robocup(机器人世界杯足球锦标赛)的时候就是负责视觉的,比如让机器人认知对方机器人、球门等物体,再完成踢球的动作。”李诚兴奋地向Kris讲述着自己的研究经历。由于第一人称手部识别是Kris研究中相对比较初级的内容,Kris本就有意找一位本科生来接手,他立刻相中了李诚。
兴致勃勃地研究起第一人称手部识别的李诚,很快就发现了问题。“传统的手部识别主要依靠颜色信息,只能在光线较好或者环境与手部颜色区别较大的情况下比较准确。”如果光线太亮或太暗,手部反射的光颜色就不一样,摄像头就会无法识别;而当背景颜色与手部颜色非常接近时,摄像头就会将画面中的相同颜色都识别在内,同样不能准确地进行识别。因此,如何解决在多变的外部环境下,使摄像头准确且高效地进行手部识别,就成了最大的技术难点。要在如今的基础上实现突破,就必须要改变原来的计算机运算方法,可是什么样的算法才最合适呢?
一天,资料中的一句话让李诚眼前一亮:“可穿戴设备的立足点,应该是大数据与云计算的普及,设备本身只是个呈现终端。”“大数据和云计算!”李诚来了灵感。他想到之前在星火班和同学讨论过的“模型推荐”的概念。“在手部识别的范畴内,就是指建立一个拥有各种环境下手部图片的模型库,让系统根据当前使用环境选出对应的模型,来识别出这是手。”这样,机器的手部识别准确度就能大大提升。
“僵尸”数据库
选定了方向,接下来的任务,就是建立一个庞大的“模型数据库”。李诚决定从建立不同光线和环境下的各种模型做起。李诚的数据采集方式让人觉得特别“神经病”。“那个时候我就把摄像头戴在头上,然后把两手放在身前,绕着实验室里里外外地走来走去,目的就是为了收集不同的光照和环境下的手部模型信息。”虽然这样的举动在同样研究计算机视觉的同学们看来已经司空见惯,但李诚的一位印度的同学Kumur还是觉得不可思议,“他说我走起来很像僵尸。”李诚觉得这个听起来有点吓人的形容很有意思,决定干脆将这个数据集叫做“僵尸”。就这样,李诚用第一视觉摄像头拍下了自己手部的视频,然后再将视频导出,对每段视频每隔几帧就用Grabcut(图像分割算法)将图片上的手部范围内的像素标志出来,作为模型数据库的数据。最终,李诚对将近2,000张图片进行了标志,全部像素相加有200,000,000多个,覆盖了几乎所有室内室外的光照环境下的手部识别数据。
与其他手部识别模型不同的是,李诚放弃使用传统的用白布做背景来拍摄手部视频,而是选用了木板、纸箱等与肤色颜色相近的物品作为背景。“虽然用白布作为背景,手部的颜色比较突出,容易被机器识别,但第一视觉手部识别应用的范围绝不仅仅在白色背景下。虽然在标识的时候会比较麻烦,但是在机器学习的时候会更加全面、准确,应用范围也会更广。”
建立模型数据库的最终目的是让机器准确地辨认,所以对机器进行“培训”也必不可少。拍摄视频收集数据的时间只有几天,但是“培训”的时间却花了很长。李诚开始马不停蹄地将这些收集到的数据编写成代码,在计算机上进行调试,从而让机器进行学会认手。“机器通过训练后的效果就是让摄像头在拍摄到一个画面之后,能够自动从数据库里找出最匹配最合适的模型,认出在各种环境下的手。”
庞大的工作量需要耗费大量的时间和精力,大三暑假的两个半月是远远不够的。于是李诚在大四的寒假又一次来到了卡内基梅隆大学(CMU)继续他的数据库建立工作,前后总共历时6个月,终于完成了他“僵尸”数据库的筹建工作。
滤波算法精益求精
“第一人稱摄像机是戴在头上的,所以在使用过程中,必然会存在移动过快的情况,摄像机进行识别时就会有困难。”早在李诚在拍摄自己的手部视频时,就发现了这个问题。由于行走过程中手部会发生移动,这时拍摄到的画面就会出现闪烁或模糊。
在提高手部识别的准确度的过程中,李诚并没有忽视这个细节。“手在图像上是个大块的连通的物体,于是我想到了用时空马尔科夫场的滤波算法,将不太连续的输出结果过滤成比较平滑的输出结果。”利用这个算法,李诚将图片中的像素之间的关系进行了设定,推算出了相邻的像素之间的关系。“将一张图片想象成一幅巨大的拼图,每个像素都是一个小方块,手部范围内的小方块占据了拼图很大的比例,那么当一个小方块是属于手部范围的时候,与它相邻的另一个小方块属于手部范围的可能性就很大!”李诚用一个形象的方法,解释了马尔科夫场在他的研究中的原理。
李诚的研究中不乏对行业既有研究的借鉴和引用,时空马尔科夫场的概念,就是专业研究中常用的一种计算机算法。“我只不过是站在了巨人的肩膀上,但最重要的是要找到巨人在哪儿。”这就需要平时的不断积累和对研究内容的兴趣和热忱。
虽然这个简单的优化并不是整个项目中最大的亮点,但时空马尔科夫场滤波算法在实际应用中的效果却不容小觑。画面闪烁程度降低了,也变得更加平滑清晰,这更保证了第一人称手部识别的准确度。最终,李诚开发的第一人称手部检测准确度比传统方法提高了10%~15%。“领先于乔治亚理工、加州大学欧文分校在内的美国其他大学提出的几种主流模型!”
李诚的成果很快得到了同行专家的认可。很快,李诚以第一作者的身份分别在两个计算机视觉领域的顶尖学术会议CVPR2013(IEEE Conference on Computer Vision and Pattern Recognition即IEEE计算机视觉与模式识别会议)和ICCV2013(IEEE International Conference on Computer Vision即IEEE计算机视觉国际会议)上发表论文2篇,同时还捧回了2013年全国挑战杯的特等奖奖杯。目前,这项目的相关代码、数据集已加到谷歌公司的手部检测项目,并且即将加入目前应用最广泛的机器视觉开源库中。
从爱好者到专家,李诚不仅在研究中获得了突破,更用自己的实际行动推动了机器视觉研究的进程。