《DANet:Dual Attention Network for Scene Segmentation》论文笔记

代码地址:DANet/

1. 概述

导读:这篇文章通过self-attention机制去捕获更加丰富的上下文信息,并不同于之前的一些工作是在多个尺度(ASPP,Unet形式的网路等)上去获取上下文信息,这篇文章使用channel-wise和spatial-wise两种方式的attention机制在一个尺度(dilation FCN基础上)的特征图进行特征优化,之后再将这些特征elment-sum相加起来得到最后的融合特征(当然实际的处理并不是这么直接,论文里面的代码在细节上还是做了一些trick),从而构建了一个新的分割算法DANet。这样直观的优化策略带来的实际效果也是很好的,其在Cityscape数据集上达到了81.5%的mIoU。

2. 方法设计

文章提出的核心模块见下图1所示,主要是包含了Spatial-wise和Channel-wise上的Attention模块,之后再将优化后的特征图组合起来,送如最后的分类网络中得到最后的分类结果。
《DANet:Dual Attention Network for Scene Segmentation》论文笔记

2.1 Spatial-wise Attention

文章在Spatial上的Attention见下图所示:
《DANet:Dual Attention Network for Scene Segmentation》论文笔记
文章对输入的特征图首先使用3个卷积得到3个不同的特征图BCD,之后这些特征图经过矩阵变换与乘机得到对应的特征图S,在用这个特征图S去加权特征图在Spatial上的特征。其中:
sji=exp(BiCj)i=1N(exp(BiCj))s_{ji}=\frac{exp(B_i\cdot C_j)}{\sum_{i=1}^N(exp(B_i\cdot C_j))}
sjis_{ji}代表的是第ithi^{th}个位置在第jthj^{th}位置上的响应度,其值越大代表的它们越相近。之后将这个特征图与D矩阵进行相乘在加上原输入矩阵得到refine之后的特征:
Ej=αi=1N(sjiDi)+AjE_j=\alpha \sum_{i=1}^N(s_{ji}D_i)+A_j
文中还指定一个科学习的参数α\alpha来调配Attention的特征与原始输入的加权配比关系。

2.2 Channel-wise Attention

文章在Channel上的Attention与Spatial上的Attention计算过程相差并不大,只是对应的矩阵变换的维度发生了变化,其运算的流程图见下图所示:
《DANet:Dual Attention Network for Scene Segmentation》论文笔记
其计算的过程与Spatial-wise上的计算过程类似,相互类别一下就可以推知。

3. 实验结果

性能比较:
《DANet:Dual Attention Network for Scene Segmentation》论文笔记
消融实验:
文章提出的两种Attention方式对分割网络性能的影响:
《DANet:Dual Attention Network for Scene Segmentation》论文笔记
数据增广,ResNet块最后一个block使用膨胀卷积,多尺度预测对性能带来的影响:
《DANet:Dual Attention Network for Scene Segmentation》论文笔记