Dual Attention Network for Scene Segmentation论文阅读&翻译
论文地址
论文链接:
https://arxiv.org/pdf/1809.02983.pdf.
源码连接:
https://github.com/junfu1115/DANet/.
Abstract
作者提出了DANet,使用全局依赖去自适应的整合局部特征。具体来说,是在带有空洞的FCN之上附加了两种类型的注意力模块,分别对空间和通道维度上的语义依赖性进行建模。位置注意模块通过所有位置上的特征的加权总和选择性地聚合每个位置上的特征。相似的特征不依赖于距离去建立联系。同时,通道注意力模块通过在所有通道图整合有关联的特征来有选择的突出相互预存的特征图。之后对两个注意力模块的输出求和,以进一步改善特征表示,这有助于更精确的分割结果。
Introduction
在像素级识别中,增强特征的辨别能力是必不可少的。进来基于FCN的方法也试图解决这个问题,一种方法是多尺度上下文融合,比如空洞卷积和池化,使用分解结构扩大内核大小或在网络之上引入有效的编码层,编解码结构等。另一种方法是采用循环神经网络来利用远程依赖性。
为了解决问题,作者提出了DANet,它引入了一种自注意力机制,以分别捕获空间和通道维度中的特征依赖关系。具体来说,在空洞FCN顶部附加两个并行注意力模块。一个是位置注意力模块,另一个是通道注意力模块。对于位置注意力模块,引入了自注意机制来捕获特征图的任意两个位置之间的空间依赖性。 对于特定位置的特征,将通过在所有位置上的加权总和对特征进行更新,其中权重由相应两个位置之间的特征相似性决定。 即具有相似特征的任何两个位置都可以相互促进,而无论它们在空间维度上的距离如何。对于通道注意力模块,使用类似的自关注机制来捕获任意两个通道映射之间的依赖关系,并使用所有通道图的加权和更新每个通道图。 最后,将这两个注意力模块的输出融合在一起,以进一步增强特征表示。
Dual Attention Network
Overview
给定场景分割的图片,东西或物体在比例,照明和视图上各不相同。 由于卷积运算将导致局部接收场,因此与具有相同标签的像素对应的特征可能会有一些差异。这些差异会导致类内不一致并影响识别准确性。 为了解决此问题,作者建立具有注意机制的特征图之间的关联来获得全局上下文信息。此方法可以自适应地聚合远程上下文信息,从而改善场景分割的特征表示。
总体结构如上图,使用一个带有空洞的预训练的残差网络作为骨干。作者删除了下采样操作,并在最后两个ResNet块中使用了空洞卷积,从而将最终特征图的大小扩大到输入图像的1/8。它保留了更多细节,而无需添加额外的参数。 然后,计算出来的特征特征将送入两个并行注意模块中。 以空间注意力模块为例,首先应用卷积层以获得维度减少了的特征。然后,我们将这些特征输入到位置注意模块中,并通过以下三个步骤生成空间远程上下文信息的新特征。第一步是生成一个空间注意矩阵,该矩阵对特征的任意两个像素之间的空间关系进行建模。接下来,我们在注意力矩阵和原始特征之间执行矩阵乘法。第三,我们对上面相乘的结果矩阵和原始特征执行逐元素求和运算,以获得反映远程上下文的最终表示。同时,通道注意力模块会捕获通道维度中的远程上下文信息。捕获通道关系的过程与位置注意力模块相似,但第一步是在通道维度中计算通道注意力矩阵。 最后,汇总两个注意力模块的输出,以获得更好的特征表示,以进行像素级预测。
Position Attention Module
如上图,给出局部特征
A
∈
R
C
×
H
×
W
A\in R^{C \times H\times W}
A∈RC×H×W,首先将其送入卷积层以生成两个新的特征图
B
B
B和
C
C
C,
{
B
,
C
}
∈
R
C
×
H
×
W
\{B,C\}\in R^{C \times H\times W}
{B,C}∈RC×H×W,然后reshape到
R
C
×
N
,
N
=
H
×
W
R^{C \times N},N=H\times W
RC×N,N=H×W,之后,在
C
C
C和
B
B
B的转置之间执行矩阵乘法,并应用softmax层来计算空间注意图
S
∈
R
N
×
N
S\in R^{N\times N}
S∈RN×N,
s
j
i
=
e
x
p
(
B
i
⋅
C
j
)
∑
i
=
1
N
(
B
i
⋅
c
j
)
s_{ji}=\frac{exp(B_i \cdot C_j)}{\sum_{i=1}^N(B_i\cdot c_j)}
sji=∑i=1N(Bi⋅cj)exp(Bi⋅Cj)
其中
s
j
i
s_{ji}
sji表示第
i
i
i个位置在第
j
j
j个位置上的影响,两个位置的特征表示越相似,它们之间的相关性就越高。同时,将特征
A
A
A送入卷积层以生成新的特征图
D
∈
R
C
×
H
×
W
D\in R^{C×H×W}
D∈RC×H×W并将其reshape为
R
C
×
N
R^{C×N}
RC×N。 然后,在
D
D
D和
S
S
S的转置之间执行矩阵乘法,并将结果reshape为
R
C
×
H
×
W
R^{C×H×W}
RC×H×W。最后,我们将其乘以比例参数α并使用特征
A
A
A进行元素求和运算,以获得最终输出
E
∈
R
C
×
H
×
W
E\in R^{C×H×W}
E∈RC×H×W如下:
E
j
=
α
∑
i
=
1
N
(
s
j
i
D
i
)
+
A
j
E_j = \alpha \sum^N_{i=1}(s_{ji}D_i)+A_j
Ej=αi=1∑N(sjiDi)+Aj
其中α初始化为0,并逐渐学会分配更多权重。每个位置处的结果特征
E
E
E是所有位置处的特征与原始特征的加权和。因此,它具有全局上下文视图,并根据空间注意力图选择性地聚合上下文。
Channel Attention Module
与位置注意力模块不同,直接从原始特征
A
∈
R
C
×
H
×
W
A\in R^{C×H×W}
A∈RC×H×W计算出频道注意图
X
∈
R
C
×
C
X\in R^{C\times C}
X∈RC×C,具体来说,将
A
A
A reshape为
R
C
×
N
R^{C×N}
RC×N,然后在A与A的转置之间执行矩阵乘法,最后,应用softmax层以获得通道关注图
X
∈
R
C
×
C
X\in R^{C\times C}
X∈RC×C:
x
j
i
=
e
x
p
(
A
i
⋅
A
j
)
∑
i
=
1
C
e
x
p
(
A
i
⋅
A
j
)
x_{ji}=\frac{exp(A_i\cdot A_j)}{\sum_{i=1}^Cexp(A_i\cdot A_j)}
xji=∑i=1Cexp(Ai⋅Aj)exp(Ai⋅Aj),其中
x
j
i
x_{ji}
xji表示第
i
i
i个通道在第
j
j
j个通道上的影响。此外,在
X
X
X和
A
A
A的转置之间执行矩阵乘法,并将其结果reshape为
R
C
×
H
×
W
R^{C\times H \times W}
RC×H×W,然后,将结果与比例参数β相乘,并对
A
A
A进行逐元素求和运算,以获得最终输出
E
∈
R
C
×
H
×
W
E\in R^{C×H×W}
E∈RC×H×W
E
j
=
β
∑
i
=
1
C
(
x
j
i
D
A
i
)
+
A
j
E_j = \beta \sum^C_{i=1}(x_{ji}DA_i)+A_j
Ej=βi=1∑C(xjiDAi)+Aj
其中β逐渐从0开始学习权重。上式表明,每个通道的最终特征是所有通道的特征与原始特征的加权和,该特征对特征图之间的长期语义依赖性进行建模。它有助于增强功能的可分辨性
Attention Module Embedding with Networks
为了充分利用远程上下文信息,最后需要汇总了这两个注意力模块的结果。 具体来说,通过卷积层转换两个注意力模块的输出,并执行逐元素求和以完成特征融合。 最后是一个卷积层,以生成最终的预测结果。 这个注意力模块很简单,可以直接插入现有的FCN方法中。 它们不会增加太多参数,但可以有效地增强特征表示。