本文已参与「新人创作礼」活动,一起开启掘金创作之路。
3.4. Appearance-motion fusion module
AMFM模块的作用是融合和。AMFM的输入是外观特征和运动特征,大小为。我们使用两个ReLU激活函数的卷积层去将和的channels的数量分别减少到32。然后用级联操作和的卷积层得到fused feature,大小为,包含了外观和运动信息。
问题:什么是级联操作(concatenation operation)?
回答:将新向量拼接到原来的向量之后,对应着维数增加,具体请见这里。但是这里的级联操作应该就是concat,要不然size那里说不通。
AMFM中有3个子模块,分别叫做gate module(GM),channel attention module(CAM)和spatial attention module(SAM)。GM用来控制外观信息和运动信息的重要性,另外两个注意力机制模块用来选择具有辨别性的channels和locations。在GM中,两个不同的门可以从被融合的信息中生成,分别叫做外观门和运动门。这个模块可以控制和的重要性,公式如下:
其中,是两个[0,1]范围内的标量。是一个的卷积层,可以将特征的channels数从减少到2。是空间维度中的global average pooling层,是网络参数集合,是sigmoid函数。 门模块产生了两个不同的标量,代表了外观和运动信息的重要性。然而,它无法强调哪些channels和空间位置是重要的。基于此,我们提出了两个注意力机制模块,叫做CAM和SAM,如下:
其中是两个外观和运动信息的channel attention maps,大小为。在空间维度内。是输出为2Cchannels的全连接层。函数应用在每C个channels中。,是两个spatial attention maps,大小为。接着,门,channel attention tensors,spatial attention tensors分别和相乘实现importance reweighting(门模块)和attention reweighting(注意力机制模块)。然而,这样的乘积操作可能会丢失一些有用的信息。因此使用以下形式来利用门控特征:
其中表示element-wise multiplication with broadcast(对应元素点乘)。最后输出相加得到融合特征。
问题:什么是MaxPooling在空间维度内?
回答:每个通道都是一个空间维度,这个意思就是说在每个通道里分别做MaxPooling。
问题:如何理解element-wise multiplication with broadcast中的broadcast?
回答:比如说你用一个1通道的和C通道的进行element-wise的相乘或者相加 broadcast意思就是相当于把这个1通道的复制成C通道 这样就能element-wise对应起来了。
3.5. Temporal information enhanced module
虽然外观-运动模块可以有效地融合外观信息和运动信息,但我们仍然观察了不太好的预测当我们单独使用外观-运动模块时。我们认为出现这种情况的原因有两个:1.光流图只能提供两个临近帧的时间信息,无法保留长期的时间信息。2.作为带有外观特征的流特征,一些低质量的流可能为网络带来噪音,导致预测恶化。
为了解决这个问题,我们通过采用双向的ConvLSTM建立了长期时间信息模型来加强约束cross-frames的空间和时间信息,模型称为r “Temporal information enhanced module” (TIEM) 。传统方法只在最高的level上添加temporal model,而我们在在每个AMFM后面都添加TIEM以提升视频帧之间的每个feature level的信息流。
通过双向的ConvLSTM,我们从前传和后传ConvLSTM单元得到了隐层,如下所示:
其中分别是AMFM和TIEM中得到的特征。
3.6. Foreground-background similarity loss
《Weakly-supervised salient object detection via scribble annotations》从独立的静止图像中学习显著性,然而我们的模型用眼动点scribbles学习视频显著性,这样临近帧的标注是相关的。相邻帧的冗余使得可以重复使用其他帧的涂鸦注释来监督当前帧。 另外,我们观察到如果没有每个像素的标注,网络难以分辨出每个像素点。受《Context prior for scene segmentation》启发,我们提出了“Foreground-background similarity loss”去充分利用弱监督标注,对临近帧的所有点建立关系。我们认为一些类别(两帧的显著性区域或两帧的背景)的特征的similarity应该比不同类别之间的大。基于此,我们首先计算了两个特征图的similarity。更具体地说,对于第帧特征图和第帧特征图,我们首先使用一个的卷积层把它们映射到一个embedding space(embedding)。随后,reshape它们成大小。然后我们在sigmoid激活函数后面做矩阵乘积得到similarity map,大小为。如下所示:
其中是一个的卷积层。表示第帧和第帧之间的similarity map。然后我们需要建立一个gt map去监督。通过给定的第帧弱监督标注,我们首先对其下采样到和特征图同样大小,这样我们就得到了一个更小的标注。我们将前景部分encode成[1,0],背景为[0,1],这样的话tensor的大小是。然后,把它reshape成的大小。同样地我们也对第帧做同样的操作得到。然后,我们再次做矩阵乘法得到,大小为。我们在Fig. 5中将这一过程可视化。注意以上这些所有操作都在被标注的像素点上进行,意味着对于没有标注的像素点不做similarity的计算。我们使用代表的点的集合。然后我们改编partial cross entropy loss去监督similarity map:
假设每次迭代我们有帧,我们就能计算出当前帧和其他帧及自身的similarity loss,总的loss如下所示:
问题:这样求loss的优势在哪里? 回答:就是真实标注的similarity和预测的similarity应该是接近的。
3.7. Loss Function
如Fig. 2所示,我们用partial cross entropy loss和foreground-background similarity loss去训练我们的模型。除此之外,还使用了gated structure-aware loss和edge loss。为了简洁,我们没有在Fig. 2中显示和。和是从静止图像的scribble标注中学习的loss,是从一系列帧中学习的loss。根据传统视频显著性检测的pipeline,我们用RGB显著性检测数据集进行预训练。不同的是,我们使用scribble标注数据集,叫做S-DUTS。然后,我们用眼动点scribble标注微调网络。为了预训练网络,我们这样定义loss:
然后我们用以下的损失函数微调网络:
根据经验,
3.8. Saliency boosting strategy
我们基于眼动点scribble标注的算法有着具有竞争力的表现。此外,我们注意到SOD算法也能在VSOD数据集上获得合理的结果。受《Weakly supervised salient object detection with spatiotemporal cascade neural networks》启发,我们提出了一种基于伪标注的显著性一致性增强技术(saliency consistency based pseudo label boosting technique),其受SOD模型的指导以进一步提炼我们的标注信息。
具体来说,我们采用EGNet生成RGB图像的saliency maps和我们视频显著性检测数据集的光流,分别记作和。在这里,选择其他的SOD方法也是合理的。根据《A plug-and-play scheme to adapt image saliency deep model for video data》做的工作,我们选择和的交集作为融合的saliency map ,用来捕捉和的一致的显著性区域。我们的基本假设是包含了所有的前景scribble,且没有覆盖到背景scribble。基于此,我们将的quality score定义为:
其中二值化saliency map,threshold为0.5。表示范式。分别是前景和背景scribble,如Fig. 3(d)所示。
quality score的第一部分目的在于评估前景scribble在的覆盖率,而后部分激励不是背景的scribble尽量与重合。通过这样的方式,高的quality score表示更好的saliency map 。然后我们选择那些quality score超过预设阈值()的saliency maps。对于每个视频序列,我们接下来可以得到一个高质量伪saliency maps的集合。如果伪saliency maps中的的数量超过当前视频序列帧数的10%,我们用高质量的伪标签代替scribble标注。否则整个视频序列的标注都不变。我们把这个新的弱监督标注集定义为我们的第一阶段伪标签集合。
对于那些高质量伪标签的视频序列,我们用中的相应标注单独训练。经过了次(K为当前视频序列大小的8倍)迭代的训练后,我们使用训练好的模型进行推理以获得第二阶段的伪标签集。需要注意的是,第 4.2 节中介绍了训练每个序列的模型作为消融实验“B”。 然后我们将作为我们的增强标注,用来训练我们的整个模型。在训练过程中,如果一帧图像有一个生成的伪标签,我们直接以它作为监督。否则,我们用scribble标注作为监督。在Fig. 6中我们显示了增强标注“Boosted”,清晰展示了增强策略的有效性。