企鹅电竞是一款游戏直播产品,其中游戏短视频社区是其重要组成部分。
为了丰富游戏短视频内容,针对王者荣耀,需要一套自动化剪辑精彩时刻的系统,以能够快速根据主播直播内容生成精彩时刻反馈到游戏短视频社区。
我们准备使用深度学习去探索这个问题。
该问题在计算机视觉中属于时序行为定位(Temportal Action Localization)问题,即,要在源视频中识别出包含某些行为的一段视频,包括该行为的起始帧和结束帧。
起初,我们尝试了CDC(Convolutional-De-Convolutional)这种端到端的解决方案,实验结果表明,通过标注的精彩时刻和非精彩时刻片段训练出来的模型并不能满足我们的要求,主要有以下不足:
原因为王者荣耀的精彩时刻与非精彩时刻画面差别并不大。
相比其他行为,比如游泳场景和打篮球场景等的画面差别就比较大,因此CDC网络在这种行为检测上可以表现良好,但是并不适合王者荣耀精彩时刻。
CDC涉及到3D卷积所以比较大,不适合生产环境。
重新分析精彩时刻视频,我们发现其具有明显特征:起始点为双方英雄接触的时刻,结束点为击败敌方英雄的时刻。所以,只要我们可以识别出画面中我方和敌方英雄的特征以及击败敌方英雄时的特征就可以定位精彩时刻,也就是将时序行为定位问题转化为了图像检测的问题。
由于队友或者敌方英雄在击败对手时也会出现击败的特征,所以需要通过击败者的头像和技能区域识别是否为当前英雄的击败。
综上所述,问题可以转化为:
二、敌方和我方英雄检测;
三、分类击败者英雄和当前英雄。
图像检测常用的模型有R-CNN、Fast R-CNN、Faster R-CNN、SSD、YOLO等,综合考虑运行速度与识别率,我们选取了YOLOv2来检测敌我英雄和击败时刻的特征;图像分类的模型就更多了,主要有AlexNet、VGGNet、GoogLeNet、ResNet、SqueezeNet等,考虑到SqueezeNet模型较小,准确率也不错,这里选择其作为英雄分类的模型。
如果环境中安装了CUDA、cnDNN或者Opencv,可以将Makefile中如下的变量设置为1:
然后执行make等待编译完成
这里我们使用和VOC数据集一样的数据组织格式,在darknet目录下执行如下命令:
JPEGImages文件夹中为训练需要的图片,labels文件夹中为JPEGImages中图片对应的标注。