看板 Python 關於我們 聯絡資訊
各位好, 目前我想做AI用來玩皇室戰爭(在電腦模擬器玩) 目前規劃是 使用python + opencv + pynq來完成 --opencv 透過hdmi線, 在jupyter平台上辨識場上目前卡牌的種類 --python 由opencv得到場上的狀況加以分析要出甚麼卡牌, 由pyt hon提供的api控制滑鼠, 做出選牌和下牌的動作 --pynq 用電路來加速opencv 由於目前還在熟悉工具怎麼用的階段, 但是就開始天馬行空想像 各種可能, 由於沒經驗, 也不確定我的想法是否可行, 希望各位 大神能給予意見.... 以下是我目前想到的幾個困難點, 若各位還有發現其他困難也希 望告訴我. 1. 假設成功辨識目前場上的情況, 接著在判斷如何下牌該用甚麼 方法比較好, 我想肯定不是傳統的if else來處理, 是否要用 機器學習來做(我記得python有函式庫可以叫)或其他更好的方 法? 假如真的需要用機器學習來解決, 有比較入門的套件可以 使用嗎(且能跑在jupyter上) 2. 在jupyter上跑的話能透過模組(pyqutogui之類的)控制滑鼠嗎 3. 整體來說是否可行?或餅畫太大 (PS:對於目前大學部二年級來說) 先在這感謝各位的幫忙 ~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.173.108.80 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1554455869.A.5AB.html
jiyu520: google > clash royale python reinforcement 04/05 17:28
st1009: DataScience板歡迎您 04/05 18:56
sma1033: 你這問題可能超過大學生難度太多,建議縮小Scope 04/05 21:02
sma1033: 光是"把卡牌辨識出來並且準確度>99%"搞不好都做要做很久 04/05 21:03
sma1033: 認出來之後要學習策略又會碰到很多RL常見必然碰到的問題 04/05 21:04
sma1033: 除非你是天才,或是已經對資料科學有很不錯的基礎,不然 04/05 21:05
sma1033: 大概最後就是做不出來然後整個鳥掉 04/05 21:06
hsnuyi: 卡牌有總表 用OCR加DB不就好了 策略直接建卡牌DB下去train 04/05 21:11
hsnuyi: 難的地方在於有辦法train出好策略嗎 04/05 21:11
goldflower: 卡牌因為不會變所以還好吧 直接比對就好 策略上比較 04/05 21:21
goldflower: 麻煩 環境牽扯到太多機率東西的rl都要訓練很久 可能 04/05 21:21
goldflower: 可以把別人玩的紀錄先當作prior試試 我嘴砲ml工程師 04/05 21:21
sma1033: 對有經驗的人來說當然簡單,但新手做這個可能有點超過了 04/05 21:43
sma1033: 新手先把「可以把牌卡正確無誤的認出來」做出來再來講 04/05 21:44
sma1033: 等做到認牌了,RL的難度跟CV認出牌卡也完全不在同一水平 04/05 21:46
sma1033: 樓上講OCR+DB很容易的,可能要考量一下 1.人工建資料庫 04/05 21:53
sma1033: 需要的Effort 2.卡片可能有動態效果,位置也可能移動 04/05 21:54
sma1033: 我覺得對新手來說,要克服這些工程問題都不是嘴巴講講就 04/05 21:55
sma1033: 可以做得出來的,有很多工程問題必須要去克服(需要經驗) 04/05 21:56
goldflower: 其實我覺得最崩潰的是卡牌屬性調整或是加新卡時很囧 04/05 21:56
goldflower: 辨認上原po可能可以先從sift開始試試看 每個round停 04/05 21:59
goldflower: 下來時去掃就行 自己找找看停下來有什麼特徵 04/05 21:59
sma1033: 我其實覺得光是要知道所有的牌卡可能性並建立資料庫就... 04/05 21:59
sma1033: 應該會嚇跑大部分新手了吧 (?) 04/05 22:00
eecheng87: @sma1033 對啊,如果考慮所有組合我肯定無法,所以目前 04/05 22:11
eecheng87: 我是設定兩套(敵方和我方)固定的牌組來測 04/05 22:11
eecheng87: 不過光兩套固定的對我這個新手還是蠻難@@ 04/05 22:12
sma1033: 做RL系統最費工的部分本來就是建立穩定可靠的模擬環境 04/05 22:14
sma1033: 如果環境夠穩定,系統行為也很一致的話,用DQN可能就能跑 04/05 22:14
sma1033: 反過來說,如果環境中有很多隨機或是不可預測的成分就會 04/05 22:17
sma1033: 變得極度困難(下各種判斷的機率分布是複雜的條件機率) 04/05 22:19
sma1033: 很容易就會抓不到判斷準則,導致學得很糟 04/05 22:19
eecheng87: 雖然各位說的我都還沒什麼概念,但是還是感謝各位撥空 04/05 22:21
eecheng87: 回答,讓我知道個方向 04/05 22:21
sma1033: 我是建議遊戲規則知道的話,自己建一個遊戲環境可能較快 04/05 22:27
sma1033: 因為(1)不需要費神去認別人系統裡的東西(2)可以快速大量 04/05 22:27
sma1033: 累積經驗,而累積經驗又是RL演算法最重要的事 04/05 22:28
sma1033: 用別人系統的話應該跑沒幾輪就被判定「非正常使用」被ban 04/05 22:29
eecheng87: @sma1033 想問你指的建一個遊戲環境是神麼意思? 04/05 22:36
eecheng87: 另外我是打算用rl的輸出透過python移動滑鼠點擊,應該 04/05 22:37
eecheng87: 是不會被發現吧xD 04/05 22:37
sma1033: 用程式控制滑鼠等級本質上跟「用外掛」表現的行為相似啊 04/05 22:39
sma1033: 如果官方有在抓的話被發現可能被Ban,再來就是你需要大量 04/05 22:39
sma1033: 遊戲經驗才能訓練出能跑的RL,一般來說都是M個episode的 04/05 22:40
sma1033: 等級,你覺得用別人的系統來跑,玩個100萬場要多久? 04/05 22:41
sma1033: 如果不自己建立系統來加速蒐集經驗,我覺得應該不太可能 04/05 22:42
sma1033: 在合理時間內訓練出真正會動的東西(除非你的遊戲極簡單) 04/05 22:42
sma1033: 目前看到所有用RL演算法玩遊戲學得不錯的Case都是這樣搞 04/05 22:45
sma1033: 我剛才發現我有個地方弄錯,不過總之你需要「跑得極快」 04/05 22:49
sma1033: 的遊戲環境就是了,就是不能用正常速度跑,而是正常速度 04/05 22:50
sma1033: 幾百倍或是上千倍速度運行的「環境」,這樣才有可能讓你 04/05 22:50
sma1033: 在有限時間內蒐集到玩個幾百萬場的遊戲經驗 04/05 22:51
sma1033: 如果你是用單機版的遊戲環境來當攻克目標的話就請忽略我 04/05 22:52
sma1033: 剛才說「線上可能被Ban」的那一段 04/05 22:52
eecheng87: @sma1033 對欸,應該要建自己的系統。但是若建自己的系 04/05 22:54
eecheng87: 統那不就是要重現那個遊戲嗎?另外對手的出牌機制不是也 04/05 22:54
eecheng87: 要變成由我設計? 04/05 22:54
sma1033: 回樓上:Yes,目前看到做AI打Game的團隊都是這樣做的 04/05 22:55
sma1033: 人類玩遊戲可能玩個幾十場就會抓到訣竅擬定策略,但是目 04/05 22:58
jimmy10309: https://youtu.be/2EN7LvhJQ7s 自己看看吧不縮了 另外 04/05 22:58
jimmy10309: 推老師的c語言課程 收益良多 04/05 22:58
sma1033: 前的電腦演算法都很笨,大概都要打個幾百萬場才會到同等 04/05 22:58
jimmy10309: 基本上就是對稱對戰的alpha star 04/05 23:00
eecheng87: @sma1033 如果連對手出牌都要由我設計(就要考慮我方出 04/05 23:01
eecheng87: 神麼牌),這樣不就只是把我原本的問題(讓我方出牌合理) 04/05 23:01
eecheng87: 反過來說...(不知道你懂我的意思嗎?? 04/05 23:01
sma1033: 樓上有人回了,就要做對打吧 04/05 23:02
jimmy10309: 你不想用傳統做if的腳本 那目前就是機器學習了 另外 04/05 23:04
jimmy10309: 看你的敘述 我想光是要做到圖片辨識 拆包讀取原始黨 04/05 23:04
jimmy10309: 做label就是一件大工程了 04/05 23:04
single4565: 推 04/06 00:06
wilson85771: https://youtu.be/2EN7LvhJQ7s 04/06 00:24
hsnuyi: 建DB是必要的 不然你怎模擬? 這根本不需要考慮難度 因為沒 04/06 00:58
hsnuyi: DB你連出牌都無法 04/06 00:58
vi000246: 你可以參考hearstone tracker 他只有辨識圖片記牌功能 04/06 12:56
vi000246: 你先能做到辨識環境所有參數就很厲害了 04/06 12:56
sooge: 先不潑你冷水 你可以試試看 你就知道你這餅畫得多大了 04/07 20:21
sooge: 辨識卡牌很簡單啦 你又不是人臉辨識 固定的形狀顏色很好認 04/07 20:25
sooge: 喔我以為是純卡牌遊戲 皇室這種戰鬥畫面 嗯....加油 04/07 20:35
kumitang: 這個做RL 應該不簡單 04/08 13:30
BlgAtlfans: 餅畫太大了 光是即時出牌的系統就很難辨識了 04/09 14:29
BlgAtlfans: 而且這遊戲有座標的概念 不可能這麼簡單 04/09 14:30
BlgAtlfans: 即時戰略的系統 可能需要每秒掃一次畫面加辨識 光這 04/09 14:32
BlgAtlfans: 個你模型就有難度了 04/09 14:32