Temporal Segment Networks: Towards Good Practices for Deep Action Recognition
本文延续了双流网络,并考虑到计算花费改善了视频输入形式,提出了新的网络TSN,并且探索了一些实践方法(数据扩充,光流输入其他形式)。虽然文章比较老,但是实验过程以及对数据的处理值得参考。
论文主要贡献:提出了TSN(Temporal Segment Networks),基于长范围时间结构(long-range temporal structure)建模,结合了稀疏时间采样策略(sparse temporal sampling strategy)和视频级监督(video-level supervision)来保证使用整段视频时学习得有效和高效。在TSN的帮助下,研究了一系列关于视频数据学习卷积网络的良好实践数据集表现:HMDB51(69.4%)、UCF101(94.2%)
3 Action Recognition with Temporal Segment Networks
对于以下内容将“片段”代表文章中“snippet”,“段”代表文章中“segment”
3.1 Temporal Segment Networks
之前方法都是对单帧图像处理,忽略了动作上下文信息;而采用多帧光流处理的方法,计算力消耗很大。针对以上问题,文章提出TSN(Temporal Segment Networks)如图1所示对整个视频处理。
该方法利用整个视频的视觉信息进行预测,并采用双流网络。与之前的方法不同,不是采用single frames or frame stacks,TSN的输入是从整个视频稀疏采样得到的一系列小片段。每一个片段都将产生自己的初步预测类别,再将这些片段分类总合为视频预测。在学习过程中,通过迭代更新模型参数,优化视频级预测的损失值,而不是(用于双流卷及网络的)片段级预测的损失值。
对于一个给定的视频V,先均匀分成K段,然后TSN对片段snippet操作如下:
3.2 Learning Temporal Segment Networks
Network Architectures. 一些工作显示更深层的网络可以提高识别力,然而two-stream卷积网络采用的是浅层网络,另外选择Inception with Batch Normalization (BN-Inception)作为构造模块,由于它的精确性和高效性。所以文章采用原始的BN-Inception架构设计two-stream Conv-Nets。
Network Inputs. 文章尝试了多种输入形式来增强TSN的区分能力。除了单纯的RGB单帧输入(空间流)和普通光流输入(光流),文章提出了另外两种输入形式:RGB差异(RGB difference)和扭曲光流场(warped optical flow fields)如图2所示。
单个RGB帧缺少上下文信息;RGB差异表示连续两帧之间的外观改变,对应运动的显著区域;普通光流场可能无法消除相机运动造成的误差,提出扭曲光流场作为额外的输入形式。
Network Training. 由于行为检测的数据集相对较小,训练时有过拟合的风险,为了缓解这个问题,作者设计了几个训练策略。
*交叉输入模式预训练。*空间网络以RGB图像作为输入:故采用在ImageNet上预训练的模型做初始化。对于其他输入模式(比如:RGB差异和光流场),它们基本上捕捉视频数据的不同视觉方面,并且它们的分布不同于RGB图像的分布。作者提出了交叉模式预训练技术:利用RGB模型初始化时间网络。首先,通过线性变换将光流场离散到从0到255的区间,这使得光流场的范围和RGB图像相同。然后,修改RGB模型第一个卷积层的权重来处理光流场的输入。具体来说,就是对RGB通道上的权重进行平均,并根据时间网络输入的通道数量复制这个平均值。这一策略对时间网络中降低过拟合非常有效。
*正则化技术。*在学习过程中,Batch Normalization将估计每个batch内的**均值和方差,并使用它们将这些**值转换为标准高斯分布。这一操作虽可以加快训练的收敛速度,但由于要从有限数量的训练样本中对**分布的偏移量进行估计,也会导致过拟合问题。因此,在用预训练模型初始化后,冻结所有Batch Normalization层的均值和方差参数,但第一个标准化层除外。由于光流的分布和RGB图像的分布不同,第一个卷积层的**值将有不同的分布,于是,我们需要重新估计的均值和方差,称这种策略为部分BN。与此同时,在BN-Inception的全局pooling层后添加一个额外的dropout层,来进一步降低过拟合的影响。dropout比例设置:空间流卷积网络设置为0.8,时间流卷积网络设置为0.7。
数据增强。数据增强能产生不同的训练样本并且可以防止严重的过拟合。在传统的two-stream中,采用随机裁剪和水平翻转方法增加训练样本。作者采用两个新方法:角裁剪(corner cropping)和尺度抖动(scale-jittering)。角裁剪(corner cropping):仅从图片的边角或中心提取区域,来避免默认关注图片的中心。尺度抖动(scale jittering):将输入图像或者光流场的大小固定为256340,裁剪区域的宽和高随机从{256,224,192,168}中选择。最终,这些裁剪区域将会被resize到224224用于网络训练。事实上,这种方法不光包括了尺度抖动,还包括了宽高比抖动。
3.3 Testing Temporal Segment Networks
由于在TSN中片段级的卷积网络共享模型参数,所以学习到的模型可以进行帧评估。具体来说,作者采用与two-stream相同的测试方案——即从动作视频中采样25个RGB帧或光流堆。同时,从采样得到的帧中裁剪4个边角和1个中心以及它们的水平翻转来评估卷积网络。空间和时间流网络采用加权平均的方式进行融合。相比于two-strean,TSN中空间流卷积网络和时间流卷积网络的性能差距大大缩小。基于此,设置空间流的权重为1,设置时间流的权重为1.5。当正常和扭曲光流场都使用时,将其权重1.5分出1给正常光流场,0.5给扭曲光流场。
4 Experiments
见博客笔记:实验部分详述