GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

基于图像识别的 AI 自动化测试框架:GAME AI SDK 平台解析

2021 年 4 月 21 日

基于图像识别的AI自动化测试框架:GAME AI SDK平台解析

一、GAME AI SDK 概述


自动化测试的好处显而易见,但自动化测试的投入成本大却是一个很大的障碍。为了在游戏测试中引入自动化测试, 腾讯互娱 TuringLab 实验室研发了 Game AI SDK 自动化 AI 测试平台。通过接入腾讯公司运营期或测试期的商业游戏,不停的测试优化,最后推出这款 AI 自动化测试平台。

目前,GAME AI SDK 已正式对外开源,Git 开源地址


同时 TuringLab 团队出版《AI 自动化测试:技术原理、平台搭建与工程实践》一书,此书将 TuringLab 团队基于深度学习的自动化 AI 测试框架基础的开发与应用经验,进行了详细的描述,分享了如何将 AI 技术与自动化测试相结合完成测试需求的。


基于 GAME AI SDK 框架,可实现多种类型的手机游戏 AI 开发(本文重点介绍手机游戏方面)。目前我们已应用的游戏类型有:射击类(穿越火线,王牌战士), MMO(寻仙,龙之谷 ), 消除类(天天爱消除,消除者联盟),吃鸡(和平精英),赛车(QQ 飞车), MOBA(王者荣耀), 格斗(魂武者,DNF), 动作(魂斗罗),卡牌(圣斗士星矢), 棋牌(天天德州),跑酷(天天酷跑) ,体育(最强 NBA),飞行射击(全民飞机大战)等。


同时也可以应用在手机 APP 及 Windows 应用程序方面。不但适用于手机游戏专项测试,手机 APP 专项测试,而且适用于 PC 端游戏,软件等专项测试(专项测试是指如手机兼容性测试,客户端服务器端性能测试,版本回归冒烟测试,跑图覆盖率及代码覆盖率测试,软件健壮性及 crash 测试等这一类测试)。


二、GAME AI SDK 的技术架构


GAME AI SDK 是一个平台工具系统,主要由四部分组成:


第一部分:AI SDK 平台,系统的核心功能都集成在这个平台里面。


第二部分:tools 工具集,用户可以根据系统提供的 SDKtool 进行 AI 相关配置操作,也可以根据需要,自行开发需要的工具,集成到 tools 工具集中。


第三部分:环境摸拟(EM),主要提供手机游戏的环境摸拟生成,用户可以通过配置快速生成游戏运行环境,这样在训练 DQN 等网络时能节省很多时间,大幅提高训练的效率。


第四部分:系统提供的 AI 模板库,目前是按游戏类型来划分的,用户可以根据自己的需求配置使用现有的 AI 模板库,也可以在 AI 模板库新增自己需要的模板。


结构如下图所示:


1. GAME AI SDK 平台核心部分架构


GAME AI SDK 平台的核心部分的架构图如图所示:



GAME AI SDK 底层使用的是 TensorFlow 平台和 OpenCV 开源库,在此基础上开发自动化系统、图形图像识别系统、AI 算法系统几个核心功能模块。


  • 自动化系统:主要负责数据接入部分,如果是截图,则进行图像采集;如果是通过 API 传输数据,则进行通信连接。同时,会负责将 AI 的动作输出传到手机上执行。

  • 图形图像 UI 模块:负责游戏 UI 的识别与处理。

  • 图形图像识别模块:包括的平台所有的图形图像识别算法,负责游戏内所有的图形图像识别,并将识别结果传到 AI 算法模块。

  • AI 算法模块:接收识别结果数据或者直接接收 API 输入数据,根据 AI 网络,输出数个(0 个到几个)可能的动作,传回到自动化系统。


GAME AI SDK 平台通过自动化系统得到数据(如果是图像,得到的是手机截屏;如果是接口 API,则直接得到 API 提供的数据);把这部分数据输入到图形图像模块,图形图像模块拿到数据后,通过配置好的识别算法,识别出结果,再把这个识别结果输入到 AI 算法模块,AI 算法根据自己的网络,输出数个(0 个到几个)可能的动作,传回到手机上面去执行,这样一次数据处理就完成了。


GAME AI SDK 平台流程

AI 流程


用户的输入数据有两种方式:


  • 方式一:使用手机截图,平台通过图像识别得到 AI 需要的数据,然后进行 AI 训练。

  • 方式二:使用 API 接口得到 AI 需要的数据,然后进行 AI 训练。


方式一具有很好的通用性,不需要游戏项目额外做任何的改动,缺点是图像识别结果不一定完全准确。

方式二需要游戏项目额外提供数据 API 接口,因此需要投入额外的开发工作,但好处是数据是完全准确的,用户可以根据项目需要进行适当的选择。


整个 AI 流程如图所示:


  • Step1:用户通过数据预处理工具输入数据(手机截图或游戏数据);

  • Step2:GAME AI SDK 读取任务配置与 AI 算法配置;

  • Step3:通过环境模拟平台或在线直接进行 AI 训练;

  • Step4:将游戏数据存储到数据平台中,方便下次训练或者做数据分析使用(此步骤可选)。


图像识别任务流程图


GAME AI SDK 平台的核心之一就是图像识别任务。在配置图像识别任务之前,如果此任务需要提前标注样本(如需要使用 YOLO 算法),则需要进行数据预处理,可以使用平台提供的 SDKTool 进行样本标注,也可以使用如 LabeImage 这种软件进行标注。


样本标注完成后,就可以使用平台提供的 SDKTool 进行任务配置(详细操作请参见下文第 3 章)。任务配置完成之后,就可以开始进行识别训练(如果需要进行训练的话)或直接进行识别了。


图像识别任务流程图如图所示:


  • Step1:用户使用标注工具进行样本标注(识别算法需要标注样本才进行此步骤);

  • Step2:在 SDKTool 中进行任务配置;

  • Step3:开始任务预测试:在图像识别模块中进行图像识别;

  • Step4:如果用户只需要做图像识别,则直接将识别结果返回给用户;

  • Step5:如果用户需要 AI 模块,则将识别结果输入到 AI 模块;

  • Step6:用户如果觉得任务参数(包括图像识别算法参数)需要调整,则重新调整任务参数,然后继续进行任务预测试(step3),直到用户认为图像识别效果达到要求为止。


GAME AI SDK 平台模块结构


图像识别模块


图像识别模块的输入为图像帧数据,输出为图像识别得到的结果数据。在图像识别模块内部,底层使用的是 TensorFlow 平台和 Opencv 开源库,在此基础上,图像识别模块封装了一些常用的识别算法(如 YOLO,模板匹配,像素检测,特征点匹配等),用户可以直接通过配置使用这些算法,也可根据需要修改或者直接加入新的识别算法。


根据游戏本身的特点和需求,平台在通用层封装了一些游戏中常用的识别算法,如游戏中常见的数字、按钮、血条等的识别,用户可以直接使用,只需要在 SDKTool 工具里面配置就可使用。


图像识别本身的计算会根据图像大小成倍增加,为提高识别的性能,保证游戏的响应时间,在图像识别模块中使用了多线程来提高图像识别的性能,用户可以根据机器的性能及对响应时间的要求,灵活配置多线程的数量。



  • 图形图像识别与跟踪相关算法:此为图形图像识别算法模块,包括了一些常用图形图像识别算法,如像素检测、特征点匹配,梯度检测等,也包括了一些基于机器学习的识别算法,如 YOLO,LeNet 等。

  • comm:此模块封装了一些游戏里面需要经常用到的识别类型,数字类型:如游戏中的分数、速度、距离、子弹数等;血条类型:如游戏中角色的血量,怪物的血量,BOSS 的血量等。

  • 日志管理:系统日志管理模块,输出错误信息及程序运行信息,方便用户查看程序运行状态。

  • 多线程管理:因为图形图像识别的计算量会比较大,在复杂的识别任务或者要求高响应时间的应用场景下,可以使用更多的线程来进行图像识别,多线程管理模块可以很方便的设置多线程的运行数量。

  • 图像识别逻辑处理:在此模块中处理用户配置的图像识别任务。


AI 算法模块


AI 算法模块的输入有两种方式:一种是图像识别模块识别的结果数据,一种是直接从 API 接口拿到的数据。


AI 算法模块的底层也是使用 TensoFlow 平台,与手机相关的操作使用 ADB 模块,在此基础上内置了 DQN 算法和 IM 算法。用户通过配置 AI 算法模块的配置文件及修改算法参数,可以方便地使用这两个算法。


DQN 算法使用方便,不需要标注数据,可以直接接入游戏环境进行线上训练,特点是需要训练比较长的时间才会有一定的效果,但泛化性相对 IM 来说要好些。


IM 算法需要先记录样本数据(SDKTool 里集成了样本记录功能,用户可以直接使用),再根据样本数据进行训练,特点是训练时间相对 DQN 来说会短很多,但泛化性没有 DQN 好。


效果的好坏和记录的样本关系很大。用户可根据项目需求来选择使用哪种算法,或者自己开发新的算法。GAME AI SDK 提供了相关的 AI 算法接口,可以方便的扩展用户自定义的 AI 算法。


BeTree 是行为树,用户可以根据项目业务需求,自行定义相关的行为规则,控制 AI 的输出。


业务逻辑层主要是写具体的游戏业务相关的处理,比如用户需要进行动作过滤,可以在此编写相关的过滤规则,控制 AI 的输出满足游戏业务测试的需求。



三、GAME AI SDK 使用


环境安装


GAME AI SDK 环境安装分本地环境安装及镜像方式安装,如果需在进行本地二次开发,建议使用本地环境安装方式,相关安装操作说明请参见源码文档中环境部署一节的说明。


如果只需要进行自动化测试相关测试操作,可以使用镜像方式(此方法简单容易上手,对测试人员比较友好):从 GAME AI SDK 官网(http://aitest.qq.com)下载相应版本的镜像安装包及本地编译包,本地解压后根据说明文档运行安装脚本就可以进行环境安装了。


SDKtool UI 配置


GAME AI SDK 不需要进行脚本编写,只需进行少量的样本采样及标注就可以配置好。启动 SDKTool 工具,连接好手机(或配置其他的图像窗口),按相关要求进行配置,工具会自动生成相关的配置数据。



SDKtool 识别任务配置


识别任务是识别图片中的某些关键数据信息,然后把这些数据信息做为 AI 算法的输入。配置操作与 UI 识别配置相同。



AI 算法配置


GAME AI SDK 平台内置了 DQN 算法和 IM 算法,用户可不需要编写代码或者脚本,通过简单的参数配置,就可以使用平台内置的这两种算法。


其中 IM 算法训练及采样简单快速(30 分钟的样本及 30 分钟的离线训练时间),适用一某一特定的游戏场景,DQN 算法需要较长的在线衰弱时间,场景通用性较 IM 好。



动作定义及配置


根据项目的具体动作,可以通过 SDKTool 定义相同的运作,这样通过 AI 算法的训练,AI agent 就可以根据图片的输入信息进行计算,最后输出具体的运作,驱动游戏像玩家玩游戏一样自动运行起来。



训练及运行


完成工程所需要的相关配置后,就可以使用 SDKTool 工具进行 AI 算法的训练及运行了。在 PC 机上连接好手机,就可以开始相关的训练,训练过程中的相关信息会通过界面显示出来。



四、结语


GAME AI SDK 的目标是开发一个比较通用的自动化平台,让用户更专注于测试业务本身。它放弃了传统的脚本自动化的方法,使用深度学习及图像识别算法从图像中提取中关键数据信息,做为 AI 算法的输入。通过大数据量的训练得到一个通用的网络模型,网络模型本身就具有了较好的通用,可以在同一类项目中适用。


理论上,数据量越多,网络模型本身的效果和通用性就越好。AI 算法及图像识别算法发展越来越快、越来越好,GAME AI SDK 也在不断努力优化与完善中,如果你有建议或需要技术支持,欢迎在评论区与我们联系。



头图:Unsplash

作者:周大军

原文:https://mp.weixin.qq.com/s/bF5aEEIPcTGuECJ3K2-6QA

原文:基于图像识别的 AI 自动化测试框架:GAME AI SDK 平台解析

来源:云加社区 - 微信公众号 [ID:QcloudCommunity]

转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2021 年 4 月 21 日 18:061526

评论

发布
暂无评论
发现更多内容

Flink的2种部署模式-2

小知识点

scala flink 大数据技术

我喜欢的工作,喜欢我么?

escray

学习 面试 面试现场

Docker 的前世今生

哈喽沃德先生

Docker 容器 微服务 虚拟化 容器化

MySQL系列(一):MySQL深入学习先导篇之基础架构

z小赵

MySQL 数据库

一文读懂jar包的小秘密

程序那些事

Java jar jar包的小秘密 java解密

再见C++

Sunny.

c++ 踩坑

28岁硕士女程序员想分手!对象专科学历,北京土著,失业3个月找不到工作!遭网友群嘲!

程序员生活志

女程序员

暴雪员工抗议薪酬不公,部分员工称甚至难以维持生计

程序员生活志

职场

如何选择一台打印机

别把虾米不当海鲜

a站、b站、c站、d站、e站、f站、g站、h站、i站、j站、k站、l站、m站、n站…z站?

程序员生活志

究竟要找什么样的工作?

escray

学习 面试 面试现场

我以后去做什么,技术还是业务?

escray

学习 面试 职业规划 面试现场

SpreadJS 应用案例:电力自动化在线数据采集报表系统

Geek_Willie

SpreadJS 电力 报表

如何使 Grafana as code

郭旭东

翻译 Grafana

终于可以职业规划了么?

escray

学习 面试 面试现场

3 分钟生成一个单元测试报告,这个样式爱了

程序员内点事

Java 测试

Linux Page Cache调优在Kafka中的应用

vivo互联网技术

大数据 kafka

他被称为"中国第一程序员",一人之力单挑微软!真牛!

程序员生活志

我是合适的人选么?

escray

学习 面试 面试现场

大数据技术发展(三):Spark 代替 Hadoop ? Spark Or Flink ?

抖码算法

Java 大数据 flink hadoop spark

【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察

华为云开发者社区

接口 软件开发 API 华为云 API Explorer平台

一看就懂的三次握手

书旅

TCP 三次握手 操作系统 协议族

一个@Transaction哪里来这么多坑?

程序员DMZ

spring 事务 读写分离

联邦学习初识

soolaugust

学习

Centos7下service配置知识

【Elasticsearch 技术分享】—— Elasticsearch ?倒排索引?这都是什么?

程序员小航

elasticsearch ELK 倒排索引 ES 技术分享

卡丁车的后轴是如何做到差速的?

TGP大跨步

科普 卡丁车 TGP 大跨步 素材

性能全开的十代酷睿,造就惠普光影精灵 6 的电竞燃魂

最新动态

星火PLUS交易所打造无边界数字经济联盟,掀起币圈追捧热潮

InfoQ_967a83c6d0d7

一行错误代码:5 亿美元没了。。。项目关闭。。。

程序员生活志

90后程序员小姐姐在线征婚!年薪70w!拥有五套房!她却担心自己因为年龄大嫁不出去!

程序员生活志

程序员

基于图像识别的AI自动化测试框架:GAME AI SDK平台解析-InfoQ