SSN—《Temporal Action Detection with Structured Segment Networks》概述
《Temporal Action Detection with Structured Segment Networks》概述
引言:
最近阅读了本篇发表在ICCV’17上关于Action Detection的论文,之前阅读的大部分都是Action Recognition或者是Activity Recognition的论文,两者的区别在于前者不仅要识别动作的类别,还需要知道动作的起始帧和结束帧,以下是对本篇论文的大体概述,如有错误的地方,欢迎留言指正。
一、主要贡献:
- 提出了一种新的模型结构 SSNSSNSSN (Structured Segment Networks),通过一个结构化的时间金字塔对每一个动作示例的时间结构进行建模,从而很好的进行动作分类以及时间点的确定;
- 采用了 TAGTAGTAG(Temporal Actionness Grouping)的策略,目的在于生成高质量的Action Proposals;
- 采用稀疏片段采样策略 (Sparse Snippet Sampling Strategy),克服了长期建模的计算问题,实现了对SSN的高效端到端训练;(不是作者提出的,只是作者采用了这种方式,加速训练)
二、模型架构以及相关的细节:
2.1. 现存方案的问题以及SSN的优势:
问题:
- 对于现有的方法,精确时间定位的一个主要挑战是在所提出的时间区域中存在大量不完整的动作片段。传统的基于片断的分类器依赖于有区别的动作片断,这也会存在于这些不完整的proposals中,这就使得它们很难与有效的检测区分开来;
- 现今的结构对时间动作的检测仍然并不普遍且不成功,即使考虑了时间结构,也通常被限制在一个短的Clips中;
- 视频中的海量可视数据限制了现有模型结构以端到端方式建模长期依赖关系的能力;
- 且现有的模型结构既不提供活动中不同阶段(例如,开始和结束)的显式建模,也不提供评估动作完整性的机制,通常这些对于准确的动作检测至关重要;
SSN的优势:
为突破以上限制,作者提出了一种有效的时间动作检测技术SSN,其具有以下的优势:
SSN提供了一种有效的机制来对活动的时间结构进行建模,从而具有区分完整和不完整proposals的能力;
SSN可以以端到端的方式有效地学习(在大型视频数据集上,例如ActivityNet,5到15小时),并且一旦训练,就可以执行时间结构的快速推理;
SSN在标准基准数据集上取得了较好的检测性能,为时间动作检测开辟了新的研究领域。
下图展示了SSN与通常的动作检测方法的比较,SSN能够很好的只在动作发生的过程中给予较高的响应。
2.2. SSN模型结构简介:
下图给出了SSN整体的模型结构,图中文字给出了一些细节描述:
大致的关键流程为:
首先,该框架依赖于一种 ProposalProposalProposal methodmethodmethod(TAG)来产生一组不同持续时间的 temporaltemporaltemporal proposalsproposalsproposals,其中每个提案都有开始时间和结束时间;
对于每个方案,结构化时间金字塔池(STPP)通过以下步骤来执行:
- 将方案分成三个阶段(stages):开始,过程,结束;
- 为每个阶段建立时间金字塔表示;
- 通过连接阶段级(stage-level)表示来构建整个方案(proposal)的全局表示。最后,将识别活动类别和评估完整性的两个分类器分别应用于STPP获得的表示,并将它们的预测组合起来,形成一个用类别标签标记的完整实例子集。其他的被认为属于背景或不完整的提案(proposals)将被过滤掉。
2.2.1. Three-Stage Structures
作为输入的一个视频能被认为是 TTT snippetssnippetssnippets 的序列,表示为(St)t=1T(S_t)_{t=1}^T(St)t=1T,对于一个 snippetsnippetsnippet 而言,其包含几个连续的帧,这些帧是RGB图像和光流堆栈的组合(作者用 twotwotwo-streamstreamstream 的方法来提取特征)。考虑一组给定的 NNN 个proposalproposalproposal 的集合:
P={pi=[si,ei]}i=1NP = \{p_i = [s_i, e_i]\}^N_{i=1}P={pi=[si,ei]}i=1N
其中,sis_isi 为开始时间,eie_iei 为结束时间,则 pip_ipi 持续时间为 di=ei−did_i = e_i - d_idi=ei−di(这段时间实际就如绿色框中显示的那样)
作者将绿框扩展为黄框,则拓展的 proposalproposalproposal 为 p′=[si′,ei′]p'= [s'_i,e'_i]p′=[si′,ei′],其中:
si′=si−di2,ei′=ei+di2s'_i = s_i−\frac{d_i}{2},e'_i = e_i + \frac{d_i}{2}si′=si−2di,ei′=ei+2di
我们在将拓展的 proposalproposalproposal p′p'p′ 分为连续的三个间隔( intervals),它们分为对应于 startingstartingstarting 、coursecoursecourse 以及 endingendingending阶段:
pis=[si′,si],pic=[si,ei],pie=[ei,ei′]p^s_i=[s'_i,s_i],p^c_i=[s_i,e_i],p^e_i=[e_i,e'_i]pis=[si′,si],pic=[si,ei],pie=[ei,ei′]
扩展后的 proposalproposalproposal 变为原来长度的2倍,前后各增加半个持续时长。
2.2.2. Structured Temporal Pyramid Pooling (STPP)
STPP的主要作用就是构建金字塔,提取特征为每一个 proposalproposalproposal 导出一个全局表示
对于一个扩展后的 proposalproposalproposal,pi′p'_ipi′被分为三个阶段 pis,pic,piep^s_i,p^c_i,p^e_ipis,pic,pie,首先通过时间金字塔池化分别计算阶段范围(stage-wise)的特征向量 fis,fic,fief^s_i,f^c_i,f^e_ifis,fic,fie。更为具体来说,对于某个阶段 [s,e][s, e][s,e],其包含多个 snippetssnippetssnippets ,对于每一个 snippetsnippetsnippet我们可以获得一个特向量 vtv_tvt (就如上图中的CNN,作者使用两流法来提取特征vtv_tvt)。基于这些特征,作者构建了一个 LLL-levellevellevel 的金字塔,并且每一级均匀划分 intervalintervalinterval (例如开始阶段 [si′,si][s'_i,s_i][si′,si])为 BlB_lBl 部分,对于第 lll 层的第 iii 部分,其间隔为[sli,eli][s_{li},e_{li}][sli,eli],我们可以导出一个集合特征,如下所示:
ui(l)=1∣eli−sli+1∣∑t=slielivt(1)u^{(l)}_i = \frac{1}{|e_{li}-s_{li}+1|} \sum_{t=s_{li}}^{e_{li}}{v_t} \tag {1}ui(l)=∣eli−sli+1∣1t=sli∑elivt(1)
然后,这个阶段(stage)的整体表示可以通过将所有级别(level)的所有部分的集合特征连接起来获得:
fic=(uil∣l=1,…,L,i=1,…,Bl)(2)f^c_i=(u^{l}_i|l=1,…,L,i=1,…,B_l) \tag{2}fic=(uil∣l=1,…,L,i=1,…,Bl)(2)
对于coursecoursecourse阶段,采用2级金字塔:L=2,B1=1,B2=2L=2,B_1=1,B_2=2L=2,B1=1,B2=2;对于 startingstartingstarting 和 endingendingending 阶段,采用1级金字塔。
2.2.3. Activity and Completeness Classifiers
在STPP整合表示了一个 proposalproposalproposal的描述之上是两个分类器:动作分类器,以及完整性分类器;
Activity classifer:包含一个分类器,它仅输入 coursecoursecourse 的特征,将 proposalproposalproposal 分为 K+1 个类别(K 类动作,1 个背景类),预测基于阶段级特征 ficf^c_ific。
Completeness classifiers :包含 K 个二分类器,每个分类器对应一个活动类。这 CkC_kCk 个活动类将基于 fis,fic,fief^s_i,f^c_i,f^e_ifis,fic,fie 来预测一个 proposalproposalproposal 是否捕捉了第k个活动的完整示例。
两种分类器部署在高级特征之上,对于一个 proposal:piproposal :p_iproposal:pi,动作分类器给出一个经过softmaxsoftmaxsoftmax后的向量,条件分布表示为 P(ci|pi),其中 cic_ici 表示类别。对于每个类别 K,对应的 CkC_kCk 分类器给出一个概率值,分布为:P(bi∣ci,bi)P(b_i|c_i,b_i)P(bi∣ci,bi),bib_ibi 指示 pip_ipi 是否是完整的活动示例。
定义统一分类损失(unified classification loss):
Lcls(ci,bi;pi)=−logP(ci∣pi)−1(ci≥1)logP(bi∣ci,pi)(3)L_{cls}(c_i,b_i;pi)=−logP(c_i|p_i)−1_{(c_i≥1)}logP(b_i|c_i,p_i) \tag{3}Lcls(ci,bi;pi)=−logP(ci∣pi)−1(ci≥1)logP(bi∣ci,pi)(3)
训练时,关注三种 proposalproposalproposal 样本:
(1)positive proposals(ci>0,bi=1c_i>0,b_i=1ci>0,bi=1):与最接近的groundtruthgroundtruthgroundtruth的IoUIoUIoU至少为0.7;
(2)background proposals(ci=0c_i=0ci=0):不与任何groundtruthgroundtruthgroundtruth重叠;
(3)incomplete proposals(ci>0,bi=0c_i>0,b_i=0ci>0,bi=0):其80%包含在groundtruthgroundtruthgroundtruth中,但IoUIoUIoU小于0.3(仅仅包含完整示例的一小部a分)。
2.2.4. Location Regression and Multi-Task Loss
利用全局特征中的结构化信息,我们不仅可以进行分类预测,而且可以通过位置回归来细化方案本身的时间间隔,这个过程类似于 RCNN 对boundingboundingbounding boxboxbox 的回归操作。文章中对训练样本中正类 proposalproposalproposal, 以其最接近的 groundtruthgroundtruthgroundtruth 为目标对该 proposalproposalproposal 的中心和长度进行回归。文中采用多任务学习策略将分类和回归两个部分整合为一个统一的损失函数:
Lcls(ci,bi;pi)+λ⋅1(ci≥1≥bi=1)Lreg(μi,ϕi;pi)(4)L_{cls}(c_i,b_i;p_i) + \lambda \cdot 1 _{(c_i \geq 1 \geq b_i=1) } L_{reg}(μ_i,\phi_i;p_i) \tag{4}Lcls(ci,bi;pi)+λ⋅1(ci≥1≥bi=1)Lreg(μi,ϕi;pi)(4)
这里,回归区间中心位置(interval center)μiμ_iμi 和跨度(span)ϕi\phi_iϕi(以对数刻度)的相对变化,LregL_{reg}Lreg 使用平滑 L1L1L1 损失函数(Smooth L1L1L1 loss function)。
2.2.5. Efficient Training and Inference with SSN
作者为了减少计算代价以及可以端到端的训练模型,采取了两种方法如下:
Training with sparse sampling:具体地说,给定一个扩展的 proposalproposalproposal pi′p'_ipi′,将其平均分为 L=9L=9L=9 个segmentssegmentssegments,从每个segmentssegmentssegments中随机抽取一个snippetsnippetsnippet。通过这种方式,确定了需要计算的特征数量,而不管 proposalproposalproposal 的时间有多长,都能够有效地降低了计算成本,特别是对于长期结构的建模。
Inference with reordered computation:在测试中,作者选取固定间隔为6帧对视频进行采样(snippets),并在此基础上构造时间金字塔。
2.2.6. Temporal Region Proposals
在SSN网络模型中,作者设计了一种有效的提议方法(proposalsproposalsproposals methodmethodmethod),称为时间动作分组。(TAG:temporal actionness grouping)该方法首次在Actionness estimation using hybrid fully convolutional networks_CVPR’16上提出,这里就不在赘述,知道这个方法的作用就行,如果想详细了解可以查阅相关论文。
后记:
文章之后就是实验细节以及数据对比,如果想仔细阅读请查阅相关论文,最后这篇文章花了我较长的时间整理,如果对您有所帮助,请随手点个赞,以资鼓励【doge】。
SSN—《Temporal Action Detection with Structured Segment Networks》概述相关推荐
- [行为识别论文详解]SSN(Temporal Action Detection with Structured Segment Networks)
SSN发表在ICCV 2017上,题目为:<Temporal Action Detection with Structured Segment Networks>,作者是Yue Zhao, ...
- STPP[时间金字塔池化]||SSN(Temporal Action Detection with Structured Segment Networks)时间动作定位
看完SSN网络其中一个重点就是文章所提出的STPP结构.文章或者有些解读对于我们这种初学者来说可能有一点点理解难度,特别是对于L和Bl这些参数,我看到有些网上的解释写的有些歧义.但实际上只要结合SPP ...
- SSN:Temporal Action Detection with Structured Segment Networks
原文链接: Temporal Action Detection with Structured Segment Networks 本文只是对原文的简单翻译,不对实验过程分析,如有不准确的地方,欢迎指教 ...
- PBRNet:Progressive Boundary Refinement Network for Temporal Action Detection (AAAI 2020)
PBRNet:Progressive Boundary Refinement Network for Temporal Action Detection AAAI 2020 中国科学技术大学 欢迎感兴 ...
- G-TAD: Sub-Graph Localization for Temporal Action Detection
论文下载链接:https://arxiv.org/pdf/1911.11462.pdf 1 摘要 对于动作检测而言,视频的文本信息是十分重要的线索之一,但是当前的工作主要集中于时序文本信息(tempo ...
- P-GCN:Graph Convolutional Networks for Temporal Action Localization 2019 ICCV
论文下载链接:https://arxiv.org/pdf/1911.11462.pdf 1 摘要 大多数最先进的行为定位系统都是单独处理每个动作proposal,而不是在学习过程中显式地利用它们之间的 ...
- 视频动作检测最新发展调研(Action Detection)
1 视频动作检测概述 动作检测也是目前视频理解方向的研究热点,因为该任务更加贴近生活,在监控安防中有潜在的巨大价值.但是相比于动作分类,动作检测难度更高,不仅需要定位视频中可能存在行为动作的视频段,还 ...
- 行为识别Action Detection概述及资源合集(持续更新...)
随着深度学习技术的发展,以及计算能力的进步(GPU等),现在基于视频的研究领域越来越受到重视.视频与图片最大的不同在于视频还包含了时序上的信息,此外需要的计算量通常也大很多. 这篇主要介绍Action ...
- 时序动作检测《BSN: Boundary Sensitive Network for Temporal Action Proposal Generation》
时序动作检测SSAD<Single Shot Temporal Action Detection>_程大海的博客-CSDN博客_时序动作检测 时序动作检测<BSN: Boundary ...
最新文章
- 雷军在小米直面会丢的面子,在年度演讲都找回来了
- Jmeter测试Mysql数据库-入门篇
- 2018 hncpc 部分题
- boost::get_deleter相关的测试程序
- Win32多线程编程(1) — 基础概念篇
- 最幸福的事就是吃饺子
- docker下的mysql my.ini_docker部署mysql启动失败
- PAT甲级1024 ASCII码与整数转换
- 虚拟主机金华php空间,金华虚拟主机_金华云虚机_金华主机申请_金华网站空间_爱名网(www.22.cn)...
- android 4.3版本应用使用内网,Android Studio 在内网的使用方法(离线使用gradle)
- android sdk下载慢的解决方法
- [运算放大器系列]二、电压转4 - 20MA电流电路分析
- 初学cesium时的一些笔记,过于潦草看看就好
- 五十二度系统维护光盘-驱动篇 1.16.2008
- Python爬虫自动领取满减优惠券,剁手党的福利!
- Android Jetpack 架构组件之 Room
- 《果然新鲜》电商项目(25)- 会员唯一登录
- 基于VUE的音乐播放器
- java - 锁粒度
- 刚安装好的CAD一定要做这几个优化设置