[行为识别论文详解]SSN(Temporal Action Detection with Structured Segment Networks)

SSN发表在ICCV 2017上,题目为:《Temporal Action Detection with Structured Segment Networks》,作者是Yue Zhao, Yuanjun Xiong, Limin Wang, Zhirong Wu, Xiaoou Tang, Dahua Lin。
 
论文下载:https://arxiv.org/pdf/1704.06228.pdf

摘要

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)。


[行为识别论文详解]SSN(Temporal Action Detection with Structured Segment Networks)_第1张图片
图1 在行为检测中考虑阶段结构(stage structures)的重要性

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

SSN介绍

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


[行为识别论文详解]SSN(Temporal Action Detection with Structured Segment Networks)_第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=9 L = 9 个片段来近似密集时间的金字塔池。

Three-Stage结构

考虑一个给定的含 N N 个proposal的集合:

P={pi=[si,ei]}Ni=1 P = { p i = [ s i , e i ] } i = 1 N

其中, si s i 为开始时间, ei e i 为结束时间,则持续时长 di=eisi d i = e i − s i

扩展proposal为 pi=[si,ei] p i ′ = [ s i ′ , e i ′ ] ,其中, si=sidi2 s i ′ = s i − d i 2 ei=ei+di2 e i ′ = e i + d i 2

那么三个阶段(s,c,e)可以表示为:

psi=[si,si],pci=[si,ei],pei=[ei,ei] p i s = [ s i ′ , s i ] , p i c = [ s i , e i ] , p i e = [ e i , e i ′ ]

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

STPP

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

给定一个扩展后的proposal,其包含三个阶段 psi,pci,pei p i s , p i c , p i e ,分别计算特征向量 fsi,fci,fei f i s , f i c , f i e 。具体来说,对于某个阶段,将其分为 L L 级时间金字塔,每一级均可以获得一个特征向量 vt v t ,并且每一级被均匀划分为 Bl B l 部分,对于第 i i 部分的第 l l 级(其间隔为 [sli,eli] [ s l i , e l i ] ),定义池化特征(pooled feature)为:

u(l)i=1|elisli+1|t=slielivt(1) (1) u i ( l ) = 1 | e l i − s l i + 1 | ∑ t = s l i e l i v t

则这个阶段的总体表征可以通过串联得到: fci=(u(l)i|l=1,,L,i=1,,Bl) f i c = ( u i ( l ) | l = 1 , … , L , i = 1 , … , B l )

对于course阶段,采用2级金字塔: L=2,B1=1,B2=2 L = 2 , B 1 = 1 , B 2 = 2 ;对于starting和ending阶段,采用1级金字塔。


[行为识别论文详解]SSN(Temporal Action Detection with Structured Segment Networks)_第3张图片
图3 分level分part示意图

Activity和Completeness分类器

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

K个completeness分类器(C)均为2值分类器,每个对应于一个行为类,预测基于STPP算出的全局特征 fsi,fci,fei f i s , f i c , f i e

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

定义统一分类损失(unified classification loss)

Lcls(ci,bi;pi)=logP(ci|pi)1(ci1)logP(bi|ci,pi)(2) (2) L c l s ( c i , b i ; p i ) = − l o g P ( c i | p i ) − 1 ( c i ≥ 1 ) l o g P ( b i | c i , p i )

训练时,关注三种proposal样本:
(1)positive proposals( ci>0,bi=1 c i > 0 , b i = 1 ):与最接近的groundtruth的IOU至少为0.7
(2)background proposals( ci=0 c i = 0 ):不与任何groundtruth重叠
(3)incomplete proposals( ci>0,bi=0 c i > 0 , b i = 0 ):其80%包含在groundtruth中,但IOU小于0.3,仅仅包含gt的一小部分

位置回归和多任务损失

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

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

定义多任务损失函数为:

Lcls(ci,bi;pi)+λ1(ci1&bi=1)Lreg(μi,ϕi;pi)(3) (3) L c l s ( c i , b i ; p i ) + λ ⋅ 1 ( c i ≥ 1 & b i = 1 ) L r e g ( μ i , ϕ i ; p i )

这里, Lreg L r e g 使用平滑 L1 L 1 损失函数(Smooth L1 L 1 loss function)。

你可能感兴趣的:(行为识别)