AI玩微信跳一跳的正确姿势:跳一跳Auto-Jump算法详解

简介:
本文来自AI新媒体量子位(QbitAI)



最近,微信小游戏跳一跳可以说是火遍了全国,从小孩子到大孩子仿佛每一个人都在刷跳一跳。

作为无(zhi)所(hui)不(ban)能(zhuan)的AI程序员,我们在想,能不能用人工智能(AI)和计算机视觉(CV)的方法来玩一玩这个游戏?

于是,我们开发了微信跳一跳Auto-Jump算法,重新定义了玩跳一跳的正确姿势,我们的算法不仅远远超越了人类的水平,在速度和准确度上也远远超越了目前已知的所有算法,可以说是跳一跳界的state-of-the-art,下面我们详细介绍我们的算法。

算法的第一步是获取手机屏幕的截图并可以控制手机的触控操作,我们的github仓库里详细介绍了针对Android和IOS手机的配置方法。

GitHub地址:
https://github.com/Prinsphield/Wechat_AutoJump

你只需要按照将手机连接电脑,按照教程执行就可以完成配置。在获取到屏幕截图之后,就是个简单的视觉问题。我们需要找的就是小人的位置和下一次需要跳的台面的中心。

如图所示,绿色的点代表小人当前的位置,红点代表目标位置。

多尺度搜索(Multiscale Search)

这个问题可以有非常多的方法去解,为了糙快猛地刷上榜,我一开始用的方式是多尺度搜索。我随便找了一张图,把小人抠出来,就像下面这样。

另外,我注意到小人在屏幕的不同位置,大小略有不同,所以我设计了多尺度的搜索,用不同大小的进行匹配,最后选取置信度(confidence score)最高的。

多尺度搜索的代码长这样——

我们来试一试,效果还不错,应该说是又快又好,我所有的实验中找小人从来没有失误。

不过这里的位置框的底部中心并不是小人的位置,真实的位置是在那之上一些。

同理,目标台面也可以用这种办法搜索,但是我们需要收集一些不同的台面,有圆形的,方形的,便利店,井盖,棱柱等等。由于数量一多,加上多尺度的原因,速度上会慢下来。这时候,我们就需要想办法加速了。

首先可以注意到目标位置始终在小人的位置的上面,所以可以操作的一点就是在找到小人位置之后把小人位置以下的部分都舍弃掉,这样可以减少搜索空间。但是这还是不够,我们需要进一步去挖掘游戏里的故事。

小人和目标台面基本上是关于屏幕中心对称的位置的。这提供了一个非常好的思路去缩小搜索空间。假设屏幕分辨率是(1280,720)的,小人底部的位置是(h1, w1),那么关于中心对称点的位置就是(1280-h1,720-w1),以这个点为中心的一个边长300的正方形内,我们再去多尺度搜索目标位置,就会又快有准了。

效果如下,其中蓝色框是(300,300)的搜索区域,红色框是搜到的台面,矩形中心就是目标点的坐标了。

加速的奇技淫巧(Fast-Search)

玩游戏需要细心观察。我们可以发现,小人上一次如果跳到台面中心,那么下一次目标台面的中心会有一个白点,就像刚才所展示的图里的。

更加细心的人会发现,白点的RGB值是(245,245,245),这就让我找到了一个非常简单并且高效的方式,就是直接去搜索这个白点,注意到白点是一个连通区域,像素值为(245,245,245)的像素个数稳定在280-310之间,所以我们可以利用这个去直接找到目标的位置。

这种方式只在前一次跳到中心的时候可以用,不过没有关系,我们每次都可以试一试这个不花时间的方法,不行再考虑多尺度搜索。

讲到这里,我们的方法已经可以运行的非常出色了,基本上是一个永动机。下面是用我的手机玩了一个半小时左右,跳了859次的状态,我们的方法正确的计算出来了小人的位置和目标位置,不过我选择狗带了,因为手机卡的已经不行了。

这里有一个示例视频,欢迎观看!


到这里就结束了吗?那我们和业余玩家有什么区别?下面进入正经的学术时间,非战斗人员请迅速撤离!

CNN Coarse-to-Fine 模型

考虑到IOS设备由于屏幕抓取方案的限制(WebDriverAgent获得的截图经过了压缩,图像像素受损,不再是原来的像素值,原因不详,欢迎了解详情的小伙伴提出改进意见~)无法使用fast-search,同时为了兼容多分辨率设备,我们使用卷积神经网络构建了一个更快更鲁棒的目标检测模型,下面分数据采集与预处理,coarse模型,fine模型,cascade四部分介绍我们的算法。

数据采集与预处理

基于我们非常准确的multiscale-search、fast-search模型,我们采集了7次实验数据,共计大约3000张屏幕截图,每一张截图均带有目标位置标注,对于每一张图,我们进行了两种不同的预处理方式,并分别用于训练coarse模型和fine模型,下面分别介绍两种不同的预处理方式。

Coarse 模型数据预处理

由于每一张图像中真正对于当前判断有意义的区域只在屏幕中央位置,即人和目标物体所在的位置,因此,每一张截图的上下两部分都是没有意义的,因此,我们将采集到的大小为1280720的图像沿x方向上下各截去320720大小,只保留中心640*720的图像作为训练数据。

我们观察到,游戏中,每一次当小人落在目标物中心位置时,下一个目标物的中心会出现一个白色的圆点。

考虑到训练数据中fast-search会产生大量有白点的数据,为了杜绝白色圆点对网络训练的干扰,我们对每一张图进行了去白点操作,具体做法是,用白点周围的纯色像素填充白点区域。

Fine 模型数据预处理

为了进一步提升模型的精度,我们为fine模型建立了数据集,对训练集中的每一张图,在目标点附近截取320*320大小的一块作为训练数据,

为了防止网络学到trivial的结果,我们对每一张图增加了50像素的随机偏移。fine模型数据同样进行了去白点操作。

Coarse 模型

我们把这一问题看成了回归问题,coarse模型使用一个卷积神经网络回归目标的位置,

经过十小时的训练,coarse模型在测试集上达到了6像素的精度,实际测试精度大约为10像素,在测试机器(MacBook Pro Retina, 15-inch, Mid 2015, 2.2 GHz Intel Core i7)上inference时间0.4秒。

这一模型可以很轻松的拿到超过1k的分数,这已经远远超过了人类水平和绝大多数自动算法的水平,日常娱乐完全够用,不过,你认为我们就此为止那就大错特错了~

Fine 模型

fine模型结构与coarse模型类似,参数量稍大,fine模型作为对coarse模型的refine操作。

经过十小时训练,fine模型测试集精度达到了0.5像素,实际测试精度大约为1像素,在测试机器上的inference时间0.2秒。

Cascade

总体精度1像素左右,时间0.6秒。

总结

针对这一问题,我们利用AI和CV技术,提出了合适适用于IOS和Android设备的完整解决方案,稍有技术背景的用户都可以实现成功配置、运行,我们提出了Multiscale-Search,Fast-Search,CNN Coarse-to-Fine三种解决这一问题的算法,三种算法相互配合,可以实现快速准确的搜索、跳跃,用户针对自己的设备稍加调整跳跃参数即可接近实现“永动机”。

讲到这里,似乎可以宣布,我们的工作terminate了这个问题,微信小游戏跳一跳game over!

友情提示:适度游戏益脑,沉迷游戏伤身,技术手段的乐趣在于技术本身而不在游戏排名,希望大家理性对待游戏排名和本文提出的技术,用游戏娱乐自己的生活

声明:本文提出的算法及开源代码符合MIT开源协议,以商业目的使用该算法造成的一切后果须由使用者本人承担

Contributors

Xiao Taihong 

xiaotaihong@126.com

An Jie 

jie.an@pku.edu.cn

点击左下角“阅读原文”,可解锁更多作者的文章

还可以直接参与讨论~


本文作者:肖泰洪 安捷
原文发布时间:2018-01-06
相关文章
|
2月前
|
人工智能 算法 搜索推荐
电商API的“AI革命”:全球万亿市场如何被算法重新定义?
AI+电商API正引领智能商业变革,通过智能推荐、动态定价与自动化运营三大核心场景,大幅提升转化率、利润率与用户体验。2025年,75%电商API将具备个性化能力,90%业务实现智能决策,AI与API的深度融合将成为未来电商竞争的关键基石。
|
5月前
|
人工智能 自然语言处理 算法
阿里云 AI 搜索开放平台:从算法到业务——AI 搜索驱动企业智能化升级
本文介绍了阿里云 AI 搜索开放平台的技术的特点及其在各行业的应用。
593 3
|
5月前
|
机器学习/深度学习 人工智能 JSON
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
Paper2Code是由韩国科学技术院与DeepAuto.ai联合开发的多智能体框架,通过规划、分析和代码生成三阶段流程,将机器学习论文自动转化为可执行代码仓库,显著提升科研复现效率。
617 19
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
|
3月前
|
机器学习/深度学习 人工智能 算法
巅峰对决,超三十万奖金等你挑战!第十届信也科技杯全球AI算法大赛火热开赛!
巅峰对决,超三十万奖金等你挑战!第十届信也科技杯全球AI算法大赛火热开赛!
|
3月前
|
传感器 数据采集 人工智能
AI是如何收集体育数据的?从摄像头到算法,揭秘赛场背后的“数字间谍网“!
⚽ 你是否好奇:AI如何知道哈兰德每秒跑多快?教练的平板为何比裁判还清楚谁偷懒?本文揭秘AI收集体育数据的“黑科技”:视觉追踪、传感器网络、数据清洗与高阶分析。从高速摄像机捕捉梅西肌肉抖动,到GPS背心记录姆巴佩冲刺速度;从表情识别判断装伤,到量子计算模拟战术可能,AI正让体育更透明、精准。未来已来,2030年世界杯或将实现AI替代球探、裁判甚至教练!你认为AI数据收集算侵犯隐私吗?最想统计哪些奇葩指标?留言互动吧!
|
6月前
|
人工智能 算法 数据处理
算法为舟 思想为楫:AI时代,创作何为?
本文探讨了AI时代创作领域的变革与挑战,分析了人类创作者的独特价值,并展望了未来创作的新图景。随着生成式AI技术的发展,创作的传统认知被颠覆,评价体系面临革新。然而,人类创作者凭借批判性思维、情感智能、创意直觉和伦理自觉,依然具有不可替代的价值。文章呼吁创作者转变思维,从竞争走向合作,提升复合能力,关注作品的社会影响,并持续学习进化。在AI助力下,创作将更加民主化、多样化,推动文明进步。最终,人机协同或将成为未来创作的核心模式,共同开创文化发展的新纪元。
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
202 6
|
6月前
|
人工智能 编解码 算法
如何在Python下实现摄像头|屏幕|AI视觉算法数据的RTMP直播推送
本文详细讲解了在Python环境下使用大牛直播SDK实现RTMP推流的过程。从技术背景到代码实现,涵盖Python生态优势、AI视觉算法应用、RTMP稳定性及跨平台支持等内容。通过丰富功能如音频编码、视频编码、实时预览等,结合实际代码示例,为开发者提供完整指南。同时探讨C接口转换Python时的注意事项,包括数据类型映射、内存管理、回调函数等关键点。最终总结Python在RTMP推流与AI视觉算法结合中的重要性与前景,为行业应用带来便利与革新。
319 5

热门文章

最新文章