1.介绍
SAMNet: Stereoscopically Attentive Multi-scale Network for Lightweight Salient Object Detection
SAMNet:用于轻量级显著目标检测的立体关注多尺度网络
2021年发表在IEEE Transactions on Image Processing。
Paper Code
2.摘要
显着目标检测(SOD)的最新进展主要得益于卷积神经网络(CNN)的爆炸性发展。然而,大部分改进都伴随着更大的网络规模和更重的计算开销,在我们看来,这对移动设备不友好,因此难以在实践中部署。为了促进更实用的SOD系统,我们引入了一种新的立体注意多尺度(SAM)模块,它采用了立体注意机制,自适应地融合各种尺度的功能。在这个模块上,我们提出了一个非常轻量级的网络,即SAMNet,SOD。在流行的基准测试上进行的大量实验表明,所提出的SAMNet在仅使用1.33M参数的336×336输入下以343fps的GPU速度和5fps的CPU速度运行时,可以获得与最先进方法相当的精度。因此,SAMNet为SOD铺平了一条新的道路。源代码可以在项目页面https://mmcheng.net/SAMNet/上找到。
Keywords:SOD、立体注意多尺度、轻量级
3.Introduction
Salient object detection(SOD),也称为显着性检测,旨在检测自然图像中最具视觉特征的对象或区域。由于卷积神经网络(CNN),特别是全卷积网络(FCN)的空前成功,基于深度学习的方法刷新了SOD的最新性能。然而,这些改进并非没有代价:它们通常依赖于大的网络大小和大量的计算开销。对于自动驾驶、机器人、增强现实等实时和资源受限的应用而言,显著性目标检测无疑不那么实用。在这些场景中,移动的设备的计算能力降低,内存限制和能源开销有限。设计轻量级CNN绝对是解决上述问题的解决方案之一,由于以下挑战,这是不平凡的:i)SOD需要高级抽象语义特征和低级细粒度特征来分别定位显著对象和细化对象细节; ii)SOD需要多尺度信息来处理自然场景中具有各种大小和纵横比的显著对象。由于轻量级网络通常具有浅深度和简化的操作,因此它们在多层次和多尺度学习方面不如传统的大型网络有效。
众所周知,CNN可以在其顶部学习高级语义信息,在其底部学习低级细节。这使得CNN的不同侧输出包含多尺度信息。因此,为了学习多级和多尺度信息,当前最先进的SOD方法(具有大型网络)采用编码器-解码器网络架构来集成骨干网络的多级侧输出特征。SOD的最新发展主要来自于新的策略和模块,用于有效融合多级骨干特征。基于上述分析,轻量级超文本标记语言的关键是如何在有限的参数预算内有效地学习多层次和多尺度信息。而不是集成骨干网络的不同侧输出或总结不同膨胀率的卷积特征。
本文提出了一种新的立体注意多尺度(SAM)模块用于多尺度学习。它采用立体注意机制来自动控制不同尺度的学习,因此它能够有效地学习深度CNN各个层次的必要信息。以SAM模块为基本单元,构建了一个轻量级的编码器-解码器网络SAMNet,以集成SAM模块学习到的多层次、多尺度特征。
4. 模型结构详解
先介绍多尺度模块,再介绍SAM模块,再介绍模型整体结构。
多尺度学习 Multi-scale Learning MSL
CNN的多尺度特征表示对于SOD非常重要。受此启发,本文首先提出了一个简单的多尺度模块来处理不同尺度的视觉信息。轻量化是设计的核心。采用不同膨胀率的膨胀卷积来捕获多尺度信息,并使用深度可分离卷积来减少浮点运算和模型参数。称之为扩张的深度可分离卷积,并将其用作基本卷积算子,以在深度和宽度方面扩展网络维度。形式上,设
I
∈
R
C
×
H
×
W
I ∈ R^{C×H×W}
I∈RC×H×W为输入特征图,其通道数、高度和宽度分别为C、H和W。对于输入I,首先应用单个深度可分离的conv3 × 3(简称DSConv3 × 3)来提取每个分支的公共信息F0,即,
其中K0表示DSConv3 × 3操作。在不同的分支处,具有不同扩张率的膨胀的DSC0nv3 × 3被应用于F0,即,
其中Ki表示在分支i处的扩张DSConv3 × 3运算,N是分支数。然后,不同尺度的上下文信息通过具有剩余连接的单个元素求和来聚合,即,
在这里,使用逐元素求和而不是串联,因为串联将大大增加通道数量,导致计算复杂度更高,网络参数更多。最后,通过vanilla conv1 × 1,即,
其中Kfuse表示conv1 × 1操作,以融合各种尺度的上下文信息。I的总和表示残差连接,这在CNN训练中被证明是有效的。膨胀率和分支数是的多尺度模块中涉及的超参数。经验上,当输入特征I具有高分辨率时,期望更大的膨胀率和更多的分支,因为大的特征图通常具有各种尺度的上下文信息。
立体注意多尺度模块 Stereoscopically Attentive Multi-scale Module SAM
上述多尺度模块的潜在缺点在于逐元素求和。当来自不同分支尺度的上下文信息直接汇总在一起时,信息丰富分支可能被信息少分支削弱甚至淹没。另一方面,不同网络深度的层可能更喜欢来自不同尺度的信息,而元素求和则为所有尺度分配相同的重要性。为了缓解这个问题,提出了一种新的立体注意力机制,允许在每个空间位置的每个通道,以自适应地调整软注意力机制的每个分支的权重。上图提供了所提出的具有四个分支的SAM模块的图示。(其实就是上述的Multi-scale Learning +绿色的注意力模块)
a)立体注意机制:输入特征是一个4维张量 F ∈ R ( N + 1 ) × C × H × W F ∈ R^{(N+1)×C×H×W} F∈R(N+1)×C×H×W,其中每个分支i ∈ {0,· · ·N}生成不同尺度和语义级别的特征 F i ∈ R C × H × W Fi ∈ R^{C×H×W} Fi∈RC×H×W。人们普遍认为,网络中不同深度级别的层可能更喜欢这些不同尺度的信息,并且因此盲目地馈送所有特征F可能导致严重的过拟合。一个自然的解决方案是自动地抑制非信息分支并促进有区别的分支,我们通过完善的注意力机制来实现这一点。
本文认为,理想的注意力模块应该具有以下特征。i)由于每个通道的独立性,最终的注意力应该具有很强的通道内依赖性。更具体地说,不同的特征通道通常通过将独立滤波器与输入特征进行卷积来获得。在这种情况下,如果来自特定通道的特征为最终预测提供信息,则相同分支的相同通道中的特征也可能是提供信息的。2)最终注意力应该具有很强的空间依赖性。原因可能是,作为一个中级任务,SOD需要在每个像素的局部邻域中进行一定程度的推理。3)计算要有效率。在这种情况下,独立学习一个群体的天真解决方案(例如,C ×H×W)的分支注意力权重是次优的,由于其沉重的计算过载。上面提到的前两个要求分别以全局和局部的方式规范注意力机制。这自然促使我们将最终的注意力权重v分解为两个单独的权重,如下所示:
其中,d和s分别表示通道方向的注意力和空间方向的注意力。
⊗
\otimes
⊗表示逐元素乘法,d和s在乘法之前被复制为相同的形状(N+1)×C×H×W。更具体地说,通道注意力
d
∈
R
(
N
+
1
)
×
C
d ∈ R^{(N+1)×C}
d∈R(N+1)×C在空间上收缩特征,并以通道全局方式集中抑制非信息特征并促进区分特征。以同样的方式,空间方向的注意力
s
∈
R
(
N
+
1
)
×
H
×
W
s ∈ R^{(N+1)×H×W}
s∈R(N+1)×H×W吸收不同通道上特定空间位置处的特征。最后,d和s被广播到(N+ 1)×C ×H×W的相同维度,以通过上式获得最终的注意力权重。
b)通过尺度融合的预处理:为了减少计算过载,我们用逐元素求和来聚合多尺度上下文信息,即,
融合特征M用于计算每个分支的选通统计。与自注意不同,对每个模块分支的注意是由所有分支的学习决定的,而不是像自注意机制中的单个分支。因此,SAM模块可以从“全局”视图内的所有分支提取信息特征。因此,SAM模块具有以其优选尺度学习特征的能力。
c)通道注意力机制:通道注意力机制旨在为每个分支i(i = 0,1,· · ·,N)计算逐通道注意力向量
W
i
D
∈
R
C
W^D_i ∈ R^C
WiD∈RC。为了探索不同通道之间的通道间关系,在融合特征图M上使用全局平均池化(GAP)嵌入全局信息,即,
其中z ∈ RC是对M的通道信息进行编码的潜在向量。然后,在潜在向量上应用具有两层的多层感知器(MLP),并提取不同尺度的通道信息,如下所示:
其中
d
∈
R
(
N
+
1
)
C
d ∈ R^{(N+1)C}
d∈R(N+1)C进一步整形为KaTeX parse error: Expected '}', got 'EOF' at end of input: R^{(N+1) x C。将softmax函数应用于分支维度上的d以获得通道注意力,即,
与通道注意力纳入,方程中的特征聚合。
->
其中
W
i
D
W^D_i
WiD被复制为与Fi相同的形状(即,RC×H×W)。
d)空间注意机制:空间注意机制旨在计算空间注意图
W
i
S
∈
R
H
×
W
W^S_i ∈ R^{H×W}
WiS∈RH×W以突出或抑制特定位置处的激活。大的感受野可以更好地捕捉上下文信息。在此基础上,采用了3 × 3的DSConv来扩大感受野,同时保持了较低的计算复杂度。具体地说,融合后的特征M首先通过conv 1 × 1投影到低维空间
R
C
/
4
×
H
×
W
R^{C/4×H×W}
RC/4×H×W,以减少参数和计算量。然后,对约简后的特征应用两个3 × 3扩展的DSConv,以实现高效的上下文信息聚合。最后,使用conv 1 × 1将特征再次简化为R(N+1)×H×W。从数学上讲,
其中KaTeX parse error: Expected 'EOF', got '}' at position 10: F^{k×k}_i}̲表示第i个(dependency separable或vanilla)k × k卷积。使用空间注意力将多个分支的融合公式化如下:
其中0 ≤ h < H,0 ≤ w < W。
W
i
S
W^S_i
WiS在乘法之前被复制为RC×H×W的形状。
e)最终归一化:在定义了d和s的情况下,softmax函数被应用于分支维度上的立体注意力v,即,
此后,
W
i
V
∈
R
C
×
H
×
W
W^V_i ∈ R^{C×H×W}
WiV∈RC×H×W用作第i个分支的立体加权标量。所以
到目前为止,已经为多尺度学习设计了四个模块,即,F、FD、FS和FV。其中,FV是本文默认的SAM模块,因为它同时考虑了通道注意力和空间注意力,从而获得了更好的性能。通过上述设计,每个SAM模块可以通过多尺度分支的控制来自动决定它想要的信息。
综上,就是在MSL+通道注意力和空间注意力(即立体注意力),如下,空间注意力与通道注意力扩充后相乘,最终的注意力权重
v
\boldsymbol{v}
v是通过两者相乘得来,有:
v
=
d
⊗
s
v = d ⊗ s
v=d⊗s
其中
d
∈
R
(
N
+
1
)
×
C
\boldsymbol{d} \in \mathbb{R}^{(N+1) \times C}
d∈R(N+1)×C代表传统的channel-wise attention,
s
∈
R
(
N
+
1
)
×
H
×
W
\boldsymbol{s} \in \mathbb{R}^{(N+1) \times H \times W}
s∈R(N+1)×H×W代表传统的spatial-wise attention,
⊗
\otimes
⊗代表element-wise乘。需要注意,在相乘前
d
\boldsymbol{d}
d与
s
\boldsymbol{s}
s会被复制至
(
N
+
1
)
×
C
×
H
×
W
(N+1) \times C \times H \times W
(N+1)×C×H×W尺寸以便进行相乘。
整体结构
a)Backbone:使用所提出的SAM模块作为基本单元构建了FCN结构。在前五个阶段中,使用步长为2的DSConv 3 × 3对输入进行下采样并调整通道数。然后,应用所提出的SAM模块来学习多尺度上下文信息。对于前两个阶段,由于输入特征图具有相对较高的分辨率,因此仅使用一个SAM模块以避免繁重的计算开销。相反,从第三阶段到第五阶段,堆叠多个SAM模块来扩大感受野并丰富深度卷积表示。在最后的第五阶段之后,采用金字塔池模块(PPM)来进一步增强全局特征学习。
b)编码器-解码器网络:基于上述主干,可以构建一个轻量级的编码器-解码器网络,如下图。令{Si:i = 1,2,· · ·,6}表示骨干的每个阶段的输出特征图。对于顶部特征的融合,对S5应用单个conv 1 × 1来调整通道数,并通过逐元素求和来融合S5和S6。然后,采用一个扩张的DSConvk × k进一步整合融合激活。形式上,有
其中
G
5
k
×
k
G^{k×k}_5
G5k×k表示第五阶段的(依赖可分离的)k×k卷积,R5表示第五阶段的融合特征图。类似地,对于底部特征的融合,对来自顶部阶段的融合特征进行上采样,以匹配底部阶段的特征图的空间分辨率。总之,有
其中Up表示具有上采样率2的上采样操作。
c)深度监督和损失函数:采用深度监督来提高隐藏层学习过程的透明度。具体来说,对于融合特征{Ri,i = 1,2,3,4,5},依次应用具有单个输出通道的conv 1 × 1和sigmoid激活函数来导出几个预测{Pi,i = 1,2,3,4,5}。采用标准的二进制交叉熵损失进行训练,其可以用公式表示如下:
其中LBCE是标准的二进制交叉熵损失函数,G表示地面真实显着图。λ表示损失平衡的权重标量,将λ经验性地设置为0.4。
5.结果