《Action Detection》- Temporal Action Detection with Structured Segment Networks(SSN)

摘要

SSN(structured segment network,结构化的段网络)通过结构化的时间金字塔对每个行为实例的时间结构进行建模。金字塔顶层有decomposed discriminative model(分解判别模型),包含两个分类器:用于分类行为(针对recognition)和确定完整性(针对localization)。集成到统一的网络中,可以以端到端的方式高效地进行训练。

为了提取高质量行为时间proposal,采用temporal actionness grouping (TAG)算法。

在THUMOS14和ActivityNet数据集上取得了state-of-the-art的结果。

代码开源在:http://yjxiong.me/others/ssn

简介

目前,精确时间定位的一大挑战就是提取的时间proposal中存在大量未完成的行为片段。作者认为,检测器需要具备识别不同阶段(stage)的能力,比如:starting, course, and ending。见下图1,上面的那个检测器未用stage structures来构建特征,当视频片段与“翻跟斗”动作类似即可产生高响应。下面的SSN检测器通过结构化时间金字塔pooling利用了stage structures(starting, course, and ending)。

在这里插入图片描述

图1 在行为检测中考虑阶段结构(stage structures)的重要性
SSN的优势体现在:
(1)提供了一个有效的机制来建模活动的时间结构,从而区分完整和不完整的proposal;
(2)可以以端到端的方式有效地学习,并且一旦训练完毕,就可以对时间结构进行快速推测;
(3)该方法在主流数据集(THUMOS14和ActivityNet)上实现了卓越的检测性能

SSN介绍

SSN框架示意图如下图2所示:

在这里插入图片描述

图2 SSN框架概览

如图2,候选区域用绿色方框圈出,为了数据增强,需要扩展为黄色方框区域。对于每个proposal,结构时间金字塔池化(structured temporal pyramid pooling ,STPP)过程:
(1)扩展后的proposal被分为starting(橙色)、course(绿色)和ending(蓝色)三个阶段,在course阶段还构建了一个具有两个子部分的额外层次的金字塔。
(2)来自CNN的特征集中在这五个部分中,并连接起来形成全局区域表征。
(3)activity分类器和completeness分类器处理区域表征来获得行为概率和完成程度概率。这两个概率联合决定了一个特定的proposal是否为positive instance。
稀疏片段采样策略(sparse snippet sampling strategy):在训练期间,从均匀分割的片段中稀疏地采样 L=9L=9 个片段来近似密集时间的金字塔池。

Three-Stage结构

考虑一个给定的含   N \ N  N个proposal的集合:
P = p i = [ s i , e i ] i = 1 N P={p_i=[s_i,e_i]}_{i=1}^N P=pi=[si,ei]i=1N
其中,   s i \ s_i  si 为开始时间,   e i \ e_i  ei 为结束时间,则持续时长   d i = e i − s i \ d_i=e_i−s_i  di=eisi

扩展proposal为   p i ′ = [ s i ′ , e i ′ ] \ p_i'=[s_i',e_i']  pi=[si,ei],其中,   s i ′ = s i − d i 2 , e i ′ = e i + d i 2 \ s_i'=s_i−\frac {d_i} {2},e_i'=e_i+\frac {d_i} {2}  si=si2di,ei=ei+2di

那么三个阶段(s,c,e)可以表示为:
p i s = [ s i ′ , s i ] , p i c = [ s i , e i ] , p i e = [ e i , e i ′ ] p_{i}^{s}=\left[s_{i}^{\prime}, s_{i}\right], \quad p_{i}^{c}=\left[s_{i}, e_{i}\right], \quad p_{i}^{e}=\left[e_{i}, e_{i}^{\prime}\right] pis=[si,si],pic=[si,ei],pie=[ei,ei]

即扩展后的proposal变为原来长度的2倍,前后各增加半个持续时长。

STPP

STPP(Structured Temporal Pyramid Pooling)灵感源于物体识别和场景分类中的spatial pyramid pooling。

给定一个扩展后的proposal,其包含三个阶段   p i s , p i c , p i e \ p_{i}^{s}, p_{i}^{c}, p_{i}^{e}  pis,pic,pie,分别计算特征向量   f i s , f i c , f i e \ f_{i}^{s}, f_{i}^{c}, f_{i}^{e}  fis,fic,fie。具体来说,对于某个阶段,将其分为   L \ L  L 级时间金字塔,每一级均可以获得一个特征向量   v t \ v_t  vt,并且每一级被均匀划分为   B l \ B_l  Bl 部分,对于第 i 部分的第 l 级(其间隔为   [ s l i , e l i ] \ [s_{li},e_{li}]  [sli,eli]),定义**池化特征(pooled feature)**为:
u i ( l ) = 1 ∣ e l i − s l i + 1 ∣ ∑ t = s l i e l i v t u_{i}^{(l)}=\frac{1}{\left|e_{l i}-s_{l i}+1\right|} \sum_{t=s l i}^{e l i} v_{t} ui(l)=elisli+11t=slielivt
则这个阶段的总体表征可以通过串联得到:   f i c = ( u i ( l ) ∣ l = 1 , … , L , i = 1 , … , B l ) \ f_i^c=(u_i^{(l)}|l=1,…,L,i=1,…,B_l)  fic=(ui(l)l=1,,L,i=1,,Bl)
对于course阶段,采用2级金字塔:L=2,B1=1,B2=2;对于starting和ending阶段,采用1级金字塔。

Activity和Completeness分类器

**一个activity分类器(A)**可以将输入proposal分为 K+1类(K 类动作,1 个背景类),仅在course阶段中进行分类,预测基于阶段级特征   f i c \ f_i^c  fic

K个completeness分类器(C)均为2值分类器,每个对应于一个行为类,预测基于STPP算出的全局特征   f i s , f i c , f i e \ f^s_i,f^c_i,f^e_i  fis,fic,fie

两种分类器部署在高级特征之上。对于一个proposal:   p i \ p_i  pi,A分类器给出一个经过softmax后的向量,条件分布表示为   P ( c i ∣ p i ) \ P(c_i|p_i)  P(cipi),其中 cici 表示类别。对于每个类别 k,对应的 Ck分类器给出一个概率值,分布为:P(bi|ci,bi),bi指示是否完成。

定义统一分类损失(unified classification loss):
L c l s ( c i , b i ; p i ) = − log ⁡ P ( c i ∣ p i ) − 1 ( c i ≥ 1 ) log ⁡ P ( b i ∣ c i , p i ) L_{c l s}\left(c_{i}, b_{i} ; p_{i}\right)=-\log P\left(c_{i} \mid p_{i}\right)-1_{\left(c_{i} \geq 1\right)} \log P\left(b_{i} \mid c_{i}, p_{i}\right) Lcls(ci,bi;pi)=logP(cipi)1(ci1)logP(bici,pi)
训练时,关注三种proposal样本:
(1)positive proposals(ci>0,bi=1):与最接近的groundtruth的IOU至少为0.7
(2)background proposals(ci=0):不与任何groundtruth重叠
(3)incomplete proposals(ci>0,bi=0)):其80%包含在groundtruth中,但IOU小于0.3,仅仅包含gt的一小部分

位置回归和多任务损失

通过位置回归来优化proposal本身的时间区间。作者设计了一组位置回归器   { R k } k = 1 K \ \left\{R_{k}\right\}_{k=1}^{K}  {Rk}k=1K ,每个针对一个行为类。和RCNN的设计类似,将其适应到一维时域。

具体来说,对于一个positive proposals:   p i \ p_i  pi,回归区间中心位置(interval center)μi和跨度(span)ϕi(以对数刻度)的相对变化。

定义多任务损失函数为:
L c l s ( c i , b i ; p i ) + λ ⋅ 1 ( c i ≥ 1 & b i = 1 ) L reg  ( μ i , ϕ i ; p i ) L_{c l s}\left(c_{i}, b_{i} ; p_{i}\right)+\lambda \cdot 1_{\left(c_{i} \geq 1 \& b_{i=1}\right)} L_{\text {reg }}\left(\mu_{i}, \phi_{i} ; p_{i}\right) Lcls(ci,bi;pi)+λ1(ci1&bi=1)Lreg (μi,ϕi;pi)
这里,   L r e g \ L_{reg}  Lreg 使用平滑   L 1 \ L_1  L1 损失函数(Smooth   L 1 \ L_1  L1 loss function)

参考:https://blog.csdn.net/zhang_can/article/details/79782387

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值