分享到微博 分享到人人 分享到LinkedIn 分享到Email
新一代自然用户界面—Kinect引领人机交互未来【转载】
作者 微软研究院
2013年2月28日

作者:郭百宁 微软亚洲研究院

整理:吴国斌 微软亚洲研究院
文章来源于《中国计算机学会通讯》http://www.ccf.org.cn/sites/ccf/zlcontnry.jsp?contentId=2716908557353

关键词:自然用户界面 人机交互 Kinect

几年前,新一代自然用户界面还只是科幻电影里的一个影像。在电影里,人们经常看到用语音去指导计算机完成各种任务,用手势让计算机做各种动作。在现实生活中,总感觉它离我们还很遥远。然而,Kinect的问世,无疑为自然用户界面领域打开了一片新的天地。Kinect集强大的机器学习技术、身份识别能力以及语音识别功能于一身,俨然成了即将改变世界的一大利器。

Kinect最先与Xbox360结合,把Xbox360变成了一台体感游戏机,抛开游戏手柄,你的身体就是遥控器。Xbox360与Kinect套装开售仅3个月便售出上千万台,创造了新的电子产品吉尼斯销售记录。Kinect for Windows SDK的发布更是在科研工作者和开发者社区中掀起了一波创新热潮,越来越多的技术爱好者投身于探索Kinect带来的无限可能中。

自然用户界面是一个新兴的领域,新兴的科学,里面的一些核心问题和核心技术是什么?让我们从对Kinect的分析中来揭开它的面纱。如果说到比喻,Kinect就是联系你和你的阿凡达的一个纽带。阿凡达就是游戏里的那个你,不通过鼠标、键盘和控制器,Kinect就可以实现你和你的阿凡达行动一致。Kinect要做的就是这样几件事:理解你的行为、表情、你是谁,再用这些信息控制你的阿凡达行动,你一动,游戏里的阿凡达就有相应的运动,就像你自己控制一样。Kinect的核心技术就是跟踪你的身份、脸部表情、动向,以及如何从低级视觉信息来提取高层次的信息和数字化。让计算机知道你在做什么,这是对计算机科学非常大的挑战,例如在真实世界中有你喜爱的物品,通过你的阿凡达不但可以把你带到虚拟世界中,也可以把你喜欢的物品带到虚拟世界中。

本文以微软亚洲研究院在Kinect体感交互设备上进行的研究工作为主线,详细阐述了Kinect几大核心技术,并预测了自然用户界面的未来发展趋势。
跟踪 (tracking)

很多年来,不用控制器的沉浸式游戏(controller-less immersion)一直是游戏设计师和开发人员心目中的至高境界。其中主要的挑战之一就是如何无缝地跟踪和成功地识别游戏中某个人的身份,以保证用户界面的顺畅和自然。
身份跟踪技术 (identity tracking techniques)

为了解决这个问题,微软亚洲研究院的研究人员为Kinect构建了3条身份识别的基础法则,分别是人脸识别、衣服识别和体型识别。Kinect根据人的这3项特征进行综合的识别和判断,最终实现对面前人物的准确分辨,见图1。

人脸识别是整个身份识别最重要的一个组成部分,由于Kinect摄像头分辨率仅为640×480,摄像头所能提供的面部的像素数据十分有限,并不适用于进行高维计算。另外,由于用户使用Kinect的环境有很大的差异,光线的明暗、色温和人的表情都不在可控范围内,这种非控制环境的人脸识别本身也存在难度。为了能让Kinect的人脸识别更加有效,微软亚洲研究院的研究人员采用了抽取人脸中层结构特征的方式,这种方式虽然无法提供100%的识别准确率,但是仍旧可以达到85%的识别准确率。这种纯二维的图片识别算法也被应用在Windows Live Photo Gallery中。借助这种识别算法的帮助,Windows Live Photo Gallery能够识别和区分照片中的人物,并据此实现照片自动分组。

图1 合理分析和组合这三种识别技术,Kinect可以准确区分出不同用户

在短时间内需要多次进行身份识别的场合特别多,例如在玩游戏时,有时会出现暂时离开游戏场合去接电话,之后再返回来继续玩游戏的情况。为了使身份识别更为快捷和高效,微软亚洲研究院的研究人员特别加入了衣服识别,因为在短时间内,人们更换衣服的概率很低。衣服识别技术首先区分人体的各个部分,如躯干、四肢,之后再分别抽取衣服不同部位的颜色和纹理,通过颜色和纹理总结出这一部位的表面特征。这些特征信息虽然保存的都是原始的彩色信息,但是通过一些算法可以使该识别技术对环境光线相对不敏感,以减少色温变化对识别产生的影响。例如一件白色衣服通常在钨丝灯下比在荧光灯下看起来偏黄,而Kinect依然能够正常地识别出这是同一件白衣服。

体型识别是Kinect身份识别的另一个重要依据,通过抽取和分析人的体型特征信息,如身高来进行身份判别。这种技术在某些情况下具备极高的效率和准确率。例如,在识别身高差异明显的大人和小孩的时候,这种技术就尤为实用。这种算法十分巧妙地利用了Kinect的硬件特征。与传统的摄像头不同,Kinect能够提供包含深度信息的图像,可以上下摆动扫描人物,并可提供扫描时的俯仰角信息。借助深度信息、俯仰角、人物影像高度这3种信息可以准确计算出人物的真实身高。即使人物与Kinect的距离发生变化,或者Kinect的摆放高度有变化都不会影响判别的准确性。

为了提高识别的成功率并保证识别的效率,微软亚洲研究院的研究人员经常采用上述3种识别方式进行综合判别,并根据应用场合的不同进行合理的选择。

通常,在Kinect的平台体系中,人脸识别被应用在更底层的平台领域,作为系统生物识别登录的唯一依据,在用户开机使用Kinect的整个过程中都会发挥作用,而且用户的面部信息会被长期保存在Xbox360的数据库中。当用户进入某个应用的会话中,例如进入一个Kinect的游戏,游戏可以要求在进行人脸识别的同时调用衣服识别和体型识别的数据进行更快捷和高效的身份识别。因为在特定会话过程中,加入后两种身份识别技术会更加稳定和准确,可信度更高。

在身份识别判断过程中,每种身份识别技术都会在完成识别过程后从3种既定答案中选择一种,即每种技术都可以给出“是”、“不是”或“不确定”的答案。系统会根据3种识别结果做最后的综合性判定。
人的头朝向跟踪

人的头朝向跟踪也是Kinect的一个核心技术。人的头朝向在人机交互中非常重要,

例如一个人可以用点头表示好,或者用摇头表示不行。人的头朝向由三个旋转角度决定。Kinect通过机器学习的方式,可以根据视频图像中的人脸特征回归估计出这三个旋转角度。

图2 三个角的数据采集

学习过程需要大量的人头旋转的视频数据。如图2所示,视频中的人头上戴着一个运动数据捕捉设备,能够记录下头部旋转过程中每一帧的角度值用于机器学习。为了让头的朝向估计尽量少受到其它因素的影响,例如这个人是谁,环境光线,表情等等,微软的研究人员拍摄了大量的不同人,不同表情在不同环境光下的视频数据,见图3。

下一步的挑战是算法的速度要快,精度要高。微软亚洲研究院的研究人员采用线性判别分析(linear discriminant analysis),先将一个连续的回归问题转化成离散的分类问题,从而将高达数千的高维度人脸特征降低到数十维。然后在低维度的特征空间中进行回归分析,得到连续的人脸旋转角度,同时利用视频中前后帧的连续性对旋转角度进行平滑处理。最终的算法能够稳定,高效和精确地跟踪人头的朝向。

图3 各种环境下的数据采集
人脸面部表情的跟踪

微软亚洲研究院的研究人员设计了Avatar Kinect,这个应用采用了被称为人脸面部表情的跟踪技术,允许用户通过Kinect以自身为原型建立3D版的卡通人物,人们可以从正面、侧面等多个角度观看这个卡通人物。更重要的是这个与真人十分接近的卡通人物还能还原用户的动作和面部表情,用户在Kinect前的一颦一笑都会被卡通人物真实再现,见图4。多个在线用户的卡通人物还可以置身于各种主题的3D聊天室中进行视频聊天,该项技术未来有可能被加入到企业电话会议的应用中。

图4 Avatar模糊了现实与虚拟的距离,虚拟人物的一颦一笑都与真实用户十分相像

Avatar Kinect采用了计算机视觉领域中经典的主动外观模型(active appearance model,AAM)进行跟踪。在基本算法的基础上,微软亚洲研究院的研究人员作出了多项改进,实现了更为精确和快速的人脸表情跟踪。

在2012年的IEEE国际计算机视觉与模式识别会议(IEEE Conference on Computer Vision and Pattern Recognition,IEEE CVPR)上,微软亚洲研究院的研究人员提出了一种新的称为显式形状回归(Explicit Shape Regression)算法用于人脸表情估计。和参数化的主动外观模型相比,新的方法能够从大量训练数据中学习得到高精度和极其快速的非参数化模型,从而进一步提高人脸跟踪的稳定性,精度和速度。
姿态控制 (gesture)

在计算机视觉领域有一个公认的重大难题,即如何从低级的数据得到高级的知识。在Kinect中,低级的数据就是深度信息,再往上到中级有骨架信息,最后高级的知识是这个人到底在做什么动作。如果中级的骨架信息很完善,就可以把高级的知识定义在这个骨架上面,但是目前Kinect的骨架跟踪算法还不够完善,经常跟踪出错,比如人的身体部分有相互遮挡的时候,就会出现这样的问题。虽然从统计学上讲,出现这种情况的概率大概只有10%~20%,并不高,但这个问题依然很严重,因为当人的肢体之间发生遮挡时,通常是要做一些有用的动作的时候。

图5(a) 骨架抽取和矫正

图5(b) 骨架图标注

举一个打高尔夫球的例子。Kinect首先利用深度信息对背景进行过滤(图5a,左2),随即抽取出骨架(图5a,右2)。可以看出在这个动作上抽取出的骨架并不准确,需要进行矫正(图5a,右1)。微软亚洲研究院的研究人员利用上下文(context)信息,即在知道这个人做什么的前提下,进行数据的训练和标注。首先在原骨架图上进行标号(如图5(b)所示),矫正后再标号就得到了高级的信息,这样就可以让做游戏的人准确地控制自己的行动。目前该骨架矫正算法已经在Kinect的SDK中开放,全球的科研工作者和用户都可以下载使用。
数字化 (digitization)

数字化就是如何将真实事件中的物体变成模型,放到虚拟世界当中。Kinect就提供了这样的技术。微软亚洲研究院做的Kinect Fun Labs的工作,就是利用Kinect进行物体扫描,只需要扫描正面和反面,通过1~2秒就可以重建出一个完整的模型。由于Kinect设备精度有限,采样后的信息是非常粗糙和坑坑洞洞的,所以必须要将“洞”补起来,使信息完整。这个技术的挑战性很大,关键是如何去噪声。

微软亚洲研究院的研究人员采用了一种被称为表面重构的技术,把表面的细节充分保留下来,同时把不好看的东西去掉来解决这个问题。这个技术可以借助物体表面的位置信息和噪声非常大的数据,重构出完整的表面。传统的平滑算法往往很难区分真正的噪声点和物体表面实际的小凹凸,微软亚洲研究院的研究人员采用了泊松方程等算法来滤除噪声。在判断某个特征点是噪声还是真实存在之前,技术算法首先抓取该点周边表面的角度和朝向的特性,进而判断这个特征点可能存在于空间的什么位置。这些根据朝向判断出的所有特征点可以形成一个虚拟的距离场。泊松方程用于帮助建立这个距离场,泊松方程认为,给出一个采样点,根据这个采样点的位置,尽可能平均估计此采样点对周围的影响,估计周围的表面距离场。这种平均估计的方式的优点是:首先,如果真实物体表面有一个洞,那么根据洞附近特征点的状况及其产生的影响可以很好地扩散到洞的周围,进而获得非常平滑的形状,使这个洞的形状尽可能得到合理的填充;其次,每个特征点的最终状态和特征并不仅仅取决于特征点本身,还取决于周围很多点,这实际上就是一个很好的降噪过程。例如,如果在采样面上有一个凸起的点,而这个点周围的点在朝向特性上都没有表现出凸起的趋势,那么这个点就会被识别成一个噪声点并被去除,反之就会被保留。当然受到采样精度的限制,一些取值十分小的表面特征信息也可能被判断为噪声并被处理掉。

图6 现实中的玩具熊经过Kinect的扫描和表面重构,成为了数字化的模型

在三维动画和视频领域,精细地还原面部表情一直是很大的难点。这不仅仅是因为面部动作十分复杂,而且细节很多。更重要的是,人对面部表情传递的信息非常敏感,三维模拟表情中细微的不自然都会被人识别出来。为了解决这一难题,传统的影视界尝试了很多方法,其一是扫描一个人大量不同的表情,再由艺术家修正并制作出很精细的表情,然后再借助这些表情进行插值计算,来获得其他的表情;其二是使用动作捕捉设备,如影片阿凡达就采用了类似的方法,这种方法可以快速捕捉面部预先指定的100多个标识点,记录它们的细微变化,但是这100多个点以外的细节信息,如皱纹变化等就需要艺术家手动去添加了。为了降低手动绘图的工作量,提高三维动画的制作效率、精细度和真实性,微软亚洲研究院的研究员们和美国德州A&M大学的教授合作,开发了“High Fidelity Facial Animation Capturing”技术,该技术有效地解决了传统技术存在的问题。

这项技术能够实现以下几个目标,首先在速度方面,它能够提供很高的捕捉帧速率,可以捕捉到面部运动的每个细节动作以及表情快速的变化;另外,在空间上,这项技术要能够尽可能多地还原3D面部的几何细节;同时这项技术不仅仅能够提供表情的捕捉和回放功能,还能够实现二次编辑,也就是说视频和动画的制作者可以根据这些素材制作全新表情。

在制作设备方面,High Fidelity Facial Animation Capturing技术使用了传统面部和运动捕捉上最常用的两种设备——三维扫描仪和运动捕捉设备。三维扫描仪能够捕捉静态人脸上十分精细的面部特征,但是它速度很慢,捕捉一个完整的人脸画面要几秒的时间,而且人必须在这个时候保持静止;而运动捕捉设备能够捕捉快速运动物体上的信息,并且能够生成在时间上非常精细的运动序列,但是它能提取的信息点十分有限,只能捕捉面部100多个点的运动规律。High Fidelity Facial Animation Capturing技术能将这两种设备获取的信息相结合,最终能够生成快速、连续且十分精细的人脸表情。

图7 传统的面部和动作捕捉技术无法兼顾时间和空间的分辨率

微软亚洲研究院的研究员们首先使用运动捕捉设备捕捉人脸的各种表情和表情的变化,它可以拍摄并追踪人脸上预先贴好的100多个标识点。在获取视频后,研究员们对视频进行处理,首先从整个视频序列中抽取几帧,并尝试用这些帧的线性组合去计算和生成所有的帧,并验证计算后的误差大小,如果误差大则换用其他的帧再次进行计算。在多次计算之后,将能够得到典型的面部关键帧。接着,研究员们会让刚才拍摄视频的演员模仿每一个关键帧中的表情,并使用三维扫描仪对这个表情进行高精度扫描,这样就可以获得每一个关键帧的高精度三维模型。

尽管已经要求演员尽量去模仿视频关键帧中的表情,但是事实上是无法再次做出完全相同表情的,此时就需要使用一些形变的算法来实现两种数据对齐,也就是明确每个运动捕捉的点在扫描的三维人脸上的位置。最终通过分区合并的方式,可以得到每个三维面部关键帧之间的对应关系了。

在微软亚洲研究院研究员的规划中,未来High Fidelity Facial Animation Capturing技术将从专业领域走向大众。尽管目前这项技术使用的运动捕捉设备在影视业和娱乐业比较常见,但对普通用户来说毕竟比较昂贵。而且捕捉前期的准备工作和后期的计算工作仍旧相对比较繁重。未来研究员们希望面部捕捉能够做到更加平民化,用户可以使用相机或摄像头来拍摄视频,并使用随处可得的计算设备快速实现面部信息的捕获和计算。而且研究员们还将努力尝试将这一技术应用到人脸以外的其他事物的运动捕捉上。到时,这个技术就能够真正让所有的普通用户享受到它带来的好处。

图8 细节丰富的动态面部表情也可以数字化
未来发展趋势--从PC+GUI走向CLOUD+NUI

在已经过去的年代,自然用户界面对整个IT工业界的影响巨大,PC能做很多工作,图形用户界面可以提高用户工作的能力和效率,现在这个年代要过去了。Kinect是下一代自然用户界面的一个缩影,下一个时代将是自然用户界面和云结合的时代。在大数据时代,光有数据是没有意义的,数据一定要先变成知识,然后要让用户在任何时间、任何地点、任何环境下都能够很容易地获取这些知识并做有用的事,这就是自然用户界面要做的。今天的自然用户界面就像当年第一架飞机生产出来,将来会有很大的发展前景一样,但第一架飞机离发达的航空业还有很长的路要走。以Kinect为代表的下一代自然用户界面,核心技术(跟踪、姿态控制和数字化)也将进一步发展,有待青年工作者在这个领域里继续探索。
(本文根据2012中国计算机大会(CCF CNCC 2012)报告整理而成)