Timeception Complex Action Recognition
地址:https://arxiv.org/pdf/1812.01289.pdf
introduction
当前的很多工作主要关注short-range的行为识别,如:ucf101,hmdb51 & kinetics。而我们主要关注long range & complex 的行为。该任务的两个难点:1)如何同时建立 minute-long temporal modeling 和seconds-long details(对长序列建模的同时,也关注短序列) 2)当前的时空卷积通常是fixed-size kernels,如何建立不同尺度?。所以本文提出:Timeception,1)同时关注长短时间内的序列信息 2)容忍行为在时间范围内的差异(是指可以学习短序列,也可以学习长序列么?)
贡献:1)learn minute-long action ranges of 1024 timesteps; 2)introduce multi-scale temporal kernels ;3) use temporal-only convolutions;
method
1.motivation
提出质疑:当前的3d卷积中,没人证明为什么要同时学习时空特征。
虽然有方法认为可将3d卷积解耦成 空间卷积1*L*L和时间卷积 T*1*1,但这种方式的解耦并不是必须的,我们可以将解耦定义为:
也就是没必要解耦成空间与时间链接or交替的方式。
2.设计时空CNN的3个原则
1)Subspace Modularity 子空间模块化
2)Subspace Balance
3)Subspace Efficiency
(这里几个原则,可能理解起来就是 设计一个module可以很方便/lightweight的用于现有的很多网络中)
3.提出的Timeception layers
对长视频建模的两个目标:1) learn the possible long-range temporal dependencies ;2)容忍不同的时长。
1)如何学习long-range tenporal dependencies?
本文提出了temporal-only的convolution:T*1*1*1,每个kernel只在一个channel上作用。
如果堆积很多temporal-only 的卷积层不好,所以使用:use channel grouping operation before the temporal-only convolutions and channel shuffling operation after the temporal-only convolutions.
有点像shuffle-net中分组卷积,每个temporal-only的卷积只对当前这一小组的特征进行作用;分组卷积完成后,在引入channel shuffle,这样就能融合不同尺度的特征。
2)如何Tolerating Variant Temporal Extents?
将上面提到的temporal-only的卷积 换成 multi-scale temporal kernels,两种方式:a) inception 结构 b)dalated 卷积(减少参数)
这里有点想捕获不同时间范畴的信息,所以引入不同尺度的kernel size,实现长短信息交互。
3)提出的卷积模型
图b:时间卷积操作的kernel size:3,5,7;在channel维度concat
图a:先分组卷积,再在channel维度concat;这里shuffle并不是完全引入random shufle这样的操作,而是一种“flatten-reshape-flatten”的操作;具体可以看shuffle-net的实现。
experiment
1.数据集: Charades,Breakfast Actions,MultiTHUMOS
2. Original v.s. Altered Temporal Extents
先训练两个baseline,一个用mulit-scale temporal kernel,另一个用fixed-sized kernel。结果:(虽然有提高,但这个结果并木有report baseline?)
3.Fixed-size vs. Multi-scale Temporal Kernels
个人想法:
本文好像就是提出了Timeception 层,只做时间维度的1d卷积,然后像inception一样把不同卷积核大小输出的结果在channel维度链接。(也可以是dalated 卷积实现)
第一次看这篇paper时,完全没看懂shuffle操作,shuffle层在代码中:
一开始感觉就是shape的转换,怎么就可以实现shuffle了?不过后来看了一下shuffle-net才明白~
不过这篇paper是将提出的Timeception层接在网络的最后面(应该是这样的,具体我也没细看)感觉也有点奇怪,有点像是在hige-level对不同帧特征进行时序融合。我之前参考Timeception的思想,将这样的时序关系学习引入在resnet中间,好像性能反而降了很多...这两周有空试试接在resnet最后面看看有木有效果~