一次不成功的深度學(xué)習(xí)實(shí)踐 - 微信跳一跳

最近微信的跳一跳小程序火了一把,所以前天也更新了微信玩了幾盤汽久,最多手動(dòng)到200左右就不行了。

后來(lái)準(zhǔn)備用代碼寫個(gè)輔助工具,上Github一查,已經(jīng)有人做出來(lái)了滚婉,17年12月29號(hào)的項(xiàng)目刀脏,不到5天差不多5K的stars古戴,以后還會(huì)更多,簡(jiǎn)直可怕。

https://github.com/wangshub/wechat_jump_game

具體思路都差不多:

  • 用adb調(diào)試手機(jī),獲取截圖散劫;
  • 從截圖中識(shí)別棋子和目標(biāo)塊的中心點(diǎn)位置;
  • 根據(jù)距離計(jì)算長(zhǎng)按時(shí)間幕帆,系數(shù)和屏幕分辨率相關(guān)获搏;
  • 用adb模擬長(zhǎng)按,完成跳躍失乾。

唉常熙,多么可惜,錯(cuò)過(guò)了一個(gè)好項(xiàng)目碱茁。

既然別人已經(jīng)實(shí)現(xiàn)了裸卫,那就嘗試點(diǎn)不一樣的,用 深度學(xué)習(xí) 解決一下早芭。

基本思路

基本流程類似彼城,唯一的區(qū)別在于如何獲取棋子和目標(biāo)塊的中心位置。

假如長(zhǎng)按時(shí)間只取決于棋子和目標(biāo)塊的水平位置退个,那么只需要知道它們水平方向上的坐標(biāo)即可。

可以看作一個(gè) 物體檢測(cè) 問(wèn)題调炬,檢測(cè)出截圖中的棋子等物體语盈,這里假設(shè)共包含七類物體:

  • 棋子:chess
  • 彩蛋塊:包括污水 waste、魔方 magic缰泡、商店 shop刀荒、音樂(lè)盒 music
  • 普通塊:包括矩形塊 rect代嗤、圓形塊 circle

模型實(shí)現(xiàn)

我手動(dòng)標(biāo)注了500張截圖,基于ssd_mobilenet_v1_coco模型和TensorFlow物體檢測(cè)API缠借,訓(xùn)練好的模型跑起來(lái)是這么個(gè)結(jié)果干毅。

可以看到截圖中的棋子、魔方泼返、矩形塊硝逢、圓形塊都被檢測(cè)了出來(lái),每個(gè)檢測(cè)結(jié)果包括三部分內(nèi)容:

  • 物體位置绅喉,用矩形標(biāo)注渠鸽,對(duì)應(yīng)四元組 ymin、xmin柴罐、ymax徽缚、xmax;
  • 物體類別革屠,為以上七類中的一種凿试;
  • 檢測(cè)置信度,越高說(shuō)明模型對(duì)檢測(cè)結(jié)果越有把握似芝。

這不僅僅是簡(jiǎn)單的規(guī)則檢測(cè)那婉,而是 真正看到了截圖中共有哪幾個(gè)物體,以及每個(gè)物體分別是什么国觉。

所以接下來(lái)吧恃,就只需從檢測(cè)結(jié)果中取出棋子的位置,以及最上面一個(gè)非棋子物體麻诀,即目標(biāo)塊的位置痕寓。

有了物體的邊界輪廓,取中點(diǎn)即可得到棋子和目標(biāo)塊的水平坐標(biāo)蝇闭,這里進(jìn)行了歸一化呻率,即屏幕寬度為1,距離在0至1之間呻引。然后將距離乘以一個(gè)系數(shù)礼仗,作為長(zhǎng)按時(shí)間并模擬執(zhí)行即可。

運(yùn)行結(jié)果

看起來(lái)很不錯(cuò)逻悠,實(shí)際跑分結(jié)果如何呢元践?

大概只能達(dá)到幾百分,問(wèn)題出在哪童谒?

主要是標(biāo)注數(shù)據(jù)太少单旁,模型訓(xùn)練得不夠充分,所以檢測(cè)結(jié)果不夠準(zhǔn)確饥伊,有時(shí)候檢測(cè)不出棋子和目標(biāo)塊象浑,而一旦出現(xiàn)這類問(wèn)題蔫饰,分?jǐn)?shù)必然就斷了。

嘗試了以下方法愉豺,將一張截圖朝不同的方向平移篓吁,從而得到九張截圖,希望提高檢測(cè)結(jié)果的召回率蚪拦,但仍然有檢測(cè)不出來(lái)的情況杖剪,也許只有靠更多的標(biāo)注數(shù)據(jù)才能解決這一問(wèn)題。

規(guī)則檢測(cè)

模型訓(xùn)練了20W輪外盯,依舊存在檢測(cè)不出來(lái)的情況摘盆,郁悶得很,干脆也寫一個(gè)基于規(guī)則的 簡(jiǎn)單版代碼 好了饱苟。

花了不到20分鐘寫完代碼孩擂,用OpenCV提取邊緣,然后檢測(cè)棋子和目標(biāo)塊的水平中心位置箱熬,結(jié)果看起來(lái)像這樣类垦。

事實(shí)證明,最后跑出來(lái)的分?jǐn)?shù)城须,比之前的模型要高多了……

說(shuō)好的深度學(xué)習(xí)呢蚤认?

總結(jié)

面對(duì)以下情況時(shí),基于人工經(jīng)驗(yàn)定義規(guī)則糕伐,比用深度學(xué)習(xí)訓(xùn)練模型要省力砰琢、有效很多:

  • 問(wèn)題本身比較簡(jiǎn)單,不需要復(fù)雜的抽象良瞧;
  • 標(biāo)注數(shù)據(jù)比較有限陪汽,難以充分訓(xùn)練模型;
  • 錯(cuò)誤懲罰很高褥蚯,對(duì)錯(cuò)誤不能容忍挚冤。即便模型在99%的情況下能完美運(yùn)行,1%的錯(cuò)誤立馬讓游戲直接結(jié)束了赞庶,此時(shí)反而不如hard code的規(guī)則靠譜训挡。

當(dāng)然,如果大家能一起努力歧强,多弄些標(biāo)注數(shù)據(jù)出來(lái)澜薄,說(shuō)不定還有些希望。

代碼在Github上:https://github.com/Honlan/wechat_jump_tensorflow

不說(shuō)了摊册,我繼續(xù)刷分去了表悬,用后面寫的不到一百行的代碼……

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市丧靡,隨后出現(xiàn)的幾起案子蟆沫,更是在濱河造成了極大的恐慌,老刑警劉巖温治,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饭庞,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡熬荆,警方通過(guò)查閱死者的電腦和手機(jī)舟山,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)卤恳,“玉大人累盗,你說(shuō)我怎么就攤上這事⊥涣眨” “怎么了若债?”我有些...
    開(kāi)封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拆融。 經(jīng)常有香客問(wèn)我蠢琳,道長(zhǎng),這世上最難降的妖魔是什么镜豹? 我笑而不...
    開(kāi)封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任傲须,我火速辦了婚禮,結(jié)果婚禮上趟脂,老公的妹妹穿的比我還像新娘泰讽。我一直安慰自己,他們只是感情好昔期,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布已卸。 她就那樣靜靜地躺著,像睡著了一般镇眷。 火紅的嫁衣襯著肌膚如雪咬最。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天欠动,我揣著相機(jī)與錄音永乌,去河邊找鬼。 笑死具伍,一個(gè)胖子當(dāng)著我的面吹牛翅雏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播人芽,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼望几,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了萤厅?” 一聲冷哼從身側(cè)響起橄抹,我...
    開(kāi)封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤靴迫,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后楼誓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體玉锌,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年疟羹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了主守。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡榄融,死狀恐怖参淫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情愧杯,我是刑警寧澤涎才,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站民效,受9級(jí)特大地震影響憔维,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜畏邢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一业扒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧舒萎,春花似錦程储、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至咆贬,卻和暖如春败徊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掏缎。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工皱蹦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人眷蜈。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓沪哺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親酌儒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辜妓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容