Boundary-Aware Cascade Networks for Temporal Action Segmentation
网络简介与训练
本篇论文提出了一个边界感知级联网络(boundary-aware cascade network),这个网络中包含两个新的组件。
第一个是stage cascade,阶段级联能够适应性地调整感受野,对较为模糊的帧产生更自信的预测。
另一个是local barrier pooling,能够使用边界信息来对局部预测做聚合。
整体上的网络结构如图所示
我们采用端到端的方式进行训练,以MS-TCN为baseline,整个BCN网络的训练又可以细分成两个部分:预训练barrier generation module(BGM)模块,联合训练Stage Cascade(SC)和BGM模块。
BGM模块可以评估每个时间位置作为边界的概率,并且选择出合适的barrier输入到后续的正则化器:local barrier pooling;
SC模块的输入有:视频特征序列、先前阶段的所有输出,包括置信度分数,网络可以实现逐帧预测其置信度分数,并确定损失函数的权重。级联各个stage的输出将用于融合阶段,即fusion stage
预训练的目的:在后面的联合训练中使得BGM能够提供较为准确的边界预测,同时由于SC和BGM部分收敛速度不同,预训练能够帮助我们对BGM的参数进行较为充分的优化。
在联合训练中,BGM和SC均可以通过BP得到训练
Boundary-Aware Cascade Networks的细节与公式化描述
Stage Cascade
尽管现有的复杂网络结构在处理一些难分类的帧的问题上有较好的效果,但更深的网络,或者说越来越大的模型容量,除了损耗计算资源外,还可能会引起对一些简单帧的过分类。
另外一点,有些在动作边界处的帧信息,并不是困难,而是模糊。这里的模糊是说,动作上是连续变化的而标签会随动作阶段的不同而产生突变。
基于以上问题,可能单单一个模型的话,会对这些不一致(标签模糊)的样本产生误判或者打出较低的分数。
这时候就需要提出一个动态可调的模型,去解决丰富的信息和较模糊帧所带来的困难。
论文中提出级联策略Stage Cascade,能够根据不同帧的复杂程度适应性地通过不同阶段预测帧的标签,其中每个级联阶段都是MS-TCN中的一个SS-TCN。
但,不同的是MS-TCN中仅有第一个阶段接收视频特征,其余阶段均接收上一阶段的置信度分数输出。
在SC模块中,我们将所有先前阶段的输出和视频特征均输入到当前SS-TCN中,并且逐帧评估分类分数。
其中考虑之前所有阶段输出情况的方法,大概类似于DenseNet的结构。
以往工作中专注于扩大模型的计算能力,但感受野常常是固定的;在新的模型中,SC模块能够适应性地对不同情景(标签突然变化、硬样本帧)下的不同需求,为每个帧分配阶段,而每个阶段都有一套不同的感受野和权重。
前面的阶段着重于解决简单的帧,后续阶段关注模糊、困难的帧,这样从简单到困难的方式,可以逐步产生更优质的、更自信的预测。
关于阶段级联模块
对于长动作片段的信息帧,为防止过拟合,可以使用低容量的较弱模型来捕捉长期时间依赖性信息;
对于动作边界周围或偶然性的动作,我们设计了更强的模型,具有自适应感受野,能够对模糊框架产生更精确的预测。
在代码运行的过程中,级联的方式会为每一帧分配各个及连接段的权重,最终呈现的结果不是某帧分配到的主要依赖的某一阶段的预测结果,该帧的预测结果是多个阶段预测结果的加权值。
关于t时间(帧)处的第i阶段的权重,我们按如下的方式进行权重的计算:
其中c是第t帧处在第i阶段的置信度分数,ρ是设置的阈值参数。值得注意的是,由于我们要求只能有且只有一个阶段在每一帧的多个阶段中占据预测的主导地位,所以当某个较先的阶段显示出足够的confidence,我们将停止再增加权重。
在前面几个不同阶段进行预测之后,我们将不同阶段的输出输入到fusion stage,将其自适应地组合起来,产生SC部分的最后预测标签。关于融合阶段的目的,在综合前面n个阶段的预测的基础上,fusion stage输出更为平滑的逐帧分类的结果,并且生成更合理的时间动作分割片段。
按照惯例,为保证训练过程稳定收敛,我们在级联阶段与融合阶段加入loss function,主要包括两部分:
平滑损失函数中,主要针对所有的级联阶段与融合极端,使用与MS-TCN相同的方式进行;
分类损失函数中,我们在融合阶段的计算,与MS-TCN中方式相同,即下图左式;我们在SC的级联各阶段,根据权重矩阵调整各阶段在损失函数中的占比如下图右式。
显然,SC中的不同帧在不同阶段之间相互切换,相对于baseline更容易出现过分割的问题,使得融合阶段的输入信息并不光滑。如上文所说,而其他先验知识类的平滑损失函数也并不能较好的解决这一问题,由此我们从操作算子的角度入手,提出了Local Barrier Pooling
Local Barrier Pooling
SC模块能够为各帧动态分配stage,但由于波动的阶段分配,以及其引起的模型对噪声较为敏感的情况,使得原先存在的过分割问题更加严重。
由此,我们期望能够设计出一种新的适应性的temporal smoothing operation,即一个时间上的平滑操作来缓解这个问题。
以前的方法是使用一个额外的时间平滑损失函数,本质上是一种人为规定的先验知识。
现在我们期望利用动作边界对动作实例进行时间正则化,因为动作边界自然地能够标明动作内部的予以一致性和边界两边的差异。由此我们提出LBP,能够根据边界信息保证时间一致性,而实践一致性能够保证良好的分割结果。
关于LBP,通过一个二元分类预测动作的边界,其标签来自分割数据集自带的ground truth。之后LBP对上述帧级别的预测进行 local aggregation。通过这样的方法,LBP能够根据较为自信的预测结果来平滑噪声预测,从而缓解过分割问题。
关于LBP的结构,可以参照下图:
LBP将动作边界视为动作类别标签扩散的屏障,主要可以分为两步:
(1)训练一个分类网络,用于预测边界,选择其中置信度较高的temporal location作为边界。
(2)在local pooling window 中计算预测值的加权和,其中,各个权重是适应于池化中心两侧的动作屏障的,以当前帧为中心的local pooling window,从中心扩展,计算时间轴两个方向的权重,在遇到障碍时相应减小权重。
生成barrier的情况如下图所示:
关于屏障生成,我们使用的是BSN的时间评估模块TEM为基础,改写出 barrier generation module(BGM),但不同于原TEM,BGM不追求最精准地检测边界,而是希望能够为LBP提供完整的barrier信息,用于平滑动作实例内的预测,同时也不损害边界之间的准确性。