CVPR2019 action detection 动作检测论文STEP 算法学习笔记

STEP: Spatio-Temporal Progressive Learning for Video Action Detection

学习时,别忘了总是要问自己一个为什么


论文

文章: STEP: Spatio-Temporal Progressive Learning for Video Action Detection
链接:https://arxiv.org/pdf/1904.09288.pdf

简介

STEP 为 Spatio-TEmporal Progressive的缩写,本文提出了一种空间-时间渐进式检测模型,用来检测视频中的动作. 模型流程:

首先生成低精度的proposal cuboids

  1. 在空间方向上,根据前一步step预测出的proposal不断的refine精确,得到高精确的proposal
  2. 在时间方向上,逐步扩展更多的帧,从而包含更多的时序相关的信息

STEP模型可以改善spatial displacement等问题,并使结果得到较大提升:
使用11 和34个初始化proposal,经过3步渐进式迭代,在UCF101 和AVA数据集上分别取得 mAP 75% 和18.6%的成绩。

方法
1. 主体

STEP主要有两部分组成:spatial refinement 和temporal extension.

  • 空间上的精确化:从少量不精确的proposal中逐渐迭代地进行优化来获得更精确的目标分类与位置回归.前一层得到的输出(bbox位置)将作为后一层的输proposal。
  • 时间上的扩充:此步骤集中于通过扩充视频片段的时间长度来提高分类的准确度. (由于直接放入更长时间的视频片段并不高效,并且还会引入spatial displacement 影响结果)因此通过自适应的方式延长图片序列长度。
2. spatial refinement

此网络并不是一步到位,而是通过不断的渐进式的优化. 首先用backbone 网络(如vgg ,I3d等)提取K个frame视频片段 I t I_t It的特征值。这个渐进式学习网络首先初始化 M M M个proposal cuboids B 0 = { b i 0 } i = 1 M B^0 = \{b^0_{i}\}^M_{i=1} B0={bi0}i=1M, b i 0 ∈ R K × 4 b^0_i\in\R^{K\times4} bi0RK×4,然后再渐进式的提高,初始化的proposal和algorithm 如下:

简单的理解上面的algorithm,就是先 extend(在时序方向拓宽),再refine(在空间方向上精细化).

所有的proposal通过简单的贪心算法进行更新,每一个proposal被模型输出的得分最高的回归位置所代替:
b i s ≐ l i s ( c ∗ ) , c ∗ = a r g max ⁡ c p i s ( c ) b^s_i\doteq l^s_i(c^*), c^* = arg\max_c p^s_i(c) bislis(c),c=argcmaxpis(c) c为动作类别, p i s ∈ R ( c + 1 ) p^s_i\in \R^{(c+1)} pisR(c+1)为第 i i ith个proposal在C 类的分布概率, l i s ∈ R K × 4 × C l^s_i\in \R^{K\times4\times C} lisRK×4×C为参数化的坐标位置, ≐ \doteq 可以理解为解析参数化的坐标.

3.temporal extension

视频的时序信息对与动作的判定至关重要,为了可以更好的利用较长的时间序列信息,此结构对输入序列在时序上做了进一步扩充。但是拓宽时序会带来所谓的spatial displacement问题,因为这样夹带的差精度的位置预测会有更大的空间偏移,从而影响最终结果. 于是本方法通过逐步地(progressively)并适应性的(adaptively)扩展时序,试图减轻 这种位置偏差带来的影响.从第二步开始,模型把当前的tubelet同时扩展到邻近的两个clips上,即当步数 1 ⩽ s &lt; S m a x 1\leqslant s &lt;S_{max} 1s<Smax, 长度为 K s K^s Ks的proposal将被扩展为 B ^ s = B − 1 s ∘ B s ∘ B + 1 s \hat{B}^s = B^s_{-1}\circ B^s\circ B^s_{+1} B^s=B1sBsB+1s,长度将变为 K S + 2 K K^S+2K KS+2K,(那么可见,拓展的clip长度应该为k). 并且在时序上的扩展会根据动作变化自适应的调整.这里用了两种方法来实现对扩展后时序上的proposal的预测:

  1. Extrapolation
    默认空间上的动作变化满足线性规律,那么推测相应的扩展后frame的proposal则可用外插法进行扩展:
    B + 1 , k s = B K s s + k K − 1 ( B K s s − B K S − K + 1 s ) B^s_{+1,k}=B^s_{K^s} + \frac{k}{K-1}(B^s_{K^s}-B^s_{K^S-K+1}) B+1,ks=BKss+K1k(BKssBKSK+1s)

  2. Anticipation
    通过位置预测,例如训练一个额外的回归分支通过预测当前片段中动作的位置来推测邻近视频片段中的位置.这里他们把此问题当做一个残差学习问题(默认两个邻近片段中的差值较小).x代表的前馈的特征,则可得到回归 L s = f ( x ) L^s = f(x) Ls=f(x),推测的位置:
    L − 1 s = L s + f − s ( x ) , L + 1 s = L s + f + 1 ( x ) L^s_{-1}=L^s+f_{-s}(x), L^s_{+1}= L^s+f_{+1}(x) L1s=Ls+fs(x),L+1s=Ls+f+1(x)

4.以下为STEP的双分支结构:

左边为网络结构,右边为渐进式学习的流程框架, S为spatial refinement, T为temporal extension, P 为classification, L为Localization, L0为 initial proposals, 简单明了.网络的两个分支起到互补作用,首先把通过backbone提取的卷积特征与初步的低精度的proposal送到网络中,通过ROI pooling层然后把提取的 regional features通过global branch中,获得全局特征信息,这些全局信息被用来做进一步的分类。在local branch中,全局branch通过skip把相应的regional 信息与局部的local特征相融合,用来回归位置信息。
loss function 则为multi-task loss:
L S = ∑ i ∈ { p s , N s } L c l s ( p i s , u i ) + λ ∑ i ∈ p s L l o c ( l i s ( u i ) , v i ) L^S = \sum_{i\in\{p^s,N^s\}}L_{cls}(p^s_i,u_i)+\lambda\sum_{i\in p^s} L_{loc}(l^s_i(u_i),v_i) LS=i{ps,Ns}Lcls(pis,ui)+λipsLloc(lis(ui),vi)

5. 结果:
思考

1. 为什么弄个双分支?
作者有可能希望通过不同的分支学习到互补的信息. 对于动作分类来说,模型需要既包含空间信息也包含时间信息的语义特征. 而对于回归定位,更多的则是空间上的信息. 因此,他们的这个双分支网络包含一个“global branch”来获取全局的时-空信息,从而着重于动作分类方面,另一个“local branch”则需要空间的浅信息来获得更好的proposal(也就是前一个的bbox)位置回归
2. 初衷
本文的初衷很简单,通过逐渐的学习精细化预测位置,通过扩展时序长度增加有用信息. 其中为了解决扩展时序中遇到的proposal位置错位的问题提出了自己的两个解决方案.在此基础上构建了网络框架. 其实我认为本文抢眼的地方在于对实验的精细的分析.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值