深度神经网络在视频中的动作识别中优势并不明显。因此,提出了一种改进后的网络,时间段网络(TSN),它是用一种新的基于段的采样和聚合模块来建模长程时间结构,TSN能够有效地学习动作模型,通过简单的平均池化和多尺度时间窗融合,学习的模型可以很容易地适应修剪视频和未修剪视频的动作识别。
对于视频中的动作识别,有两个至关重要且相互补充的线索:表象和时间动态。
识别系统的性能在很大程度上取决于它是否能够从中提取和利用相关信息,但是,提取有用信息并非易事,如比例变化、视点变化和摄像机运动,都会干扰信息的提取,因此,在学习行动类分类信息的同时,设计有效的表征来应对这些挑战就变得至关重要。
与图像分类不同,在基于视频的动作识别中,端到端深度卷积网络带来的改进与传统的手工特征相比仍然有限,本文作者认为主要有三个阻碍:
1.长时间结构有效信息捕捉障碍:尽管在传统方法中,长距离时间结构以及被证明对于理解动态信息非常重要,但在深度卷积网络架构方法中,仍然缺乏对于长距离时间结构的关注。现有的Convnet类方法通过关注外观和短期运动(最多10帧)。最近也出现一些解决这个问题的方法,采用的是预定义的采样间隔进行时间采样,这样计算成本高,且内存空间有限。
2.未修剪视频识别障碍:我们经常需要处理未修剪的视频如THUMOS, ActivityNet,其中每个动作可能仅占整个视频一小部分,而且主导背景部分可能干扰动作识别模型的预测。
3.优先数据集训练出的模型适用于显示大规模数据障碍:(1)有限的规模和多样性,使模型训练容易过度拟合。(2)光流提取获取短期运动信息成为将学习模型部署到大规模动作识别数据集的计算瓶颈。
针对上述三种障碍,分别提出了三种解决方法:
1. 提出稀疏和全局时间采用策略:由于连续帧是高度冗余的,所以稀疏和全局的时间采样策略将更有利和有效。TSN采用稀疏采用策略在长视频序列上提取段片段snippet,具体来说:首先将视频分为固定数量的segments,并且从每个segment中随机采样一个snippet,最后使用分段聚合函数来聚合这些snippets的信息,正因为使用分段聚合函数,使得TSN可以对长时间结构建模,而且计算成本与视频长度无关。分段聚合函数具体尝试了5种:平均池化、最大池化、加权平均、top-K池化、自适应注意力权重。后两者可以自动突出有辨别力的片段,减少不太相关的片段的影响。
2.多尺度时间窗集成用于处理未修剪视频:以往的手工修剪视频很费时费力,所以提出一种分层君合策略,称为多尺度时间窗口集成。具体做法是,将未修剪的视频分割成固定时间的短窗口序列。通过对窗口中的这些片段级识别分数进行最大池化,对每个窗口独立地执行动作识别。再使用top-K池化或注意力加权来聚合来自这些窗口的预测,从而产生视频级的识别结果。该聚合模块在抑制噪声背景影响的同时,具有隐式选择具有区别动作实例的间隔的能力。
3.跨模态初始化策略、部分bn、改变输入类型解决有限训练样本引起的问题:(1)跨模态初始化策略:将学习到的表示从RGB模态转移到其他模态,如光流和RGB差分。(2)微调场景下执行批处理归一化(BN):只有第一个BN层的均值和方差会自适应地更新来处理域移位。(3)四种输入模态充实视频视觉内容:RGB图像、 RGB差、flow以及 warped-flow光流场。
总结一下本文的三个主要贡献:1)提出了一个端到端框架,称为时间段网络(TSN),用于学习视频表示,捕获长期时间信息;2)设计了一个分层聚合方案,将动作识别模型应用于未修剪视频;3)研究了一系列学习和应用深度动作识别模型的良好实践。
上图显示了四种输入模态的示例:RGB图像、RGB差分、光流场(x,y方向)和弯曲光流场(x,y方向)
单一RGB的图像戴白特定时间点的静态信息,是没有视频前后的信息的
如上图2两个连续的RGB差异表示动作的改变,对应与运动显著区域,故实验将RGB差异作为另一个输入模式。
TSN将光流场作为输入,致力于捕获运动信息。在现实拍摄的视频中,通常存在摄像机的运动,这样光流场就不是单纯体现出人类行为。
如上图3所示,由于相机的移动,视频背景中存在大量的水平运动。受到其他学者的启发,作者将扭曲的光流场作为额外的输入,抑制了背景运动,使得专注于视频中的人物运动。
现有的深度架构,如双流ConvNets和3D卷积网络,缺乏将视频的长时间信息整合到动作模型学习中的能力,
其他方法,如叠加更多连续帧(如64帧)或以固定速率采样更多帧,来对长时间结构进行建模,也有不少缺点:(1)大大增加了ConvNet训练的计算成本(因为需要叠加很多帧)(2)虽然帧数多,从建模的角度来看,它的时间覆盖仍然是局部的,受到固定采样间隔的限制,无法捕获整个视频的视觉内容
为了解决以上问题,提出了分段采样,因为视频虽然连续,但是内容变化是缓慢的,也就是不会突变,于是使用这种稀疏和全局的采样方法。这种方法具有以下特性:(1)一次训练迭代的采样帧数固定为一个预定义的值,与视频的持续时间无关,于是计算量小(2)基于段的抽样确保了这些抽样片段沿着时间维度均匀分布,确保了样本覆盖全段视频。
TSN框架的实现过程是:(1)将视频分成几个等式持续时间的段,然后从其对应的段中随机采样一个片段。(2)这个序列中的每个片段生成自己的动作类的片段级预测,并且设计了一个共识函数来将这些片段级预测聚合成视频级分数。(3)在训练过程中,根据视频级预测定义优化目标,并通过迭代更新模型参数进行优化。
具体图解如下图:
一个输入视频被分成K段(这里我们展示了K = 3的情况),并从每个段中随机选择一个短片段。片段由诸如RGB帧、光流(上灰度图像)和RGB差异(下灰度图像)等形式表示。不同片段的类得分被一个片段共识函数融合,产生片段共识,这是一个视频级的预测。来自所有模式的预测被融合,产生最终的预测。所有代码片段上的ConvNets共享参数。
转换到数学公式:
给定一个视频V,我们把它分成K段{S1,年代2,···,sK }的持续时间相等。一个片段Tk 是从其对应的段S中随机抽样的k.然后,时间段网络对序列片段(T1T2,···,tK )如下:
上述公式中,(T1,T2,…,Tk)代表片段序列,每个片段Tk从它对应的Sk中随机采样得到;F(Tk;W)是卷积网络(参数为W),返回Tk相对于所有类别的得分;G是聚合函数,H是预测函数(选择softmax函数)
结合标准的分类交叉熵损失,最终关于分段共识的损失函数G=
其中C是动作类的数量,yi 关于i类和g类的基础真理标签j jth 在我们的时间段网络框架的训练阶段,损失值L相对于模型参数W的梯度为
其中K为时间段网络中的段数。当我们使用基于梯度的优化方法,如随机梯度下降(SGD),来学习模型参数时,参数更新是利用从所有片段级预测得到的片段一致性G。
最大池化:为每个 action类寻找一个单一的、最具有区别性的片段,但是完全忽略其他片段的影响,缺乏视频别动作联合建模多个片段的能力
平均池化:能够联合建模多个片段,并从整个视频中捕获视觉信息,但是对于复杂背景的嘈杂视频以及一些与动作无关的片段会影响最终性能。
Top-k池化:首先为每个动作类别选择k个最具区分性的片段,然后对这些片段进行平均池化。具有最大池化和平均池化的优点,能够联合建模多个片段,也避免了背景片段的影响。
线性加权:对每个动作类别的预测得分进行加权线性组合,更适用于学习动作不同阶段的重要性权重。但是权重与原本的数据无关,缺乏视频间分辨差异的能力。
注意力权重:根据视频内容自动为每个片段分配一个权重,增强网络的建模能力,并且可以利用额外的反向传播信息来知道神经网络参数的学习,加快收敛。
跨模态初始化:利用RGB模型初始化时间网络,首先通过线性变换将光流场离散到[0,255],使得光流场范围和RGB图像相同。然后修改RGB模型第一个卷积层的权重来处理光流场的输入。
部分BN:在使用预训练模型初始化首先冻结除第一层外的所有批次标准化层的均值和方差参数。同时为了进一步减少过拟合,在全局池化层之后增加一个dropout层。
扩充数据集:原来的数据利用角裁剪(仅从图片的边角或中心提取区域,来避免默认关注图片的中心)和尺度抖动(将输入图像或者光流场的大小固定为 256×340,裁剪区域的宽和高随机从 {256,224,192,168}中选择)来扩充,得到更多的数据进行训练