Title:DANet:Dual Attention Network for Scene Segmentation
Note data:2019/06/02
Abstract:该论文提出新型的场景分割网络DANet,利用自注意力机制进行丰富语义信息的捕获,在带有空洞卷积的FCN架构的尾部添加两个并行的注意力模块:位置注意力模块和通道注意力模块。
Code :pytorch
目录
DANet论文解读
1 Abstract
2 Introduction
3 Related work
3.1 语义分割
3.2 自注意力模块
4 Architecture
4.1 位置注意力模块
4.2 通道注意力模块
4.3 将注意力模块集成到网络中
5 Experiment
论文提出一种Scene Segmentation模型:GANet
网络结构:在ResNet基础上加上位置注意力模块与通道注意力模块
创新:利用自注意力机制进行丰富语义信息的捕获,同时并行的双注意力模块的互补结构
动机:提升分割中语义信息的获取
论文在Cityscapes,PASCAL Context和COCO数据集上都取得了SOTA效果。具体地在位置注意力模块中,任一位置的特征的更新是通过图像所有位置上特征的带权聚合进行更新,权重是由两个位置上特征的相似性决定的,也就是说无论两个位置的距离只要他们的特征相似那么就能得到更高的权重。通道注意力模块中也应用了相似的自注意力机制来学习任意两个通道映射之间的关系,同样通过所有通道的带权加和来更新某一个通道。
以往的一些模型如FCN,GCN,SegNet等模型虽然在上下文融合有助于捕获不同比例的对象,但它无法利用全局视图中对象或内容之间的关系,这对于场景分割也是必不可少的。另一种类型的方法采用ResNet利用长程依赖性,从而提高场景分割准确性。然而,这些方法与ResNet隐含地捕捉全局关系,其有效性在很大程度上依赖于长期记忆的学习结果。因此针对这个问题论文提出了全新的场景分割模型DANet。其网络结构如下所示:
论文主要贡献可归纳如下:
主要从两个方面介绍相关工作主要在语义分割的基础上以及在自注意力模块。
介绍最经典的相关模型,基于完全卷积网络(FCN)的方法在语义分割方面取得了很大进展。提出了几种模型变体来增强上下文聚合。首先,Deeplabv2 和Deeplabv3 采用不稳定的空间金字塔汇集来嵌入上下文信息,这些信息由具有不同扩张率的平行扩张卷积组成。 PSPNet 设计了一个金字塔池化模块来收集有效的上下文先验,包含不同规模的信息。编码器 - 解码器结构融合了中级和高级语义特征,以获得不同的缩放上下文。其次,学习本地特征的上下文依赖性也有助于特征表示。 DAG-RNN 用递归神经网络模拟有向无环图,以捕获丰富的上下文依赖性。 PSANet 通过卷积层和空间维度中的相对位置信息捕获像素关系。并发工作OCNet 采用自我关注机制与ASPP来利用上下文依赖。此外,EncNet 引入了一种信道关注机制来捕获全局背景。
注意模块可以模拟远程依赖关系,并已广泛应用于许多任务。 提出自我关注机制来绘制输入的全局依赖性并将其应用于机器翻译的工作。 同时,注意力模块越来越多地应用于视觉模拟。 比如引入自我关注机制来学习更好的图像生成器。 其他的工作提出与自我关注模块有关,主要探讨视频和图像在时空维度上的非本地操作的有效性。
与以往的工作不同,我们在场景分割任务中扩展了自我关注机制,并仔细设计了两种类型的注意模块,以捕捉丰富的上下文关系,从而实现更好的特征表示,具有类内紧凑性。 综合实证结果验证了我们提出的方法的有效性。
DANet的整体框架首先对ResNet进行变形,移除最后两个模块的下采样后应用空洞卷积,得到一个输出特征图,尺寸为输入图像的1/8,然后这个输出特征图分别输入给两个注意力模块中以捕获全局(long-range)语义信息[像素点之间建立的某种联系]。在位置注意力模块中,首先生成一个位置注意力矩阵用于对任意两个点之间的关系建模,接着注意力矩阵与特征矩阵进行矩阵乘法,然后对相乘结果和原始特征矩阵进行逐元素的加法得到最终对全局语义具有一定表征能力的结果。通道注意力模块的操作相似,只不过乘法实在通道维度进行计算。最终将两个模块的结果进行聚合得到一个更好的表征结果已进行接下来的逐像素预测。
判别特征表示对场景理解至关重要,可以通过捕获远程上下文信息来获得。 然而,许多工作表明传统FCN产生的局部特征可能导致对象和类别的错误分类。 为了模拟局部特征的丰富上下文关系,我们引入了一个位置注意模块。 位置关注模块将更广泛的上下文信息编码为局部特征,从而增强其表示能力。 接下来,我们详细说明自适应地聚合空间上下文的过程。结构如下图所示:
给定一个特征A∈R(C*H*W),然后经过一个带有BN层和ReLU层的卷积操作得到两个新的特征B,C,其中{B,C }∈R(C×H×W) .然后将这两个特征reshape到R(C×N ),其中N=H×W ,然后在B和C的转置上应用一次矩阵乘法,之后应用softmax层计算位置注意力映射图S∈R(N×N) ,公式如下:
其中sij 表示第i 个位置对第j 个位置的影响,两个位置的特征越相似对这个值的影响越大。同时将特征A 输入到一个带有BN层和ReLU层的卷积层产生另外一个特征图D∈R(C×H×W),同样reshape到R(C×N) ,然后对D和S的转置应用一次矩阵乘法,reshape为R(C×H,然后乘上一个因子α ,与特征A进行一个逐元素的相加操作得到最终额的输出E∈R(C×H×W ),即:
其中α 初始化为0然后逐渐学习,通过上面这个公式可以看出最终的特征E的每一个位置都是所有位置的特征和原始特征的带权加和得到,因此能够聚合全局语义信息。
高层特征的每一个通道映射可以看做一个类别明确的响应并且不同的语义响应之间互相联系。通过获取不同通道映射之间的相互依赖性可以有效增强特征图对于特定语义的表征能力,因此设计该通道注意力模块。
通道注意力模块如上图所示,与位置注意力模块不同的是,论文直接从原始特征A∈R(C×H×W) 直接计算X∈R(C×C) 。首先对特征图A进行reshape操作至R(C×N) ,然后在A与A的转置上应用一次矩阵乘法,最终应用一个softmax层以获得通道注意力图X∈R(C×C) .
其中xji 表示了第i个通道对第j个通道的影响。之后论文对X的转置和A进行一次矩阵乘法然后reshape到R(C×H×W) ,然后乘上一个因子β ,然后与原始特征A进行一个逐元素的加和操作得到最终的特征图E∈R(C×H×W).
同理,β 初始化为0并且逐渐学习,上个公式表明最终输出的每个通道的特征都是所有通道的特征和原始特征图的带权加和,从而增强了通道特征图之间的全局语义依赖,最终增强了特征图的判别能力。
为了更好地利用两个注意模块的全局语义信息,论文将模块的输出经过一个卷积层后进行一个逐元素的加和实现特征融合,然后接一个卷积层得到最终的预测结果。
关于实验部分的细节:
项目 | 属性 |
预训练 | ResNet101 |
数据集 | Cityscapes/ PAS-CAL VOC2012/ PASCALContext /COCO Stuff |
学习率 | |
权重衰减 | 0.9 and 0.0001 |
batchsize | 8(Cityscapes) 16(others) |
epochs | 180 epochs(COCO) 240 epochs(others) |
工具 | pytorch |
设计消融实验验证两个注意力机制的作用:
设计消融实验验证数据增强,多网络方法,多尺度输入的差异:
双注意力机制的可视化结果:
测试的详细结果:
其他测试集上结果:
通过实验结果的定性与定量分析可知,双重注意力模块能够有效地得到大范围内特征的全局依赖性,从空间位置关系和通道类别关系两方面优化特征的表达能力,使分割结果更加精确。与此同时也可知,NLP中提出的self attention不仅在文本任务中表现优秀,在图像的各个领域同样表现良好,提醒我们多交叉使用不同方向的思想。