网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網

一次不成功的深度學習實踐 - 微信跳一跳

發布時間:2018-05-03 15:27 所屬欄目:小程序開發教程

 

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

 

 

后來準備用代碼寫個輔助工具,上Github一查,已經有人做出來了,17年12月29號的項目,不到5天差不多5K的stars,以后還會更多,簡直可怕。

github.com/wangshub/we…

具體思路都差不多:

  • 用adb調試手機,獲取截圖;
  • 從截圖中識別棋子和目標塊的中心點位置;
  • 根據距離計算長按時間,系數和屏幕分辨率相關;
  • 用adb模擬長按,完成跳躍。

唉,多么可惜,錯過了一個好項目。

既然別人已經實現了,那就嘗試點不一樣的,用 深度學習 解決一下。

基本思路

基本流程類似,唯一的區別在于如何獲取棋子和目標塊的中心位置。

假如長按時間只取決于棋子和目標塊的水平位置,那么只需要知道它們水平方向上的坐標即可。

可以看作一個 物體檢測 問題,檢測出截圖中的棋子等物體,這里假設共包含七類物體:

  • 棋子:chess
  • 彩蛋塊:包括污水 waste、魔方 magic、商店 shop、音樂盒 music
  • 普通塊:包括矩形塊 rect、圓形塊 circle

模型實現

我手動標注了500張截圖,基于ssd_mobilenet_v1_coco模型和TensorFlow物體檢測API,訓練好的模型跑起來是這么個結果。

 

 

可以看到截圖中的棋子、魔方、矩形塊、圓形塊都被檢測了出來,每個檢測結果包括三部分內容:

  • 物體位置,用矩形標注,對應四元組 ymin、xmin、ymax、xmax;
  • 物體類別,為以上七類中的一種;
  • 檢測置信度,越高說明模型對檢測結果越有把握。

這不僅僅是簡單的規則檢測,而是 真正看到了截圖中共有哪幾個物體,以及每個物體分別是什么。

所以接下來,就只需從檢測結果中取出棋子的位置,以及最上面一個非棋子物體,即目標塊的位置。

有了物體的邊界輪廓,取中點即可得到棋子和目標塊的水平坐標,這里進行了歸一化,即屏幕寬度為1,距離在0至1之間。然后將距離乘以一個系數,作為長按時間并模擬執行即可。

運行結果

看起來很不錯,實際跑分結果如何呢?

大概只能達到幾百分,問題出在哪?

主要是標注數據太少,模型訓練得不夠充分,所以檢測結果不夠準確,有時候檢測不出棋子和目標塊,而一旦出現這類問題,分數必然就斷了。

嘗試了以下方法,將一張截圖朝不同的方向平移,從而得到九張截圖,希望提高檢測結果的召回率,但仍然有檢測不出來的情況,也許只有靠更多的標注數據才能解決這一問題。

規則檢測

模型訓練了20W輪,依舊存在檢測不出來的情況,郁悶得很,干脆也寫一個基于規則的 簡單版代碼 好了。

花了不到20分鐘寫完代碼,用OpenCV提取邊緣,然后檢測棋子和目標塊的水平中心位置,結果看起來像這樣。

 

 

事實證明,最后跑出來的分數,比之前的模型要高多了……

說好的深度學習呢?

 

 

總結

面對以下情況時,基于人工經驗定義規則,比用深度學習訓練模型要省力、有效很多:

  • 問題本身比較簡單,不需要復雜的抽象;
  • 標注數據比較有限,難以充分訓練模型;
  • 錯誤懲罰很高,對錯誤不能容忍。即便模型在99%的情況下能完美運行,1%的錯誤立馬讓游戲直接結束了,此時反而不如hard code的規則靠譜。

當然,如果大家能一起努力,多弄些標注數據出來,說不定還有些希望。

代碼在Github上:github.com/Honlan/wech…

不說了,我繼續刷分去了,用后面寫的不到一百行的代碼……



易優小程序(企業版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/24195.html 復制鏈接 如需定制請聯系易優客服咨詢:800182392 點擊咨詢
QQ在線咨詢
AI智能客服 ×