[行为识别论文详解]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 在行为检测中考虑阶段结构(stage structures)的重要性

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

SSN介绍

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


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

Three-Stage结构

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

P={pi=[si,ei]}i=1N

其中,si 为开始时间,ei 为结束时间,则持续时长 di=eisi

扩展proposal为 pi=[si,ei],其中,si=sidi2ei=ei+di2

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

pis=[si,si],pic=[si,ei],pie=[ei,ei]

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

STPP

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

给定一个扩展后的proposal,其包含三个阶段 pis,pic,pie,分别计算特征向量 fis,fic,fie。具体来说,对于某个阶段,将其分为 L 级时间金字塔,每一级均可以获得一个特征向量 vt,并且每一级被均匀划分为 Bl 部分,对于第 i 部分的第 l 级(其间隔为 [sli,eli]),定义池化特征(pooled feature)为:

(1)ui(l)=1|elisli+1|t=slielivt

则这个阶段的总体表征可以通过串联得到:fic=(ui(l)|l=1,,L,i=1,,Bl)

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


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

Activity和Completeness分类器

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

K个completeness分类器(C)均为2值分类器,每个对应于一个行为类,预测基于STPP算出的全局特征 fis,fic,fie

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

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

(2)Lcls(ci,bi;pi)=logP(ci|pi)1(ci1)logP(bi|ci,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本身的时间区间。作者设计了一组位置回归器 {Rk}k=1K,每个针对一个行为类。和RCNN的设计类似,将其适应到一维时域。

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

定义多任务损失函数为:

(3)Lcls(ci,bi;pi)+λ1(ci1&bi=1)Lreg(μi,ϕi;pi)

这里,Lreg 使用平滑 L1 损失函数(Smooth L1 loss function)。