??本年 5 月,美图公司联合我国方法辨认与核算机视觉学术会议(PRCV2018)一起举办的 PRCV2018「美图短视频实时分类应战赛」正式开赛。来自中科院主动化所、中科院主动化所南京人工智能芯片创研院的史磊、程科在张一帆副研讨员的辅导下获得了 PRCV2018「美图短视频实时分类应战赛」冠军。不一样于以往只重视分类精度的竞赛,本竞赛归纳查询「算法精确率」和「实时分类」两个方面,将运转时刻作为重要方针参加评价,将推进视频分类算法在工业界的使用。以下是冠军团队对本次应战赛的技能共享总结:
数据集介绍本次竞赛运用的短视频数据集(MTSVRC 数据集)一共有 100,000 个视频,其间练习集有 50,000 个视频,验证集和查验集别离有 25,000 个视频。视频首要以短视频为主,长度约为 5 – 15s。数据集包括 50 个分类,视频品种包括舞蹈、歌唱、手工、健身等抢手短视频类型,除了包括与人有关的一些行为品种,还有一些风光,宠物等品种。图像 1 展示了一些数据样例:
图像 1 数据样例
因为这些数据的首要来历为手机拍照的往常视频,视频的巨细,形状以及拍照条件(例如光照,景深)等都纷歧致,构成了很大的类间差异与类内差异。一起,因为后期处置,视频常常会有一些特效和与品种无关的文字,也添加了视频辨认的难度。图像 2 展示了一些困难样例,这些样例对模型的方案带来了很大的应战。
图像 2 困难样例
评测办法因为竞赛一起思考时刻和精度,所以以往的分类过失缺乏以评测模型功能。图像 3 展示了这次竞赛所用的评测办法。
图像 3 评测办法
其间橙色的三角形是官方供给的基准时刻和过失,只需优于基准办法的成果才被视为有用成果,而其他成果(黑色三角)则被视为无效成果。时刻和过失会根据基准成果归一化到 0-1 之间。在有用成果中,会找出最小过失和最短时刻的两个成果(绿色三角形和赤色三角形),然后最小过失和最短时刻会构成一个参阅点(蓝色圆圈)。究竟一切的有用成果都会和参阅点核算间隔,间隔最短的办法视为优胜。从评测办法分析,时刻和精度都是很重要的要素。而时刻和精度一般是敌对的,所以有必要进行必定的取舍。
视频解码
因为时刻是一个很重要的要素,而视频解码又是一个很费时刻的进程,所以如何方案解码模块是本次竞赛中的一个要害。咱们选用了多线程软解获取要害帧的办法。
干流的视频编码方法中,每个视频首要包括三种图像帧,别离叫做:Intra-coded frame(I 帧),Predictive frame(P 帧)和 Bi-Predictive frame(B 帧)。其间 I 帧是一张无缺的图像。P 帧记载了与之前的帧的不一样,所以在解码 P 帧时必需要参阅之前的图像帧。而 B 帧不只需要参阅之前的图像帧,还需要参阅之后的图像帧才干无缺解码。图像 4 阐明晰这三个概念 [2]。
图像 4 I 帧,P 帧与 B 帧
清楚明晰,P 帧和 B 帧的解码是相对较慢的,而直接解码 I 帧则可以获得更快的速度。一起,因为咱们需要解码不止一帧,所以咱们选用了多线程的方法,每一个线程担任解码一个要害帧。整个解码进程运用 FFmpeg 完成。
模型方案
处置晓得码疑问后,接下来的疑问在于如何用所得的多帧来进行分类。
干流办法当前干流的视频分类的办法有三大类:根据 LSTM 的办法,根据 3D 卷积的办法和根据双流的办法。图像 5 展示了这三种规划的大体规划 [3]。
根据 LSTM 的办法将视频的每一帧用卷积网络获取出每一帧的特征,然后将每一个特征作为一个时刻点,顺次输入到 LSTM 中。因为 LSTM 并不捆绑序列的长度,所以这种办法可以处置任意长度的视频。但一起,因为 LSTM 本身有梯度不见和爆破的疑问,一般难以练习出令人满足的作用。而且,因为 LSTM 需要一帧一帧得进行输入,所以速度也比不上其他的办法。根据 3D 卷积的办法将初始的 2D 卷积核拓宽到 3D。类似于 2D 卷积在空间维度的作用方法,它可以在时刻维度自底向上地获取特征。根据 3D 卷积的办法一般能得到不错的分类精度。可是,因为卷积核由 2D 拓宽到了 3D,其参数量也成倍得添加了,所以网络的速度也会相应降低。根据双流网络的办法会将网络分红两支。其间一支运用 2D 卷积网络来对稀少采样的图像帧进行分类,另一支会获取采样点周围帧的光流场信息,然后运用一个光流网络来对其进行分类。两支网络的成果会进行交融然后得到究竟的类标。根据双流的办法可以极好有利地势用已有的 2D 卷积网络来进行预练习,同韶光流又可以建模运动信息,所以精度一般也很高。可是因为光流的获取进程很慢,所以全体上制约了这一办法的速度。
图像 5 干流的视频分类的办法
综上所述,干流的办法都不太适用于短视频实时分类的使命,所以咱们特别方案了一个适用于短视频实时分类的规划。
咱们的办法图像 4 展示了咱们的处置方案的全体规划:给定一个视频,咱们首要会从中稀少采样固定数量的图像帧,然后将这些帧构成一个 batch,送入到一个 BaseNet 中。这个 BaseNet 是在已有的 2D 卷积网络基础上优化改进得到的,具有较强的特征获取才能。BaseNet 输出的高层的特征一般具有很强的语义信息,可是却没有时刻上的交融。所以咱们特别方案了一个根据帧间留心力机制的交融模型,将 BaseNet 获取的不一样帧的特征作为一个输入送入交融模型中,究竟由交融模型得到猜测的成果。因为交融模型比照小,推理速度很快,而且参数量较少,也比照简略练习。整个模型在 mxnet 前进行构建和练习。根据这样的方案,咱们的模型可以得到很快的推理速度,一起又不会丢掉太多精度。
图像 6 全体规划
模型紧缩
当有了练习好的模型后,为了进一步前进速度,模型紧缩是必不可以少的。因为核算平台是 GPU,所以咱们运用了两种比照适用于 GPU 的办法:剪枝和量化。
模型剪枝因为需要在 GPU 上运算,这儿咱们首要思考在通道维度的剪枝。假定卷积的参数是具有稀少性的,咱们剪掉其间一些不重要的参数,网络仍然可以抵达之前的精度。
图像 7 剪枝
剪枝进程分为两步:首要,咱们会根据 LASSO 回归来找到每一层中最具代表性的通道,然后将没用的通道去掉,再运用平方差丢掉微调剪枝后的网络来最小化重构过失。这样的操作会对每一层别离进行,经过几轮迭代后便可以抵达不错的紧缩作用,一起还可以保证精度不会丢掉太多。
模型量化因为竞赛供给的 GPU 是撑持 int8 核算的,所以咱们思考将正本的根据 float32 数据类型练习的模型变换为 int8 的数据方法进行揣度,也就是量化操作。这儿咱们选用的比照简略的线性量化,也是 TensorRt 中运用的办法 [4]。
图像 8 线性量化
假定每个张量的数据契合均匀分布,那么其间的每一个元素就可以标明为一个 int8 数和一个 float32 的比例因子相乘的成果。比例因子是关于整个数组同享的。这样在张量间进行相乘运算时就可以领先行 int8 的核算,最终再共同乘上比例因子,然后加速运算。那么接下来的疑问在于如何断定比例因子,比例因子的作用是将初始张量的数值规模映射到-127 到 127(int8 的数值规模)。因为大大都情况数据并不是完全的均匀分布,所以直接映射会构成精度丢掉。
图像 9 根据阈值的线性映射
为晓得决这个疑问,TensorRt 中会对每一层的数据分布进行计算,然后根据得到的分布断定一个阈值(如图像 9)。在映射的进程中,阈值之外的数会被共同映射到-127 和 127 之 间,阈值之内的数据会假定为一个均匀分布然后进行映射。这样就可以保证在加速速度的一起也不至于有较大的精度丢掉。
总结
咱们的处置方案可以归纳为三个有些:视频解码有些,咱们选用了多线程获取 I 帧的方法。模型方案有些,咱们选用了稀少采样与帧间留心力交融的办法。模型紧缩有些,咱们选用了通道剪枝和量化的办法。究竟咱们的处置方案在查验集上的速度为均匀每个视频 58.9ms,精度为 87.9%。
参阅文献
[1]「AI Challenge | Introduction.」[Online]. Available: . [Accessed: 21-Nov-2018].
[2]「視訊壓縮圖像類型,」维基百科,安适的百科全书. 08-Jul-2018.
[3]J. Carreira and A. Zisserman,「Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset,」in The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017.
[4]S. Migacz,「8-bit Inference with TensorRT.」[Online]. Available: