[论文阅读] Stereoscopically Attentive Multi-scale Network for Lightweight Salient Object Detection

论文地址:https://dx.doi.org/10.1109/TIP.2021.3065239
代码:https://mmcheng.net/SAMNet
发表于:TIP 2021

Abstract

显著目标检测(SOD)的最新进展主要得益于卷积神经网络(CNN)的爆炸性发展。然而,大部分的改进是伴随着更大的网络规模和更重的计算开销而来的。我们认为,这对移动场景并不友好,因而很难在实践中部署。为了促进更实用的SOD系统,我们引入了一个新颖的立体注意力多尺度(SAM)模块,其采用了立体注意机制来自适应地融合多尺度的特征。在这个模块的基础上,我们提出了一个极其轻量级的网络,即SAMNet,用于SOD。在流行的基准测试上进行的广泛实验表明,所提出的SAMNet产生了与SOTA相媲美的精确度,同时在336×336的输入中能以343fps的速度在GPU上运行,5fps的速度在CPU上运行,参数只有1.33M。因此,SAMNet为SOD铺设了一条新的道路。源代码可在项目页面上找到。

I. Motivation

目前的许多SOTA方法都是依赖堆砌大量模块,增加网络可训练参数来提升性能的。这种情况下,虽然性能有一定提升,然而在推理时却需要大量的计算资源(如在TITAN XP上只能跑10fps左右),并不适合手机、汽车、机器人等移动设备。

那么既然要做移动端的,相当于就设计做轻量级的网络,这个其实在图像分类任务里研究的比较多,比如MobileNet、ShuffleNet。在核心思想上,本文与这些轻量网络是有一定相似性的。但是,由于用于图像分类的轻量网络往往深度较浅,并且在操作上有所简化,因此其多尺度特征学习与融合的能力是不如大型网络的,不能通过换backbone的方式直接套在SOD任务上。为此,本文设计了一个SAM模块,来做到既轻量级又能实现多尺度特征学习融合。

II. Network Architecture

在这里插入图片描述
整体来看仍属于Encoder-Decoder。既然是做轻量级网络,那么和其他任务中的思路类似,也是将传统的卷积替换为更加高效的卷积,实现牺牲少量性能来换取更高的时间效率。而为了弥补性能的下降,也需要设计一些简洁的模块来实现更有效的学习。为此,SAMNet中的传统卷积(除第一层外)被替换为了DSConv,以提高计算效率。此外,Encoder与Decoder之间使用了一个PPM[2]模块来提升全局信息的学习能力。网络各层具体的配置如下所示:
在这里插入图片描述
其中的SAM模块为用于提升性能的轻量级模块,将在后文进行分析。

III. Dilated Depthwise Separable Convolution & Multi-Scale Learning

既然本文要做轻量级的网络,那么传统的卷积肯定就要替换为更加高效的卷积。为此,本文提出了空洞深度可分离卷积(DDSC),作为SAMNet中的基本卷积算子。需要注意的是DSConv最早提出于MobileNet。MSL的一部分结构如下所示:
在这里插入图片描述
详细结构图可以在下一节中看到。所谓多尺度学习(MSL),指的就是利用不同dilate rate的并行卷积来提取提取多尺度特征,并最终进行融合。对于通道数为 C C C,高为 H H H W W W的输入特征图 I ∈ R C × H × W \boldsymbol{I} \in \mathbb{R}^{C \times H \times W} IRC×H×W,首先使用一个3×3的深度可分离卷积(DSConv),来替换传统的3×3卷积。此时,可以得到待被各分支提取的共同信息 F 0 \boldsymbol{F}_{0} F0,有: F 0 = K 0 ( I ) \boldsymbol{F}_{0}=\mathcal{K}_{0}(\boldsymbol{I}) F0=K0(I) 其中 K 0 \mathcal{K}_{0} K0表示3×3的DSConv。之后,使用不同dilation rate的DSConv(即各分支)来对 F 0 \boldsymbol{F}_{0} F0进行处理,得到不同尺度的信息: F i = K i ( F 0 ) , i = 1 , 2 , ⋯   , N \boldsymbol{F}_{i}=\mathcal{K}_{i}\left(\boldsymbol{F}_{0}\right), \quad i=1,2, \cdots, N Fi=Ki(F0),i=1,2,,N 其中 K i \mathcal{K}_{i} Ki表示分支 i i i的3×3 DSConv, B B B为分支数。接着,使用带有残差连接的element-wise sum来实现多尺度特征的融合,有: F = ∑ i = 0 N F i \boldsymbol{F}=\sum_{i=0}^{N} \boldsymbol{F}_{i} F=i=0NFi 这里有个小常识,既然要提升时间效率,是肯定不能用channel-wise concat的,按通道叠加会急剧增加通道数,带来运算开销。最后使用传统(vanilla)1×1卷积对融合特征 F \boldsymbol{F} F进行重排,有: O = K fuse  ( F ) + I \boldsymbol{O}=\mathcal{K}_{\text {fuse }}(\boldsymbol{F})+\boldsymbol{I} O=Kfuse (F)+I 其中 K fuse  \mathcal{K}_{\text {fuse }} Kfuse 表示1×1卷积, I \boldsymbol{I} I表示残差连接。

落实到具体实现上,上面提到的dilation rate和分支数都属于超参数。对于浅层特征,其一般分辨率较高,包含多尺度上下文信息,因此需要用更多的分支以及相应的不同dilation rate来进行处理学习。

IV. Stereoscopically Attentive Multi-scale Module

上一节提到了,为了保证时间性能,特征融合采用的是element-wise sum而非channel-wise concat。但是用sum的话,很明显有个这个问题:有价值的信息可能被无价值的信息给覆盖掉。为了解决这一问题,本文提出了SAM模块,其结构如下所示:
在这里插入图片描述
把图中绿色部分的Attention Mechanism抠掉的话,剩下的部分其实就是上一节所讲的Multi-Scale Learning。而正是因为MSL带来的性能提升有限,因此这里才继续引入了个注意力机制。

MSL与注意力机制共同构成了SAM模块。接下来,我们将逐步分析SAM的各个组成部分:

  • Stereoscopic Attention Mechanism
  • Scale Fusion
  • Channel-Wise Attention
  • Spatial Attention

注意,由于这个注意力机制是插在MSL中间的,因此上节提到的融合特征 F \boldsymbol{F} F实际上会记做一个中间的融合特征 M \boldsymbol{M} M,在后文描述时需注意区分。

V. Stereoscopic Attention Mechanism

所谓立体注意力,指的是本文最终的注意力是通过将空间注意力与通道注意力扩充后相乘得到的,而非传统的进行串联或并联:
在这里插入图片描述
记输入多尺度特征为一个四维的tensor: F ∈ R ( N + 1 ) × C × H × W F \in \mathbb{R}^{(N+1) \times C \times H \times W} FR(N+1)×C×H×W(即上图中的 M M M)。作为多尺度特征, F F F是由各分支 i ∈ { 0 , ⋯ N } i \in\{0, \cdots N\} i{0,N}生成的各特征 F i ∈ R C × H × W F_{i} \in \mathbb{R}^{C \times H \times W} FiRC×H×W融合得到的。文中认为,空间注意力与通道注意力都是重要的,因此最终的注意力权重 v \boldsymbol{v} v是通过两者相乘得来,有: v = d ⊗ s \boldsymbol{v}=\boldsymbol{d} \otimes \boldsymbol{s} v=ds 其中 d ∈ R ( N + 1 ) × C \boldsymbol{d} \in \mathbb{R}^{(N+1) \times C} dR(N+1)×C代表传统的channel-wise attention, s ∈ R ( N + 1 ) × H × W \boldsymbol{s} \in \mathbb{R}^{(N+1) \times H \times W} sR(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尺寸以便进行相乘。

VI. Scale Fusion

scale fusion算是一种降低计算开销的手段,其实就是利用element-wise sum替代channel-wise concat来进行特征融合,即下图中的Feature Fusion:
在这里插入图片描述
有: M = ∑ i = 0 N F i M=\sum_{i=0}^{N} F_{i} M=i=0NFi 一个有意思的点是,个人认为这里在融合的时候并没有采用注意力机制,但是文中称Scale Fusion通过"learning of all branches"获得了注意力。

VII. Channel-Wise Attention

和其他空间注意力机制一样,本文的Spatial Attention最终也是要给每个分支 i i i计算一个通道注意力向量: W i D ∈ R C \boldsymbol{W}_{i}^{D} \in \mathbb{R}^{C} WiDRC 其结构如下所示:
在这里插入图片描述
其实这么看的话,属于GAP+FC+FC架构,相当于直接用了个SEBlock。具体来说,首先使用一个全局平均池化来对融合特征 M \boldsymbol{M} M进行处理: z c = F G A P ( M ) = 1 H W ∑ i = 1 H ∑ j = 1 W M c , i , j c = 0 , 1 , ⋯   , C − 1 \begin{aligned} z_{c} &=\mathcal{F}_{\mathrm{GAP}}(\boldsymbol{M})=\frac{1}{H W} \sum_{i=1}^{H} \sum_{j=1}^{W} \boldsymbol{M}_{c, i, j} \\ c &=0,1, \cdots, C-1 \end{aligned} zcc=FGAP(M)=HW1i=1Hj=1WMc,i,j=0,1,,C1 得到latent vector z ∈ R C z \in \mathbb{R}^{C} zRC,其包含 M M M的channel wise信息。然后再利用两个全连接层(这两个全连接层组成了一个MLP)来提取不同尺度下的channel wise信息: d = F M L P ( z ) \boldsymbol{d}=\mathcal{F}_{\mathrm{MLP}}(\boldsymbol{z}) d=FMLP(z) 注意这里的 d ∈ R ( N + 1 ) C \boldsymbol{d} \in \mathbb{R}^{(N+1) C} dR(N+1)C是一个向量,后面还要reshape回原来的形状 R ( N + 1 ) × C \mathbb{R}^{(N+1) \times C} R(N+1)×C。接着再用softmax激活函数对 d \boldsymbol{d} d进行处理,得到最终的通道注意力: W i , c D = e d i , c ∑ j = 0 N e d j , c , i = 0 , 1 , ⋯   , N ; c = 1 , 2 , ⋯   , C \boldsymbol{W}_{i, c}^{D}=\frac{e^{d_{i, c}}}{\sum_{j=0}^{N} e^{d_{j, c}}}, \quad i=0,1, \cdots, N ; \quad c=1,2, \cdots, C Wi,cD=j=0Nedj,cedi,c,i=0,1,,N;c=1,2,,C

VIII. Spatial Attention

和其他空间注意力机制一样,本文的Spatial Attention最终也是要算张注意力图: W i S ∈ R H × W \boldsymbol{W}_{i}^{S} \in \mathbb{R}^{H \times W} WiSRH×W 其结构如下所示:
在这里插入图片描述

如果用最简单的做法话,只用一个单独的卷积层便可以来算空间注意力。不过为了达到更好的效果,这里用了多级感受野,有: s = F 4 1 × 1 ( F 3 3 × 3 ( F 2 3 × 3 ( F 1 1 × 1 ( M ) ) ) ) \boldsymbol{s}=\mathcal{F}_{4}^{1 \times 1}\left(\mathcal{F}_{3}^{3 \times 3}\left(\mathcal{F}_{2}^{3 \times 3}\left(\mathcal{F}_{1}^{1 \times 1}(\boldsymbol{M})\right)\right)\right) s=F41×1(F33×3(F23×3(F11×1(M)))) 其中 F i k × k \mathcal{F}_{i}^{k \times k} Fik×k表示第 i i i k × k k×k k×k卷积,可以发现这里首先用了个1×1卷积来降通道。与通道注意力类似,在经过reshape后,这里最后也需要使用softmax激活函数进行处理以得到最终的空间注意力: W i , h , w S = e s i , h , w ∑ j = 0 N e s j , h , w , i = 0 , 1 , ⋯   , N \begin{aligned} \boldsymbol{W}_{i, h, w}^{S} &=\frac{e^{s_{i, h, w}}}{\sum_{j=0}^{N} e^{s_{j, h, w}}}, \quad i=0,1, \cdots, N \end{aligned} Wi,h,wS=j=0Nesj,h,wesi,h,w,i=0,1,,N

IX. Experiment

性能超越了20个最近模型,包括DRFI(CVPR 2013)、DCL(CVPR 2016)、DHS(CVPR 2016)、RFCN(ECCV 2016)、NLDF(CVPR 2017)、DSS(CVPR 2017)、Amulet(ICCV 2017)、UCF(ICCV 2017)、SRM(ICCV 2017)、PiCA(CVPR 2018)、BRN(CVPR 2018)、C2S(ECCV 2018)、RAS(ECCV 2018)、DNA(TCYB 2021)、CPD(CVPR 2019)、BASNet(CVPR 2019)、AFNet(CVPR 2019)、PoolNet(CVPR 2019)、EGNet(ICCV 2019)、BANet(ICCV 2019)。

X. Summary

先提一个小插曲,严格来讲本文并不是第一个轻量级的SOD网络,在此之前有个U2Net[2],其简化版本模型大小也仅有4.7MB,不过没有本文1.33M参数量这么极致。从结构上讲,该网络参数量如此之少可能主要源于各Enocder block与Decoder block都仅包含一个轻量化的深度可分离卷积,而非其他方法中的若干个传统卷积。在这种情况下,网络的推理精度会有很大的下降,难点在于如何设计简单模块来进行有效地性能提升。因此本文设计了SAM模块,主要亮点在于空间注意力与通道注意力的结合方式。传统方法往往只采用单一注意力(SENet)或者将两者进行串联(CBAM)、并联(BAM),而本文通过将两种注意力repeat至同一尺寸后相乘,更好地照顾了各个分支的信息,实现了更优的效果。

Ref

[1] H. Zhao, J. Shi, X. Qi, X. Wang, and J. Jia, “Pyramid scene parsing network,” in Proc. IEEE Conf. Comput. Vis. Pattern Recognit. (CVPR), Jul. 2017, pp. 2881–2890.
[2] Qin, Xuebin, et al. “U2-Net: Going deeper with nested U-structure for salient object detection.” Pattern Recognition 106 (2020): 107404.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值