[论文阅读] Exploring Dense Context for Salient Object Detection
作者:互联网
论文地址:https://dx.doi.org/10.1109/TCSVT.2021.3069848
发表于:TCSVT 2021
Abstract
上下文在显著目标检测中起着重要作用。高级上下文描述了不同物体/物体不同部分之间的关系,因此有助于发现显著目标的具体位置;而低级上下文可以为显著目标边界的划分提供精细的信息。然而,现有的SOD方法还没有充分研究如何去感知并利用丰富上下文。常见的上下文提取策略,例如,利用大卷积核或者空洞卷积,其没有同时考虑effectiveness与efficiency,可能只能得到次优解。在本文中,我们致力于探索一种有效、高效的方式来学习上下文,最终实现准确的SOD。具体来说,我们构造了一个密集上下文探索(DCE)模块来捕捉密集的多尺度上下文信息,并进一步利用学到的上下文来提高特征的可辨识度。然后,我们将多个DCE模块嵌入至Encoder-Decoder架构中,以获取不同层次的密集上下文。此外,我们提出了一个带有注意力的skip connection,将有用的特征从编码器传到解码器,用于更好地探索密集上下文。大量的实验表明,我们提出的方法在六个基准数据集上取得了比18个SOTA更优的结果。
I. Motivation
目前获取多级上下文的方法主要有
- 使用大卷积核
- 堆叠小卷积核
- 使用空洞卷积
这几种,其实就是如何扩大感受野的问题。文中指出,前两种方法拥有较高的计算复杂度,需要消耗更多的显存,效率高而性能低;而后一种方法属于一种稀疏采样,在dilation rate较大的时候,容易造成上下文信息的丢失,效率高但性能低。为此,本文提出了DCE模块来解决这一问题。
此外,传统的skip connection直接将Encoder的特征concat至Decoder,能够实现一定的特征融合,并缩短Encoder特征与最终输出结果之间的路径,提升最终效果。然而Encoder、Decoder的特征存在一定的gap,Encoder所学到的特征中也包含着一些噪声,如果直接进行连接的话,会将无效信息引入最终结果中。为此,本文为skip connection引入了注意力机制。
II. Network Architecture
采用了Encoder(ResNet50)-Decoder架构。其中,SeE-SpE为skip connection注意力的组成部分,而DCE位于每个Decoder block后,用于对Decoder所学特征进行进一步处理。
III. Dense Context Exploration
在本节中,我们将讨论文章所提出的DCE模块。DCE模块由多个DCE block组成,因此我们先对其进行分析:
DCE block的具体流程如下:
- 对于输入特征图,利用1×1卷积进行通道降维
- 使用两个并行的 { 1 × k , k × 1 } \{1 \times k, k \times 1\} {1×k,k×1}、 { k × 1 , 1 × k } \{k \times 1, 1 \times k\} {k×1,1×k}卷积来对传统的k×k卷积进行近似,实现局部上下文提取
- 利用1×1卷积进行通道降维
- 使用3×3的空洞卷积来提取全局上下文
抛去两个用来降维的1×1卷积,DCE block可以简单看做为k×k空洞卷积前额外加了个传统的k×k卷积。那么接下来以单独的k×k空洞卷积为例对比,说明在其之前加一个k×k卷积的意义。为了描述方便,以一维的形式进行说明:
记输入向量为
a
i
a_{i}
ai,那么一个卷积核大小为3,dilation rate为3的空洞卷积的结果
c
0
c_{0}
c0可以记为:
c
0
=
f
a
(
a
0
,
a
3
,
a
6
)
c_{0}=f_{a}\left(a_{0}, a_{3}, a_{6}\right)
c0=fa(a0,a3,a6) 其中
f
a
f_{a}
fa为空洞卷积操作。可以看到,此时
{
a
1
,
a
2
,
a
4
,
a
5
,
a
7
,
a
8
}
\left\{a_{1}, a_{2}, a_{4}, a_{5}, a_{7}, a_{8}\right\}
{a1,a2,a4,a5,a7,a8}便丢失了。那么如果在空洞卷积之前加个传统卷积的话,则有:
c
~
0
=
f
a
(
b
0
,
b
3
,
b
6
)
=
f
a
(
f
c
(
a
0
,
a
1
,
a
2
)
,
f
c
(
a
3
,
a
4
,
a
5
)
,
f
c
(
a
6
,
a
7
,
a
8
)
)
\begin{aligned} \tilde{c}_{0} &=f_{a}\left(b_{0}, b_{3}, b_{6}\right) \\ &=f_{a}\left(f_{c}\left(a_{0}, a_{1}, a_{2}\right), f_{c}\left(a_{3}, a_{4}, a_{5}\right), f_{c}\left(a_{6}, a_{7}, a_{8}\right)\right) \end{aligned}
c~0=fa(b0,b3,b6)=fa(fc(a0,a1,a2),fc(a3,a4,a5),fc(a6,a7,a8)) 此时
a
0
a
8
a_{0}~a_{8}
a0 a8所有九格的信息都得到了保留,即避免了信息的丢失。
之所以说DCE block既能做到effective也能做到efficient,是因为:
- (effective)采用了密集采样
- (effective)将k×k卷积与k×k空洞卷积结合起来,尽可能的避免了空洞卷积造成的信息丢失
- (efficient)将k×k卷积拆成了1×k与k×1卷积,降低了运算量
而DCE模块的结构如下所示:
其实从这种比较全局的角度来看,DCE就类似于Inception,将不同感受野学习到的信息给concat起来,只是区别在于Inception中的卷积被替换为了DCE block。多个DCE block构成了DCE模块,而每个DCE block只能提取某一固定尺度下的特征,因此,在DCE中,不同DCE block的
k
k
k是不同的(
k
k
k对应着卷积核尺寸,在本文中,分别为3、5、7、9)。
这里创新的一点是,相邻DCE Block之间是相连的,当前DCE block的信息会传递至下一个DCE block。
IV. Attentive Skip-Connection
在本节中,我们将讨论文章所提出的Attentive Skip-Connection,其结构如下所示,可以进一步分为SeE Block与SpE Block两个部分:
Semantic Enhancement Block
在特征图中,不同的通道是对不同的语义进行响应的,因此需要将包含有价值语义的通道进行加强,反之进行削弱。SeE Block便是这么一种通道注意力模块。如图所示,其主要包含一个全局池化层(GAP)和两个全连接层,这三层的作用就是算权重,然后将得到的权重与输入特征进行pixel-wise乘便可以得到经过注意力强化后的特征。这里有趣的一点是尽管引入了两个FC层,但文中表示其并不会带来太多的计算开销。
Spatial Enhancement Block
其实从结构上看,SpE做的是注意力上的注意力,即对经过通道注意力后的特征图再进行一次注意力操作。而这次注意力的是从解码器特征学习而来,以尽可能去消除编码器解码器特征之间的gap。实验结果也证实了SpE的有效性:
可以看到,深层解码器特征(SpE_3)所生成的注意力图主要关注在对象的全局位置上,而浅层解码器特征(SpE_1)所生成的注意力图主要关注在对象的边缘上。通过这么个注意力,可以更好地利用浅层编码器得到的局部特征,以及深层编码器得到的全局特征。
落实到实现上,图级别的注意力只需要用一个卷积层及其附件实现即可。
V. Loss
本文所采用的的loss如下:
L
=
α
ℓ
b
c
e
+
β
ℓ
i
o
u
+
γ
ℓ
e
d
g
e
\mathcal{L}=\alpha \ell_{b c e}+\beta \ell_{i o u}+\gamma \ell_{e d g e}
L=αℓbce+βℓiou+γℓedge 其中
α
=
β
=
γ
=
1
\alpha=\beta=\gamma=1
α=β=γ=1。相比于传统BCE与IoU的组合而言,多了个edge preservation loss,该loss由PFAN(CVPR 2019)[1]提出,作用是更好地对显著目标边界进行监督训练。
VI. Experiment
性能超越了18个最近模型,包括C2SNet(ECCV 2018)、RAS(ECCV 2018)、PAGRN(CVPR 2018)、DGRL(CVPR 2018)、R3Net(IJCAI 2018)、BMPM(CVPR 2018)、PiCANet(CVPR 2018)、DSS(CVPR 2017)、BASNet(CVPR 2019)、CPD(CVPR 2019)、PAGE(CVPR 2019)、PoolNet(CVPR 2019)、AFNet(CVPR 2019)、BANet(ICCV 2019)、CANet(TMM 2020)、DSR-Net(TCSVT 2020)、ITSD(CVPR 2020)、MINet(CVPR 2020)。
VII. Summary
本文在结构上算是比较简练的那一类,虽然是从上下文的角度出发,整体依然围绕着特征提取融合来做。
DCE与ASPP等模块类似,作用是更好地对特征进行处理,只是本文的DCE加在了每个Decoder Block之后而非仅加在Encoder-Decoder的特征处,更大的亮点在于向各DCE block间引入了信息流动。efficiency通过非对称卷积实现,算是早在Inception V3时提出的一种卷积核降参数策略;而effectiveness指的是在空洞卷积之前加一个同尺寸的普通卷积,既避免了只用空洞卷积造成的信息丢失,又避免了采用连续两个普通卷积带来的性能问题,有可能能成为使用空洞卷积时的一种技巧。
至于Attentive Skip-Connection,虽然和skip connection谈上了关系,但是从结构上依然可以看做是传统的对Encoder学到的特征进行后处理。其中的通道注意力部分与其他网络类似(都是一个全局平均池化后面跟两个全连接层),亮点在于使用Decoder学到的特征来给Encoder特征做注意力。
Ref
[1] T. Zhao and X. Wu, “Pyramid feature attention network for saliency detection,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2019, pp. 3085–3094.
标签:Exploring,Salient,Dense,卷积,DCE,CVPR,特征,上下文,block 来源: https://blog.csdn.net/qq_40714949/article/details/118656503