原文链接:https://arxiv.org/pdf/1809.02983.pdf
Github:https://github.com/junfu1115/DANet
Attention机制在NLP上取得进展后于近年被引入CV中也发挥着重要的作用。这篇是采用Self-Attention机制的用于场景分割的文章,通过引入自注意力机制(self-attention mechanism) 在特征的空间维度和通道维度分别抓取特征之间的全局依赖关系,增强特征的表达能力,并在一些数据集上显著提升了性能。
关于Self-Attention的解释,从网上找了很多self-attention的文章,发现大多是NLP的,CV的文章寥寥无几。下面是找到的一些self-attention in cv的文章:
- https://www.jianshu.com/p/a9771abedf50
- https://www.jianshu.com/p/8f5c13aa19a8
- https://cloud.tencent.com/developer/news/247227
- https://www.jiqizhixin.com/articles/2019-02-15-12
Abstract
本文中我们通过捕获基于自注意机制的丰富上下文相关性来解决场景分割任务。与以往多尺度特征融合捕获的上下文不同的是,我们提出了一种双重注意力机制网络(DANet)以自适应地将局部特征与其全局依赖集成起来。具体来说就是在扩展的FCN顶部增加了两个注意力模块,分别对空间维度和通道维度上的语义相互依赖进行建模。Position attention module通过对所有位置上的特征加权加权求和选择性的集成特征。相似的特征能够被互相关联起来,而与距离无关。同时,channel attention module通过在所有通道映射之间集成相关联的特征来选择性地强调相互依赖的通道映射。我们对两个模块的输出求和以提升特征的表达能力,从而获得更准确的分割结果。我们在Cityscapes、PASCAL Context和COCO三大数据集上取得了先进的分割效果。特别是在不使用粗Cityscapes数据的情况下,在测试集上获得81.5%的平均IoU。
Introduction
我们提出了DANet用于场景分割,它引入自注意力机制来捕获依赖于空间维度和通道维度的特征。特别的,我们在扩展FCN上追加了两个平行的注意力模块,一个称为position attention module,另一个称为channel attention module。对于position attention module来说,采用self-attention机制能够捕获任意两个位置的特征图之间的空间依赖关系。对于channel attention module来说,我们采用类似于self-attention的机制捕获任意两个通道映射之间的通道依赖关系,并对所有的通道映射的加权和来更新每个通道映射。最后,融合两个模块的输出以进一步增强特征表示。
我们的放在在处理复杂和多样性场景的时候比以往方法更有效和灵活。本文的贡献主要有一下三点:
- 采用self-attention 机制提出一种双注意力机制网络DANet来增强特征表示在场景分割中的鉴别能力;
- 提出一种位置注意力模块用来学习特征之间的空间依赖关系和通道注意力模块用来学习通道之间的依赖关系,通过局部特征丰富的上下文建模显著提升了分割效果;
- 在三大数据集上达到了先进效果。
Dual Attention Network
在本节中介绍了网络的总体框架,然后介绍了在空间维度和通道维度上分别捕获远程上下文信息的注意模块。最后,我们将描述如何将它们聚合在一起以进一步细化。
Overview
由于卷积操作使用局部感受野进行特征提取,相同类别的物体可能会有不同的特征。这些不同导致了类内差异的不一致性并对识别的准确率造成影响。为了解决这个问题,我们通过注意力机制构造了特征之间的关系探索了全局上下文信息。
文中使用空洞ResNet作为主体网络生成局部特征,但是取消了最后两块的downsampling操作,采用空洞卷积来达到既扩大感受野又保持较高空间分辨率的目的。
下图是position attention module和channel attention module的具体结构
Position Attention Module
输入A是C*H*W,经过卷积之后生成B、C、D(C*H*W),然后将B/C调整为C*N(N=H*W),将B转置(B=N*C)然后与C做matrix multiplication,然后应用softmax计算空间注意力映射S(N*N),matrix multiplication公式如下:
将D也调整为C*N,与S的转置N*N做matrix multiplication,并将result调整为C*H*W,最后与A做element-wise sum操作,得到输出E(C*H*W),element-wise sum公式如下:
Channel Attention Module
与position attention module类似,不同的是通道注意映射X是C*C大小的。
在两个注意力模块输出之后采用element-wise sum进行融合,然后卷积得到最终预测图。
Result
右下图所示可能看到DANet在Cityscapes数据集上比以往的方法有明显的优势