[论文复现]TPN 论文心得
发布于2020-08 浏览:4756 回复:2
1
收藏

一、引入了一个视觉速率“visual tempo”的概念。:

visual tempo:做动作的节奏/速率。如下图

intra class:在同一类型,不同样本中速率不同。
inter class:不同类型类型样本的速率不同。
不同行为,tempo的变化程度不同:所有的剪羊毛样本都差不多速率,不同的“后空翻”速率差别很大。
 

二、TPN模块提出初衷:

这只是一个Feature层面的SLow Fast的工作,注意是“一个”(下面解释为什么),这样的化输入的frame rate就是固定的了,比如8frame或者16frame这样的。

为什么要强调一个呢?

 

首先:以前用于提取 visual tempo 的方法主要是通过不同帧率获取原始帧,构建 input-level frame pyramid。

基本流程就如SlowFast,不同速率的样本通过不同的backbone处理,然后做特征融合,最后用于行为识别。
这种方法对算力不友好,并且事先去定义不同的tempo也是不显示的(M个动作就有n种tempo(节奏),那动不动几百种的动作类别的难道我们要去定义M*N的分支吗?这显然是不现实的)。
希望能有 feature-level的特征提取方法(感觉有点类似于检测里的FPN),既能提取visual tempo,又能节约性能。
常见的C3D这样的方法经常堆叠一些列的时序卷积,这样子随着网络层数的增加,时序感受野也随之增大,作为结果呢,单一model中不同深度的feature就已经有了一定的fast-tempo或者slow-tempo了,那如此来说在去multi-branches是不是就显得有点多余

 

三、TPN网络结构梳理

提出了一个即插即用的模块 Temporal Pyramid Network

灵感来源:同一模型不同深度的网络都已经提取了不同tempo的特征。详细点说,由于视频数据的特征图一般尺寸为 BATCH_SIZE, T, C, H, W,那么不同的T就代表了不同的帧率。
Collection of Hierarchical Features
方法一:没有FPN,获取一个特征图,以特征图中的T通道作为基础,按照不同“帧率”选择BATCH_SIZE, C, H, W特征图。与下图展示不同。
方法二:有FPN,根据不同层特征图拥有不同的通道T,作为不同帧率作为后续输入。
Spatial Semantic Modulation:大概意思是,从backbone获取的不同深度的空间语义特征不一致(猜测就是C, T, H, W尺寸不一致,具体要看源码),通过卷积操作设置为相同尺寸。如下图中,这一层的结果的尺寸完全相同。
Temporal Rate Modulation:就是获取不同帧率的特征图。这一步应该就是所谓的。
Information Flow:特征融合
四、正文部分

首先映入我眼帘的依据就是第一句:
The visual tempo of an action instance is one of the key factors for recognizing it, especially when other factors are ambiguous.
没错,作者的意思是visual tempo可以区分那些模棱两可动作(?由于视频通常采用隔帧采样进行特征提取,所以不同间隔采样,对不同速度的动作语义特征的提取尤为关键, 比如走路,慢跑以及跑步这样的非常像的)的重要因素

接着,作者说之前的对visual tempo进行获取的方案主要就是利用frame pyramid进行的,具体而言就是输入的frame rate是pre-defined的,并且每种不同的rate对应一个特殊的network来处理,最典型的例子就是SlowFast了,这样的弊端就是需要极大的运算量,尤其当frame rate不止一种的时候。

所以这篇TPN就出现了,如图,



可以看出来整个结构就是这五个框,核心就是中间的三个框,然后为了解决Slow-Fast那种input frame multi-rate的问题,这里是利用不同的feature map进行的。这样整个网络的输入就还是一个frame rate的。然后取不同深度的feature map,也就是第一个框Bacbone中的主要工作。

1. Backbone:

看作是特征提取器把,就是对不同层的特征进行提取,一般有两种:
(1)第一种本文称之为single-depth pyramid,这种就是对特定层的feature map进行temporal dimension上的分级划分,比如有100个channel, 那么就10, 20, 30, 40这样划分出四组,那这个single depth的金字塔就有四层。这样做的缺陷就是,无论你怎么划分金字塔,你dev知识来自于一个层的feature map,并没有什么有冲击性的东西,就好比你选了100个50岁的人,无论你怎么进行组合,划分,都改变不了他们都是50岁的人的事实,大家能提供的信息也基本上就在50岁上下,所以作者又提供了第二种思路。
(2)Multi-depth pyramid:这个就和上面不一样了,在不同的深度选取feature map,然后把这些特征融合在一起(注意由于来源不一样,所以融合的是偶得格外小心,比如通道数啊,特征图大小啊什么的,总之就是得求同存异吧),这样这个新构造出来的feature map就更加有料了!再举个例子,比如还是选拔了100个人,其中10个20岁的,20个30岁的,30个50岁的,40个80岁的,这下好了,你把这么100个人放在一起,那20岁的也可以了解到80岁的一些东西,80岁的老头也能知道20岁的世界最近流行什么歌曲了。当然第二种的还需要强调的就是feature fusion,原文的最后一句也强调了要careful treatment!

2.Spatial Semantic Modulation:

也就是框架中的第二个框框,作用就是上面提到的要把这些来自不同depth的feature map进行spatial domin上的对其,或者说整合,毕竟大家都有差异,那么如何让其和平共处就显得格外重要了。这里自己有些疑惑,原文说这里空间对齐的部分是通过两个互补的方式来进行的
(1)对于除过最高一层的feature,其他层的feature map都将被施加level-specific stride的一系列卷积操作,使得其他的feature map在spatial shap以及感受野上都于最高一层保持一致,问题是这个感受野怎么一致呢?深度都不一样,感受野怎么保持一致?
(2)此外呢,还有个叫做 'auxiliary classification head’的东西被施加到这些feature map上,用来实现更强的监督,从而达到增强语言的目的,然后下面列个个Loss function,这个还没思考明白。

3. Temporal Rate Modulation

上面的spatial上的操作在空间大小是是把来自于各个深度的feature map给对其了,整合在一起了,但是在时序上还没有得到标定。所以在temporal Rate Modulation这个模块,也就是框架图中第三个框框里面,对时序rate进行整合。
原文说之前的SlowFast这样的方法因为输入的是不同rate的frame,所以控制起来非常灵活,但是本文的话是针对不同深度的feature 进行的,所以显得有些笨拙,因此为了让这个来自于feature map的方法在时序rate上也能显得灵活一些,就引入了超参数来进行调节,我这个举个例子,比如一共用到了4层的feature,a1就是对第一层的featurezai 在经过了Spatial Semantic Modulation之后需要进行temporal sampling的参数,相应的a4就是对取的第四层feature 在经过了空间对其后的时序采样参数,这样四层的feature就又可以放在一起了!

这一部分其说说白了就是temporal 维度的sampling了吧,明天看看代码到底是不是这样的。最后就得到了四组先后经过了spatial 以及temporal整合后的feature了。

4. Information Flow of TPN

这一部就到了用上面得到的feature,前面的步骤可以说是如何进行数据的获取,后面的步骤就是怎么用!
两个basic的down/up-sampling operation
(注意这里都是仅在temporal dimension进行的!)
(1)Top-down

(2)Bottom-up

然后通过这两个basic的操作又可以构成两个复杂一点的
(1) Cascade:先top-down后bottom-up

(2) Parrallel:把两个基础的操作同时使用

 

5.Final Prediction

这个就是对各个level整合信息后的(包括了空间时间的两个Modulation以及information flow)feature 的rescale和拼接。

6. Implementation

(1)3D的TPN是在SlowFast工作上进行的;
(2)2D的TPN实在2D ResNet上进行的;
其中呢,主要在利用res2, res3, res4以及res5四个stage output出来的feature map来进行TPN的构建,且上述相应的地方都对feature map在spatial上进行了4,8,16以及32倍的下采样

五、总结

TPN时间金字塔网络的概述,大概就是时间维度不变的3d resnet,再对不同层的输出进行空间维度对齐,再对这些对齐后的特征采用不同帧采样(因为不同层输出的时间维度不变),再进行对这些特征的融合后进行分类;具体和slowfast的概念相似,slowfast只有两个网络对应不同帧频,而TPN想要在不增加网络(计算量)的情况下融合更多的帧频的特征,但是TPN融合的一个模型各个层不同帧频的特征

 

收藏
点赞
1
个赞
共2条回复 最后由用户已被禁言回复于2022-03
#3adjklld回复于2020-08

您好,可以分享代码吗

0
#2wangwei8638回复于2020-08

支持

0
快速回复
TOP
切换版块