任务
时序行为检测主要解决两个任务
1、什么时候发生动作,即开始和结束的时间
2、每段动作是什么类别
研究难点
1、时序信息:视频理解的通用难点就是时序信息的处理;
2、边界不明确:行为检测要求做到精确的动作区间检测,而生活中一个动作的产生往往边界不是十分确定的;
3、时间跨度大:在生活中,一个行为动作往往跨度非常大。
数据集
THUMOS2014
它的训练集为UCF101数据集,验证集和测试集分别包括1010和1574个未分割的视频片段。在行为检测任务中只有20类动作的未分割视频是有时序行为片段标注的,包括200个验证集(3007个行为片段)和213个测试集视频(包含3358个行为片段)。
ActivityNet
目前最大的数据库,同样包含分类和检测两个任务。这个数据集仅提供视频的youtube链接,而不能直接下载视频,所以还需要用python中的youtube下载工具来自动下载。该数据集包含200个动作类别,20000(训练+验证+测试集)左右的视频,视频时长共计约700小时。
MEXaction2
MEXaction2数据集中包含两类动作:骑马和斗牛。特点是其中的未分割视频长度都非常长,被标注的行为片段仅占视频总长的很低比例。
2016
SCNN:Temporal Action Localization in Untrimmed Videos via Multi-stage CNNs(CVPR2016)
原文链接
多阶段网络,主要提出来一个三阶段的3D卷机网络来做动作检测。
主要包括三个部分:
1、多尺度视频片段生成。SCNN模型框架的第一步就是生成候选的视频片段,之后拿这些片段作为下一步的输入。在SCNN中采用了划窗方法产生视频片段,包括多个大小的窗口:16,32,64,128,256,512, 划窗的重叠为75%。在得到视频片段后,对其进行平均采样16帧视频,从而使得输出的segment的长度均为16。
2、多阶段SCNN。SCNN共有3个阶段:proposal,classification and localization network。三者均为结构相同的C3D network,只有最后一层全连接层根据任务不同而有不同的长度。三者的输入均为上一步得到的segment。(1)proposal network:输出为两类,即预测该segment是动作的概率及是背景的概率(action or not)。训练时将IoU大于0.7的作为正样本(动作),小于0.3的作为负样本(背景),对负样本进行采样使得正负样本比例均衡。采用softmax loss进行训练。(2)
classification Network: 输出为K+1个类别(包括背景类)的分数, 这个网络被用来初始化localization network, 仅在训练阶段使用,在测试阶段不使用。训练时同样将IoU大于0.7的作为正样本(K类动作),小于0.3的作为背景类,对背景类动作进行采样使得背景类动作的数量和K类动作数量的平均值相近。训练时同样采用softmax loss。(3)Localization Network:输出为K+1个类别(包括背景类)的分数,这个分数应该算做是该segment是某类动作的置信度分数。在训练时localization network用训练好的classification network做初始化,使用与classification network 相同的数据集,但增加了基于IoU分数的overlap Loss.
3、后处理。后处理是在测试阶段进行的。使用的方法是基于localization network·的输出分数进行非极大化抑制(NMS)来移除重叠,在SCNN中,NMS的阈值被设置为0.1。
指标:
1、THUMOS2014 [email protected]=19.0
2、MEXaction2 [email protected]=7.4%
代码链接
2 0 1 7
1、TAG:A Pursuit of Temporal Accuracy in General Activity Detection(2017)
原文链接
主要针对建议框的提取,对可变长度的视频精确地确定其动作边界。
1、用TSN的稀疏采样方法采样一段视频里的片段,包含RGB信息和光流信息或者其他视频信息表示。
2、给片段打分,这里是二分类判断它是不是动作,在训练阶段,其中所有有动作的action标记为正例,然后随机采样和正例一样数量的负例,保持比例1:1进行训练;
3、把是动作的片段组成一个proposal。就得到了不同粒度的提议段。
指标:
THUMOS2014 [email protected]=28.25%
2、SSN:Temporal Action Detection with Structured Segment Networks(ICCV2017)
原文链接
提出结构化时序金字塔进行行为检测。
作者认为对视频检测是一个十分难的问题,所以需要对时序结构进行分析,判断动作是不是完整,所以他把视频内的动作划分为三个阶段:开始,行动,结束。这个划分方式在以后的工作中也被大量使用。本文采用了TAG的方法生成proposal,然后把proposal分成开始,活动,结束三个阶段,对每个阶段做时间上的金子塔池化操作,然后把结果合并在一起送入两个分类器,一个判断该段是什么动作,一个判断动作完整不完整。
指标:
THUMOS2014 [email protected]=29.8%
代码链接(Torch)
3、CDC:Convolutional-De-Convolutional Networks for Precise Temporal Action Localization in Untrimmed Videos(ICCV2017)
原文链接
第一次将卷积、反卷积操作应用到行为检测领域,文章同时在空间下采样,在时间域上采样
该网络主要是在SCNN中提到的用滑窗产生proposal的方法基础上继续做精调。基于C3D设计了一个卷积逆卷积网络,输入一小段视频,输出帧级别的动作类别概率,该网络主要是用来对时序行为检测中的动作边界进行微调,使得动作边界更加准确,从而提高mAP。由于基于了层数不多的C3D网络,该方法的速度非常快,可以达到500FPS.
指标:
THUMOS2014 [email protected]=23.3%
代码链接(caffe)
4.TURN-TAP:Temporal Unit Regression Network for Temporal Action Proposals(ICCV2017)
原文链接
单元回归网络生成proposal
其主要思想借鉴Faster rcnn,通过anchor unit,构造一个clip pyramid,然后在单元水平上作坐标回归。其主要步骤包括:
1、将一段视频平均分成N个unit,其中每个unit包含16帧,然后对每个unit通过c3d或者two stream进行特征提取,得到每个unit的视频表示。
2、然后利用金字塔策略把特征按不同尺度拼接在一起。不同数量unit拼接在一起(保证多尺度的信息),然后再额外添加部分固定数量的unit, 形成最终的视频级的表示。采用mean pooling保证输入尺寸一致。
3、然后送入FC网络,输出两个分支,其中一个是是否是action以及分类类别,另外一个是坐标回归残差。
指标:
THUMOS2014 [email protected]=25.6%
代码链接(Tensorflow)
5.CBR:Cascaded Boundary Regression for Temporal Action Detection
原文链接
级联的边界回归网络
CBR是在TURN的基础上做的,网络分为两部分,第一部分用粗略proposal作为输入,输出类别无关的proposal,第二部分来继续调整边界。
与之前方法比较这里每一部分都是级联的,意思就是调整一次效果不好,就继续调整,一直到效果好位置。这里和TURN不同的是找的proposal不在是根据是不是动作,而且为每个动作都通过单元回归找一个proposal,把分数最高的作为我们要找的proposal。网络对C3D,TWO STREAM,FLOW特征进行了对比,得出双流特征效果比光流和C3D好;对单元水平和帧级回归做了对比,证明单元水平的效果好一些;网络还对每一阶段级联级数做了实验,证明2-3级的proposal网络和2级的分类网络效果更好。
指标:
THUMOS2014 [email protected]=31.0%
代码链接
6.R-C3D: Region Convolutional 3D Network for Temporal Activity Detection(ICCV2017)
原文链接
候选段和分类结合在一起学习特征,主要在Faster-RCNN的基础上进行改进
借鉴目标检测领域faster-rcnn的思想提出了一个端到端的网络,生成候选段和分类结合在一起学习特征,用全卷积来学习3D特征再加上ROI pooling使网络可以接收任意长度输入,生成候选段的步骤过滤掉了很多背景可以节约计算,而且候选段由预定义的anchor来预测,可以检测灵活的活动边界。
包括三个网络:
(1)特征提取网络,这里作者选择了C3D网络作为骨干网络,选取C3D的前5层卷积。与C3D不同的是,这里允许任意长度的视频作为输入。
(2)Temporal Proposal Subnet,这一部分是时序候选框提取网络,类似于Faster R-CNN中的RPN,用来提取一系列可能存在目标的候选框。这里是提取一系列可能存在行为的候选时序。(3)Activity Clasification Subnet,对上一阶段产生的候选框通过非极大抑制进行筛选,然后通过3D ROI提取固定大小特征,以上述特征为基础,将选择的Proposal做类别判断和时序边框回归。
指标:
THUMOS2014 [email protected]=28.9%
代码链接1(torch)
代码链接2(caffe)
2018
1.ETP:Precise Temporal Action Localization by Evolving Temporal Proposals
原文链接
提出了三阶段的evolving temporal proposal网络,引入了非局部金字塔特征
1、Actionness Network:在frame level上得出每一个frame的包含动作的置信概率,即actionness score。这个网络和TAG方法一样,得到当前帧包含动作的概率值,对网络结构没有要求。在得到了每一帧的score后,通过聚类的方法,将离散的score组合,得到proposal,然后用非极大值抑制(NMS)剔除多余proposal。
2、Refinement Network:在前一步基础上,通过regression来调整proposal,得到更精确的边界。与Actionness Network在frame-level上考虑不同,Refinement Network从unit-level上考虑,同时考虑context信息,即proposal周边的units,方式和SSN一致。Refinement Network使用non-local pyramid features作为unit特征。提取特征后,把unit特征输入到RNN-based sequence encoder中,然后把经过编码后的context feature再去做regression,回归的是proposal的中心坐标和proposal的长度。
3、Localization Network:继续调整边界,采用SSN的结构,并在顶层加入了非局部块,但是为了防止对网络的影响太大,以残差连接方式加入,定位网络是一个多任务网络,不只要判断proposal是动作还是背景,还要判断它是什么动作,还要调整边界。
指标:
THUMOS2014 [email protected]=34.2%
2.Learning Latent Super-Events to Detect Multiple Activities in Videos(CVPR2018)
原文链接
在视频中学习潜在的超级事件来做多活动检测
提出了一个超级事件的概念,与子事件相对应,一个超级事件包含一系列的子事件,是相互关联的子事件的集合。题目名为潜在的超级事件是因为这些超级事件和子事件的定义是无需标注的。文章还提出了一个时间结构过滤器来学习每类的软注意力权重从而得到超级事件表现,用它来逐帧分类。首先将整段视频输入网络,对每帧或每个局部段落学习一个特征,这里用到了RNN还用到全卷积的网络来对每帧学习一个类别分数,然后把这些特征输入到M个时间结构过滤器里,时间结构过滤器由若干个柯西分布组成,它可以让模型知道哪些时间间隔和帧级检测相关。
指标:
THUMOS2014 [email protected]=36.4%
代码链接(torch)
3.TAL-Net:Rethinking the Faster R-CNN Architecture for Temporal Action Localization(CVPR2018)
原文链接
对R-C3D进行改进,使之更适用于时序动作定位任务
主要对下面三个问题进行了改进:
(1)时间段的变化比目标检测的区域变化范围更大,可能一个动作1秒到几分钟之间,Faster- rcnn评估不同尺度的proposals用的是共享的特征,时间段的范围和anchor的跨度不能对齐。作者提出多尺度的网络结构(mutilti-tower)和扩张卷积(dilated temporal conv)来扩大感受野并对齐。
(2)时间上的动作开始之前和之后的这些上下文信息对时序定位任务的作用比空间上的上下文对目标检测的作用要大的多。Faster-rcnn没有利用到上下文。作者提出通过扩展在生成proposals和动作分类时的感受野解决这个问题。
(3)目前在动作分类上的任务效果好的都是混合了FLOW和RGB特征,Faster-rcnn没有融合。作者提出一个分类结果上融合的晚融合的方法,并且证明了这个方法比在特征上在早融合在处理的方法效果好。
指标:
THUMOS2014 [email protected]=42.8%
4.One-shot Action Localization by Learning Sequence Matching Network(CVPR2018)
原文链接
提出了一种基于Matching Network的one-shot方法应用于时序行为检测不同类别的少量样本和通过用sliding-window在未修剪的视频产生proposal分别经过Video encoder network获得固定长度特征。这些特征由不同行为的proposal和样本组成。在每个time step中,每对proposal和样本通过similarity network产生correlation score,并用这些score合成一个correlation score矩阵。最后用labeling network基于该矩阵预测每proposal的类别。三个网络主要作用是:
(1)不同类别的少量样本和通过用sliding-window在未修剪的视频产生proposal分别经过Video encoder network获得固定长度特征。这些特征有不同行为的proposal和样本组成。在每个time step中,每对proposal和样本通过similarity network产生correlation score,并用这些score合成一个correlation score矩阵。最后用labeling network基于该矩阵预测每proposal的类别。
(2)Similarity Network: 将行动建议利用相似性网络与每个参考行动(reference action)进行比较,该网络在每个时间步骤生成一组相关分数。
(3)Labeling Network: 设置不同长度的时间窗口,根据时间窗口内的encoding vector和correlation scores,第三个网络会在每个时间步骤中预测提案的动作类别标签(作为前景类别或背景之一)。
指标:
THUMOS2014 [email protected]=13.6%
5.BSN:Boundary Sensitive Network for Temporal Action Proposal Generation(ECCV2018)
原文链接
采用边界敏感网络的方法生成proposal特征提取:首先将视频分为S小段,每段随机选取一帧,提取RGB和光流信息,分别编码后形成二维的F特征,这是BSN网络的输入。
边界敏感网络BSN主要包括三个模块:
1、时序评估模块:基于提取的图像特征序列,BSN中的时序评估模块采用3层时序卷积层来对视频序列中每个位置上动作开始的概率、动作结束的概率和动作进行的概率同时进行建模,从而生成 动作开始概率序列,动作结束概率序列和动作概率序列。
2、提名生成模块:基于上述的几种的概率序列,提名生成模块要生成候选时序动作提名,并对每个动作提名生成对应的特征描述。将候选开始时间节点和候选结束时间节点两两结合,保留时长符合要求的开始节点-结束节点组合作为候选时序动作提名。
我们取其本身的时序区间作为center region,再取开始节点和结束节点附近的一段区间作为starting region 以及 ending region。对于每个区域,我们都在动作概率序列上的对应位置采样N个点,拼接后则得到一个非常简短的提名特征。
3、提名评估模块:生成候选时序动作提名以及对应的提名特征后,我们采用提名评估模块-一个简单的MLP(多层感知机)模型去对每个提名的置信度分数进行估计。置信度分数越高,则说明该时序提名与真值的重叠IoU应当越高。
结果后处理:采用了soft-nms算法来通过降低分数的方式来抑制重叠的结果。处理后的结果即为BSN算法最终生成的时序动作提名。
指标:
THUMOS2014 [email protected]=36.9%
代码链接1(Tensorflow)
代码链接2(Torch)
6.CTAP:Complementary Temporal Action Proposal Generation(eccv2018)
原文链接
将SW与TAG相结合1、视频被划分为等长的单元,使用两层时序卷积生成unit-level的actionness score,基于这一分数序列,分别使用TAG和滑动窗口生成两组proposals,其中TAG就是分水岭算法,滑动窗口选用几种不同的尺寸,窗口之间有一定重合;
2、互补滤波。通过一个Proposal-level Actionness Trustworthiness Estimator(PATE)模块来评估TAG能否成功。训练时使用gt作为目标,通过TAG出来的proposals与gt之间的iou决定正负样本,将proposals内的unit-level特征池化到固定尺寸,再过两层fc和sigmoid即可。测试时将其作用于每个SW,如果输出的分数低于阈值,则代表这个窗口内TAG大概率失效,该窗口正式成为一个proposal,否则丢弃。如此,便可获得一个正式的proposal集合。
3、排序和边界调整。TURN也有这一步骤,但它使用均值池化来聚合时序特征,丢弃了temporal ordering信息。本文设计一个TAR网络,使用时序卷积来聚合unit-level特征
指标:
THUMOS2014 [email protected]=29.9%
代码链接(Tensorflow)
2019
1.STEP:Spatio-Temporal Progressive Learning for Video Action Detection(CVPR2019)
原文链接
提出时空渐进动作检测器从几个粗略的建议长方体开始,我们的方法通过几个步骤逐步细化建议,使之成为行动。这样,高质量的提案(即遵守动作)可以通过利用前面步骤的回归输出,在后面的步骤中逐步获得。在每一个步骤中,我们都及时自适应地扩展提案,以包含更多相关的时间上下文。主要包括两个部分:
1、空间细化:空间细化从少量的粗尺度建议开始,并迭代地更新它们,以便更好地对操作区域进行分类和本地化。按顺序执行多个步骤,其中一个步骤的输出用作下一步的建议。这是由于回归输出能够比输入建议更好地跟踪参与者并适应行动管道。空间细化从少量的粗尺度建议开始,并迭代地更新它们,以便更好地对操作区域进行分类和本地化。我们按顺序执行多个步骤,其中一个步骤的输出用作下一步的建议。这是由于回归输出能够比输入建议更好地跟踪参与者并适应行动管道。两个分支网络包括一个全局分支,它对整个输入序列执行时空建模以进行动作分类,以及一个局部分支,它在每个帧上执行边界框回归。
2、时间扩展:重点是通过合并较长范围的时间信息,利用更大范围的时间上下文来提高分类精度。为了减轻空间位移问题,我们是渐进地、自适应地进行时间扩展的。并引入了两种方法来使时间扩展具有自适应性。1、外推法:假设一个动作的空间运动近似在一个较短的时间范围内满足一个线性函数,例如一个6帧的clip,我们可以使用一个简单的线性外推函数来扩展tubelet提案;2、预期:通过位置预测来实现自适应时间扩展,即,训练一个额外的回归分支,根据当前剪辑推测相邻剪辑中tubelet的位置。
指标:
UCF101 [email protected]=75.0%
AVA [email protected]=18.6%
2.MGG:Multi-granularity Generator for Temporal Action Proposal(CVPR2019)本文利用同时利用了粗粒度和细粒度的特征,分成两个模块segment proposal producer (SPP) 和frame actionness producer (FAP), 搭建端到端的网络multi-granularity generator (MGG),用于寻找时序动作片段。
MGG用的特征是常见的C3D和two-stream。此外,论文提出了加上position embedding,也就是帧在视频中的位置信息。
BaseNet首先是两层conv,channel数为dh,默认为512。之后接了一个Bilinear Model,目的是使前后层的feature融合起来相互关联。具体来说,H1,H2分别是两层的输出,维度均是n x dh。对每一个位置x,乘以Wi (dh x g), 得到H1i和H2i,均是1 x g。这样在x的位置,就得到了特征Ti ,而Wi有dh个,所以对于位置x就有dh维的特征。整体输出的T维度就是n x dh了。
SPP模块是通过feature pyramid的方式生成片段,主体结构和TURN相似。此处有三层,通过Unet的方式去提取不同level的特征,最后在每个level上基于anchor点去预测生成片段的概率和回归的偏移量。相对来说,这种方式偏全局一些,好坏很依赖于anchor点。
FAP模块是更加细粒度的生成片段,先预测片段开始位置、中间位置、和结尾位置,主体结构和BSN相似。具体实现是利用三个两层Conv,第一层卷积channel为64,第二层channel为1,kernel size均为3。
动作片段融合,SPP生成了若干个带有置信度的片段,FAP生成了每个点是片段开头、中间、结尾的概率,需要把二者结果融合起来生成最终的动作片段。融合分为两个阶段。第一阶段,先用NMS处理SPP生成的片段,在对每个片段的开头结尾,自定义个搜索空间,如果其中存在FAP预测的更好的开头和结尾,则替换。第二阶段,对于中间位置的点,通过TAG的方式生成片段,具体的threshold没有说。之后,对于这些片段,如果与第一阶段的结果重合度大于0.8的话,则替换原结果。看实验部分,经过两个阶段,可以在ActivityNet1.3上比SPP的结果好上2个点。