一、摘要
我们解决视频中时间动作定位问题。 将动作定位作为对任意长度时间窗口的结构化预测,其中每个窗口被评分为逐帧分类分数的总和。 此外,我们的模型将每个动作的开始,中间和结束分类为单独的组件,允许我们的系统明确地模拟每个动作的时间演变,并利用此结构中存在的信息时间依赖关系。 在这个框架中,我们通过搜索结构化最大和来定位动作,这是一个我们开发一种新颖,效率很高的算法解决方案的问题。 使用来自深度卷积神经网络(CNN)的特征来计算逐帧分类分数,所述特征来自端对端的训练,以直接针对新颖的结构化目标进行优化。 我们根据THUMOS '14动作检测基准评估我们的系统并获得有竞争力的表现
1.介绍
在时间动作定位中,我们会看到一段视频,目的是检测是否以及何时发生特定动作。具体而言,我们回答三个问题 - “视频中是否存在动作?”,“动作何时开始?”以及“动作何时结束?”。通过自动化这个过程,我们可以让人们有效地搜索每一天生成的数百万小时的视频数据。但是,由于几个原因,这仍然是一个具有挑战性的问题至关重要的是行动具有固有的时间结构,因此我们需要一个能够模拟行动的时间演变以及瞬时空间外观的表征。先前的方法或者未能对时间演化进行建模,或者以显着的计算成本完成[11,16,15]。高计算成本是这些方法的重要问题,因为在许多实际应用中,感兴趣的视频可能是任意长的,并且方法必须适度地缩放到数小时(例如电影,网络视频)或甚至数天(例如安全镜头,第一人称视角)。最后,提取用于检测视频中的动作的强大功能仍然是一个未解决的挑战。
为了克服这些挑战,我们提出了一种直接模拟动作时间演化的方法,并且我们开发了一个可行的高效算法来执行本框架中的定位。我们的时间演化框架是基于观察到所有动作都有开始,中间和结束,并且这些组件每个都有不同的外观和动作模式。我们假设通过分别定位这三个动作部分,可以通过在其排序中强制实施一致的结构来显着提高定位性能。具体而言,我们将动作建模为时间窗口 - 视频帧的可变长度序列 - 并假设每个时间窗口以单个开始帧开始,接着是一个或多个中间帧,最后是单个结束帧(图1)。否则,我们不对每个动作的时间顺序施加限制性约束。在此过程中,我们只恢复足够的时间信息以利用每个动作中存在的固有结构,而不需要任何额外的注释或对动作组成做出不切实际的假设。
在测试时间,我们通过搜索结构化最大总和来定位动作 - 开始帧,中间帧和结束帧的序列,其具有相应的逐帧置信度分数的最高总和。 解决这个问题并不重要,因为它只需要搜索可能的起始端对的二次数。 然而,在第4节中,我们提出了一种新颖的动态规划算法,可以找到任意长度视频的top-k结构最大和。 我们证明了这种算法是有效的,具体而言,我们证明它在线性时间内找到结构最大和。 我们的解决方案与经过深入研究的k最大和问题有关,对此类似的高效算法存在[2]。 我们的结构化最大和算法使我们能够将任意长度的未修剪视频进行优化缩放,同时对每个动作的时间演进进行编码。
我们使用来自双流卷积神经网络(CNN)的强有力判别特征分别对这三个动作成分进行分类[16]。 在5.2节中,我们使用一种新颖的结构化损失函数对整个系统进行端到端的训练。 我们在第6节中对THUMOS'14挑战数据集[6]进行了训练和评估,并取得了有竞争力的结果。
我们的主要贡献是允许我们在不牺牲有效的时间定位的情况下对行为的时间演变进行建模的框架。 我们的框架的关键是一种新颖的,高效的算法,它可以计算线性时间内的结构最大和。 我们在行动检测基线上取得了有竞争力的结果,并展示了一些消融研究来展示我们各部分的贡献。
3、结构化预测定位
假设我们给出了一个视频v = {X1,X2,...,Xn}∈V,其中Xt表示时间步t处的帧,n是视频中帧的总数。我们定义一个时间窗口为连续的视频帧段其中s和e分别是开始帧和结束帧的索引, 1<=s<=n。此外,假设每一帧都有一个真值的帧级分数f(Xt)∈R,它可以是正数也可以是负数,这表明我们对帧x的置信度是属于特定动作类的一个实例。请注意,为了方便起见,我们将f(Xt)表示为仅有一帧Xt的函数,而实际上f可能依靠从整个视频中提取的特征。对于一个视频和相应的时间窗口,我们定义了置信度得分作为帧分数的总和,即。视频v的预测时间窗口是使置信度得分最大化的窗口,特别是。
简而言之,通过搜索所有可能的起始和终点对,这种最大化需要在帧的数量上以二次方的空间进行搜索。 对于长视频来说,这是不切实际的。 然而,因为F可以分解成帧的分数,所以我们可以把它作为经典的最大和问题[2],对此存在一个O(n)时间解[1]。 在实际设置中,我们可能在一个视频中有多个动作实例。 寻找k最佳窗口同样可以作为一个k最大和问题,对此存在一个O(n + k)时间解[3]。 在下面的章节中,我们建模更复杂的时间依赖性。
3.1时序评估模型
为了鼓励精确定位,我们将每个动作明确地建模为单个开始帧,然后是任意长度的一系列中间帧,最后是单个结束帧。 假设我们分别为开始,中间和结束分量分别签署了逐帧置信度分数,。 使用这个新的公式,我们可以重写视频v的置信度F(v,y):
其中λs,λm和λe是指定每个动作部分的相对重要性的参数。 在我们的实验中,除非另有说明,我们设定λs=λm=λe= 1。
这种生成方式带来了一些优于没有时间演进的单分类置信值的优势。首先,我们会受到因为检测不到而无法找到匹配开始帧和结束帧的严重处罚。这强化了时间上的一致性,因为最好的检测将是按照正确顺序成功匹配三个组件中的每一个。这种对不合逻辑匹配的抵抗使我们对帧级分数的变化具有鲁棒性。这使我们不太可能将动作的连续或部分实例合并为单个检测,并鼓励检测器将每个检测延伸到动作实例的全部范围,从而防止过分和不足分割。最后,开始和结束标签可以从现有的时间行为注释中随时获得,这意味着我们不需要额外的训练数据。最后,由于每个行动都有一个开始,中间和结束,所以这个表述对复杂行为的结构没有任何限制性的假设。
4.结构化最大和
给定帧分数fs,fm和fe以及视频v,我们的目标是检测特定动作的所有实例。 我们将这些检测结果表示为top-k时间窗口,按照它们在公式1中的置信度分数排序。在第3节中,我们展示了如何在没有时间演化的情况下将本地化定义为k-最大和问题[1]。 然而,我们的公式带来了额外的挑战,因为我们现在需要计算top-k结构化的最大总和(图2),而以前的工作没有涉及。 为了解决这个问题,我们引入了结构化最大和(SMS)算法(算法1),它有效地找到了顶k结构的最大和。
结构化最大总和算法在视频中单次传递,保持迄今为止在列表kmax [:]中找到的K最佳窗口的值,该列表保持排序顺序。 它还跟踪rmax [:]中结束于第i帧的Kbest不完整时间窗口的值,即结束于i但不包含终点fe [i]的窗口。 我们现在证明了SMS算法的正确性。
为了清楚起见,我们首先引入以下符号。我们假设所有帧分类器分数是预计算的,并且包含在有序列表fs [1 ... n],fm [1 ... n]和fe [1 ···n],简写[:]同时引用列表中的所有元素。 同样,我们表示为列表中的每个成员添加一个值作为f [:] + n。 我们表示将条目s插入排序列表kmax中作为合并(s,kmax)的操作。 我们将离散空间X上的函数g的第k个最大值表示为k-maxx∈Xg(x)。
引理1.令rmaxi [:]表示在时间步i结束的K最佳不完整时间窗口列表,不包括终点fe [i]。 也就是说,让
然后合并给出在时间步i + 1结束的K最佳不完整时间窗的列表。
证明。 在第i + 1帧结束的第k个最佳不完整窗口或者是从i + 1开始的窗口,或者是在第i帧结束的K最佳窗口之一的延续。rmaxi [:] + fm [i + 1]给出以前K最佳不完整窗口的所有延续列表。 我们在这个列表中插入fs [i + 1],并且如果fs [i + 1]大于它,则丢弃至多K个连续中的一个。 剩余的K最好的不完整的时间窗口在第i + 1帧结束。
引理2.令kmaxi [:]表示在第i帧或之前结束的K个最佳时间窗口的列表。 然后合并(rmaxi [:] + fe [i + 1],kmaxi [:])给出在时间步i + 1结束的K-最佳时间窗的列表。
证明。 我们从引理1知道rmaxi [:]给出了在第一帧结束的Kbest不完整时间窗口。 在第i + 1帧结束的第k个最佳时间窗口是这些不完整窗口之一,通过添加fe [i + 1]完成,或者它是已经包含在kmaxi中的顶部完整窗口之一。 通过合并这两个列表,我们选择整个top-K窗口,保留top-K完整时间窗口。
每个rmaxi和kmaxi(包括调用合并)都可以在O(K)时间[1]中构造。 我们计算所有的i∈{1,...,kmaxi。。。 ,n},所以总的时间复杂度是O(nK)。 这个结果以及上述引理的结果使我们得到了我们的主要理论贡献:
定理4.1。 SMS算法计算O(nK)时间内长度为n的视频中的K最佳时间窗口。
我们注意到,尽管这个算法只能计算top-K时间窗口的分数,但我们的实现能够自行恢复窗口。 这是通过简单的簿记来完成的,它可以保持时间窗口的开始点和结束点,因为它们被添加到rmax和kmax列表中。
5、训练
我们描述了如何学习这些帧级式的分数函数。 我们使用深度卷积神经网络(CNN)来生成分数函数,并引入结构损失函数,可用于在端到端框架中训练这些CNN。
5.1网络结构
我们采用[16]的双流网络体系结构为每个视频帧提取深时空特征。双流体系结构由两个卷积神经网络(CNN),Spatial-CNN和Motion-CNN组成。 第一个网络流Spatial-CNN在单个视频帧的颜色通道上运行,从场景的静态外观中捕捉特征。 第二个流Motion-CNN在相邻帧之间计算的密集光流场上运行,随时间捕获独特的运动特征和像素轨迹。 然而,与[16]不同,我们采用[17]中较大的VGG 15层网络作为两个流中每一个的主干架构。 对于每个流,我们生成(C×3)维输出,其中C是动作类别的总数。最后,我们对来自两个流的逐帧分数进行平均,并将各个帧之间的结果连接起来。 这种架构如图3所示。
5.2 结构化损失
我们的模型将视频级结构损失函数最小化,而不是用于训练典型的双流动作识别结构的逐帧丢失函数。 通过直接优化时间动作本地化,我们使帧级分数考虑到动作的时间演变。 这实现了一个微调的水平,这是通过针对框架目标进行优化而无法实现的。 与典型的双流体系结构一样,我们first单独对每个流进行预训练并通过微调进行融合。
我们有m个训练视频和标签Y = {y1,y2,...,ym}的数据集V = {v1,v2,...,vm}。 每个视频可以是任意长的,其长度表示为ni。 为了简单起见,我们假设训练视频仅包含一个动作实例。 这些标签由开始索引s,结束索引e和动作标签l组成。 我们的目标是学习一个置信度函数F:V×Y 7→R,它测量视频中出现特定动作实例的可能性。我们要求F采用如方程1中的逐帧求和形式 我们将F的可学习参数,即CNN的参数表示为w。 我们用符号F(v,y; w)来表示视频v和窗口y的参数w产生的置信度分数。
对于训练视频vi,我们将定位损失Lloc定义为最高得分时间窗与动作ℓi的地面真值标签之间的差距:
请注意,两种损失函数都是典型的结构支持向量机损失,因此可以以类似的端到端方式学习参数w [14]。 由于定位和分类损失都是可微分的,因此可以通过反向传播学习两个CNN流的参数。 具体而言,对于一个层l,一个视频L(·)(vi)相对于该层的参数w(1)的损失的梯度可以计算为
相对于网络参数f的梯度可以通过反向传播计算出来,对于没有结构化目标的CNN,这是标准的。 因此,它需要计算两个梯度:(1)置信函数F w.r.t.的梯度。 分类器f和(2)目标函数L(·)w.r.t的梯度。 F.为了计算(1),我们记得,置信度函数只是行动部分分数的总和,所以它的梯度计算是直截了当的。 虽然(2)不可微分,但它实际上是可微分的,所以我们计算一个次梯度:
为了计算次梯度,我们需要找到最好的窗口y * i。 我们使用SMS算法(算法1)在Lcls中查找y * i。 但是,由于在Lloc中的最大化中,为了计算y * i,我们需要执行损失增强置信度的最大化。 在算法2中,我们修改SMS算法以包含这个术语,实现相同的线性时间复杂度,保证在训练期间可以有效地计算这个。 另外,我们只计算顶部检测。
6、实验
我们在THUMOS'14数据集上评估我们的方法[6]。我们的实现基于Caffe [9]。
双流神经网络。 Spatial-CNN的输入是裁剪为224×224的RGB视频帧,并减去平均RGB值。 Motion-CNN的输入是由TVL1光流算法[30]计算的密集光流通道。我们将每个光流图像缩放到[1,255]之间,并在两个方向上叠加10帧的流,以形成224×224×20的3D体积。 Spatial-CNN在ImageNet [13]上进行了对象识别的预先训练,并且针对UCF101 [20]上的动作分类预先训练了Motion-CNN。我们分别训练Spatial-CNN和Motion-CNN,然后共同调整它们最后的两个完全连接的层。另外,我们对这两个流采用多尺度随机裁剪。对于每个样本,我们首先从预定义列表中随机选择一个比例尺,然后选择一个尺寸为(224×224)×比例的随机裁剪。在输入到网络之前,裁剪区域被调整为224×224。对于空间CNN,Motion-CNN有三个尺度[1,0.875,0.75],我们使用两个尺度[1,0.875]。
后期处理。 我们将每个测试视频分成重叠的20秒片段,并在相邻片段之间重叠18秒,并针对每个片段独立执行定位。 随后,我们将这些片段中的预测合并在一起。 我们将动作实例的数量设置为K = 100,因为实验性K≥100不会提高我们验证集的召回率。 等式1中的时间动作窗口分数倾向于给较长的窗口更高的分数,所以我们另外通过其窗口长度来标准化每个窗口的置信度。 此外,我们将行动时间先验置信度得分乘以[11],以鼓励行动窗口具有合理的长度。 在生成所有候选者后,我们使用非最大抑制来过滤具有大重叠的那些候选者。
平衡训练。 中间帧比开始和结束帧更普遍,因此为了防止网络偏向中间帧,我们在训练期间将每个中间帧的分数除以总窗口长度。 另外,由于动作开始和结束的手动注释相对较嘈杂,因此我们从前10%帧开始随机采样开始帧,最后10%结束。 中间帧从中间抽样80%。
评估指标。 我们使用平均平均精度(mAP)来衡量本地化表现,如[6]。 如果预测正确的行为标签,并且它与交集(IOU)与地面实况的交集大于某个重叠阈值σ,则我们将检测计为正确。
6.1实验结果
在训练过程中,我们裁剪每个验证视频以缩短包含单个动作实例的800帧剪辑。我们通过将来自训练和验证片段的动作实例与背景视频和验证视频拼接起来,增加了训练数据集,其中20个类别的任何实例都不出现。总共,我们生成了42000个用于训练的动作片段。我们根据验证视频的版本子集中的结果选择超参数。我们分别训练Spatial-CNN和Motion-CNN,分别进行16K和20K次迭代。然后,我们对双流网络进行微调,进行2K次迭代。在测试时间,我们将所有视频下采样为5fps,并筛选出不太可能包含20个动作类别中任何一个的视频。我们通过平均他们在行为识别模型[27]上得到的框架级分数平均来实现这一点[27],在THUMOS'14上进行了细化。在图4中,我们展示了THUMOS'14测试集的示例检测。
我们报告表1中不同重叠阈值的结果,并与现有系统进行比较。当重叠阈值σ为0.1,0.2和0.3时,我们的模型优于现有技术,并且在0.4和0.5时达到竞争结果。这表明我们的系统即使在精确定位困难的情况下也可以将动作实例与背景帧区分开来。此外,我们还提供了图5中的每类平均精度结果。我们的系统在20个操作中的5个上实现了最佳性能。对于Billards,Cricket Shot,Tennis Swing和排球扣球等一些动作,我们得到的平均精确度相对较低。这可能是由于两个主要原因:(1)这些动作实例很短,因此与较长的动作相比,动作分数相对较嘈杂;(2)这些动作经常快速连续发生,使得相邻动作实例合并变得容易。
消融研究为了展示我们系统中每个组件的贡献,我们试验了全部管道的八种变体。结果报告在表2中。
在基准线上,我们没有在训练期间使用结构化损失函数进行训练。相反,我们训练我们的模型以执行互斥的框架分类,并减去平均置信度以形成签名置信度分数,并使用SMS执行定位。在w/o cls,我们在训练期间放弃了结构化的定位损失Lcls。在w / o sme中,我们不建模起始 - 中间 - 末端时间演变,并且每个行动分数被计算为帧级动作分类分数的平均值。在w / o cls + sme中,我们使用下降Lcls,也不模拟时间演变。删除这些组件中的每一个都会导致性能显着下降,这表明时间演进和结构化分类丢失对于促进训练和准确定位非常重要。在w/o prior,我们放弃了行动持续时间的先验,这导致了性能的小幅下降。在图6中,我们给出了当Lcls丢失时产生的检测的例子,本地化变得不那么精确。我们还对双流架构的组件进行了单独的消融研究。我们评估使用每个流单独(空间和运动),以及简单地平均两个流,而不是联合微调(后期融合)。我们发现完整模型胜过后期融合,这表明两个流联合训练的重要性。后期融合不能超越单独的网络,这表明两个网络的置信度得分不兼容。