一夜刷屏的“猜画小歌”遭到反编译,内部还暗藏哪些玄机?

这款采用机器学习技术制作而成的小游戏,玩法很简单,即“你画我猜”的翻版“我画 AI 猜”。当你在屏幕上画图后,神经网络会尝试猜出你画的是什么。虽然神经网络不一定能猜对,但会从这个过程中学习。因此,你玩的次数越多,就越能提升神经网络的辨识能力。于是,就出现了:

而当你的画灵魂不在线时,AI 还会嘲笑般地来一句:“你画的啥玩意?”

反编译「猜画小歌」

这边当一批批灵魂画手沉迷于画画无法自拔时,另一边程序员小哥哥已带着强烈的求知欲将这款小游戏翻了个底朝天。

知乎用户王天笑将「猜画小歌」反编译之后(来源:https://www.zhihu.com/question/285752903/answer/445770041,已获作者授权),无意发现了这款风靡的小游戏背后还有许多有趣的事情。

Java 工程师写小程序如何组织项目结构:

该项目中对于音频、图片的命名太过不规范:

中英文混合,“zhcn_ni_hua_de_sha_wan_yi_er_1.8.mp3”

下划线、横线、驼峰,命名规则很混乱

RPC 接口都加密了,但应该不用把整个 cryptojs 引入进来。明明只是用了 SHA1 加解密。

且对外部依赖库,他也提出了自己的一些疑问:

cryptojs rpc 接口加解密用

underscorejs 工具函数库(为什么不用 lodash,难道包太大了?)

fundebugjs 微信小程序监控插件

min-base64 base64 转换(很奇怪,cryptojs 应该有这个 API)

同时对小游戏页面反编译过程中发现,竟有 14 个页面,小程序的页面路径最多十层,不知怎么处理后面的跳转?

其中还包括好友对战、注册码以及打赏页面:

“猜画小歌”的背后

其实这款游戏我们并不是第一次见,去年 Google 上线的 QuickDraw(https://quickdraw.withgoogle.com) 可以说是国内版「猜画小歌」的原型,其对用户画作识别的背后主要运用了计算机视觉和神经网络技术,其中神经网络的数据囊括超过 5000 万个手绘素描的数据群,且这些数据集是开源的。

当你根据关键词在进行抽象画作时,神经网络可以利用它内部的记忆来处理任意时序的输入序列(指写字时的笔划顺序,以及绘画时的前后过程),让它对数据集中的数据进行比对,故而猜出正确答案。

数据集地址:https://github.com/googlecreativelab/quickdraw-dataset

数据集官网:https://quickdraw.withgoogle.com/data

说起来很容易,但是 AI 的处理过程还是较为复杂。从我们简单的画作,这款 AI 小程序将会不断地汲取指导性数据,从而变得更加智能。这也意味着“猜画小歌”的上线,中国大陆区域的信息也将填充到数据集中。

写在最后

去年 12 月,

李飞飞

带着“AI 没有国界,AI 的福祉亦无边界”的理念终将 Google AI 成功落地中国,如今这款具备简单且强大的小游戏无疑成为 Google 在中国 AI 应用领域的一次小小的试水。

而回归小程序游戏的本身,值得一提的是,当其他小程序想法设法留存用户的同时,“猜画小歌”上线了删除账号的功能,不得不表示赞同,这也是良好用户体验设计的一部分。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180719A1HIMV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券