GAM和CBAM注意力机制还是比较相似的,同样是使用了通道注意力机制和空间注意力机制。但是不同的是对通道注意力和空间注意力的处理。
GAM注意力机制:GAM注意力机制整体包含通道注意力模块和空间注意力这两个模块。通道注意子模块使用三维排列来在三个维度上保留信息。然后,它用一个两层的MLP放大跨维通道-空间依赖性。(MLP是一种编码-解码器结构,与BAM相同,其压缩比为r)
GAM的通道注意力机制:
对于输入特征图,首先进行维度转换,经过维度转换的特征图输入到MLP,再转换为原来的维度,进行Sigmoid处理输出。
GAM的空间注意力机制:
在空间注意力子模块中,为了关注空间信息,使用两个卷积层进行空间信息融合,还从通道注意力子模块中使用了与BAM相同的缩减比r。与此同时,由于最大池化操作减少了信息的使用,产生了消极的影响。这里删除了池化操作以进一步保留特性映射。
对于SAM,GAM主要使用了卷积处理,对于这里有点像SE注意力机制,先将通道数量减少,再将通道数量增加。首先通过卷积核为7的卷积缩减通道数量,缩小计算量,在经过一个卷积核为7的卷积操作,增加通道数量,保持通道数量的一致。最后经过Sigmoid输出。
CBAM注意力机制:CBAM注意力机制是由通道注意力机制(channel)和空间注意力机制(spatial)组成。传统基于卷积神经网络的注意力机制更多的是关注对通道域的分析,局限于考虑特征图通道之间的作用关系。CBAM从 channel 和 spatial 两个作用域出发,引入空间注意力和通道注意力两个分析维度,实现从通道到空间的顺序注意力结构。空间注意力可使神经网络更加关注图像中对分类起决定作用的像素区域而忽略无关紧要的区域,通道注意力则用于处理特征图通道的分配关系,同时对两个维度进行注意力分配增强了注意力机制对模型性能的提升效果。
CBAM注意力机制流程:输入特征图先经过通道注意力机制,将通道权重和输入特征图相乘后再送入空间注意力机制,将归一化后的空间权重和空间注意力机制的输入特征图相乘,得到最终加权后的特征图。
CBAM注意力机制的通道注意力机制:先将输入特征图分别进行全局最大池化和全局平均池化,对特征映射基于两个维度压缩,获得两张不同维度的特征描述。池化后的特征图共用一个多层感知器网络,先通过一个全连接层下降通道数,再通过另一个全连接恢复通道数。将两张特征图在通道维度堆叠,经过 sigmoid 激活函数将特征图的每个通道的权重归一化到0-1之间。将归一化后的权重和输入特征图相乘。
CBAM注意力机制的空间注意力机制:对通道注意力机制的输出特征图进行空间域的处理。首先,对输入特征图在通道维度下做最大池化和平均池化,将池化后的两张特征图在通道维度堆叠。然后,使用 7*7 (或3*3、1*1)大小的卷积核融合通道信息,特征图的shape从 [b,2,h,w] 变成 [b,1,h,w]。最后,将卷积后的结果经过 sigmoid 函数对特征图的空间权重归一化,再将输入特征图和权重相乘。
我认为CBAM和GAM最大的区别就是CBAM注意力机制更注重局部细节的关联性,而GAM注意力机制更注重全局一致性。二者可以根据具体的任务需求灵活组合使用,以达到最优的效果。