Weakly Supervised Video Salient Object Detection(下)

175 阅读8分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

3.4. Appearance-motion fusion module

AMFM模块的作用是融合fα(X)f_{\alpha}(X)fα(F)f_{\alpha}(F)。AMFM的输入是外观特征frkf_r^k和运动特征fmkf_m^k,大小为C×W×HC×W×H。我们使用两个ReLU激活函数的卷积层去将frkf_r^kfmkf_m^k的channels的数量分别减少到32。然后用级联操作和1×11×1的卷积层得到fused featuregrmkg_{rm}^k,大小为C×W×HC×W×H,包含了外观和运动信息。

问题:什么是级联操作(concatenation operation)?
回答:将新向量拼接到原来的向量之后,对应着维数增加,具体请见这里。但是这里的级联操作应该就是concat,要不然size那里说不通。

AMFM中有3个子模块,分别叫做gate module(GM),channel attention module(CAM)和spatial attention module(SAM)。GM用来控制外观信息和运动信息的重要性,另外两个注意力机制模块用来选择具有辨别性的channels和locations。在GM中,两个不同的门可以从被融合的信息grmg_{rm}中生成,分别叫做外观门Gr(grm)G_r(g_{rm})和运动门Gm(grm)G_m(g_{rm})。这个模块可以控制frf_rfmf_m的重要性,公式如下:

G=GAP(σ(Conv(grm;β)))G=GAP(\sigma(Conv(g_{rm};\beta)))

其中,G=[Gr,Gm]Gr,GmG=[G_r, G_m],G_r, G_m是两个[0,1]范围内的标量。Conv(grm;β)Conv(g_{rm};\beta)是一个1×11×1的卷积层,可以将特征grmg_{rm}的channels数从CC减少到2。GAP()GAP(*)是空间维度中的global average pooling层,β\beta是网络参数集合,σ()\sigma(*)是sigmoid函数。 门模块产生了两个不同的标量,代表了外观和运动信息的重要性。然而,它无法强调哪些channels和空间位置是重要的。基于此,我们提出了两个注意力机制模块,叫做CAM和SAM,如下:

CA=Softmax(FC(MaxPooling(grm);β))CA=Softmax(FC(MaxPooling(g_{rm});\beta))
SA=σ(Conv(grm);β)SA=\sigma(Conv(g_{rm});\beta)

其中CA=[cr,cm]CA=[c_r, c_m]是两个外观和运动信息的channel attention maps,大小为C×1×1C×1×1MaxPooling()MaxPooling(*)在空间维度内。FCFC是输出为2Cchannels的全连接层。SoftmaxSoftmax函数应用在每C个channels中。SA=[sr,sm]SA=[s_r, s_m]sr,sms_r, s_m是两个spatial attention maps,大小为1×W×H1×W×H。接着,门[Gr,Gm][G_r, G_m],channel attention tensors[cr,cm][c_r, c_m],spatial attention tensors[sr,sm][s_r, s_m]分别和fr,fmf_r, f_m相乘实现importance reweighting(门模块)和attention reweighting(注意力机制模块)。然而,这样的乘积操作可能会丢失一些有用的信息。因此使用以下形式来利用门控特征:

gr=(Grfr)(1+srcr)g_r=(G_r\bigotimes f_r)(1+s_r\bigotimes c_r)
gm=(Gmfm)(1+smcm)g_m=(G_m\bigotimes f_m)(1+s_m\bigotimes c_m)

其中\bigotimes表示element-wise multiplication with broadcast(对应元素点乘)。最后输出相加得到融合特征gAMFM=gr+gmg^{AMFM}=g_r+g_m

问题:什么是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单元得到了隐层Htf,HtbH_t^f, H_t^b,如下所示:

Htf=ConvLSTM(Ht1f,gtAMFM;γ)H_t^f=ConvLSTM(H_{t-1}^f, g_t^{AMFM}; \gamma)
Htb=ConvLSTM(Ht+1b,Htf;γ)H_t^b=ConvLSTM(H_{t+1}^b, H_t^f; \gamma)
stTIEM=Conv(Cat(Htf,Htb);γ)s_t^{TIEM}=Conv(Cat(H_t^f, H_t^b); \gamma)

其中gtAMFM,stTIEMg_t^{AMFM}, s_t^{TIEM}分别是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。更具体地说,对于第ii帧特征图fif_i和第jj帧特征图fjf_j,我们首先使用一个1×11×1的卷积层把它们映射到一个embedding space(embedding)。随后,reshape它们成C×WHC×WH大小。然后我们在sigmoid激活函数σ\sigma后面做矩阵乘积得到similarity mapA^\hat{A},大小为HW×HWHW×HW。如下所示:

A^i,j=σ(Conv(fi)TConv(fj)){\hat{A}}_{i,j}=\sigma(Conv(f_i)^TConv(f_j))

其中Conv()Conv(*)是一个1×11×1的卷积层。A^i,j{\hat{A}}_{i,j}表示第ii帧和第jj帧之间的similarity map。然后我们需要建立一个gt map去监督A^i,j{\hat{A}}_{i,j}。通过给定的第ii帧弱监督标注YiY_i,我们首先对其下采样到和特征图fif_i同样大小,这样我们就得到了一个更小的标注Y~i\tilde{Y}_i。我们将Y~i\tilde{Y}_i前景部分encode成[1,0],背景为[0,1],这样的话tensorY~i\tilde{Y}_i的大小是2×H×W2×H×W。然后,把它reshape成2×HW2×HW的大小。同样地我们也对第jj帧做同样的操作得到Y~j\tilde{Y}_j。然后,我们再次做矩阵乘法得到Ai,j=Y~iY~jTA_{i,j}=\tilde{Y}_i \tilde{Y}_j^T,大小为HW×HWHW×HW。我们在Fig. 5中将这一过程可视化。注意以上这些所有操作都在被标注的像素点上进行,意味着对于没有标注的像素点不做similarity的计算。我们使用JJ代表Ai,jA_{i,j}的点的集合。然后我们改编partial cross entropy loss去监督similarity map:

Lsi,j=u,vJ(Au,vlogA^u,v+(1Au,v)log(1A^u,v))L_s^{i,j}=-\sum_{u,v\in J}(A_{u,v}log\hat{A}_{u,v}+(1-A_{u,v})log(1-\hat{A}_{u,v}))

在这里插入图片描述

假设每次迭代我们有TT帧,我们就能计算出当前帧和其他帧及自身的similarity loss,总的loss如下所示:

Ls=i=1Tj=iTLsi,jL_s=\sum_{i=1}^T\sum_{j=i}^TL_s^{i,j}

问题:这样求loss的优势在哪里? 回答:就是真实标注的similarity和预测的similarity应该是接近的。

3.7. Loss Function

如Fig. 2所示,我们用partial cross entropy lossLcL_c和foreground-background similarity lossLsL_s去训练我们的模型。除此之外,还使用了gated structure-aware lossLgL_g和edge losslel_e。为了简洁,我们没有在Fig. 2中显示LgL_glel_eLs,LgL_s, L_glel_e是从静止图像的scribble标注中学习的loss,LsL_s是从一系列帧中学习的loss。根据传统视频显著性检测的pipeline,我们用RGB显著性检测数据集进行预训练。不同的是,我们使用scribble标注数据集,叫做S-DUTS。然后,我们用眼动点scribble标注微调网络。为了预训练网络,我们这样定义loss:

Lpretrain=β1Lc+β3Lg+β4LeL_{pretrain}=\beta_1\cdot L_c+\beta_3\cdot L_g+\beta_4\cdot L_e

然后我们用以下的损失函数微调网络:

Lfine=β1Lc+β2Ls+β3Lg+β4LeL_{fine}=\beta_1\cdot L_c+\beta_2\cdot L_s+\beta_3\cdot L_g+\beta_4\cdot L_e

根据经验,β1=β2=β4=1,β3=0.3\beta_1=\beta_2=\beta_4=1, \beta_3=0.3

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和我们视频显著性检测数据集的光流,分别记作prgbp_{rgb}pmp_m。在这里,选择其他的SOD方法也是合理的。根据《A plug-and-play scheme to adapt image saliency deep model for video data》做的工作,我们选择prgbp_{rgb}pmp_m的交集作为融合的saliency map p=prgbpmp=p_{rgb}\bigodot p_m,用来捕捉prgbp_{rgb}pmp_m的一致的显著性区域。我们的基本假设是pp包含了所有的前景scribble,且没有覆盖到背景scribble。基于此,我们将pp的quality score定义为:

score=T(p)sfore0sfore0(1T(p)sback0sback0)score=\frac{||T(p)\bigodot s_{fore}||_0}{||s_{fore}||_0}\cdot(1-\frac{||T(p)\bigodot s_{back}||_0}{||s_{back}||_0})

其中T()T(*)二值化saliency map,threshold为0.5。0||*||_0表示L0L0范式。sfore,sbacks_{fore}, s_{back}分别是前景和背景scribble,如Fig. 3(d)所示。

quality score的第一部分目的在于评估前景scribble在pp的覆盖率,而后部分激励不是背景的scribble尽量与pp重合。通过这样的方式,高的quality score表示更好的saliency map pp。然后我们选择那些quality score超过预设阈值(Tr=0.98Tr=0.98)的saliency maps。对于每个视频序列,我们接下来可以得到一个高质量伪saliency maps的集合PP。如果伪saliency maps中的PP的数量超过当前视频序列帧数的10%,我们用高质量的伪标签代替scribble标注。否则整个视频序列的标注都不变。我们把这个新的弱监督标注集定义为我们的第一阶段伪标签集合Db1D_{b1}

对于那些高质量伪标签的视频序列,我们用Db1D_{b1}中的相应标注单独训练。经过了KK次(K为当前视频序列大小的8倍)迭代的训练后,我们使用训练好的模型进行推理以获得第二阶段的伪标签集Db2D_{b2}。需要注意的是,第 4.2 节中介绍了训练每个序列的模型作为消融实验“B”。 然后我们将Db2D_{b2}作为我们的增强标注,用Db2D_{b2}来训练我们的整个模型。在训练过程中,如果一帧图像有一个生成的伪标签,我们直接以它作为监督。否则,我们用scribble标注作为监督。在Fig. 6中我们显示了增强标注“Boosted”,清晰展示了增强策略的有效性。