一夜刷屏的「猜畫小歌」遭到反編譯,內部還暗藏哪些玄機?
這款採用機器學習技術製作而成的小遊戲,玩法很簡單,即「你畫我猜」的翻版「我畫 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 應用領域的一次小小的試水。
而回歸小程序遊戲的本身,值得一提的是,當其他小程序想法設法留存用戶的同時,「猜畫小歌」上線了刪除賬號的功能,不得不表示贊同,這也是良好用戶體驗設計的一部分。
※如何用區塊鏈重塑數字身份——訪IDHub創始人曲明
※小米立 Flag:要做年輕人的第一個深度學習框架
TAG:CSDN |