666! 玩王者,识英雄,这样也能上顶会!
王者荣耀是腾讯开发的一款火爆宇宙的游戏。
昨天arXiv论文Understanding Video Content: Efficient Hero Detection and Recognition for the Game "Honor of Kings",来自腾讯上海的三位工程师公布了如何在王者荣耀游戏中用算法快速检测和识别英雄,该文被数据挖掘顶会KDD 2019 Workshop 收录。
识别英雄,这有什么意义的?作者说准确识别英雄可以有利于推荐系统更具针对性。
(谁会信呢!这绝对是想在上班时间玩王者发明的研究方向!)
不过我们也来看看怎么识别吧!
最直接的想法,直接上目标检测,那些花花绿绿的人物大小都差不多,姿态变化也比较简单。
可作者觉得这样的话需要收集样本,还得手动标定位置,太麻烦。
其实用传统方法定位就能满足,而且速度应该也很快,为什么不呢?
作者的思路是血量条模板匹配找到英雄的位置,再用CNN分类。我看可以。
下图是血量条和二值化后生成的模板:
血量条匹配结果:
下图为在视频中模板匹配的过程和效果:
因为这个模板水平方向变化太小,定位的血量条并不总是很精确,所以作者用非极大抑制(NMS)对匹配结果后处理。
非极大抑制算法流程:
NMS结果:
找到血量条,就能定位英雄了,为了识别英雄,作者使用英雄的三块特征区域:外观、皮肤、第一技能区,下面表格是作者收集的图像样本统计:
三块区域示例:
算法整体流程图:
最终实验结果还不错(如下表格),大部分情况下识别率100%。当然速度也很快,几毫秒就完成了。
作者也训练了YOLOv3,发现本文算法还更好呢,在下图中YOLOv3出错的时候本文算法也是OK的。
论文地址:
https://arxiv.org/pdf/1907.07854v1.pdf
没有发现作者开源了代码。
本文方法应该在很多游戏视频的智能分析中也能用的起来,希望对你有所启发!
本文为CV君对论文的原创解读,目前只有不到7%的公众号还在努力原创,希望你文末点个“在看”鼓励我。