Timeception Complex Action Recognition

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最后面看看有木有效果~

发布了56 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/karen17/article/details/95479147
今日推荐