本文题目是Temporal Segment Networks for Action Recognition in Videos,可以看出主要介绍的是视频中的动作识别问题,那么很有必要对动作识别的具体任务稍作了解
https://zhuanlan.zhihu.com/p/34439558
TSN(Temporal Segment Networks)即时间段网络。
论文首先提出目前深层次的卷积神经网络在图像识别方面已经非常成功了,但是在视频识别上的优势并不明显。
然后引出TSN这种新的基于分段采样聚合的模块,用于对长范围时间结构建模,这种模型在动作识别方面通过平均池化和多尺度时间窗口融合可以轻松适应已剪辑的与未剪辑的视频。
TSN结构在几个动作识别数据集上的表现都不错,在UCF101上的准确率达到了94.9%。
使用一般的深层次卷积网络处理视频动作识别问题有以下三个障碍
这也就有了需要解决的三个问题
之前的模型无法很好的解决这些问题。
首先是时间跨度长的视频动作识别,已有的模型主要针对的是单帧图像或者短期时间内的结构,它们处理长范围时间信息只能进行密集的采样,但是密集的采样会增加计算成本;其次就是训练数据较少,容易产生过拟合。
作者提供了三个与之对应的解决方式
首先将输入视频分为K个时间段(这里K为3),从每个段中随机选取一个短片段输入到网络中,该片段由RGB帧、光流或者RGB差分模型表示。不同片段的类分数通过分段聚合函数进行融合产生分段一致性,最终得到视频级的预测。
注:代码段上的所有convnet共享参数,所有模式的预测都要聚合以产生最终预测结果。
下面对结构的各部分分别进行解释。
过去对长范围时间结构的建模通常是堆叠更多的连续帧,或者以固定速率采样更多帧,尽管这种密集和局部采样有助于缓解原始短期COVnet的问题,但是这种方式存在两个问题
实际在视频中,内容变化较慢,所以上述采样方式获取的大量密集帧在它们表达的信息上是重复的,TSN使用了一种分段采样的策略,该策略本质上是一种稀疏全局采样。
在各种动作的视频中,只有少量的稀疏采样片段会被用于建模时间结构。一次训练迭代的采样帧数固定为一个预定义值,与视频的持续时间无关,这保证了无论需要处理的时间范围如何,计算成本都是恒定的。
在全局属性上,基于段的采样确保这些采样片段沿时间维度均匀分布。因此,无论动作视频持续多长时间,采样片段都将大致覆盖整个视频的视觉内容,使得模型能够具备在整个视频中建模长范围时间结构的能力。
需要特别明确的一点是,采样的目标是使这些采样片段代表整个视频的内容,同时保持合理的计算成本。
下面对整个过程进行介绍:
给定一个视频V,将其划分为K个持续时间相等的段 S 1 , S 2 , . . . , S K {{S_1,S_2,...,S_K}} S1,S2,...,SK,从对应的 S K S_K SK中随机抽取一个片段 T K T_K TK,然后时间段网络对片段序列 ( T 1 , T 2 , . . . , T K ) (T_1,T_2,...,T_K) (T1,T2,...,TK)建模
使用标准的交叉熵来计算聚合函数G的损失
其中, C C C是行动类的数量, y i y_i yi是第 i i i类的真实标签, g j g_j gj是G的第 j j j维。
基于此公式,可以推导出损失函数对模型参数 W W W
的梯度为
其中K是时间段的段数。
可看出,参数更新利用了所有片段预测结果得出的分段一致性G,所以时间段网络可以从整个视频中学习参数。
主要有五种聚合函数,具体如下:
Max pooling:最大池化应用于采样片段的预测函数( g i = m a x k f i k g_i=max_kf^k_i gi=maxkfik)。基本思想是为每个动作类寻找一个单一的、最有区别的片段,并利用这个最强的激活作为这个类别的视频级响应,将重点放在单个片段上,而完全忽略其他片段的响应。因此,缺乏为视频级动作理解联合建模多个片段的能力。
Average pooling:平均池化( g i = 1 K Σ k = 1 K f i k g_i=\frac{1}{K}\Sigma^K_{k=1}f^k_i gi=K1Σk=1Kfik)。基本思想是利用所有片段的响应进行动作识别,并使用它们的平均激活作为视频级别的预测。平均池化能够联合建模多个片段,并从整个视频中捕获视觉信息。但是对于复杂背景的嘈杂视频,一些片段可能与动作无关,这些背景片段加入平均可能会影响最终的识别性能。
Top-K pooling:Top-K池化是对最大池化和平均池化的折中,为每个操作类别选择K个最有区别的代码段,然后对这些选定的片段执行平均池化,即 g i = 1 K Σ k = 1 K α k f i k g_i=\frac{1}{K}\Sigma^K_{k=1}\alpha_kf^k_i gi=K1Σk=1Kαkfik, α k α_k αk是选择的标记,如果选择,则设置为1,否则为0。最大池化和平均池化可分别看做是其K设置为1或K的特殊情况。
这种方式兼顾最大池化和平均池化的优点,能够联合建模多个片段的同时避免背景片段的影响。
Linear weighting:对每个动作的预测分数线性加权( g i = Σ k = 1 K w k f i k g_i=\Sigma^K_{k=1}w_kf^k_i gi=Σk=1Kwkfik),交替性地更新网络权重和组合权重
将动作分解为不同阶段,可以学习不同阶段重要性的权重,但是权重与原本的数据无关,缺乏视频间分辨差异的能力。
Attention weighting:在线性加权中,加入的权重与原本的数据无关,这里提出一种自适应加权方式,称为注意力加权,根据视频内容自动为每个片段分配重要性权重。即 g i = Σ k = 1 K A ( T k ) f i k g_i=\Sigma^K_{k=1}A(T_k)f^k_i gi=Σk=1KA(Tk)fik,其中 A ( T k ) A(T_k) A(Tk)是片段Tk的注意权重,根据视频内容自适应计算,其梯度更新方式为
对于 A ( T k ) A(T_k) A(Tk)的设计,目前还未能完全明白,在此不做描述。
在五种聚合机制中,值得特别关注的是注意力加权,它引入了一个注意模型 A ( T k ) A(T_k) A(Tk),我们暂且不关注模型的设计过程,但是不可否认这种模型的优势还是很大的,它的优势主要来自两方面:
对于TSN输入方式,论文中给出了四个示例
以上分别是单一RGB图像、差分RGB、光流和扭曲光流场,具体内容不做介绍,可参看原文。
在一开始就谈到过,用于动作识别的数据集在大小方面是有限的,在这些数据集上训练深度convnet很容易过度拟合。为了缓解这个问题,本文设计了几种策略来改进时间段网络框架中的训练。
在这一部分,主要是进行消融实验,对比TSN在不同参数下的表现,并且与其他网络进行对比。
这里仅给出最后的表格8并对其做一个简单的介绍
表格8展示了在HMDB51、UCF101、THUMOS14和ActivityNet数据集上,比较基于时间段网络(TSN)的方法与其他最新方法的结果,分别给出了使用TSN(3段)和TSN(7段)学习的模型的结果。可以看出TSN的表现明显优于其他几种算法。