原文
转载
我们提出了一种改进的方法TAL-Net用于视频中的时序动作定位,这是一种灵感来源于Fast R-CNN目标检测框架的网络。TAL-Net解决了现存方法的三个关键性缺点:(1)我们使用一种多尺度框架改进了感受野的校准,这使得我们的方法能够适应视频动作长度的极端变化。(2)我们通过适当扩大感受野更好的利用了动作的时序上下文信息来生成感兴趣区域(proposal generation)和动作的分类。(3)我们明确的考虑了多种特征的融合,并证明了晚融合特征的重要性。我们的方法在基于THUMOS’14这个检测标准数据集上的动作推荐和动作定位两个任务都拥有最佳性能,在ActivityNet challenge上也有不错的表现。
人类动作的视觉理解是构建辅助AI系统的一个核心能力。这个问题通常在动作分类[30,37,46][30,37,46]这个领域被研究,动作分类的目标是对一个在时序上被裁剪好的视频片段做一个强制分类,分类结果是已知类别中其中一个类别。尽管有很多富有成效的进展,但是这些动作分类的方法都是不切实际的,因为在现实世界中,视频都是没有被修剪过的,而那些感兴趣的动作通常都是被安插在一些不相关的行为背景动作里面。最近研究的注意力逐渐移动到了未被修剪过的视频[24,32,47][24,32,47]中的时序动作定位(temporal action localization)上。时序动作定位不仅要识别动作的类别,还要对每个动作实例进行检测,检测它在视频中的开始和结束时间点。时序动作的定位的改进能推动很多关键领域的进展,范围从即时应用到一些高级的任务,如提取体育视频中的精彩时刻和视频自动添加字幕。
时序动作定位和目标检测很相似,都属于视觉检测问题。目标检测的目标是在二维图像中的目标周边产生一个空间上的框,而时序动作定位的目标是在一维的帧序列上产生时序分割片段。因此,很多动作定位的方法的灵感都来自于目标检测的进步。[17,18,33][17,18,33]是一个非常成功的基于区域检测的范例。这些方法首先在整张图中生成一些类别不可知的感兴趣区域,并通过每一个感兴趣区域对其类别进行分类。为了检测动作,这是能够效仿的范例,首先通过在整个视频中生成感兴趣区域的时间片段,然后再对每个感兴趣区域进行分类。
在基于区域的检测方法中,由于Faster R-CNN[33][33]很多标准公开数据集[13,28][13,28]上有着非常高的准确率,所以它在目标检测领域被广泛的认同。核心思想是利用深度神经网络(DNNs)的巨大能力来推动感兴趣区域的生成和目标的分类。鉴于Faster R-CNN在图像中目标检测上的成功,这就有相当大的驱动力让我们使用Faster R-CNN来解决视频中时序动作定位的问题。然而,这种领域的变换带来了一些挑战。我们回顾Fast R-CNN在动作定位领域的一些问题,并专门重新设计架构来解决他们。我们关注以下内容:
时序动作持续时间的变化程度比一张图片中目标大小的变化程度大得多,这个持续时间可能从几分之一秒到几分钟都有。然而,Faster R-CNN评估不同尺度的候选感兴趣区域(即anchors)是基于一种共享特征的方法,由于没有对特征的时序范围(即感受野)及相应的anchor的范围进行校准,这就有可能获取不到相关信息。我们提出使用多路网络(multi-tower network)和扩张时序卷积(dilated temporal convolutions)来实施这样的校准。
在一个动作实例发生的前后包含一些临界信息,这对于时序动作的定位和分类来说可能比目标的空间背景信息更重要。一个简单的Faster R-CNN的应用可能利用不到这些时序上下文信息。我们提出在生成感兴趣区域和动作分类中通过扩大感受野来编码时序上下文信息。
动作分类结果最好的方法几乎都融合了RGB和光流特征。然而,在Faster R-CNN中利用这种特征融合的工作较少。我们提出了一种较晚融合特征的方案,并在实验中经验式的证明了他比较早融合特征的方案更好。
我们的贡献有两个方面:(1)我们提出了时序动作定位网络(TAL-Net),这是一种基于Faster R-CNN的视频中动作定位的新方法。(2)我们的方法在THUMOS‘14标准检测数据集中对于感兴趣动作的生成和定位两项任务中都表现出最好的性能,同时在ActivityNet数据集上也有很好的表现。
动作识别
动作识别通常被作为一种分类问题。它的输入是一个只包含一个特定感兴趣动作的时序上被修剪过的视频,而它的目标是对动作进行分类。由于大型数据集的出现和深度神经网络[7,14,30,37,43,39]
[7,14,30,37,43,39]的发展,动作识别最近有很大的进展。然而,需要进过修剪的输入假设限制了这些方法在现实场景中的应用,现实场景中的视频通常都是未被修剪过的视频,且包含很多无关的背景动作信息。
时序动作定位
时序动作定位假定输入是一个很长且没有被修剪过的视频,同时它的目标是为视频中的每个动作实例做分类及识别它发生的开始时间和结束时间。由于在视频数据分析中时序动作定位有很多潜在应用,所以近期很多人开始研究这个方向。接下来我们回顾以下这个问题的相关工作。
早些时候解决这个任务的方法通过应用时序滑动窗口然后通过SVM分类器对每个窗口内的动作进行分类[24,31,32,47,54]
[24,31,32,47,54]。他们通常提取改进的密集轨迹[46][46]或预训练的DNN特征,然后对这些窗口内的特征进行全局池化(globally pool)来获取SVM分类器的输入。Yuan等人[54][54]提出了一种多尺度池化的方案来替代全局池化获取多级分辨率的特征。然而,这些方法通常是低效的,因为它需要应用每个动作分类器对不同的时序定位的不同长度的窗口都跑一遍。
另外的工作产生了逐帧和逐片段的动作标签,并用这些标签来定义动作的时序边界[10,20,26,29,38,55][10,20,26,29,38,55]。这里一个主要的挑战是预测单个标签时要用到时序的上下文信息来进行推理。Lea等人[26][26]提出了一种新的时序卷积结构来获取长时序依赖(long-range temporal dependencies),而其他的方法[10,28,29][10,28,29]使用循环神经网络。一些其他方法在逐帧或片段预测分数之上添加单独的上下文推理阶段,以明确地模拟动作持续时间或时序转变[20,34,50][20,34,50]。
得益于目标检测[17,18][17,18]中基于区域检测器近些年的成功,很多最近的方法都采取一个两阶段,分类加区域推荐的架构[3,4,6,12,35,36,56][3,4,6,12,35,36,56],即首先从输入视频中产生一些未知类别的感兴趣时间段,然后再对每个感兴趣时间段进行分类。有大量的工作致力于改进产生感兴趣时间段[3,4,6,12][3,4,6,12],而其他的一些方法致力于提高动作分类效果[35,36][35,36]。然而,大多数这些方法都没有在分类和生成感兴趣区域上提供端到端的训练方法。除此之外,这些感兴趣区域的选择通常是来源于预定义大小的滑动窗口[36][36],这里边界是固定的,如果滑动窗口不密集就可能带来定位结果的不准确。
作为最近基于区域目标检测器的典型,Faster R-CNN架构[33]由可以端到端训练的生成感兴趣区域网络和分类网络组成,且在这两部分都应用了区域边界回归的方法。一些近来的工作已经开始应用这样的架构来进行时序动作定位[9,15,16,51][9,15,16,51],且展示出了很好的检测正确率。尤其是R-C3D网络[51][51]是一个完全按照原始的Faster R-CNN设计的经典例子。但欲成为一个好的检测范例,我们认为简单的应用Faster R-CNN架构来解决时序动作检测会遇到一些问题。我们在这篇文章中提出了解决这些问题的方法。当我们介绍TAL-Net时,也将明确我们在相较于其他基于Faster R-CNN方法的之外贡献。
除了上述回顾的工作之外,还有一些其他类别的方法,比如那些基于单步式的方法[2,27][2,27](single-shot)或者基于强化学习的方法[52][52]。还有一些方法通过一些弱监督标签[41,48][41,48]来学习时序动作定位,这里只有视频级的动作标签可以用于训练。除此了时序动作定位外还有很多现存的方法是研究空间时序动作定位的[19,23,40][19,23,40],这些就不在本文的讨论范围之内了。
在该节中我们简单的回顾以下Faster R-CNN检测框架。Faster R-CNN是第一个被提出来来解决目标检测问题的[33]
,这里的目标检测是给定输入图片,目标输出是一些带有类别标签的检测框。完整的流程由两个部分组成:生成感兴趣区域和分类。首先,输入图片通过一个二维卷积神经网络处理来产生一个二维特征图。另外的二维卷积神经网络(被称为感兴趣区域网络(Region Proposal Network))用于产生一些类别未知的感兴趣区域,通过对以特征图的每个像素为中心的一组尺度变化的anchor进行分类。感兴趣区域的边界也将基于anchor的框通过回归来调整。第二,对于每一个感兴趣区域,区域内的特征首先池化成固定大小的特征图(即RoI 池化[17][17])。然后DNN分类器使用池化后的特征计算目标类别的可能性,同时对每个目标类别的检测边界进行回归。图一左侧为整个流程图。这个框架通常被第一步和第二部交替训练[33][33]。
Faster R-CNN很自然的扩展到时序动作定位[9,15,51]
[9,15,51]。回想一下,目标检测的目标是检测二维空间区域,然而在时序动作定位中,目标是为了检测一维时序片段,用一个开始时间和结束时间来表示时序片段。因此,时序动作定位可以被视为一维的目标检测。时序动作定位中一个典型的Faster R-CNN的流程如图一右侧所示。和目标检测相似,它由两个部分组成。首先,给定一个序列的帧,我们提取一维特征图,通常是通过一个2维卷积或者三维卷积网络。然后特征图通过一个一维卷积网络(被称为感兴趣区域网络)对每个时序定位上的不同尺度变化的anchor片段进行分类,同时也回归他们的边界。这将会输出一些未知分类的感兴趣片段。第二,对每个感兴趣片段,我们通过应用一个一维RoI池化(被称作SoI池化)层和一个DNN分类层来计算每个动作类别的概率同时进一步回归这些感兴趣片段的边界。
TAL-Net遵循在时序动作定位上Faster R-CNN检测范例(图一右),但是具有三个新的结构性变化。(节4.1到4.3)
回忆一下生成感兴趣区域,我们通过对很多组根据特征图定位的不同大小anchors的分类来生成了一些未知类别的感兴趣区域。在目标检测中,这些是通过在特征图上应用一个小的卷积神经网络完成的,然后通过一个有K个卷积核的1×11×1的卷积层,这里K就是不同大小anchors的数量。不同的卷积核将对应不同大小的anchor。这里有一个致命的缺点:每一个位置上的anchor分类器共享同样的感受野。这样的设计可能对目标检测是合理的,但是对于时序动作定位可能就不行了,因为动作的时序长度相比目标的空间大小变化大得多,例如在THUMOS’14[21][21],动作持续时间的长度从小于一秒到多于一分钟都有。因此,为了保证一个高的召回率,应用anchor分割时间段应该有各种各样的尺度(见图2左)。然而,如果感受野太小(即时序太短),那么对大的anchors(即时间长)进行分类时,提取到的特征不会包含充分的信息。而如果感受野设置得太大,那么对小anchor进行分类时,提取到的信息又会被无关的信息所主导。
为了解决这些问题,我们提出了对每个anchor的感受野和时序范围进行校准。这是通过两个关键因素促成实现的:多级网络(multi-tower network)和扩张时序卷积。给定一个一维特征图,我们的感兴趣片段网络由K个时序卷积网络组成,每个分别负责不同大小的anchor片段的识别(见图二右)。最重要的是,每个时序卷积神经网络被很仔细的设计,以便它的感受野大小能与相对应的anchor的尺度相符。在每个卷积神经网络的最后,我们同时使用两个卷积核大小为1的卷积层分别对anchor进行分类和边界回归。
接下来的问题是:我们如何设计一个具有可控感受野大小s的时序卷积神经网络。假设我们使用大小为3的时序卷积核来设计。那么一个增加s的方式是堆叠卷积层层数:如果我们堆叠L层,那么s=2L+1。然而,给定一个目标大小为s的感受野,需要的卷积层LL数随ss线性增长,网络参数数量的增长很容易造成过拟合。一个解决办法是应用池化层:如果我们在每个卷积层后面添加一个核大小为2的池化层,那么我们的感受野大小为:s=2(L+1)−1。而现在LL的增长随ss对数增长,添加池化层将指数级减少特征图分辨率,这将牺牲检测任务中的定位精度。
在保持分辨率的同时,为了避免过度增长模型,我们提出使用扩张时序卷积。扩张卷积[7,51][7,51]操作和普通的卷积很像,不过和普通卷积的使用卷积核相对应相乘不同,扩张卷积是对输入的特征图进行下采样。这样的技术已经很成功的应用在2维卷积神经网络[7,51][7,51]和一维卷积神经网络[25][25]中来扩大感受野同时不损失分辨率。在我们的感兴趣片段网络中,每个时序卷积神经网络仅由两个扩张卷积层组成(见图3)。为了获得一个目标大小为s的感受野,我们可以明确的计算每层ll需要的扩张率(即下采样率)rlrl,即r1=s/6和r2=(s/6)×2r1=s/6和r2=(s/6)×2。我们在第一个卷积层下采样之前将通过增加一个核大小为s/6
s/6的最大池化层来平滑输入。
文章[8,14,15,49][8,14,15,49]之外的贡献
Xu等人[49][49]的工作遵循原始的Faster R-CNN,因此他们在每个像素位置的anchors仍然是共享感受野。Gao等人[14,15][14,15]和Dai等人[8][8]用anchor的时序范围校准它的感受野。然而高等人[14,15][14,15]使用anchor的平均池化特征,而我们使用时序卷积来提取结构敏感的特征。我们的思想和Dai等人[8][8]很像,他们在每个相同尺度的anchor中采样固定数量的特征;而我们的方法而是采用扩张卷积来完成这一过程。
时序上下文信息(如在动作实例发生之前和之后的一小段时间)是用于时序动作定位一个临界信号,原因有两个。首先,它能够更好的计算动作边界的定位。举个例子,看到一个人站在跳水板的尽头是一个非常强烈的信号,意味着他很快就要开始跳水动作了。第二,它给边界以内的动作类别提供了很强的语义线索。举个例子,看到标枪在空中飞,那么说明一个人刚刚完成了投掷标枪的动作而不是撑杆跳的动作。因此,在动作定位流程中,时序信息上下文特征的编码是非常重要的。下面,我将详述我们的方法是如何在生成感兴趣区域和动作分类两个阶段中利用上下文特征的。
在生成感兴趣区域中,我们展示了用于分类anchor的感受野能与anchor的范围所匹配(见节4.1)。然而,这仅仅是提取anchor内的特征,且忽略了在它之前和之后的上下文信息。为了确保anchor的分类和边界回归能够使用上下文特征,感受野覆盖上下文区域。假设anchor的大小为s,我们使感受野覆盖到anchor之前和之后s/2的两个片段。这能通过提高两倍的卷积层的扩张率来实现,即r1=(s/6)×2和r2=(s/6)×2×2,如图4所示。因此,我们也使用两倍于原始最大池化层的核大小(s/6)×2。
在动作分类中,为了生成感兴趣区域和分类,我们使用SoI池化(即一维RoI池化)来提取一个固定大小的特征图。我们用图5上来说明输出大小为7的SoI池化的机制。注意,RoI池化的最初设计[16,32][16,32],池化区域严格的被限制在感兴趣区域以内,不包含时序的上下文区域。我们提出扩大SoI池化的输入范围。见图5下,为了得到一个大小为ss的感兴趣区域,我们的SoI池化的范围不仅要覆盖感兴趣片段,还要覆盖感兴趣片段之前和之后的两个大小为s/2的片段,和anchor的分类像。在SoI池化之后,我们添加一个全连接层,之后再加一个全连接层,这是最后一个全连接层,用于对动作的分类和边界的回归。
在文章[8,14,15,49][8,14,15,49]之外的贡献。徐等人[49][49]没有在感兴趣区域生成网络和动作分类网络中利用任何上下文信息特征。Dai等人[8][8]的工作在感兴趣区域生成网络中用到了上下文特征,但在动作分类网络中仅使用了感兴趣区域以内的特征。Gao等人在工作[15][15]中仅在感兴趣区域生成网络中利用了上下文特征,在工作[14][14]中两个网络都利用了上下文特征。然而,他们对上下文特征进行平均池化,而我们使用时序卷积和SoI池化来对特征的时序结构进行编码。
在动作分类网络中,很多效果最好的方法[6,13,29,36,47][6,13,29,36,47]都使用一种双流结构,这种结构共同处理两种不同类型的输入-rbg帧和预计算的光流-然后融合他们的特征来生成最终的分类分数。我们推测这样两种双流输入和特征融合的方式也能在时序动作定位中扮演重要角色。因此,我们为双流Faster R-CNN架构提出了一种晚融合的方案。概念上,这相当于在感兴趣区域生成网络和动作分类网络的最后执行传统的融合(见图6)。我们首先使用两种不同的网络分别从RBG帧和光流中提取两个一维特征图然后分别堆叠。我们通过一种独特的感兴趣片段生成网络来处理每种特征,同时为anchor的分类和边界的回归生成logits。我们对两个logits种的元素逐一相加求平均值作为最终的logits来生成感兴趣区域。对于每个感兴趣区域,我们同时在两个特征图上使用SoI池化,且应用一个独特的DNN分类器进行输出。最终,动作分类和边界回归的logits来自DNN分类器,这个分类器逐一对两个特征图的元素进行相加求平均值来生成最终的检测输出。
注意,这有一种更为简单的早融合的方式来融合两种特征:我们连接两个一维特征图,然后使用之前(节4.1和4.2)提到的相同的流程。我们通过实验说明上述的晚融合的方案比早融合的方案表现更好。
文章[8,14,15,49]
[8,14,15,49]之外的贡献
Xu等人[49][49]仅仅使用单流的特征(C3D)。Dai等人和Gao等人使用双流特征,但是他们的工作要么没有融合[15][15],要么使用的是早融合方案[8,14][8,14]