玩王者荣耀用不好英雄?两阶段算法帮你精准推荐精彩视频

640?wx_fmt=png
作者 | Wentao Yao, Zixun Sun, Xiao Chen
译者 | 孙薇 编辑 | Jane 出品 | AI科技大本营(ID: rgznai100)


【导读】近日,腾讯三位工程师在arXiv上发表了论文,分析如何利用算法,针对热门手游“王者荣耀”游戏视频进行快速检测与识别,辨识视频中的角色(即“英雄”),以推荐视频给目标受众。为了提取游戏视频标签,需要在游戏视频中检测并识别其中的英雄及其阵营。本文提出了一种有效的两阶段算法,基于血条模板匹配方法检测视频中的所有英雄,再根据阵营分类,然后使用一个或多个深度卷积神经网络识别英雄姓名。实验证明了方法的效率与准确性。

640?wx_fmt=png


原文链接: https://arxiv.org/pdf/1907.07854

介绍   推荐系统在我们生活中越来越重要,作为其重要组成部分,内容标注在个性化推荐中起着重要作用。热门手游“王者荣耀”有着大量粉丝,除了玩游戏,许多玩家还会花费大量时间观看相关游戏视频。那么,用户在浏览游戏社区时,如何自动推荐其喜爱的视频便成为我们所要解决的问题。准确的推荐会极大激发用户兴趣,并提高用户体验。而标记游戏视频的重要前提,便是识别视频中的英雄。   通常,基于神经网络的目标检测与识别有两种流行算法。一是两阶段算法(two-stage algorithms):首先检测图像中的对象,并获得每个对象的边界框,然后识别各个边界框以获得对象类别。基于卷积神经网络的典型两阶段算法包括R-CNN、SPP Net、Fast R-CNN、Mask R-CNN等。而另一种则是一阶段算法(one-stage algorithms):在一次运行中直接检测并识别图像中的对象,包括SSD和YOLO等。   经过分析后发现“王者荣耀”游戏的英雄有个重要特征,便是血条。所有血条均有相同的外观(包括大小及形状),而唯一区别是血条颜色、生命值与水平。为此,本文将采用两阶段算法。第一阶段,基于模板匹配方法,检测视频中的英雄血条,并获得其边界框列表。第二阶段,训练一个深度卷积神经网络来识别各个边界框,获取英雄姓名。   数据集   经过验证,我们发现不同视频中的血条大小只与视频高度相关,因此我们将数据集中的所有视频转为标准高度,即720px,同时保持其宽高比不变。   为了进行大量训练,我们从一些热门的视频网站上收集了大量游戏视频,其中包括截至目前的所有英雄(共92个)。各个视频包含一个标签,标记其中的主要英雄。针对各个英雄,我们下载了大约4-5个视频,其中尽可能涵盖了此英雄的各种外观和皮肤。   除了外观分类器,框架右下角是主英雄的技能区域,同一个主英雄的技能区域完全相同。我们决定利用技能区域,以及其他两个基于卷积神经网络的分类器进行训练,以提高识别准确性。技能区域的位置并不固定,且随着视频宽高比变化。因此,检测技能区域的算法应调整视频的宽高比。同时,我们使用圆检测算法,基于裁剪的技能区域来检测首技能(即第一个技能)圈。   综上,我们收集三种类型的样本:英雄的外观、首技能和技能区域。   方法   (1)血条模板匹配   将视频中的英雄血条与预定义模板匹配。由于不同血条的生命值、颜色、水平的差异,必须设置遮罩,区分该区域是否用于匹配。   640?wx_fmt=png 图1(a)用于匹配的血条模板   640?wx_fmt=png 图1(b)模板遮罩,其中白色像素将用于匹配   针对通道输入的视频帧,先将其转换为灰度图像,然后执行模板匹配。所有输入图像需缩放至标准尺寸(即高度为720px),采用32位浮点图像。由于视频中英雄数量不定,我们需对原始视频帧和相应匹配图像进行观察,如图2:   640?wx_fmt=png 图2(a)原始视频帧   640?wx_fmt=png 图2(b)相应的匹配图像   640?wx_fmt=png 图2(c)匹配图像的局部极大值   在图2(a)中,存在四个血条,在图2(b)中可以找到相对应位置。用恰当半径的极大值过滤器过滤匹配图像,则获得图2(c)。显然,四个极大值的位置对应四个血条。按照像素值降序,取前20个像素可快速处理图像并有效保留血条信息。我们设计了一个函数以计算像素分值,此函数基于两个要素——局部极大像素值,与周围像素的对比度,这两者都利于匹配模板。假设:极大过滤器区域中共有n个像素,将局部极大像素值设为v0,将过滤器中其他像素值设为vi(1≤i≤n),v0≥vi,然后计算:   640?wx_fmt=png   其中α和β是平衡两部分权重的系数。分数越高,模板匹配的结果越好。排序后取前20,但由于不确定英雄数量,仍需设定一个阈值。   (2)非极大值抑制   英雄血条形状接近矩形,在模板匹配中,水平偏移不会显著减少匹配响应(因为模板水平线上的大多像素仍可以匹配图像中的真实血条像素)。为了避免相同血条出现多个检测结果,我们引入了非极大值抑制。在模板匹配阶段已经获得分值最高的前20个像素,我们按分值降序排序。使用四个属性(x,y,score,is_real_detection)描述每个像素。在非极大值抑制阶段,按照算法1设计抑制算法,其中Tx和Ty分别是水平和垂直偏移的阈值。我们将Tx设为模板宽度的一半,将Ty设为1像素。图4(b)显示了非极大值抑制后的检测结果,修复了所有的错误检测。   640?wx_fmt=png 算法1非极大值抑制   (3)阵营分类   根据血条颜色,可将英雄分为三个阵营:自己(主英雄)、友军、敌军。由于血条生命值可能很低,我们采用了一种简单的算法,使用血条最左侧位置的平均颜色对血条进行分类。3通道平均颜色表示为(cr,cg,cb),英雄阵营的分类规则如下:  
  • 对于(r,g,b)中的颜色i,如果ci> 100且ci> 1.5 * cj(j≠i),则血条的颜色为i(绿色代表自己,蓝色代表友军,红色代表敌军);


  • 如果没有ci符合上述规则,则:

    • 对于(r,g,b)的每个i,如果满足70≤ci≤100,血条几乎为空,无法确定阵营;

    • 否则并非血条,取消检测。

  应用
为了识别英雄姓名,我们需要训练几个分类器。针对英雄外观,只需在检测到的血条下面为主英雄裁剪一个固定区域,外观图像尺寸为163×163;对主英雄的技能区域,根据视频的宽高比进行位置补偿。在下面的方程式中,带有下标s的变量x,y,w,h指技能区域,带有下标image的变量则指图像。wnorm是指标准化16:9调整后的图像宽度。   640?wx_fmt=png   为了减少非游戏界面中技能区域的虚假裁剪,只在检测到主英雄时裁剪技能区域,大小为360×360。对于英雄的首技能,我们在提取技能区域的左下角运行圆检测算法。检测到至少一个圆的话,使用最大圆的中心和固定大小来裁剪首技能区域,大小为110×110。   640?wx_fmt=png 图6:用于训练分类器的典型训练与测试样本   如上所述,我们使用检测算法自动收集培训和测试样本,对每个分类器,我们收集了超过10万的样本。表1列出了训练及测试样本的数量:   640?wx_fmt=png   用到三种常用的深度卷积神经网络来训练分类器,包括: Inception V3/V4及Inception-ResNet V2,对于每个采样帧中检测到的英雄,通过分类器获得其姓名与可信度分数,再根据英雄姓名累积每个英雄的可信度分数。最终通过选择最高累积可信度分数的英雄来获得最终结果。   640?wx_fmt=png  图7: 英雄检测和识别的整体方案   实验结果   Inception V3 / V4和Inception-ResNet V2网络的输入图像大小均为299×299,使用检测算法提取训练和测试样本。使用平均准确度,将marco-f1和micro-f1作为三种样本和三种网络模型的评估标准。表2中列出了经过训练的神经网络的性能表现。使用Tesla M40 GPU,GTX1060 GPU。   640?wx_fmt=png   根据表2,我们发现对于所有类型的图像,Inception V3网络优于Inception V4和Inception-ResNet V2网络,Inception V3网络运行速度比图像上的Inception V4和Inception-ResNet V2网络更快,因为其结构更简单,参数更少。每帧中所有英雄的检测时间约为80ms。每个框架中所有英雄的检测和识别的整个过程,包括主英雄的技能区域和首技能区域,对Inception V3网络是200ms,对Inception V4网络是280ms,对Inception-ResNet V2网络是320ms。   从实验中我们发现,在准确性和识别时间方面,Inception V3网络对于游戏视频中的识别任务比其他两个更复杂的网络更好。在任务中我们使用Inception V3作为基础网络。与YOLOv3比较结果如图8,YOLO倾向于仅检测图像中心的英雄,而我们的方法可检测识别图像中的所有英雄。
 图 8(a)(b): YOLOv3与我们的方法的比较
640?wx_fmt=png (a)YOLOv3模型的检测和识别结果   640?wx_fmt=png (b)我们方法的检测和识别结果   虽然该方法表现良好,还是会有失败。最典型的是英雄的新皮肤及新增英雄,需要不断更新模型。   结论   本文为“王者荣耀”提出一种高效准确的英雄检测和识别算法,有助于快速定义游戏视频内容并加注标签和推荐。我们使用两阶段方法检测与识别视频中的所有英雄,这种方式性能上更优于YOLO等一阶段方法,训练和测试样本的工作量却大体相同。未来我们还将探索更多关于游戏视频内容理解的内容,如游戏视频场景识别和类型分类。并将工作扩展到其他游戏,如“英雄联盟”,这将使该算法通用性更强。  

(*本文为 AI科技大本营编译文章,转载请联系微信 1092722531)


社群福利

扫码添加小助手,回复:大会,加入2019 AI开发者大会福利群,每周一、三、五更新技术福利,还有不定期的抽奖活动~

640?wx_fmt=jpeg



AI 开发者大会「七夕」特价


2019 AI开发者大会重磅嘉宾更新: 阿里、华为、Google Brain、Amazon、微软中国、百度、京东、小米、快手、科大讯飞、商汤、旷视、图森、云知声、思必驰... “硬核AI技术大会,一年参加一次就够了”。 虽然是「七夕」 活动,没有男(女)朋友可以参加吗? 当然可以啦,性别不限,两人组队购票,即享优惠~
640?wx_fmt=png


推荐阅读


640?wx_fmt=png 你点的每个“在看”,我都认真当成了喜欢


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值