书接上回,我们已经通俗的介绍了 注意力机制的原理,这次我们就来了解一下几个经典的注意力机制网络。
通道注意力机制
通道注意力机制主要关注于特征图(feature maps)的通道维度,通过重新加权每个通道的特征响应来增强网络的表示能力。
具体流程如下:
- 特征提取:
首先,网络通过卷积层提取输入图像的特征,生成特征图。每个特征图对应于输入图像中的一个特定特征。 - 特征压缩:
对于每个特征图,通道注意力机制会通过一个全局平均池化(Global Average Pooling, GAP)操作,将特征图压缩成一个长度为1的全局特征向量。这个向量包含了整个特征图的统计信息。 - 特征重塑:
将压缩后的全局特征向量重塑为一个与原始特征图通道数相同的向量。这个向量可以看作是每个通道的全局特征响应。 - 特征激励:
通过一个或多个全连接(FC)层对重塑后的向量进行处理,生成一个权重向量。这个权重向量与原始特征图的通道数相同,每个元素对应一个通道的权重。 - 激活函数:
权重向量通常通过一个非线性激活函数(如ReLU或Sigmoid)进行处理,以确保权重的非负性,并进行归一化处理(例如通过Softmax),使得所有通道的权重和为1。 - 特征加权:
将原始特征图与权重向量进行逐通道相乘,从而对每个通道的特征响应进行加权。这样,网络可以自适应地增强有用特征的表示,抑制不重要的特征。 - 特征扩展:
最后,将加权后的特征图扩展回原始特征图的大小,以便进行后续的卷积操作或其他处理。
通道注意力机制的关键优势在于其能够自适应地调整不同通道的特征响应,使得网络更加关注于对当前任务更有区分性的特征。这种方法在一定程度上可以缓解深度网络中的梯度消失和梯度爆炸问题,同时提高网络对不同特征的表达能力。
SENet
通道注意力机制的一个典型应用是SENet(Squeeze-and-Excitation Networks),它通过在网络的不同阶段插入通道注意力模块,显著提升了网络的性能。
背景:每个卷积单元只能够关注到它局部感受野所在区域内的空间信息,无法利用感受野区域之外的信息, 输出特征图就很难获得足够的信息来提取通道之间的关系。
操作:
-
压缩
Fsq操作是将包含全局信息的W×H×C 的特征图压缩成一个1×1×C的特征向量,即将每个二维通道变成一个具有全局感受野的数值,此时1个像素表示1个通道,屏蔽掉空间上的分布信息,更好的利用通道间的相关性
。将压缩后的全局特征向量重塑为一个与原始特征图通道数相同的向量。这个向量可以看作是每个通道的全局特征响应。 -
激励
接下来,这个全局特征向量会通过两层全连接(FC)层。第一层FC层通常没有激活函数,直接将特征向量映射到一个中间维度。第二层FC层使用ReLU激活函数,然后再次映射回原始特征图的数量,但每个特征图对应一个权重
- 重新加权
第二层FC层的输出是一个权重向量,这个向量通过Sigmoid激活函数进行归一化,使得所有权重的和为1。这个权重向量用于对原始的特征图进行加权,即每个特征图乘以其对应的权重。 - 连接
最后,加权后的特征图与原始特征图进行逐元素相乘,这样原始特征图就被重新加权了。这个过程可以看作是对特征图的重要性进行自适应调整
,增强了有用特征的表示,抑制了不重要的特征。