65.9K
CodeProject 正在变化。 阅读更多。
Home

Infrared5 案例研究

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013年7月26日

CPOL

12分钟阅读

viewsIcon

24280

downloadIcon

181

Infrared5 案例研究

引言

“猫是极其有效的猎手,正在摧毁我们的本土鸟类。”
- Gareth Morgan

2012 年,Gareth Morgan 因引起新西兰公众对本土不会飞的鸟类的困境的关注而声名鹊起,特别是家猫如何残害几维鸟种群。谁能想到随之而来的猫科动物风暴会激发一项屡获殊荣的电子游戏和感知计算领域的进步?

几年前,Chris Allen 是一位经验丰富的波士顿程序员。他的妻子 Rebecca 拥有印刷行业的商业头脑和设计经验。他们创立了一家名为 Infrared5 的小型编码公司,为客户公司开发应用程序。Allen 夫妇稳步发展了 Infrared5,并培养了对 Google 的 20% 工作时间理念的深刻欣赏。遵循这一理念,Infrared5 的一名员工开始捣鼓使用 iPhone* 创建遥控直升机的控制系统。这最终成为了 Brass Monkey*,这是一个 SDK,允许 Google Android* 和 Apple iOS* 设备作为Unity、Flash、HTML5 和原生游戏的输入控制器。

2013 年初,Intel 邀请 Infrared5 参加其 “终极编码者挑战:走向感知”大赛。这是一项开创性的比赛,为参赛者提供了 Ultrabook™ 设备、Creative Interactive Gesture Camera 开发套件、仍在不断完善的感知计算 SDK,以及一切可能的支持,让他们尽情发挥想象力。Brass Monkey 技术专注于基于传感器的输入,似乎是感知计算的天然补充——但如何将两者融合呢?

为了找到答案,Infrared5 设计了一种全新的双输入系统,将 Wi-Fi* 手持设备与感知计算相结合,并提出了一个可能永远改变游戏的理念验证。

几维鸟弹射复仇*:形式与功能

“早期,我曾有使用头部追踪机制并将其与手机作为游戏控制器结合的想法,”Chris Allen 说。“在我的脑海里,这是一个后启示录的驾驶射击游戏,有点像 3D 版的《疯狂的麦克斯*》。但 Rebecca 和[艺术总监] Aaron Artessa 一直想做一种剪纸风格的概念。然后我们听到 NPR 的一个节目,讲的是新西兰以及家猫如何杀死几维鸟。我们觉得做一点政治上的调侃会很有趣,让你扮演一只名叫 Karl Kiwi 的鸟,能够四处飞行,从眼睛里发射激光,喷火,并向猫复仇。”

习惯了WASD 键盘控制或传统游戏手柄的玩家,可能会觉得 Infrared5 的玩法一开始有点难度。Brass Monkey 使用 Wi-Fi 连接手机的加速度计数据来控制飞行移动。手机屏幕上的点击(通常用拇指)控制射击。

图 1. Infrared5 的 Brass Monkey 软件允许 iOS* 和 Android* 手机设备与 Creative 的手势摄像头一起作为控制器。

使用手势摄像头进行的脸部追踪控制瞄准,此外还有语音输入。当玩家喊出“啊——!”或“射——!”时,Karl 就能从嘴里喷出火焰。

对于一个人来说,要同时处理这些可能会显得很复杂,但早期玩家的反馈表明,经过一点指导并正确地定位于摄像头前,游戏玩法出奇地自然。(Rebecca Allen 指出,游戏内的教程和校准可以将学习时间缩短到几分钟。)头部转动能够自然地看向物体。整个体验非常直观。尽管如此,在几周的时间里,六人开发团队在打磨界面和机制时,仍然进行了一些重大的改动。

图 2. 你飞行的几维鸟不是唯一装备激光眼的角色。注意相当简单的用户界面和图形调色板,以实现更快的处理。

“我们面临的感知计算的一个问题是脸部追踪,”Rebecca Allen 说。“你必须确定人们实际上是用他们的脸来控制世界视野的。我们最终做了一个后视镜,你可以看到自己以及你的移动方式。你的脸部实际上会改变感知,鸟的头部也会随之移动。这也让我们能够看到鸟后面的情况,因为你可能会被身后的猫袭击而没有意识到发生了什么,以及谁在向你射击。”

开发过程中解决的挑战

不出所料,Chris Allen 在他和 Infrared5 开始 Intel 的比赛时,并没有计算机视觉方面的经验。他承认几年前读过一本关于这个主题的书,但没有实践经验,团队在前几周面临着陡峭的学习曲线。

Infrared5 的设计师对《几维鸟弹射复仇》中想要的灯光和氛围有特定的要求。然而,令人印象深刻的可视化效果和多个输入流给 Intel 提供给 Infrared5 参加比赛的 Lenovo IdeaPad* Yoga 可变形超极本带来了巨大的处理负荷。为了帮助保持用户体验的流畅和趣味性,Team Kiwi 采取了多项节能措施,包括:

  • 降低了脸部追踪的帧率。由于图像场中的人物在几个帧内可能不会怎么移动,Infrared5 发现它可以不那么频繁地进行分析,从而节省了处理负荷。
  • 优化了进程线程,利用超极本设备的四核 CPU 将某些任务卸载到可用核心,并更有效地进行负载均衡。
  • 精简了颜色和视觉元素。此更改节省了图形资源,并有助于减轻 GPU 核心的加载数据,同时对玩家体验影响甚微。
  • 过滤掉了距离一米(3.28 英尺)以外的任何面孔。摄像头的深度传感器使这成为可能,通过消除拥挤环境中大量多余的面孔,脸部处理负荷大大降低。

图 3. 目前,感知计算需要添加一个 USB 手势计算机,但未来超极本™ 设备 Generations 很可能直接集成立体摄像头。

鉴于 Infrared5 在使用 Unity 方面的经验,使用 Unity SDK 为《几维鸟弹射复仇》编写 C# 代码似乎是合理的。团队成员知道 SDK 包含头部追踪机制,因此期望“免费获得脸部追踪”。然而,结果根本不够灵敏,无法感觉真实;瞄准和射击时间偏差太大。团队花了两周时间才弄清楚这一点。最终,他们决定从 SDK 中获取深度数据,并将其与一个名为OpenCV 的 C 库相结合。由于程序员无法获得足够的底层访问权限,他们转向了完全在 C 环境中开发,并使用 DLL 与流行的游戏开发环境 Unity 进行通信。

为了解决头部追踪的响应问题,Infrared5 设计了一种基于摄像头位置的矩阵映射算法,该算法拉伸了光学器件,使近处的物体看起来更大。由于公开可用的代码很少,程序员不得不阅读该主题上的所有内容,包括学术论文和两本关于 OpenCV 的书,然后从头开始将例程用 C# 编写到 Unity 中。团队在使用 Unity 的 C# 版 OpenCV 时遇到了问题,最终将其重写为 C++。Infrared5 计划将这段新代码开源,以帮助促进感知游戏社区的发展。

尽管 Intel 专家发出了相反的警告,Infrared5 在参加“终极编码者挑战:走向感知”大赛时,认为他们能够掌握注视追踪。至少在比赛的七周内,他们感到失望。

“我们正在努力实现强大的特征追踪,以检测嘴巴是张开还是闭合、头部的方向以及来自瞳孔的注视方向,”Infrared5 在其博客上说。“以上所有三者都具有相同的难以实现的特点:为了使特定的特征追踪能够像控制器一样实时工作,你需要确信你在用户在摄像头前移动时,能够锁定住每个特征。我们了解到,找到可追踪的点并逐帧追踪它们并不能让你锁定住需要进行注视追踪等操作的目标特征点。当用户移动时,这些点会滑动。主动外观模型可能有助于我们以后克服这个问题。”

与所有其他参赛者一样,Infrared5 在 Intel® 感知计算 SDK 仍处于 Beta 测试阶段时就进行了合作,这意味着程序员遇到了不可避免的缺陷和障碍。这是任何新技术都可能出现的情况,Infrared5 按照预期的用途使用了该工具。正如公司在其第三周挑战赛的摘要帖子中所写:“他们(Intel)正在尝试许多事情,而不是陷入仅仅几个功能的细节中。这使得开发者可以在不花费巨大力气研究可能不会被使用的功能的情况下,告诉他们想要用它做什么。缺乏像样的头部、注视和眼部追踪,正是激励我们最终发布我们的追踪代码开源的原因。我们希望未来的开发者能够利用我们在这方面的成果。” Infrared5 希望继续与 Intel 合作来推进 SDK,可能将其代码合并到 Intel 感知计算 SDK 中。

关于“终极编码者挑战:走向感知”大赛的参赛者如何相互合作、互相鼓励和分享工具,已经有很多的报道。但关于 Intel 和参赛者之间存在着同样关系的报道却少得多。Intel 与参赛者并肩作战,帮助他们解决问题,并观察他们的需求和优先级。参赛者们对感知计算的知识和技能都有了深入的了解——这些特质可以立即应用于新产品,从而在竞争中领先。

学到的经验,给出的建议

Infrared5 在“终极编码者挑战:走向感知”大赛的最佳博客类别中与 Lee Bamber 并列获奖。正如这里引用的少数例子所示,Infrared5 团队在记录他们的进展和与更广泛的社区分享他们的智慧方面付出了巨大的努力。当然,有些事情从未在博客中提及,Infrared5 希望确保读者在他们进入感知计算的世界时,知道几个关键点。

首先,人们并不习惯用头部来控制软件。虽然《几维鸟弹射复仇》的某些机制非常自然,但许多用户发现头部控制和双输入范式需要一个两分钟的教程——这是一个团队在比赛期间未能创建的教程。最初,Infrared5 将上下移动与头部控制绑定,但这导致玩家在尝试飞行时会本能地做深蹲,这并不是他们期望的体验(尽管在健身应用中可能不错!)。他们删除了这个功能,并找到了替代方案。

图 4. Infrared5 在旧金山年度游戏开发者大会上展示了《几维鸟弹射复仇》。热情的反馈是帮助微调脸部追踪和加速度计输入的关键。

“不要被你的期望所困,”Chris Allen 建议。“比如说,你期望实现全面的眼部追踪。这可能会完全阻止我们。在限制条件下工作始终是一件非常重要的事情,即使你可能没有达到你想要的一切。有时,正是通过这些限制,你才能发现一些东西,而这更像是一次突破。”

Infrared5 还喜欢在项目初期进行一种概念上的分类。尝试确定项目中的最大风险元素,然后设计测试来查看这些元素是否会成为问题。正如木匠所说:量两次,砍一次。《几维鸟弹射复仇》团队就是这样处理图像处理的,首先检查手势摄像头是否可以连接到 Unity,然后编写代码来连接两者。逐步采取行动,并按风险排序。

同时,在规划初期就要考虑目标形态。例如,平板电脑平放在桌子上。《几维鸟弹射复仇》无法在带有外部手势摄像头的平板电脑上运行,因为无法将手势摄像头安装在设备上并使其对准用户。而 Lenovo IdeaPad Yoga 可变形超极本设备则有多种形态可能性,并且可以安装摄像头。如果使用平板电脑,他们可能甚至不会尝试引入他们的 Brass Monkey 工具。

最后,Chris 敦促开发者像与其他 Intel 参赛者一样,与同行合作。通过共享代码和想法,所有团队都变得更加丰富。在此过程中,感知计算不仅能力得到提升,而且可能还离拥有行业标准的命令和代码集又近了一步。如果参赛者保持孤立,这种发展似乎就不太可能。

资源

鉴于感知计算领域的新颖性,Infrared5 在《几维鸟弹射复仇》的创建过程中并没有太多地利用外部资源。他们确实使用了 Intel 提供的Unity 示例代码。Intel 技术人员也为 Infrared5 的设计师提供了建设性的反馈,帮助他们平滑处理不可避免的难点。Infrared5 的工程师参考了关于OpenCV 的书籍,并利用了多个开源库。同样,与其他“终极编码者挑战:走向感知”团队的合作也是无价的。

展望未来

Infrared5 正在致力于为《几维鸟弹射复仇》添加更多成就、更多敌人和更多非玩家角色。它感谢 Intel “没有构建 SDK 中的所有功能”,因为现在该公司可以获得来自开发者和早期采用者的真实反馈,以帮助优化工具集以满足最重要的功能需求。这只会加速感知计算的进步,并确保为所有人提供更好的软件体验。

Intel 对第三方供应商及其设备的质量、可靠性、功能或兼容性不作任何陈述或保证。有关优化信息,请参阅 http://software.intel.com/en-us/articles/optimization-notice/。所有产品、日期和计划均基于当前预期,并可能随时更改,恕不另行通知。Intel、Intel 徽标、Intel AppUp 和 Ultrabook 是 Intel Corporation 在美国和/或其他国家/地区的商标。*其他名称和品牌可能被声称为他人的财产。版权所有 © 2013。Intel Corporation。保留所有权利。

© . All rights reserved.