共计 4096 个字符,预计需要花费 11 分钟才能阅读完成。
概述
CV(Computer Vision)在事实世界的利用绝对比拟胜利,如日常生活中的人脸识别,车牌辨认,指纹比对,电子稳像,行人,车辆的跟踪,等等。那么在其余畛域呢,比方大家常玩的手机游戏,CV 又能够有哪些利用呢?游戏场景的图像和事实场景的图像还是有差异的,有些游戏的场景绝对比较复杂,如特效烦扰、游戏人物不似真人一样有规定,艺术字体也不像车牌一样字体固定,并且有对立底色等等;有些元素是绝对比较简单的,如游戏中的固定地位的固定图标等等。简略的游戏元素能够用传统图像检测的办法,也能够获得比拟好的成果。本篇文章,将率领大家一起剖析常见的游戏场景的辨认。
1. 解决流程
游戏场景的辨认能够次要分为两个模块,GameClient 和 CVServer, GameClient 模块负责从手机或是 PC 端实时获取图像,并转发给 CVServer。CVServer 解决收到的游戏图像,后果返给 Game Client。Game Client 依据需要进一步解决后,再反馈给游戏端。流程如图 1 所示。
图 1 游戏场景辨认主流程
2. 利用举例
上一大节次要跟大家分享了游戏场景辨认的次要流程,这一大节咱们将次要剖析图像识别在游戏中的利用。
2.1 游戏状态的确定
每个游戏 UI 称为一个游戏状态。游戏可被认为有很多不同的 UI 组成。先建设好这些 UI 的样本库,实时获取一张游戏画面时,比对以后的图像和样本图像,可判断出以后的游戏状态。比对两张图像是否类似的办法很多,这里咱们以特色点匹配为例,次要步骤如下:
Step1: 样本图像的特色点提取,测试图像的特色点匹配
图 2 特色点提取
Step2: 特色点匹配
图 3 特色点匹配
Step3: 匹配筛选
图 4 依据 ratio-test 进行匹配筛选
ORB 特色点匹配是绝对比拟成熟的技术。在采集到的测试数据集中,会因为手机分辨率,刘海或渲染的不同,导致图像的大小或 UI 渲染地位等差别比拟大,罕用的模板匹配很难适配这种状况。基于特色点的匹配计划则不会存在这种状况,特色点个别是指图像中的角点,或是显著点。跟图像中物体元素所在的地位和大小关系不显著,所以适用性更强。ORB 特色点是将 FAST 特色点的检测办法与 BRIEF 特征描述子联合起来,并在它们原来的根底上做了改良与优化。ORB 特色点具备旋转不变性和尺度不变性。上面别离介绍特色点提取、特色点形容、特色点匹配和特色点筛选。
2.1.1 特色点提取:FAST
FAST 的根本思维,若某像素 p 与其四周邻域内 (1 到 16),足够多的像素点相差较大,则该像素可能是角点。原始的 FAST 特色点是没有尺度不变性的,OPENCV 中的 ORB 的实现通过构建高斯金字塔,而后在每一层金字塔图像上检测角点,来实现尺度不变性。原始的 FAST 也不具备方向不变性,ORB 的论文中提出了一种利用灰度质心法来解决这个问题。对于任意一个特色点 p 来说,定义 p 的邻域像素的矩为
,其中 I(x,y) 为点 (x,y) 处的灰度值,图像的质心为:
,特色点和质心的夹角,即为 FAST 特色点的方向:
图 5 FAST 特色点图示(图像来自论文:Faster and better: A machine learning approach to corner detection)
2.1.2 特色点形容:BRIEF
BRIEF 算法的核心思想是在关键点 P 的四周以肯定的形式选取 N 个点对,而后把这 N 个点对的比照后果组合成一个长度为 n 的二值码串,作为该关键点的形容子。ORB 在计算 BRIEF 形容子的时候,建设的坐标系是以关键点为圆心,以特色点 P 和取点区域的质心 (Q) 的连线为 X 轴建设的二维坐标系。圆心是固定的,以 PQ 为 x 轴坐标,垂直方向为 y 轴坐标,在不同的旋转角度下,同一特色点取出来的点对是统一的,这就解决了旋转一致性的问题。
2.1.3 特色点匹配:Hamming Distance
两个等长二进制串的汉明间隔是两个二进制串对应地位的不同字符的个数。ORB 中用 Hamming Distance 来掂量两个形容子之间的间隔。
2.1.4 特色点筛选:Ratio-Test
Ratio-Test 用来剔除间隔比例 (最近邻间隔 / 第二近邻间隔) 近似的含糊匹配点对。这里应用一个参数 ratio 来管制剔除间隔比例在肯定范畴之外的特色点。由下图所示,可知 ratio 为 0.75 左右时,能够把正确匹配和谬误匹配状况的最好的拆散。
图 7 最近邻间隔和第二近邻间隔的 ratio 图,实线为匹配正确时的 ratio 的 pdf, 虚线为谬误匹配时的 ratio 的 pdf。图像来自论文:D. G. Lowe. Distinctive imagefeatures from scale-invariant keypoints, 2004
2.2 场景覆盖率
基于特色点匹配的办法,也可用在场景覆盖率的利用上。首先是加载外围场景的模板图像,AI 在运行过程中会采集大量的游戏运行中的游戏截图。基于这些游戏截图造成的测试数据集,遍历每一张测试数据集,别离基于局部图像的特色点算法匹配外围场景图像和测试图像,全图像的特色点匹配办法匹配外围场景图像和测试图像,最终筛选出匹配后果,过滤失去匹配到的外围场景的图像。通过匹配到的外围场景的图像和数目,揣测 AI 运行过程中的场景笼罩状况。
2.3 游戏中数字的辨认
游戏中的数字图像很多,如关卡数,得分数,倒计时数等,咱们能够基于 CNN 的办法对数字进行辨认。基于 CNN 的分类办法很早就被提出,晚期比拟经典的 CNN 网络是 1998 年提出的 Lenet 网络,Lenet 网络采纳 2 层卷积,2 层池化层,2 层全连贯层,最初一层 softmax 层组成。输出的是数字图像,输入的是数字图像的类别。
图 6 Lenet 网络
咱们能够先对全数字图像进行宰割,宰割成一个一个独立的数字,而后通过 Lenet 网络对每一个数字图像进行预测,输入的数字图像类别即为辨认出的数字,最初再对全数字进行组装,失去最初的全数字辨认后果。
图 7 数字辨认过程
随着网络结构加深,卷积性能的增强,以及 GPU 和大数据带来的历史时机,CNN 近些年出现爆炸式倒退。而且 CNN 不仅用于分类,还能够用来对物体检测,即最初一层由原来的输入物体的类别,到输入物体在图像中的地位和在此地位处的物体的类别。咱们能够采纳折中速度和准确度的算法 YOLOV3, 并基于工程的图像特色,基于缩小网络层个数和缩小特色图个数两个方向去优化网络,近一步优化网络速度。
图 9 数字辨认和重组的过程
2.4 固定地位固定图标的辨认
模板匹配的利用很多,咱们就固定按钮的辨认,提示信息的辨认,卡住状态的检测这三个方面举例说明。游戏主界面中,英雄的技能,配备,操作键等这些按钮个别都是在固定地位。提取按键为可用状态时的按钮图标作为模板,实时获取的游戏界面检测到模板,检测到就阐明以后这个按钮可用。游戏 AI 获取这些按键的信息后,即可采取相应的策略,如开释技能,购买配备等。游戏提示信息也是相似,游戏界面中固定地位呈现一些提示信息,如图 7 中显示的路线批示信息,游戏完结状态 (胜利 / 失败) 等,游戏运行状态 (开始) 等。咱们先采集这些提示信息呈现的地位,以及这些提醒图标模板,在游戏实时运行过程中,在呈现的地位处,实时匹配是否和采集的图标模板匹配,如果匹配到了,阐明以后呈现了此提示信息。如匹配到游戏胜利图标,则在此局中的 AI 策略应该给予处分,相同应该给予惩办等。
图 10 固定 Button 的辨认
图 11 游戏提醒图标的辨认
模板匹配的思维是在一幅图像中寻找与另一幅模板图像最匹配局部。流程如图 12 所示。
图 12 模板匹配的过程
模板匹配的解决步骤如下:
Step1: 从原图像的左上角开始,从左向右,从上到下,步长为 1,采纳滑动窗口的形式,顺次去计算模板图像和窗口子图像的类似度。
Step2: 把类似后果存在后果矩阵中。
Step3: 最终在后果矩阵中找到最佳匹配值,如果越类似,值越大,那么后果矩阵中最亮的局部,即为最佳匹配。
openCV 中提供了接口函数 cv2.matchTemplate(src, tmpl, method) 进行模板匹配,其中 method 示意匹配办法的抉择。
2.5 基于像素特色的物体过滤
依据各通道色彩值的范畴,对检测区域内像素进行过滤,能够失去合乎这种色彩特色的指标物在什么地位。
游戏中血条的色彩特色也是比拟显著的。如红色血条的 R 通道值比拟大; 绿色血条的 G 通道值比拟大; 蓝色血条的 B 通道值比拟大。咱们提取血条的色彩特色,依据色彩特色能够过滤出血条像素点,很多像素点组成了血条,计算血条的连通区域,能够晓得血条的长度,进而能够晓得血量百分比。通过血条像素点的过滤,咱们即可晓得以后游戏主界面友方单位 (绿色血条或蓝色血条),敌方单位(红色血条)的地位属性,血量百分比属性。依据这些属性游戏 AI 能够采取逃跑,向前攻打,组队等不同的策略。
图 13 血条百分比计算的流程
MOBA 类游戏,常在小地图中,呈现我方塔和敌方塔。提取塔的色彩范畴 R(0, 90),G(90, 190),B(110,200)。在小地图范畴内,过滤像素灰度值在此范畴内的像素点,即可晓得我方 (敌方) 塔在什么地位,以及塔的血量 (像素点的多少)。如果小地图中呈现了本人的英雄,且本人英雄头像四周有绿色外接圆,咱们也能够提取出绿色外接圆的像素值范畴 R(80, 140),G(170, 210),B(70,110). 通过各个通道灰度值过滤出本人英雄在什么地位,进而进行寻路或是策略抉择等。
图 14 MOBA 类游戏中小地图像素点筛选的利用
2.6 其余
图像识别在游戏中的利用还有很多,比方游戏场景中的行人检测,英雄检测,花屏检测,空气墙,穿模,去重等等。
3 总结
本篇文章次要介绍了图像识别在游戏中的利用,如游戏状态的确定,场景覆盖率的计算,游戏中数字的辨认,固定地位固定图标的辨认等。心愿读者看了本篇文章后,对图像识别在游戏中的利用有进一步的意识。
“UQM 用户品质治理”业余的游戏客户端性能(卡顿、发热、内存 /CPU、网络等)和异样 (解体闪退、ANR、Error) 的监测剖析平台。借助深度品质的大数据分析,为游戏业务提供全方位的品质监测、数据分析、业务洞察服务。
点击链接:
UQM 用户品质治理丨 WeTest 行业当先的品质云服务厂商 理解详情