Kinect身份识别:技术与经验

英文原文:Kinect Identity: Technology and Experience,编译:微软亚洲研究院博客

Kinect身份识别是微软Xbox 360的Kinect体感设备的重要组成部分之一,它将多种技术和精心设计的用户交互整合在一起,旨在实现玩家身份识别与跟踪的目标。

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

到目前为止,还没有完美的解决方案。然而,微软Xbox 360的Kinect体感设备背后蕴含的身份识别技术以RGB摄像头、深度感应(depth-sensing)和精心设计的用户交互为基础,综合运用多种技术,提供了强化的游戏和娱乐体验。

身份跟踪技术(IDENTITY TRACKING TECHNIQUES)

Kinect系统从两个方面实现身份跟踪:

生物识别登录(Biometric Sign-in),系统经过一段时间,了解特定玩家的外形,并且当此人出现在视野中时自动登录;

会话 (Session),系统会在特定游戏会话过程中记住谁是谁,例如,玩家1与玩家2的对抗,以及他们各自的得分。

为了最大限度地提高身份跟踪系统开发的成功率,Kinect的研发人员们首先试验了一系列独立的识别技术,并选择其中的一些成为完整的组合。每一种选中的技术都需要其功能十分强大(至少适用于短期内的变化),不会严重占用CPU和内存资源,并尽可能彼此独立。 

Kinect身份识别:技术与经验

最后选定的一组技术由三个部分组成:人脸识别(face recognition)、服装色彩跟踪(clothing color tracking)和身高估测(height estimation)。

我们可以将其中最重要的面部识别细分为三个子任务:

• 确定面部的位置和大小;

• 根据“正常”坐标,对面部进行矫正,也就是头部竖直向上,面对摄像头;

• 提取面部特征,以捕捉微观结构。

将服装颜色和玩家身高信息融入面部识别技术中使得多种特征得以融合,最终实现身份识别。

在游戏中,如果游戏要求系统记住一个新玩家,系统就会为每一个身份不明的骨架特征——脸部、服装和身高——采集“印记(prints)”或称“签名(signatures)”,其中每一项都会提供一个“肯定”回应(例如衬衫颜色与印记相匹配),或“否定”回应(例如存储的衬衫颜色是蓝色,而身份不明者的衬衫颜色为绿色),或“无法确定”(两者特征太接近而无法确定)。

当游戏试图确定一个新的骨骼结构是否为已知时,系统会查询全部现有的备选人,并生成一个“真值表(truth table)”,对每个特点提供建议。在表1所示的范例中,当对脸特征进行比较时,#1、#3、#4为候选人。然而,由于#1和#3都是肯定的,他们被视为未知身份。颜色对比后,消除了#3和#4选项,因为回应为否定。虽然#1被作为一个被选项而留下,但这一进程将继续,因为目前仍未得到肯定回应。最后,在对比身高时,#1得到了一个肯定的回应。因为他是候选人集合中唯一的肯定回应,身份认定就取得了成功。

表1:在游戏中识别新玩家所使用的真值表

特征

已注册身份#1

已注册身份#2

已注册身份#3

已注册身份#4

脸部

肯定

否定

肯定

未知

服装颜色

未知

未知

否定

否定

身高

肯定

肯定

未知

未知

• 必须至少有一个肯定的回应,而且没有任何否定回应(除非有非常强烈的脸部识别匹配);

• 先是脸部识别,其次是服装颜色,最后是身高,只能有一名候选人为肯定回应,对于存在多个匹配项的情况,系统推断这些匹配可信度不高,从而认为结果为未知。

然后,系统对真值表的结果加以处理,产生最终结果。有趣的是,身高等一些特征能够很好地帮助排除明显的不匹配项,但如果单凭这些特征,并不能足够准确地接受特定的匹配项:因为很多人的身高都相同。所以,仅通过身高是不足以识别一个人的。

随时间推移的变化(CHANGES OVER TIME)

当然,识别技术还必须能够适应玩家外形随时间推移而发生的变化。会话身份的生命周期较短,而且在游戏过程中玩家不太可能改变自己的服装、重新整理发型、长出胡子或决定更换隐形眼镜或框架眼镜;但是,他们确实会改变他们的面部表情、摆出各种不同姿势,或者在游戏期间改变照明条件。生物识别身份更具有挑战性,因为在不同的游戏会话期间,玩家外形几乎肯定会出现变化(玩家可能会穿不同的衣服,也许有人在游戏间隙去理发),期间的照明条件也会发生变化(例如在下午或晚上玩游戏)。

要解决这些问题,系统将印记与尽可能多的环境细节进行关联,例如它们是在哪里捕捉到的,当时的照明情况如何等。然后,系统将这些纳入考量,并将新玩家与一些已知玩家进行比对。对于生物识别登录的身份,Kinect身份只依赖于面部识别。它会要求玩家在游戏空间内走动,以捕捉各种本地的环境细节。如果玩家们显著改变了他们的穿着或现场光线,则需要重新运用该工具来捕获更多数据。

Kinect身份识别:技术与经验

为了记住一个人,并试图识别一副全新的骨骼结构,系统任务之一就是捕捉一系列的画面,以获得更多可能的变化,通常来说,只要条件合适,最好是静止画面,可以达到最优识别。例如,最好跳过哪些玩家没有面对传感器或者脸部被遮挡的画面。Kinect也会给玩家反馈和机会,让他们修正拍摄条件,从而大大提高身份识别的速度和精度。

当然,玩家可能会在同一赛局继续的过程中脱掉了一层服装,如果内层服装的颜色与系统此前为该玩家所匹配的颜色不同,就会产生错误的否定回应。如果系统始终拒绝接受服装颜色不匹配的判断,那么玩家在同一赛局中脱去一件衣服时将永远会产生错误的否定回应。但是,如果从不拒绝这一情形又会放弃很多有价值的信息。对于Kinect而言,依赖其他特征进行身份识别是如此重要,这也是另一个原因:如果脸部和身高都提供一个肯定回应,那么服装颜色不匹配就将被忽略(仅在某些情况下)。

Kinect如何区分双胞胎呢?如果真值表知道自己正在面对两个长相一模一样的人,而不会因为只认识其中一个而错误地匹配了另外一个,那么它的成功率就会更高。如果Kinect同时看到了他们,或者他们有两个单独的Kinect身份特征,那么系统正确区分他们的可能性就更高。在同一赛局中,这样的可能性会进一步提升,因为服装上的差异可以帮助对他们加以区分。但是要记住,如果即便我们自己有时候也很难区分两个双胞胎,Kinect更是如此!

挑战(CHALLENGES)

Kinect身份识别功能在开发过程中所面临的最大挑战之一就是准确性,因为对代码或算法进行调整时,会同时涉及到度量和回归。准确性非常重要,因为在开发环境中环境和个人的条件并不能代表实际的用户。

Kinect开发人员主要侧重于度量精度的两方面要求:数据应该代表着真实世界的环境,而且他们需要大量此类数据。对于第二项要求,开发人员使用了不同的测试程序——比如数据捕获工具,用于标记场地实况的工具,以及用于训练算法的测试工具——以收集尽可能多的数据:让事情变得更具挑战性的问题在于,一些直接影响到图像帧(摄像头的曝光或变焦设置)的变化让老旧数据集失去效用,需要收集新情境下的新数据。 

Kinect身份识别:技术与经验

开发识别技术是一项艰巨的任务,而要围绕它实现良好的用户体验,即使称不上更具挑战性,但至少也是旗鼓相当的。我们所面对的系统无法确定自己是否正确,那你会怎样设计用户体验呢?最好的办法就是假定身份并不存在,把“一切应该如何运行”设计好,然后再寻找那些可以利用身份识别技术加速其运行的捷径。

“wow”(令人惊喜)的因素对Kinect而言非常重要,所以开发人员们仔细考虑了如何处理肯定结果(系统认为自己已经完成目标骨架与已知用户的匹配)、否定结果(系统无法识别此人)和失败操作(系统无法完成)的选项。由于肯定结果具有最大的“令人惊喜”的潜力,开发人员因此投入了最大的精力,并使用了“信任但需核查(trust but verify)”的方式:系统并不要求用户确认一个肯定结果,而是假定结果正确,并直接显示给用户,而玩家可以选择加以纠正。

为了减少由于信任肯定结果而带来的损失,Kinect开发人员对系统进行了调整,以尽可能减少错误的肯定回应。在出现错误的情况下,系统允许玩家纠正他们的身份,或者运行Kinect身份识别程序,以降低将来错误识别的概率。如果一个玩家想以另一个玩家的身份玩游戏,他有两种选择:

接管控制:一名玩家直接介入,并对当前情境实施掌控。此时,新玩家不需要拥有一个已识别的身份,而后续发生的任何情况都归因于处于活动状态的配置文件;

继承一个身份:新玩家通过对系统的指示,使得自己被识别为已有的玩家,从而使新玩家继承了他所选定的身份。

这些挑战包括决定何时使用哪一种方法,告知玩家目前正在使用的方法——关键在于明确且一致的反馈。常见的工作模式下,在游戏开始前会确定玩家身份,审阅处于活动状态的特征性文件,并允许玩家介入操作,而不改变他们的身份。Kinect开发过程中的一项重要决定是,将特征性文件选择视为一项身份操作,这意味着只要用户在登录对话中选择了一个特征性文件,那么在当前赛局中玩家身份就与这个特征文件相关联了。

和任何其它系统一样,Kinect的伟大绝不仅仅因为其内部的一两个部件,而是在于其作为一个整体设计,对多种技术、工艺、方法和想法的融合。它需要全球各地研究人员、开发人员和产品经理的通力合作,才能让Kinect无限接近于研究人员的那个梦想:开发完全不用控制器的游戏系统(developing a fully controller-free gaming system)。

 

致谢(Acknowledgments)

Kinect身份识别技术由Xbox Kinect身份识别团队所开发,该团队成员包括:

• Tommer Leyvand,自然用户界面软件平台(NUI Platform)和Xbox平台研发(Xbox Platform R&D)的首席开发主管。

• Casey Meekhof,自然用户界面软件平台(NUI Platform)和Xbox平台研发(Xbox Platform R&D)的高级项目经理。

• 危夷晨,微软亚洲研究院视觉计算组副研究员。

• 孙剑,微软亚洲研究院视觉计算组主任研究员。

• 郭百宁,微软亚洲研究院常务副院长。

最后,特别感谢Matt Callcut在本文写作过程中给予的大力支持。

(注:正文中所用图片均来自网络)

 

收藏 评论

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部