论文理解——TSM:Temporal Shift Module for Efficient Video Understanding(ICCV2019)有效的视频理解时态移位模块

论文理解——TSM:Temporal Shift Module for Efficient Video Understanding(ICCV2019)有效的视频理解时态移位模块

  • TSM:Temporal Shift Module for Efficient Video Understanding(ICCV2019)有效的视频理解时态移位模块
    • 介绍Introduction
    • 相关工作
    • TSM网络
    • offline的双向TSM模型
    • Online的单向TSM模型
    • 实验相关
    • 测试相关
    • 用到的模型
    • 用到的数据集

TSM:Temporal Shift Module for Efficient Video Understanding(ICCV2019)有效的视频理解时态移位模块

这篇文章提出了一种通用的,高效的时移模块(TSM),它可以在保持二维CNN复杂性的同时,实现三维CNN的性能。TSM通过将特征图沿时间维度移动部分通道,从而从紧相邻帧之间的信息交换。在二维卷积的基础上实现了计算自由,但具有较强的时间建模能力。TSM有效的支持离线和在线视频识别,适用于高吞吐量来离线视频识别。单向TSM只混合过去帧和当前帧,适用于低延时在线视频识别。
代码链接: https://github.com/mit-han-lab/temporal-shift-module
论文理解——TSM:Temporal Shift Module for Efficient Video Understanding(ICCV2019)有效的视频理解时态移位模块_第1张图片

介绍Introduction

1. 背景
二维CNN在单个帧上无法完成对时间信息的建模,三维CNNs可以联合学习时空特征,但是其计算成本较大,现有的研究方法是在时间建模能力和计算能力之间进行权衡,例如后组织融合和中层时间融合,这种方法牺牲了底层时间建模的效率,但是在时间融合之前的特征提取过程中丢失了很多有用的信息。
2. 视频模型
一个视频模型中的激活可以表示如下:
在这里插入图片描述
其中N为批大小,C为通道数,T为时间维度,H和W为空间分辨率。传统的二维卷积在维数T上独立运行,新词没有时间建模起到作用。

3. TSM
TSM沿着时间维度移动通道,向前或者向后。移动后相邻帧的信息与当前帧混合。我们的直觉是:卷积运算是由移动和乘法-累加组成的。本文在时间维度上移动±1,并将乘法从时间维度累加到通道维度。对于实时的在线视频理解,未来的帧不能移动到现在,所以使用单向的TSM来执行视频理解。

4. 问题
尽管移位操作的零计算性质,但是经验发现,简单采用图像分类中的空间移位策略,会给视频理解带来两个主要问题:
①效率不高:移位操作在概念上是zero FLOP,但是移位操作会导致数据移动,数据移动的额外成本是不可忽视的,并导致延迟增加。
②不准确:在网络中移动过多的通道会严重损害空间建模能力,导致性能下降,即并不包含所有的该张图片本身应该具有的信息。

5. 技术贡献
为了解决这些问题,本文提出了两个技术贡献:
①采用时间局部偏移策略:不需要对所有的通道进行偏移,只对其中的一小部分通道进行偏移,从而实现有效的时间融合。这样可以大大降低数据移动的成本(如图a)
②将TSM插入残差分支内而不是插入残差分支外,这样可以保留当前帧的激活,不会损害二维卷积骨干的空间特征学习能力。

论文理解——TSM:Temporal Shift Module for Efficient Video Understanding(ICCV2019)有效的视频理解时态移位模块_第2张图片

相关工作

2D CNN
3D CNN
Trade-off(混合的2D-3D CNNs)

TSM网络

TSM的设计也是围绕着上面两个问题展开的:

1.为了降低shift移动太多会造成数据移动的开销,只shift一部分channels(按照比例移动,1/8, 1/4, 1/2, 1)结果如上图所示
2.为了保持特征的空间完整性,采用了残差模型,从旁路走TSM模块,使得TSM还直接的卷积二者都存在
这样只要控制好比例,就既保持了空间完整性,有增加了时序联系性。可以从上图的(b)中看出residual模式的效果更好!
也可以从实验结果中看出比例对准确性的影响(不能太大,也不能太小)

  • shift比例太大,那么空间特征建模能力就会被削弱
  • shift比例太小,那么时序建模信息能力就会收到损害

offline的双向TSM模型

  • Backbone: ResNet-50
  • TSM的加入模式:Residual Block
  • 特点1:对于每个插入的TSM模块,相当于其感受野得到了扩大2倍,因此可以获得很好的时序建模!
  • 特点2:TSM可以应用的任意的现成的2DCNN上面,使其具有3DCNN的效果但是同时维持2DCNN的计算量

Online的单向TSM模型

  • 方式:把之前的frames shifts到当前的frames上,从而也达到了时序信息建模的作用,从而实现在线的recognition功能!

  • 推理图如下:在推理的过程中,对于每一帧(比如Ft),只保存其首先的1/8的feature map。并且保存在cache中,对于下一帧(比如F t+1 ),那么就是用Ft上的保存的1/8和当前帧Ft+1上的7/8组合起来。从而生成下一层feature map。如此循环下去!

利用这样的单向shift策略!有以下特点:

  • 特点1:推理过程中的低时延;

  • 特点2:低内存消耗

  • 特点3:多层时序信息的融合(网络的每一层都能得到融合!)

实验相关

训练相关

训练项 设置
训练数据集 Kinetics
epoch 100(对于其他数据集,epoch减半)
初始学习率 0.01 (decays by 0.1 at epoch 40&80)
权重衰减 le-4
batchsize 64
dropout 0.5
Fine-tuned 来自于Image Net

测试相关

设置:为了获取高准确率,每个视频采样多个小片段(其中10个来自Kinetics, 两个来自于其他)

用到的模型

ResNet-50 用来说明本方法比简单的2D CNN好了很多

用到的数据集

Kinetics: 类别繁多但是对时序信息并不是太敏感
SomethingV1&V2 / Charades / Jester / 这些都是时序性比较强的
UCF101 / HMDB51:对时序特征不是那么的敏感!

你可能感兴趣的:(pytorch,神经网络)