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的优势体现在:
(1)提供了一个有效的机制来建模活动的时间结构,从而区分完整和不完整的proposal;
(2)可以以端到端的方式有效地学习,并且一旦训练完毕,就可以对时间结构进行快速推测;
(3)该方法在主流数据集(THUMOS14和ActivityNet)上实现了卓越的检测性能
SSN框架示意图如下图2所示:
如图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 个片段来近似密集时间的金字塔池。
考虑一个给定的含 N N 个proposal的集合:
其中, si s i 为开始时间, ei e i 为结束时间,则持续时长 di=ei−si d i = e i − s i 。
扩展proposal为 p′i=[s′i,e′i] p i ′ = [ s i ′ , e i ′ ] ,其中, s′i=si−di2 s i ′ = s i − d i 2 , e′i=ei+di2 e i ′ = e i + d i 2 。
那么三个阶段(s,c,e)可以表示为:
即扩展后的proposal变为原来长度的2倍,前后各增加半个持续时长。
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)为:
则这个阶段的总体表征可以通过串联得到: 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级金字塔。
一个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):
训练时,关注三种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 (以对数刻度)的相对变化。
定义多任务损失函数为:
这里, Lreg L r e g 使用平滑 L1 L 1 损失函数(Smooth L1 L 1 loss function)。