网络模型配件 Dual Attention Network for Scene Segmentation 学习笔记
目录
在目前的场景分割任务中,为了能够捕获丰富的上下文信息,提高分割结果的准确度,常见的方法大多是对顶端feature map进行不同尺度的特征提取,最后整合到一起,典型的例如ASPP方法;而在这篇论文中,作者提出了一种别样的思路,与scSE有着异曲同工之妙:通过探索空间与通道中各自的内部相关性,捕获丰富的上下文信息。
-
Motivation
作者针对现在的场景分割模型中,对于容易混淆的物体,或者拥有各种不同表现形式的同一物体,难以正确识别的问题,提出了一种类似scSE,与常见多尺度特征提取不同的解决办法——position attention module and channel attention module。前者根据feature map中任意一点与其他所有点之间的相关性,通过加权和,将每个点与其的相关性的乘积组合起来,增强位置信息之间的联系,而后者也是基于同样的思考,根据任意通道与其他通道的相关性,通过加权和,将每个通道与其的相关性的乘积组合起来,增强通道信息之间的联系,最后将两个模型产生的feature map逐元素相加,得到最终的结果。
作者认为他们引入了一种自注意机制,可以捕获在空间和通道上的视觉特征依赖性,从而提高分割结果的精确度。
上图是整个模型的Overview,可以理解为增强ResNet分割结果的一个网络模型配件,它对源自ResNet顶端的feature map进行处理,平行输入到position attention module和channel attention module中进行处理,在输入两者之前,会经过一个普通的卷积层,主要作用是将feature map的通道数降低;经过两个attention map后,得到的两个结果进行逐元素相加,最后通过一个卷积层,输出预测图。
-
Position attention module
上图是position attention module的图解。对于输入的的feature map,首先通过带有BN和ReLU的普通卷积层,生成
,然后将它们reshape成
,这里
,之后用转置后的
与
进行矩阵乘积,得到的结果
通过一个softmax分类器,最终得到
,即为空间spatial attention map:
上面的公式是spatial attention map中每一个元素的数学表达式,的意义是第
个位置对第
个位置影响程度,因为这里有
,所以在
中,一个位置由二维表示,变成了一维表示。
之后我们将转置后与
进行矩阵乘积,得到的结果再乘以一个尺度系数,最后reshape回
,与最初的feature map
逐元素相加,得到输出结果
:
在这里是尺度系数,初始值设为0,通过学习逐渐增大,可以从公式中看出,最终结果里的每一个位置的数值,都是在原始数值的基础上,增加了一个其他位置对该位置影响程度的加权和。
-
Channel attention module
这是channel attention module的图解,与position attention module的思路基本是一致的,区别在于,最初的不在通过带有BN和ReLU的普通卷积层,而是直接平行输入,应用到模型之中去,
经过reshape和reshape加上转置进行矩阵相乘,通过一个softmax,最后得到
,之后将
与
进行矩阵相乘,得到的结果乘以一个尺度系数
,最后与原图
逐元素相加,得到最终结果
:
上面两个公式分别是与
中,每个元素的数学表达式。
将两个模型产生的结果进行逐元素相加,最后通过一个卷积层,输出预测图,就是整体模型的思路。
作者认为,它们的模型可以附加在很多网络模型的后面,能够显著提高模型效果,却不会增加过多的参数。