该论文提出新型的场景分割网络DANet,利用自注意力机制进行丰富语义信息的捕获,在带有空洞卷积的FCN架构的尾部添加两个并行的注意力模块:位置注意力模块和通道注意力模块。
提出背景
当前的主流的语义分割网络应该就是空洞卷积和解码器这两个元素的组合。但这两个组件都是利用局部特征(因为卷积操作就是稀疏连接嘛,一次卷积能覆盖特征图全部的信息吗?当然不行啦,所以说是利用局部特征),作者提出两种模块,分别从分辨率维度(spatial)和通道维度来引入全局的信息,将局部特征和全局的依赖性自适应地整合到一起。
之前的一些方法,往往有两个问题。第一个是,如果某些目标受到光照,遮挡等因素不够显著,那么这些位置的预测结果很可能就被一些显著性的物体所影响了。第二个问题是,一张图像中很多物体的尺度是不一样的,占比不一样,那么不同尺度的特征应该被同等对待。作者通过自注意力机制从全局视野自适应地在整合任何尺度的相似的特征。作者认为局部特征对应的全局性的依赖是很重要的。
为了有效地完成场景分割的任务,我们需要区分一些混淆的类别,并考虑不同外观的对象。例如,草原与牧场有时候是很难区分的,公路上的车也存在尺度、视角、遮挡与亮度等的变化。因此,像素级识别需要提高特征表示的识别能力。
- 现有方法:
- 多尺度上下文信息融合 (multi-scale context fusion) : PSPNet etc.
- 通过使用分解结构或在网络顶部引入有效的编码层来增大内核大小,从而获取更丰富的全局上下文信息
- encoder-decoder 结构
问:这样做的缺点是什么?
答:以上方法可以捕获不同尺度的目标,但是它没有利用目标之间的关系,这些对于场景表达也是重要的。
- 使用递归神经网络来捕捉长期依赖关系: 例如2D的LSTM。
问:这样做的缺点是什么?
答:有效性在很大程度上依赖于长期记忆的学习结果。
介绍
这篇论文通过基于Self Attention mechanism来捕获上下文依赖,并提出了Dual Attention Networks (DANet)来自适应地整合局部特征和全局依赖。该方法能够自适应地聚合长期上下文信息,从而提高了场景分割的特征表示。
在一贯的dilated FCN中加入两种类型地attention module。其中position attention module选择性地通过所有位置的加权求和聚集每个位置的特征,channel attention module通过所有channle的feature map中的特征选择性地强调某个特征图。最后将两种attention module的output 求和得到最后的特征表达。
网络结构
backbone是ResNet,50或者101,都行,重点是融合空洞卷积核并删除了池化层的ResNet,其实就是现在流行的deeplab中使用的resnet结构了,注意resnet输出的特征图是原始尺寸的1/8。之后是两个并行的attention module分别捕获spatial和channel的依赖性,最后整合两个attention module的输出得到更好的特征表达。
Position Attention Module(PAM)
捕获特征图的任意两个位置之间的空间依赖,对于某个特定的特征,被所有位置上的特征加权和更新。权重为相应的两个位置之间的特征相似性。因此,任何两个现有相似特征的位置可以相互贡献提升,而不管它们之间的距离。
- 特征图A(C×H×W)首先分别通过3个卷积层(BN和ReLU)得到3个特征图{B,C,D}.shape∈(CxHxW),然后reshape为C×N,其中N=H×W。
- 矩阵C和B的转置相乘,再通过softmax得到spatial attention map S(N×N)。
- 矩阵D和S的转置相乘,reshape result到(CxHxW)再乘以尺度系数 α 再reshape为原来形状,,最后与A相加得到最后的输出E 其中α初始化为0,并逐渐的学习分配到更大的权重。可以看出E的每个位置的值是原始特征每个位置的加权求和得到的
S 矩阵相当于一个attention,它的每一行计算的是,所有像素与某个像素之间的依赖关系,softmax概率化,softmax值越大,说明更可信,相对的依赖性也更强。(这里解释一下为什么S越大越可信,这里说的相似像素的s值可能越大,个人理解可能是由于相似像素之间的颜色、纹理等等特征是类似的,因此s值会越大!假设现在只看颜色特征,红色与红色的s值最大,因为RGB中255,0,0,只有R*R最大,如果R*B那么将是0。即属于同一类的最大)
Channel Attention Module(CAM)
高层特征的每一个通道映射可以看做一个特定类别的响应,不同的语义之间互相联系。通过获取不同通道映射之间的相互依赖性可以有效增强特征图对于特定语义的表征能力,因此设计该通道注意力模块。
- 在Channel Attention Module中,分别对A做reshape和reshape与transpose;
- 将得到的两个特征图相乘再通过softmax得到channel attention map X (C×C);
- X与A做乘积再乘以尺度系数β再reshape为原来形状,最后与A相加得到最后的输出E。 其中β初始化为0,并逐渐的学习分配到更大的权重。
上面的公式表明最终输出的每个通道的特征都是所有通道的特征和原始特征图的带权加和,从而增强了通道特征图之间的全局语义依赖,最终增强了特征图的判别能力。
最后两个attention module的输出先求和再做一次卷积得到最后的预测特征图。