【TSN(Temporal Segment Networks)】

  TSN可以看做是双流(two stream)系列的改进。
  在此基础上,TSN网络要解决两个问题1、是长时间视频的行为判断问题(有些视频的动作时间较长)。2、是解决数据少的问题,数据量少会使得一些深层的网络难以应用到视频数据中,因为过拟合会比较严重。
  针对第一个问题,首先,为什么目前的双流结构网络难以学习到视频的长时间信息?因为其针对的主要是单帧图像或者短时间内的一堆帧图像数据,但这对于时间跨度较长的视频动作检测而言是不够的。因此采用更加密集的图像帧采样方式来获取视频的长时间信息是比较常用的方法,但是这样做会增加不少时间成本,同时作者发现视频的连续帧之间存在冗余,因此想到用稀疏采样代替密集采样,也就是说在对视频做抽帧的时候采取较为稀疏的抽帧方式,这样可以去除一些冗余信息,同时降低了计算量。
针对第二个问题,可通过常规的数据增强方式,比如随机裁剪,水平翻转等;另外还有作者提到的交叉预训练,dropout等方式来减少过拟合。
  Figure2是作者用到的输入数据形式。我们知道对于图像而言,特征可能就只有图像本身,但是视频的特征就比较丰富,除了帧以外,还有光流(optical flow)等,如Figure2所示。注意,这也是作者解决数据量少的一种方法,那就是从有限的数据中提取更多有用的特征。从最左边开始说起,RGB image就是video中的某一帧图像;RGB difference是相邻两帧图像的差,可以用来表达动作信息;optical flow field和warped optical flow field是视频的光流信息。RGB image和光流正是双流网络论文中的spatial stream convnet和temporal stream convnet两条支路的输入。因此这里作者相当于想额外研究RGB difference和warped optical flow对动作检测效果的影响。
【TSN(Temporal Segment Networks)】_第1张图片  Figure1就是作者提出的TSN网络。网络部分是由双路CNN组成的,分别是spatial stream ConvNets和temporal stream ConvNets,这和双流网络文章中介绍的结构类似,在文中这两个网络用的都是BN-Inception(双流论文中采用的是较浅的网络:ClarifaiNet)。那么这两路CNN以什么为输入呢?spatial stream ConvNets以单帧图像作为输入,temporal stream ConvNets以一系列光流图像作为输入,换句话说两个网络的输入类型是不一样的。
【TSN(Temporal Segment Networks)】_第2张图片

  当然最重要的是temporal segment network(包含多个spatial stream convnet和temporal convnet,参看Figure1)的输入不是单帧图像或短时间内的一堆图像帧,而是从视频中稀疏采用得到的一系列snippets,这就是为了获取视频的长时间信息所做的改进。

  Figure1的最左边是一个Video,用V表示,将V分成K份(文中K采用3),用(S1,S2,…,Sk)表示。这样TSN网络就可以用下面这个式子表示:
在这里插入图片描述  这里的(T1,T2,…,Tk)表示K个snippets,snippets翻译过来也是小片段,也就是说Tk是从(S1,S2,…,Sk)中对应的视频片段Sk中随机采样出来的结果,Tk是一个snippet,每个snippet包含一帧图像和两个光流特征图。这也就完成了作者说的稀疏采样。上面式子中的W就是网络的参数,因此F(Tk;W)就是网络的输出,也就是该snippet属于每个类的得分。F函数的输出结果就是Figure1中spatial convnet或temporal convnet的输出结果,可以看Figure1中convnet图后面的绿色条形图,代表的就是socre在类别上的分布。g是一个融合函数,在文中采用的是均值函数,就是对所有snippet的属于同一类别的得分做个均值,毕竟我们最后要求的是这个video属于哪个类别,而不是这个video的某个snippet属于哪个类别。g函数的输出结果就是Figure1中segmental consesus的输出结果。最后用H函数(文中用的softmax函数)根据得分算概率,概率最高的类别就是该video所属的类别。注意,在输入softmax之前会将两条网络的结果进行合并,默认采用加权求均值的方式进行合并,文中用的权重比例是spatial:temporal=1:1.5。另外需要强调的是:Figure1中的K个spatial convnet的参数是共享的,K个temporal convnet的参数也是共享的,实际用代码实现时只是不同的输入过同一个网络。
网络的损失函数如下(standard categorical cross-entropy),C表示类别数,yi是标签。
【TSN(Temporal Segment Networks)】_第3张图片其中G表示:
在这里插入图片描述
  也就是说G是一个长度为C的向量,表示一个video属于每个类别的得分。

  前面提到过为了防止过拟合,作者采取了多个措施,其中一个就是交叉预训练,预训练我们都很熟悉,以图像为输入的spatial ConvNets网络可以用在imagenet数据集上预训练的网络来初始化。而以光流作为输入的temporal stream ConvNets网络该怎么初始化呢?答案就是交叉预训练,交叉预训练其实是将图像领域的预训练模型迁移到光流领域。 另外一个是partial BN,冻结了除第一个BN层以外的所有BN层的均值和方差。
实验结果:
  Table1是关于不同训练策略下双流网络的效果对比。可以看出交叉预训练(主要提升了temporal convnets的效果)和partial BN with dropout是有效的。
【TSN(Temporal Segment Networks)】_第4张图片Table2是关于网络的几种不同输入形式下two stream convnets的效果对比,数据集是UCF101。可以看到一般而言融合多种类型的输入可以达到更好的效果,尤其要利用光流信息。
【TSN(Temporal Segment Networks)】_第5张图片
Table3是关于前面TSN公式中的不同g函数对实验结果的影响。最后文章采用的是average的融合方式。
【TSN(Temporal Segment Networks)】_第6张图片
  Table5是总结本文的一些基于双流网络的改进效果。
【TSN(Temporal Segment Networks)】_第7张图片

  Table6是和其他视频行为识别算法在HMDB51和UCF101数据集上的对比。
【TSN(Temporal Segment Networks)】_第8张图片

  最后的Figure3是作者对网络的可视化。
【TSN(Temporal Segment Networks)】_第9张图片

解决问题
1.用CNN框架有效提取video长时序特征
2.在UCF101等训练集受限的情况下训练网络

贡献
1.TSN网络,基于长时间时序结构模型。稀疏时序采样策略,视频层监督有效学习整个视频。
2.HMDB51(69.4%),UCF101(94.2%)

介绍

动作识别有两个重要和补充的方面
1.appearance和dynamic
2.是否有效提取了特征并充分利用了相关信息
难点:image classification的难点。提取有效特征避开这些challenge并保留分类信息

CNN的局限
CNN网络关注于appearance和短时的motion,缺少处理长时间结构的能力
目前密集间隔采样CNN方法尝试处理video
长时间视频的计算量大,不能实时应用
由于网络固定帧数的限制,视频过长会丢失重要信息
需要大量的训练集,然而目前公开数据集在大小和多样性上受限很大,过拟合的风险

TSN
在双流的基础上采用稀疏采样:k=7或9更好,不是论文中的3
连续帧有高度的冗余性相似性,密集采样是不需要的
省时,省计算
不受帧长限制可以学习整个视频

数据处理
多种输入形式预训练:单一rgb,叠加rgb,叠加光流场,叠加形变光流场
正则化
数据增强

CNN for Action Recognition
深度CNN Karpathy
双流网络 appearance + motion 缺点:单帧,短时间多帧,复杂运动及跨时间多阶段动作很难处理
C3D Tran
64-120固定帧,对长时序视频建模(受限于固定长度的帧,不能处理过长的整个视频,提取全局信息)

时序结构模型
ASM 标注视频的原子动作
隐变量做复杂动作的时域分解,迭代方法隐SVM学习模型参数
LHM SGM 分层模型和分割模型
SSM 序列骨架模型
bag of visual words 视觉词袋模型
(都不是端到端的模型)

BN-Inception 结合 双流网络
TSN在双流上改进
双流的缺陷:空域-RGB单帧,时域-短的snippet堆叠帧的输入使得
无法处理长时序结构
复杂运动及跨时间多阶段动作很难处理

参考文章
TSN(Temporal Segment Networks)算法笔记
Temporal Segment Networks

你可能感兴趣的:(计算机视觉,深度学习,人工智能)