视学算法报道

编辑:张倩、陈萍

加入体感控制,这位小哥破解了原版任天堂的拳击格斗游戏「拳无虚发」。

在经典红白机上玩拳击游戏是很多人的童年回忆,其中就包括任天堂 1987 年发布的拳击格斗游戏——「Punch Out(拳无虚发)」。

在这款游戏中,玩家的设定是一个拳击小白,需要在教练的指导下战胜各种大块头对手,最后挑战终极大 boss 拳王泰森。当然,泰森本人也玩过这款游戏。

随着网游、大型单机等各种游戏的兴起,红白机逐渐退出历史舞台,成了怀旧的代表,早期版本的「Punch Out」也很少有人玩了。

但最近,一位名叫 Ian Charnas 的网友又把这款游戏翻了出来,而且自己开发了一种新的玩法——加入体感控制。简单来说,在这款 DIY「拳无虚发」中,你可以借助摄像头和 AI 算法控制游戏中的角色,就像在玩 Switch、Xbox 的体感游戏,但成本几乎为零。

为了增加游戏的沉浸感,他甚至在身上绑了个电击臂环,从而在受到攻击时能得到更真实的反馈。

那么,这个新游戏是怎么做出来的呢?Ian Charnas 在视频中介绍了几个主要步骤。

首先,你要找到一个能进行实时姿态估计的算法。Ian 用的是谷歌的 MoveNet,这个模型能够快速、准确地检测人体的 17 个关键点。

接下来就要想办法将游戏从原始的游戏盘导到电脑浏览器上。由于 80 年代的任天堂连 USB 接口都没有,Ian 就先把原始游戏机改装了一番。

成功把游戏代码导入电脑之后,Ian 又找了一个任天堂模拟器来运行该游戏。此时,一个体感游戏基本完成。

但真正上手玩之后,Ian 发现了一个问题:姿态识别输入比手柄输入要慢,但对手的出拳速度并没有变,这就很难赢。

要想赢,要么提高自己的出拳速度,要么拖慢对手的速度,Ian 选择了后者。这就需要修改游戏代码。但「拳无虚发」的原始游戏代码并不是写给人看的:

为了读懂这些代码,Ian 对源代码进行了逆向工程(反汇编),并对游戏人物的速度进行逐一修改,使得每一个人物都是可被击败的。

在完成这些操作之后,Ian 成功打败了终极 boss 泰森。

最后,Ian 还把游戏以及配套的教程放到了网上,点击以下网站、打开摄像头就可以试玩:https://reallifepunchout.com/

游戏开发过程。

游戏教程。

MoveNet 是个什么模型?

上述进行实时姿态估计的算法用到了谷歌今年推出的 MoveNet 模型,它是一个预训练模型,所以设置好以后即可使用。该模型能够快速、准确地检测人体的 17 个关键节点(如脚踝、膝盖、肩膀、手肘、手腕、耳朵、眼睛和鼻子等),能够以 50+ fps 的速度在笔记本电脑和手机上运行。该模型已在 TF Hub 上提供,有两个变体,分别称为 Lightning 和 Thunder。Lightning 适用于对延迟要求严格的应用,而 Thunder 适用于对准确性要求较高的应用。因此,我们可以看到 Thunder 模型的关键点得分通常会比 Lightning 略高。

MoveNet 在两个数据集上训练完成:COCO 和一个名为 Active 的谷歌内部数据集。其中 Active 数据集通过在 YouTube 上的瑜伽、健身和舞蹈视频中标注关键点(采用了 COCO 的 17 个身体关键点标准)而产生。训练时,每段视频不超过三帧,以增加场景和个体的多样性。

Active 关键点数据集的图像

通过完全在客户端运行该模型的方式可实现对运行速度的需求,即在使用 TensorFlow.js 的浏览器中运行且在初始页面加载后不需要服务器调用,也不需要安装任何依赖项。

MoveNet 可以通过快速动作和非典型姿势跟踪关键点。

传统方案(上)与 MoveNet(下)在高难度姿态检测上的对比结果,传统方案会跟丢关键点,而 MoveNet 不会

MoveNet 架构

MoveNet 是一种自下而上的估计模型,使用热图来准确定位人体关键点。该架构由两个组件组成:一个特征提取器和一组预测头。预测方案大致遵循 CenterNet,但变化明显,提高了速度和准确率。所有的模型都是用 TensorFlow 对象检测 API 进行训练。

MoveNet 中的特征提取器是带有附加特征金字塔网络 (FPN) 的 MobileNetV2,它允许高分辨率(输出跨度为 4),此外还提供语义丰富的特征图输出。该特征提取器具有四个预测头,负责密集地预测:

  • 人体中心热图:预测人体实例的几何中心;

  • 关键点回归域:预测人体的全部关键点,用于将关键点分组到实例中;

  • 人体关键点热图:预测所有关键点的位置,不依赖于人体实例;

  • 2D 每关键点偏移域:预测从每个输出特征图像素到每个关键点的精确子像素位置的局部偏移量。

MoveNet 架构图

MoveNet 模型分四步来完成预测,过程如下图所示:

以下是关于 MoveNet 模型的更多参考资料:

  • TF Hub 运行:http://tensorflow.google.cn/hub

  • Lightning:https://hub.tensorflow.google.cn/google/tfjs-model/movenet/singlepose/lightning/3

  • Thunder:https://hub.tensorflow.google.cn/google/tfjs-model/movenet/singlepose/thunder/3

参考链接:https://blog.tensorflow.org/2021/05/next-generation-pose-detection-with-movenet-and-tensorflowjs.html

© THE END

转载请联系原公众号获得授权

投稿或寻求报道:content@jiqizhixin.com

点个在看 paper不断!

在线试玩,在体感游戏中打败泰森,这位小哥破解了任天堂「拳无虚发」相关推荐

  1. 有笔记本就能玩的体感游戏!TensorFlow.js实现体感格斗教程

    晓查 编译整理 量子位 出品 | 公众号 QbitAI 小时候的你在游戏中搓着手柄,在现实中是否也会模仿这<拳皇>的动作?用身体控制游戏角色的体感游戏很早就已出现,但需要体感手柄(Wii) ...

  2. 【你知道么】90后们玩过体感游戏吗?

    90后最牛逼的AIWI体感游戏你玩了没?aiwi序列号童鞋们别再错过机会啦,体感游戏领导厂商AIWI在CHINAJOY(第九届中国国际数码互动娱乐展)上发表了市面上最犀利的体感手机系统AIWI APP ...

  3. 【体感游戏】没有iPhone也能玩AIWI

    现在全球都在玩AIWI体感游戏了,可是没有iPhone也没有iPod怎么办?就不能玩aiwi了吗? 别担心, AIWI 也针对没有智能型手机的消费者,贴心的研发设计了AIWI 专属的游戏手柄,让更多的 ...

  4. 想知道体感游戏的类型有哪些吗?我来告诉你

    代代星将全球率先展出嵌入式平台的3D体感游戏技术.该3D体感游是目前全球首款商用的嵌入式平台3D体感游戏解决方案,目前已成熟用于TV.机顶盒产品.目前,Iphone手机,已经与代代星成功合作的产品和品 ...

  5. VR体感游戏前景如何?

    VR体感游戏(Virtual Reality Interactive Games)是一种利用虚拟现实技术实现身临其境的游戏体验的游戏类型.通过戴上VR头盔.戴着手柄或身体传感器等设备,玩家可以沉浸在虚 ...

  6. [体感游戏]关于体感游戏的一些思考(二) --- POV和基本场景

    POV 从口语和故事讲述中借用术语来比喻游戏的观察点(Point of View)很常见.第一人称射击类使得你可以以游戏角色的视觉看到屏幕下方自己虚拟的手和武器.第三人称则让你从后面观察你的avata ...

  7. (图)不可错过的好看好玩的射箭体感游戏

    ,aiwi滑雪 玩上手之后,可以直接挑战美女指导员,可别小看美女指导员,体感游戏手机,AIWI体感游戏平台上的所有游戏都很适合女生玩,女生玩起体感游戏一点也不输给男生喔! 在现场活动部分更有美女指导员 ...

  8. 不只是休闲:关于体感游戏的一些思考(二) --- POV和基本场景

    已转至www.kinectutorial.com POV 从口语和故事讲述中借用术语来比喻游戏的观察点(Point of View)很常见.第一人称射击类使得你可以以游戏角色的视觉看到屏幕下方自己虚拟 ...

  9. 春节假期和幺儿一起玩xbox360的体感游戏

    很多年前,我在商场就看到过体感游戏,大大电视,面前有几个小孩,玩得很熟练,看起来蛮有意思. 当时我在想,为什么个体商家愿意拿出设备摆摊,难道这里面有很丰厚的利润? 今年我终于有一个想法,在春节假期和幺 ...

最新文章

  1. FZ35恒流电子负载检测测试
  2. 重写 隐藏 java_Java中方法的重写与成员变量的隐藏
  3. 一个报文的路由器之旅_【NE探秘】一个报文的路由器之旅
  4. 小猿圈分享使用Java模拟三道门的游戏
  5. 远程仓库---从远程库克隆
  6. 如何以可视化方式显示 Angular 应用构建后的 bundle 文件大小
  7. [HNOI2004]L语言
  8. HDU 3709 Balanced Number(数位DP)题解
  9. 大数据分析平台有哪些主要功能
  10. 程序员如何学习一门新的编程语言
  11. ArcSDE:C#创建SDE要素数据集
  12. uniapp小程序倒计时
  13. 数据可视化--实验三:空间可视化
  14. 分体式水晶头_超6类双屏蔽网线水晶头制作简易教程
  15. 如何修复Windows 10中最烦人的东西
  16. office2007 ppt制作与应用母板
  17. 马士兵python_马士兵:python学习(一)
  18. 黎曼zeta函数 详细介绍 (英文版)
  19. CDH框架搭建【小白易上手】
  20. Calculate a+b

热门文章

  1. DotNetNuke安装与下载
  2. JPA相关--Annotation
  3. win10+Chrome浏览器截长图方法
  4. 【C++】枚举类型应用
  5. 数字化探索:建立学习型组织,HR 也能驱动业务营收?
  6. 从深度学习到深度森林方法(Python)
  7. 谷歌高管又变动:AI 研究部门元老即将离职
  8. 2019最新进展 | Transformer在深度推荐系统中的应用
  9. 如何用Neo4j和Scikit-Learn做机器学习任务?| 附超详细分步教程
  10. 解决掉这些痛点和难点,让知识图谱不再是“噱头”