如图所示,对于每个预测片段φ,计算它的OIC损失。每个预测片段包含行为/内边界[ x 1 , x 2 x_1,x_2 x1,x2], inflated 外边界[ X 1 , X 2 X_1,X_2 X1,X2],行为类别k。这些边界都是在snippet-level的间隔尺寸(比如,边界x=1对应于第一个片段的位置)
f k ( x ) f_k(x) fk(x): 表示在行为k的CAS上第x个片段的类激活。
A o ( φ ) A_o(φ) Ao(φ): 在外部区域的平均激活
A i ( φ ) A_i(φ) Ai(φ): 在内部区域的平均激活
则关于片段φ的OIC损失为:
根据图片右下角说明OIC损失通过外部红色区域的平均激活度减去内部绿色区域的平均激活度得到。通过最小化 L O I C ( φ ) L_{OIC}(φ) LOIC(φ) 来奖励内部高激活度和惩罚外部高激活度。
OIC对内部和外部边界是可微的,通过OIC损失发现的监督可以反向传播到底层边界预测模型。
对于内部边界[ x 1 , x 2 x_1,x_2 x1,x2]的梯度如下:
对于外部边界[ x 1 , x 2 x_1,x_2 x1,x2]的梯度如下:
输入数据:每次输入是一个单一的未修剪的视频。对于每个视频,首先将其划分为15帧长且没有重叠的片段,并为每个片段单独提取特性。
特征提取:首先训练一个UntrimmedNet(the soft version),然后使用训练好的网络作为主干进行特征提取。该骨干网由一个接受RGB输入的空间流和一个接受光流输入的时间流组成。对于每个流,使用BN Inception,并在全局池层提取1024维特性。最后,对于每个片段,将提取的空间特征和时间特征连接成一个2048维的特征向量。对于每个有T个片段的输入视频,特征图shape为2048(通道)×T(片段)。
目标:获得类激活序列(CAS)。
方法:建立了一个基于UntrimmedNet的激活生成器。对于每个视频,使用UntrimmedNet中事先训练好的两个FC层分别提取出大小为K(行为)×T(片段)的分类分数序列和T维的attention score序列。对于每个片段,在其attention score低于阈值时,将所有类的分类分数设置为0(在THUMOS 14训练集上通过网格搜索选择7,在ActivityNet上也可以很好地工作);将这种门控分类分数作为激活,其范围在[0,1]。最后,对于每个视频,大小为K(行为)×T(片段)的CAS。
注:使用了UNtrimmedNet的soft selection
目标:学习直接预测片段边界的参数化模型。
缘由: 最近的全监督TAL方法已经证明了regressing anchors直接预测边界的有效性:anchor是可能片段的假设;分别回归得到预测的边界(1)anchor片段的中心位置和(2)anchor片段的时间长度; multi-anchor mechanism用于覆盖不同时间尺度的可能片段。
方法:设计了一个定位网络B来查看特征图上的每个时间位置,并为每个anchor输出需要的两个边界回归值。使用这些回归值对anchor进行回归,以获得预测的行为边界(内部边界),并通过膨胀内部边界来获得外部边界。最后,在CAS的基础上,引入了一个具有OIC损失的OIC层来生成最终的片段预测。
定位网络B的网络结构:
获取最终预测的OIC层:最后,引入一个OIC层,使用OIC损失来测量每个段包含行为的可能性,然后删除不可能包含行为的片段。在测试期间,这个OIC层输出一组预测片段。在训练过程中,该OIC层进一步计算总OIC损失,并将梯度反向传播到底层边界预测模型。
具体地说,给定一个输入视频,Classification Branch生成它的CAS,而Localization Branch预测候选的与类无关的片段。(注意,由于B中所有的时间卷积层都是用stride = 1随时间滑动的,所以feature map上每个时间位置预测的片段集和CAS上每个时间位置的激活是成对的,对应的是同一个输入片段。)
因此:
在训练过程中,总损失是每个保持的片段预测所产生的OIC损失的总和。可以计算每个保留段预测所触发的梯度,然后将它们累加起来更新底层的边界预测器b。每一部分的预测包括(1)预测操作类,(2)置信度得分也设置为1 - OIC损失,和(3)通过从片段级粒度(连续值之前四舍五入到最近的整数)到时间转换内部边界[ x 1 , x 2 x_1, x_2 x1,x2]得到开始时间和结束时间。
数据集:
评价标准:根据测试视频,系统输出行为片段预测的等级列表。每个预测包含行为类、开始时间和结束时间,以及置信度得分。遵循惯例来评估平均精度(mAP)。只有当(1)被预测类是正确的,且(2)其与真实标签段的时间重叠IoU超过评估阈值时,才认为每个预测是正确的。不允许对同一真实标签段进行重复检测。
THUMOS’ 14的结果如表1所示。
ActivityNet v1.2的结果如表2所示。
问题1:提议的OIC损失有多有效?
为了评估提议的OIC丢失的有效性,我们在片段级粒度上枚举了所有的候选片段(例如,一个片段从第2个片段的位置开始,在第6个片段的位置结束)。我们利用OIC损失来衡量每个部分包含行为的可能性,然后选择最可能的行为。具体地说,对于每一段,我们计算它作为每一个行为的OIC损失。然后,删除具有高OIC损失的片段,并通过NMS删除重复的预测。我们称这种方法为OIC选择。如表3所示,虽然OIC的效果不如AutoLoc,但OIC的选择仍然显著提高了目前的研究结果。因为OIC损失明显地倾向于内部高激活度和外部低激活度的部分,而且这种低OIC损耗的部分通常与真实标签部分很好地对齐。这证实了OIC损失的有效性。
问题2:内部区域和外部区域的对比有多重要?
OIC损失的核心思想是鼓励内部区域的高激活度,同时惩罚外部区域的高激活度。我们考虑另一个变量,它也可以发现分段级监督,但不模拟内部和外部之间的对比。具体来说,我们将AutoLoc中的OIC丢失改为仅在内部丢失,这只鼓励了片段内部的高激活度,而不考虑上下文区域。如表3所示,性能下降了很多。
因此,在设计训练边界预测器的损失时,考虑内部区域和外部区域的对比是非常重要和有效的。值得注意的是,观察内部和外部之间的对比的想法与使用高斯(LoG)过滤器的拉普拉斯(Laplacian)来检测blob有关。计算OIC损失的操作是将CAS与图4所示的step函数进行有效的卷积,可以将其视为LoG filter的一种变体,以方便网络训练。从数学上我们可以证明对数滤波器的积分和阶跃函数的积分在(- Inf,+Inf)范围内均为零。在此基础上,利用multi-anchor mechanism 和边界回归方法对blob detection 中的尺度选择进行了探讨。尽管OIC的损失很简单,但它在实践中对于确定可能的行动部分是相当有效的。
问题3:与直接优化测试视频的边界相比,在训练视频上学习模型有什么好处?
因为直接优化是根据测试视频的CAS来优化预测边界的,可能不是很准确。最终,直接优化会覆盖这种不准确的CAS,从而导致不完全的边界预测。在AutoLoc中,B已经接受了多个训练视频的训练,因此对CAS中的噪声具有较强的鲁棒性。因此,即使测试视频的CAS不完美,AutoLoc仍然可以预测出良好的边界。此外,直接优化要求对测试视频的边界预测进行优化直到收敛,因此其测试速度比AutoLoc慢得多。例如,在ActivityNet上,直接优化在25次训练迭代(25次向前传递和25次向后传递)之后收敛。而AutoLoc直接使用训练好的模型对测试视频进行推理,因此在测试过程中只需要一个前向遍历。