基於圖像識別及自動化控制的棋牌類遊戲自動博弈機器人的建立方法與流程
2023-06-23 15:01:51
本發明屬於人工智慧與機器博弈
技術領域:
,具體涉及一種基於圖像識別技術及自動化控制技術,結合機器博弈技術的棋牌類遊戲自動博弈機器人的建立方法。本發明可為研究機器博弈技術的研究者及科研機構,提供一種大規模在線與人類玩家進行測試的試驗平臺;該平臺通過建立自動化博弈機器人,與人類玩家進行大規模測試,可以為機器博弈領域研究提供更具說服力的智能水平驗證。同時本發明提供了建立大規模人機博弈信息資料庫的方法,為當前人工智慧領域以深度學習方法為代表的研究提供數據基礎。本發明通過遊戲場景識別方法、遊戲信息識別方法和自動化滑鼠操作方法的設計實現。
背景技術:
:人工智慧是計算機領域的一個重要分支,它的中心任務是研究如何使計算機去做原本只能靠人的智力才能完成的工作。機器博弈作為人工智慧的一個研究領域,是檢驗人工智慧發展水平的手段之一。半個多世紀以來,機器博弈一直是人工智慧發展創新的溫床,由此產生的成功更是人工智慧發展史上的重要裡程碑。從深藍(西洋棋)到仙王座(德州撲克)再到alphago(圍棋),機器博弈系統在一個又一個領域向人類的最高智能發出了挑戰。也就是說機器博弈系統已經可以與人類玩家同臺競技。但是目前的機器博弈系統並不具備在常見的棋牌類遊戲網際網路平臺上進行操作的能力。為了讓機器博弈系統與人類玩家同臺競技,本發明採用基於圖像識別的方法讓計算機可以理解遊戲平臺中各個場景並從中獲得相關信息。圖像識別,是指利用計算機對圖像進行處理、分析和理解,以識別各種不同模式的目標和對象的技術。目前,圖像識別技術日趨完善,在各項圖像識別的比賽中,新記錄不斷地在被創建。雖然在一些比較複雜的識別任務中,當前技術還不能做到百分百的正確率,但在本發明的任務中,圖像識別相對簡單。主要的原因有:(1)在遊戲平臺上獲得的原圖片相對比較穩定,噪聲比較少;(2)需要識別的類別的特徵比較簡單,遊戲場景以及遊戲信息之間具有很大的區別。技術實現要素:針對現有技術存在的技術問題,本發明提出一種基於圖像識別技術及自動化控制技術的棋牌類遊戲自動博弈機器人的建立方法。本發明的系統實際上是一個基於人類玩家網際網路博弈平臺的自動化博弈機器人,包括了機器人的「眼」:基於圖像識別技術的博弈信息識別系統;「手」:自動化作業系統;以及「大腦」:人工智慧機器博弈系統。通過識別系統將人類可識別的視覺信息轉化為計算機可識別的數據結構,通過機器博弈系統進行策略計算,並最終通過自動化作業系統實現和網際網路遊戲平臺的操作交互。本發明的基於圖像識別及自動化控制的棋牌類遊戲自動博弈機器人的建立方法,其步驟包括:一種基於圖像識別及自動化控制的棋牌類遊戲自動博弈機器人的建立方法,其步驟包括:1)基於圖像識別技術自動識別遊戲場景;2)對每一個遊戲場景執行相應操作,進入遊戲對戰博弈場景;3)識別當前遊戲參與人的行動序列和當前遊戲信息;4)將步驟3)識別的信息傳入人工智慧計算系統,由人工智慧計算系統給出應對策略;5)採用自動化操作技術根據人工智慧計算系統給出的應對策略進行自動化操作。進一步地,在當局遊戲分出勝負後記錄該局遊戲的結果,然後自動識別遊戲場景,進入下一局遊戲。進一步地,步驟1)利用遊戲平臺各個場景的特點來區分不同的遊戲場景;所述特點包括多個參照位置的rgb特徵。進一步地,步驟3)所述遊戲參與人的行動序列包括是否輪到自己出牌,所述當前遊戲信息包括手牌、各玩家亮出的牌。進一步地,步驟3)在進行所述識別時,首先利用windows系統屏幕截圖的方法將遊戲進程轉化為圖片幀,並對該圖片幀進行特徵提取,然後採用基於k近鄰的分類器對圖片進行分類。進一步地,步驟3)採用的圖片特徵提取方法包括二值化、邊緣檢測及水平穿線特徵提取,然後按照圖片的大小選取一個合適的窗口,統計該窗口內的信息作為特徵。進一步地,步驟3)基於k近鄰法對圖片進行分類時,採取交叉驗證的方法來選取最優的k值;圖片分類特徵採用歐幾裡德距離作為度量距離。進一步地,步驟4)中對應策略的給出方法依賴於現有技術實現的特定人工智慧計算系統,例如:象棋人工智慧系統等等;對應策略應符合當前應用的具體棋牌遊戲規則,但策略本身好壞並不影響本發明聲明的系統運行。進一步地,,步驟5)利用c++調用windows系統的自動化控制功能在遊戲平臺上操作,實現完全的計算機自動博弈。一種基於圖像識別及自動化控制的棋牌類遊戲自動博弈機器人,包括圖像識別系統、自動化作業系統和人工智慧計算系統,所述圖像識別系統採用圖像識別技術自動識別遊戲場景,並在進入遊戲對戰博弈場景後識別當前遊戲參與人的行動序列和當前遊戲信息;所述人工智慧計算系統對所述圖像識別系統識別出的信息給出應對策略;所述自動化作業系統採用自動化操作技術並根據人工智慧計算系統給出的應對策略進行自動化操作。本發明的主要意義和有益效果在於:現有技術中尚未有一種自動化的人機對弈的自動博弈機器人。即使是alphago挑戰人類李世石的比賽中,alphago系統仍然需要一個人幫助其進行場景識別及實現操作。該情況導致以往機器博弈系統研究中的訓練和測試,主要來自於自身及其他機器博弈系統之間的對戰,因為只有這樣才能實現大規模的對戰測試。偶爾會有研究機構邀請職業的人類玩家進行小規模對戰測試。因此,本發明使得機器博弈系統與人類玩家的大規模測試成為可能,為人工智慧領域開展與人類玩家的博弈問題研究提供了新的對戰測試方法、大規模實驗方法及資料庫數據積累方法。本發明同時具備自動糾錯功能,對遊戲平臺各項有效信息的識別的準確率達到了99.9%。附圖說明圖1.本發明方法的總體框架圖。圖2.確定擺牌流程圖。圖3.圖像識別中的特徵提取流程。圖4.特徵提取中的二值化示例。圖5.數字5的水平穿線特徵提取過程。圖6.撲克牌牌面的水平穿線特徵提取結果。圖7.統計特徵提取結果示例。圖8.圖像識別流程。具體實施方式下面通過實例圖和附圖,對本發明做進一步說明。圖1為本發明方法的總體框架,具體步驟包括:基於圖像識別技術自動識別遊戲場景;對每一個場景執行相應操作,進入遊戲對戰場景;識別是否輪到自己出牌以及當前牌桌信息(包括手牌,各玩家亮出的牌),採用基於k近鄰的分類器進行分類;將當前牌桌信息傳入ai函數,由ai給出應對策略;採用自動化操作技術根據ai給出的策略進行相應擺牌;在遊戲分出勝負後記錄該局遊戲的得分。下面做具體說明。1、識別遊戲場景本發明的應用場景是在計算機中運用手機虛擬機來運行遊戲平臺,遊戲為棋牌類遊戲。為了減少操作流程,我們把主要的功能集中在跟對戰相關較大的操作中,所以假定已經打開遊戲平臺並登錄了,並把登錄後的頁面稱為主頁面。在場景識別中,一共有三個場景:未識別場景,普通對戰,特殊對戰。在每個場景中都有其對應的操作,在這裡,操作的具體實施依靠基於windows系統的api(應用程式編程接口)來實現,後續進行詳細介紹。1)未識別場景:指的是對戰場景之外的其他場景,如主頁面或者彈出的窗口沒關閉等。統稱為異常。這時會讓計算機判斷屬於哪種異常,並針對異常選擇相應操作。若停在主頁面則點擊進行匹配玩家並進入遊戲對戰頁面;若存在未關閉的小窗口,則點擊關閉按鈕。2)普通對戰:在普通對戰頁面的操作也是本發明的主要內容所在。在這裡需要先讓計算機了解這時候牌桌情況並做出相應的操作。把普通對戰分為三種情況:(1)第一輪,這時我們會先識別第一輪發下來的五張牌以及其他兩家的擺牌情況,並將這些信息傳入人工智慧計算系統(即圖1中的ai,也可稱為機器博弈系統),然後按照得到的這五張牌的擺法進行擺牌,並確定擺牌是否正確。接著查看上一局的遊戲記錄,把上一局遊戲的結果記錄下來以統計機器博弈系統的表現。(2)等待其他玩家,這個不需要做任何操作,簡單的讓進程休眠一段時間以減少計算機開銷。(3)其他輪次,這時會識別發下來的三張手牌,其他兩家的擺牌情況以及剩餘的牌,並將這些信息傳入人工智慧計算系統,然後按照得到的擺法進行擺牌,並確定擺牌是否正確。3)特殊對戰:在大菠蘿遊戲中會在某些情況進入特殊的對戰,有的平臺稱之為夢幻大陸。這時候的場景會與普通對戰的布局有些不同,不過相應的操作也由一些不同。首先識別發下來的所有手牌以及其他兩家的擺牌情況,並將這些信息傳入人工智慧計算系統,然後按照得到的擺法進行擺牌,並確定擺牌是否正確。接著查看上一局的遊戲記錄,把上一局遊戲的結果記錄下來以統計機器博弈系統的表現。在擺牌中需要確定擺牌是否正確。在實際的運行過程中,會遇到一些遊戲平臺自己會處理的異常,比如在網絡連接不穩定的時候,擺牌會出現這樣的情況:在操作滑鼠的過程中,網絡連接斷開了。這時候其實任何的擺牌操作都不能成功,也就是說滑鼠在那裡空操作卻起不到任何效果。為了解決這種情況,我們制定了確定擺牌的方案,具體流程如圖2所示,具體的做法是:在程序操作擺完一張牌後,識別目的位置是否有牌,若沒有牌,則重新進行擺牌;若有牌,則識別該牌是否為此次操作中應該擺上的牌,若不是,則撤下該牌,並重新擺牌。2、圖像特徵提取在圖像識別任務中,圖像特徵的提取扮演了非常重要的角色,一個好的特徵表達對之後識別的準確率的影響非常大。現在的圖像特徵提取方法非常多,如方向梯度直方圖(hog)特徵,局部二值模式(lbp)特徵,尺度不變特徵變換(sift)特徵等。在本發明的任務中,需要識別的圖片內容比較簡單,但為了跟上遊戲流程,進行的識別次數比較多,所以需要減少運算量,加快圖片識別的速度。為此,在不影響之後的識別準確率的情況下,本發明採用了一個更為簡單的統計信息作為特徵。本發明對於一張圖片i的主要特徵提取過程如圖3所示,具體包括以下內容:1)二值化:二值化是所有操作的第一步,主要用於消除遊戲中的動畫和光影蒙版對圖片識別產生的影響。二值化的作用是將圖片由灰度rgb值限時的模式轉化為01顯示。圖4是一個二值化圖片的示例,其中右邊為一張圖片,左邊為二值化處理結果。2)邊緣檢測:邊緣檢測的目的是對齊識別區域,以提高識別效率和準確性。本實施例中邊緣檢測的目標是對齊識別區域的左上角坐標點。通過識別第一列出現1和第一行出現1的交叉像素點實現。3)花色識別:花色識別是系統中較為簡單的識別步驟,但卻對提升系統識別速度起到了關鍵作用。具體方法是:通過取撲克牌特定區域的像素rgb值,確定撲克牌花色。本系統確定的花色特徵如表1所示。表1:花色識別特徵區間撲克牌花色rgb方片0~250~25200~255草花0~25200~2550~25紅桃200~2550~250~25黑桃200~255200~255200~255其他------系統通過上表確認撲克牌花色,如果未落到任何花色的識別區間內,則識別為非撲克牌或者牌背圖案,系統跳出本張撲克的識別過程。否則,花色識別結果將和其他流程識別的撲克牌內容結合形成最終結果。例如:黑桃+k=黑桃k。4)水平穿線特徵提取:水平穿線特徵是本系統中識別撲克牌的關鍵之一,方法是通過橫向識別撲克牌中的01分布,獲取水平方向的像素特徵。本實施例總共採集了撲克牌的6個特徵,分別是:水平中線特徵、上1/4線特徵,下1/4線特徵,以及該三個特徵對應的首1特徵。獲取特徵的方法是橫向遍歷,記錄水平線總共與幾條由1組成的像素點相交。首1特徵指的是:首次相交,是在識別區域的左側還是右側,左側為1,右側為0。圖5給出了撲克牌中數字5的數字穿線特徵,可以看到3條穿線交叉的1的數量分別是1、1、1,首次遇到1的位置分別是右側、左側、右側,因此5的數字穿線特徵為111010。圖6給出了全部撲克牌牌面的水平穿線特徵提取結果。5)分區域數字列特徵提取:本模塊將撲克牌的識別區域分割為3*3的9個區域,再次進行水平穿線特徵提取,以作為全局穿線特徵的補充,具體過程類似於步驟4),這裡不再敖述。6)特徵比對:按照圖片i的大小選取一個合適的窗口w,統計w內的信息作為特徵,在這裡,由於原始圖片背景與內容的區別較明顯,所以統計內容像素點的佔比,即統計值為1的像素點在窗口中的佔比;圖片i的統計特徵向量x由所有窗口的統計信息表示。即:x=(f(w1),…,f(wn))其中f(wi)表示在窗口wi中值為1的像素點的佔比。圖7為特徵提取結果示例。如圖7所示,首先我們得到的截取得到的原始圖片(撲克牌k),然後對其進行特徵提取,得到如圖圖片,採用一個8*10的窗口w,獲得最後的特徵向量x。在這裡這個窗口是可調的,主要是讓最後的特徵向量維數固定,方便下一步操作。3、圖像識別圖8表示了圖像識別的過程:首先對圖片進行預處理,主要是對圖片進行裁剪等操作,以截取關鍵區域圖片。然後進行特徵提取,之後將特徵輸入到k近鄰法分類器中,最後獲得圖片的類標籤。為了進行圖像識別,需要為k近鄰分類器準備足夠的訓練數據集,即進行數據集收集。在這裡採取的方法是從遊戲平臺中截取所需要的數據,包括不同的撲克牌,勝負的分數等圖片。具體的做法是:統計遊戲平臺中各項數據的位置,以及大小,然後用程序進行屏幕截圖,截取相應的位置和大小。在提取完圖像的特徵後,需要一個分類器來對這些特徵進行分類,以獲得需要的信息。在本發明的任務中,希望可以用同樣的方法來對不同平臺的遊戲信息進行識別,並且在適配不同平臺的時候可以減少額外操作。通過調研發現k近鄰法(k-meansneighbor,k-nn)符合上述的要求。首先它在簡單任務中的效果不錯,並且這是一個不需要顯示學習的分類器,也就是說不需要提前在訓練數據集進行訓練。這意味著在適配平臺時只需要將要適配的平臺的遊戲信息數據集收集後就可以了。k近鄰法是一種基本分類與回歸的方法。它的輸入為實例的特徵向量,對應於特徵空間的點;輸出為實例的類別。k近鄰法假設給定一個訓練數據集,其中的實例類別已定。分類時,對新的實例,根據其k個最近鄰的訓練實例的類別,通過多數表決等方式進行預測。主要的問題有:k值的選擇,距離度量及分類決策規則。k近鄰法算法:1)輸入訓練集:t={(x1,y1),(x2,y2),……(xn,yn)},其中,為特徵向量,yi∈y={c1,c2…ck}為類別;2)鄰域nk(x):為涵蓋上述k個點的x的鄰域;3)確定x的類別y:下面說明任務中對三要素的具體選擇:a)k值選擇:訓練集中與x相鄰近的k個點。如果k值太小就意味著整體模型變得複雜,容易發生過擬合,即如果鄰近的實例點恰巧是噪聲,預測就會出錯。k值的增大意味著整體的模型變得簡單,極端的情況是k=n,其中n表示訓練集中實例的個數,那麼無論輸入實例是什麼,都只是簡單地預測它屬於訓練集中最多的類,這樣的模型過於簡單。k值一般取一個比較小的值,通常採取交叉驗證的方法來選取最優的k值。也就是說k值的選擇得通過多次試驗,以確保有一個較好的結果。在多次試驗後,為不同的識別任務確定不同的k值。比如撲克牌的識別中,k值選擇1,即這裡採用的是最近鄰法。b)距離度量:其中,lp(xi,xj)表示特徵向量xi和xj的距離,n表示特徵的個數,當p=1時為曼哈頓距離,當p=2時為歐幾裡德距離。在我們的任務中我們選擇p=2。c)分類決策規則:一般為多數表決規則,即採用結果中k個訓練實例中的多數類作為x的類別。4、自動化作業系統自動化作業系統主要是讓程序可以在遊戲平臺上進行操作,實現完全的計算機自動博弈,而不需要人為幹預對戰過程。可以利用c++調用windows系統的自動化控制功能在遊戲平臺上操作。具體的做法是,打開本程序以及對應的遊戲平臺(遊戲平臺在手機虛擬機上運行)後,程序藉助windows的api來獲得虛擬機的句柄,得到需要識別的棋牌遊戲在windows系統中的顯示窗口的位置,並將該窗口激活,為了確保每次操作都能夠在遊戲平臺中進行,比如截圖或者滑鼠操作,在每次操作之前都做一次獲得句柄並激活的操作。主要有下面兩個原因:(a)若遊戲平臺全部或者部分被其他程序覆蓋,將會導致在需要被覆蓋部分的信息時,截到的圖片不能反映真實發生在遊戲平臺中的內容,導致之後的信息識別沒有起到效果,對博弈系統造成不利的影響。(b)若遊戲平臺全部或者部分被其他程序覆蓋,將會導致需要滑鼠在遊戲平臺的該位置上操作時,不能作用在平臺上,從而不能實時處理異常或者擺牌。在激活窗口後,程序將進行自動博弈的流程,在這個過程中,需要截圖以識別相關信息,並操作滑鼠以完成必要的動作。具體做法如下:(1)截圖在截圖時可以截下整個界面,然後進行區域的匹配,以此來獲得需要的信息。但是這樣的做法計算機開銷非常大,作為實時的對戰,需要控制時間的消耗。考慮到遊戲平臺的布局不會輕易改動,所以採取以下的做法:首先,對於一個遊戲平臺,需要收集各個場景下的有用信息以及其相對虛擬機窗口的位置,以及大小,如手牌的位置和大小,遊戲得分的位置和大小等。然後,在實際需要識別某個大小為的信息時,可以利用窗口的位置以及該信息相對窗口的位置來定位該信息在屏幕中的位置。最後,截取屏幕該位置的一張大小的圖片。(2)操作滑鼠windows提供了功能非常完善的api來控制滑鼠的移動或點擊,這為本發明的自動化操作提供了便利。跟截圖類似,首先需要收集各個操作的相關信息,比如擺牌操作需要牌的起始位置、目的位置,並且拖動過程需要保持單擊牌的動作。然後再依賴所收集的信息在需要該操作時利用對應的api接口來實現。值得注意的是,在連續的兩個滑鼠操作中需要讓程序掛起一點時間,讓遊戲平臺可以響應操作。在本實施例中使用的是0.3秒。表2給出了本發明系統在國內遊戲平臺聯眾上面,2017年2月24至3月14日單臺pc電腦的測試數據。10天時間共計測試7691盤,總得分為10702分,平均每局得分為1.39分。除了ai系統的貢獻外,本發明也起到了關鍵貢獻:1、識別準確率位98.87%,基本保障了ai系統的正確計算。2、自動化操作準確率為95.65%,在正常及短時間斷線等情況下均保障了系統的正常運行,使得每天的平均測試時間超過20小時,每天總計測試局數超過700局。可以看到,如果本發明應用於更多的平臺,裝載於更多電腦上面,測試數據的積累數量將會得到進一步的大幅提升。表2:系統在聯眾平臺大菠蘿遊戲中的測試數據以上實施例僅用以說明本發明的技術方案而非對其進行限制,本領域的普通技術人員可以對本發明的技術方案進行修改或者等同替換,而不脫離本發明的精神和範圍,本發明的保護範圍應以權利要求書所述為準。當前第1頁12