3.1 平均汇合
视频是由一系列图像帧(Frame)组成的,通过第2章的学习,我们已经熟悉了图像分类。如何进行视频分类呢?我们可以将图像分类的模型直接运用到视频分类中,下面举例说明。
如图3-1所示,假设一个视频有帧,一个简单的想法是先把视频各帧提取出来,每帧图像各自前馈(Feedforward)一个图像分类模型,不同帧的图像分类模型之间相互共享参数。每帧图像各自提取图像分类模型的fc7特征,即图像分类模型最后一个全连接层之前的特征(见2.1.2节),得到每帧图像的特征。为简化表示,本书后面部分将其简记为,帧特征的维度是。
图3-1 利用图像分类模型和平均汇合进行动作识别网络结构图
然后,对各帧图像特征进行汇合(Pooling),得到固定维度的视频特征。汇合的作用有两个:一方面是帧特征相当于只是对第帧的图像进行一个图像分类,而视频中的动作往往会持续一段时长,帧特征缺失了这种时序关系;另一方面是不同视频的时长是不同的,即视频帧数不同,而后续的全连接层必须以一个固定维度的特征向量作为输入,因此必须要进行帧特征的汇合操作。
一种简单的汇合方法是进行平均汇合(Average Pooling):
(3.1)
得到视频特征,最后经过一个全连接层和Softmax 激活函数进行分类以得到视频的类别预测。
图3-1 展示的是在帧特征的层面上进行平均汇合,还有一种思路是每帧先各自前馈一个图像分类模型,直到获得分类层的 Softmax 变换之后的类别概率向量,然后对不同帧的概率向量进行平均汇合,平均汇合之后作为视频级别的类别预测。相比之下,图3-1在帧特征层面进行汇合的一个好处是可以通过汇合得到视频级别的特征,这相当于是视频内容的向量化表示,称为视频 Embedding(见第6章)。
由于现实中的视频帧存在大量冗余,视频中相邻两帧的内容几乎一样,因此没有必要将所有的帧都前馈图像分类模型。一种常用的改进策略是不使用视频中所有的帧,由于相邻帧之间变化很小,可以先对视频帧进行采样,比如1秒采1帧(1 FPS)、1秒采5帧(5 FPS)、1秒采10帧(10 FPS)等,之后只用采样后的帧前馈图像分类模型及后续的平均汇合和分类操作,这样可以大大缩短计算量。
平均汇合认为每帧图像的特征对整体的视频特征的贡献是相同的。也就是说,平均汇合将视频的类别均匀地赋予了视频中的每帧图像。平均汇合方法十分简单,其视频分类的准确率与其他同时期专门为动作识别设计的深度学习模型相比差距并不大(Karpathy et al.,2014),但是与传统动作识别算法的准确率相比还有很大差距,不过后来专门为动作识别设计的深度学习模型的准确率高了很多。