TSN、TRN、ECO、 S3D、I3D-GCN、SlowFastNet、LFB

什么是动作识别?给定一个视频,通过机器来识别出视频里的主要动作类型。

动作识别表面是简单的分类问题,但从本质上来说,是视频理解问题,很多因素都会影响其中,比如不同类型视频中空间时间信息权重不同?视频长短不一致?视频中动作持续的起始终止时间差异很大?视频对应的语义标签是否模糊?

 

本文主要对比 video-level 动作识别的经典方法TSN,及其拓展变形版本的TRN和ECO。


Temporal Segment Network[1], ECCV2016

TSN提出的背景是当时业界做动作识别都是用 Two-stream CNN 和 C3D 比较多,它们都有个通病,就是需要密集采样视频帧,比如 C3D 中使用的是连续采样间隔的16 frames,这样当输入是个Long视频,计算量很庞大~

 

故文中就提出了 稀疏时间采样策略 ,就是不管输入视频的长短,直接分成K个Segment,然后在每个Segment再随机找出一个时间小片,分别用 shared CNN 来提取空间上的特征,再进行 feature-level 的融合,最后再 Softmax 分类:

整个网络框架图如下,很简洁:

TSN[1]

由于其中没有使用 3D conv,故为了更好进行 temporal 特征提取,文中也使用了类似双流的多模态输入:即上图的 Spatial ConvNet 的输入可以是 RGB图 或者 RGB差异图;Temporal ConvNet 的输入可以是 光流图 或者 wrapped光流:

不同模态输入[1]

从实验结果来看,使用Average fusion去融合特征效果最好;而当使用三模态输入(Optical Flow + Warped Flow + RGB)时,在HMDB51和UCF101超state-of-the-art;不过若只是RGB作为输入的话,性能不如 C3D~

总结:

Pros:

通过 Sparse temporal sampling 可以扔掉很多冗余帧,初步满足实际应用的real-time要求

Cons:

  1. 对于Temporal特征欠考虑,更多地是 focus 在 apperance feature
  2. 文中无对比超参K值(Default K=3)的选取对结果的影响 及 Segment内部采样小片策略

Temporal Relation Network[2], ECCV2018

TRN是 

@周博磊

 大哥的力作,致力于探索时间维度上的关系推理,那问题来了,怎么样才能找到特征间在时间上的传播关系呢?其实像传统的3D conv架构(C3D,P3D,R(2+1)D, I3D),也是有 Temporal conv 在里头,也能从不同感受野即multi-temporal-scale来得到联系。本文是在TSN框架上,提出用于video-level的实时时间关系推理框架。

 

TRN的 main contribution 有两个:

  1. 设计了新型的fusion函数来表征不同 temporal segment 的 relation,文中是通过MLP( concat feature -- ReLU -- FC -- ReLU -- FC)的结构来实现,而TSN中的fusion函数只是通过简单的 average pooling
  2. 通过时间维度上 Multi-scale 特征融合,来提高video-level鲁棒性,起码能抗快速动作和慢速动作干扰

 

下图的框架图一目了然,算法实现流程就是先均匀地采样出不同scale的Segment 来对应 2-frame, 3-frame, ..., N-frame relation;然后对每个Segment里小片提取 Spatial feature,进行 MLP 的 temporal fusion,送进分类器;最后将不同scale的分类score叠加来作最后预测值。

TRN[2]

两个实现的细节点需要注意

  1. 对采样下来的N-frame,必须保持时序性,即从先到后;这样后面的temporal fusion环节MLP才能学会推理动作的时间关系。

2. 不同scale的采样帧对应的 MLP 都是独立的,不share参数,因为含的帧数信息量也不同,输入给MLP的大小自然也不同。

文中给出了几个非常有趣的实验结果

  1. 如下图所示,在不同的数据集, TRN和TSN的性能差异很大。这说明什么问题呢?在UCF, Kinectics, Moments里两者的性能相近,说明这三个数据集的动作与空间上下文具有强相关性,而对于时间上下文相关性较弱;而 Something-something, Jester, Charades 里动作较为复杂,时间上下文联系较强,TRN的性能明显高于TSN。

不同的fusion方式在6个数据集上的性能[2]

2. 保持帧间时序对于TRN的重要性,如下图所示,可见乱序输入的TRN在动作复杂的something-something数据集下性能严重下降;而在UCF101里并不严重,因为该数据集需要更多的是空间上下文信息。

正序和乱序的性能[2]

总结

Pros:

更鲁棒的 action/activity 时空特征表达方式,即 MLP fusion + Multi-scale。

Cons:

Spatial 和 temporal 的联系还是太少,只在最后 embedding feature时用MLP融合了一下~~另应对比不同的fusion方式,如LSTM/GRU与MLP的性能差异~


ECO[3], ECCV2018

本文通过 trade-off TSN系列 和 3Dconv系列,来实现实时的 online video understanding(文中夸张地描述到 ECO runs at 675 fps (at 970 fps with ECO

Lite) on a Tesla P100 GPU)。

ECO的主要贡献

  1. 使用 TSN 稀疏采样来减少不必要的冗余帧的前提下,对采样帧的 mid/high-level 进行 spatio-temporal 特征fusion,故比 TRN 只在最后特征层来做 temporal fusion的时空表达能力更强~

2. 提出了一整套工程化的 Online video understanding 框架。

 

来看看轻量级的ECO-Lite的网络框架图,对N个中的每个Segment中的帧来提取特征到某一层 K*28*28,然后通过 3D-ResNet(当然拉,这里你也可以使用 convLSTM + SPP 等方式来对比下效果) 提取N个Segment的时空特征,最后再分类。

ECO Lite[3]

完整的ECO框架就是在 ECO-Lite 的基础上,再接一个类似 TSN 的average pooling 的 2D 分支,最后再将两个分支特征进行融合及分类:

Full ECO[3]

在Something-something数据集下,集成 {16, 20, 24, 32} 下采样帧数的四个ECO-Lite子网络的average score的方法,性能远超 Multi-scale TRN:

something-something性能[3]

总结与展望:

当硬件的计算能力在上升,且成本下降后,无疑以后通过Sparse sampling后,直接从头到尾进行 3Dconv 出来的时空表征会更优 。而这个Sparse sampling,是否可以通过 temporal attention去自动选择最优的帧来计算也很重要。

 

最后请教大家两个问题:

  1. 对于微动作或者动作幅度较小完成速度较慢时,怎么才能更好地识别?会不会都学成了 appearance特征?

2. 能否通过理解动作(即rigid & non-rigid),来反向进行 motion compensation,让对应帧都时空上aligned好?比如对齐各种运动变形的人脸?

 

Reference:

[1] Limin Wang, Temporal Segment Networks: Towards Good Practices for Deep Action Recognition, ECCV2016

[2]Bolei Zhou, Temporal Relational Reasoning in Videos,ECCV2018

[3]Mohammadreza Zolfaghari, ECO: Efficient Convolutional Network for Online Video Understanding,ECCV2018

 

最近看了下几篇动作识别,视频理解的文章,在这里记下小笔记,简单过一下核心思想,以便后续查阅及拓展使用。

文章主要想探索的问题如下:

1.如何改造I3D,使其更轻量且性能更好?

2.如何改造I3D,使其理解视频场景里的物体交互?

3.如何高效融合不同帧率,不同 temporal 分辨率的视频?

4.如何让网络拥有 Long-term 的能力(即理解10秒以上的长视频)?

----------------------------------------------------------------------------

Separable 3D CNN (S3D) [1], ECCV2018

文章的创新不是很多,但是就像当初提出P3D和R(2+1)D一样,做了很多对比实验,来探讨分解卷积及网络结构设计的性能对比。这里主要贴几个重要结论,后面设计相关网络时可用:

1.通过实验证明了 top-heavy model design 更轻量,且性能更优:

top-heavy 和 bottom-heavy 的区别是,前者先2D再3D,而后者先3D再2D。故前者在时空分辨率极高的的前几层使用2D卷积,而在时空分辨率较低的后几层对semantic feature进行3D卷积,故更轻量性能更好。

2.在保持I3D的Inception Backbone不变情况下,将 3x3x3 卷积核都换成 1x3x3 + 3x1x1 卷积,参数更少且性能更好:

S3D

参数少了,不容易过拟合,这里就是文中说的标准S3D;还可更轻量级的版本 Fast S3D, 按照top-heavy设计,把前面几个模块换成2D卷积即可。

3.在每个 3x1x1 卷积后加入了 Self-attention 模块 (即文中的 spatio-temporal feature gating),进一步提升性能:

这里只是个普通的时空attention模块,将feature map中所有channels进行平均池化,然后进行线行映射和非线性激活,来产生时空attention map,最后权值叠加回去原feature map

-------------------------------------------------------------------------

I3D-GCN[2], ECCV2018

先来看看算法的主框架图:

I3D-GCN主框架图

主要流程为:

1.对均匀下采样后的T 帧作为输入,经过I3D,得到 TxHxWxd 的 deep feature,然后分两个branches

2.第一个branch进行RPN来提取N个候选区域,然后进行ROIAlign来得到 Nxd 特征;接着构造相似度图和双向时空图,然后对两种图各进行图卷积操作,再叠加得 Nxd 特征;最后对N个物体特征进行均值池化,得到 1xd 特征

3.第二个branch直接对时空deep feature进行均值池化,得到 1xd 特征

 

文中的主要创新点是构造两个图来描述N个物体特征间关系:

A、Similarity Graph

假定视频中有 N 个物体,每个物体特征 [公式] 是 d维特征向量,故任何两个物体特征间的相关性可以表达为:

其中 和 [公式] 是对于原特征的不同变换,其变换矩阵的维度为 d x d 。

通过学习变换矩阵的参数,作者希望学习到同一个物体不同状态的相关性,以及不同物体间的关系。

B、Spatial-Temporal Graph

为了让图能学到时空特性,即不同物体在顺序连续帧间的空间关系,作者对 帧t 和 帧t+1 里的所有物体区域计算IoU,单向进行映射 t->t+1,然后把 IoU 的值赋给节点间的edge,最后对同一个节点的所有edge进行归一化。上述就形成了 spatial-temporal forward graph;为了丰富结构化信息,按照同样的方式对 帧t 和 帧t-1 也进行映射,形成 backward graph。

实验结果

Charades数据集上实验结果

可见 Non-local + I3D + GCN 比 I3D baseline性能提升很大,虽然运算量增加了很多~

------------------------------------------------------------------------------

SlowFastNet [3]

FAIR Kaiming 指导的工作,超参对比实验非常丰富,集群GPU多就是猛,高校怎么玩得过?

文章致力于探索如何构造 轻量化的不同时间分辨率双流网络,使其通用于快速及慢速动作。正如之前文章 浅谈动作识别TSN, TRN, ECO 最后探讨的问题1,部分动作特别慢 (比如摇手转头) ,而另外一部分动作特别快 (比如 jumping) ,如果都用同一个时间分辨率的输入,同一套时空卷积,出来结果泛化能力就有待提高。

OK,接着来看看文中的网络框架

SlowFast Net 架构图

网络很简单,同模态同空间分辨率不同时间分辨率的双流网络,SlowPathway 主要提取类别的颜色,纹理,光照变化相关的语义特征,而 FastPathway 则提取 Fast motion 特征。为了使网络轻量且特征维度一致,FastPathway网络很窄,则同一个stage的channel数仅为SlowPathway的八分之一。

双流交互

由于 FastPathway 和 SlowPathway 在相同stage出来的特征维度不一致,文中探讨了三种 lateral connection 特征尺寸匹配方式:

假定 feature shape 在 SlowPathway 中为  ,在 FastPathway 中为 .Time-to-channel:直接reshape and transpose 成[公式]

2. Time-stride-sampling:直接对FastPathway的时间维度下采样,成 [公式]

3. Time-stride convolution:对FastPathway进行5x1x1的3D卷积,成 [公式]

最后通过实验发现,Time-stride convolution 的特征尺寸匹配效果最好,特征融合使用concat,且双向与单向 (只由FastPathway连向SlowPathway) 连接的效果差不多。

实验结果

Kinectics-600 实验结果

这是什么水平?在时间复杂度与 轻量级的S3D-G 相当的情况下,性能比其还要好几个点~~

-------------------------------------------------------------------------------

Long-Term Feature Banks(LFB) [4]

同为FAIR Kaiming 指导的工作,文章的开头很有趣,给出了下面一个 only 4 seconds 的 video clip,让我们猜视频里的人在干什么?

很明显,这不好回答,因为 short-term clip 不好表达整个video的内容,这也是当前基于3D卷积的时空网络遇到的瓶颈问题:GPU memory有限,即使在sparse sampling的前提下(当然你也可以极限去sampling,不过会丢失太多时间信息)

要回答上图的问题,我们需要更长的视频片段,如下图:

可以知道这是个音乐会,人们都在听音乐。故怎么实现 Long-term Feature Bank呢?

来一睹算法框架图:

算法流程如下:

1. 首先将long-term视频分成short-term clips,对每个clip都进行3D CNN特征提取,然后RPN物体区域ROIAlign特征提取,每个clip就对应各自的 Short-term features S;接着将当前clip前后局部时间域里的多个short-term S串联起来,组成 long-term feature bank L

2. 为了找到 short-term 与 long-term 间的关系,将当前clip的 short-term S 与 long-term L共同输入 Feature bank operator(FBO),这个FBO可以由多种形式组成,作者发现使用类似non-local的形式来交互效果最好:

Modified non-local in FBO

3. 最后将FBO输出的特征与当前clip short-term S进行 concat,送进分类器

实验结果

如上图标黄线Highlight所示,在相同backbone情况下,LFB 性能比 I3D-GCN 要高3个点左右~~

---------------------------------------------------------------------------

总结与展望:

上面几个文章从不同角度来探索视频理解识别存在的一些发展方向,还是很有参考意义。虽然像GCN中的关系描述很粗糙,且整个网络运算量巨大;SlowFast Net中的时间分辨率双流过于人为粗糙,能真正理解不同帧率不同快慢的动作,自适应调整网络就更好了;LFB中找短时长时的关系就更加粗暴了,也许你已经想到了更好的方法去整合 long-short term, fast & slow~~

 

Reference:

[1] Saining Xie, Rethinking Spatiotemporal Feature Learning: Speed-Accuracy Trade-offs in Video Classification, ECCV2018

[2] Xiaolong Wang, Videos as Space-Time Region Graphs,ECCV2018

[3] FAIR, SlowFast Networks for Video Recognition,2018

[4] FAIR, Long-Term Feature Banks for Detailed Video Understanding,2018

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值