最近师妹问我spatial attention和channel attention的问题,我查了一下,网上一堆资料讲的云里雾里的,这里对个人理解做一些笔记。这两种注意力机制结构如下:
注意力机制,其实就是模仿人关注Region of Interest的过程(可参考显著图Saliency map)。
接下来以RGB图片 I ( H , W ) I_{(H, W)} I(H,W)为简单例子说明这两种注意力机制,想象现在以RGB矩阵为特征图,这时特征图大小为 ( H , W , 3 ) (H, W, 3) (H,W,3)。
空间注意力机制. 先不管什么最大池化、平均池化、卷积降维得到
(
H
,
W
,
4
)
(H, W, 4)
(H,W,4)的Spatial Attention Module等,我们把RGB矩阵转换成
(
H
,
W
,
1
)
(H, W, 1)
(H,W,1)的灰度图矩阵,接下来利用灰度矩阵计算一幅0-1掩码图,即灰度值高于某个阈值时该像素点对应的位置设置为1,否则设置为0。这张掩码图刻画了感兴趣区域的形状,把这张0-1掩码图与原图逐通道特征图做点乘,就可以把背景因素过滤掉,仅得到红色部分的特征值(其余变成
(
0
,
0
,
0
)
(0, 0, 0)
(0,0,0))。有了这个思想,后续我们仅需要通过BP算法来让机器自学习这张掩码图。
通道注意力机制. 先不管什么信号转换问题,我们还以RGB矩阵为例,想象那个
(
1
,
1
,
3
)
(1, 1, 3)
(1,1,3)的玩意是红色的RGB特征
(
255
,
0
,
0
)
(255, 0, 0)
(255,0,0),把它在原图上做卷积,相当于加强了红色区域(类似模板匹配),通过某种操作,最后可以把红色区域的像素点保留下来,从而把背景因素过滤掉。从另一个角度思考,这里的
(
255
,
0
,
0
)
(255, 0, 0)
(255,0,0)也相当于增强了R通道,体现R通道的重要性,让模型仅关注R通道能量较强的像素点。
以上是个人理解。我是在超分辨率上见到spatial attention和channel attention这两种软注意力机制,一开始也觉着很懵逼,后来干脆从硬注意力机制入手来尝试理解这两个玩意。网上还有很多解释,这里仅仅是个人学习笔记。