基于图像识别及自动化控制的棋牌类游戏自动博弈机器人的建立方法与流程

文档序号:11574699阅读:871来源:国知局
本发明属于人工智能与机器博弈
技术领域
,具体涉及一种基于图像识别技术及自动化控制技术,结合机器博弈技术的棋牌类游戏自动博弈机器人的建立方法。本发明可为研究机器博弈技术的研究者及科研机构,提供一种大规模在线与人类玩家进行测试的试验平台;该平台通过建立自动化博弈机器人,与人类玩家进行大规模测试,可以为机器博弈领域研究提供更具说服力的智能水平验证。同时本发明提供了建立大规模人机博弈信息数据库的方法,为当前人工智能领域以深度学习方法为代表的研究提供数据基础。本发明通过游戏场景识别方法、游戏信息识别方法和自动化鼠标操作方法的设计实现。
背景技术
:人工智能是计算机领域的一个重要分支,它的中心任务是研究如何使计算机去做原本只能靠人的智力才能完成的工作。机器博弈作为人工智能的一个研究领域,是检验人工智能发展水平的手段之一。半个多世纪以来,机器博弈一直是人工智能发展创新的温床,由此产生的成功更是人工智能发展史上的重要里程碑。从深蓝(国际象棋)到仙王座(德州扑克)再到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
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1