1. CBAM
Convolutional Block Attention Module (CBAM) 表示卷积模块的注意力机制模块。是一种结合了空间(spatial)和通道(channel)的注意力机制模块。
2. Channel Attention Module
我们知道一张图片经过几个卷积层会得到一个特征矩阵,这个矩阵的通道数就是卷积核的个数。那么,一个常见的卷积核经常达到1024,2048个,并不是每个通道都对于信息传递非常有用了的。因此,通过对这些通道进行过滤,也就是注意,来得到优化后的特征.
主要思路就是:增大有效通道权重,减少无效通道的权重
上面输出出来的Tensor的shape是 ,它是每一个通道的权重,对应层要乘以这个权重得到这层新的feature map
注意,在MLP之前两个池化结果是分开的,经过MLP之后将这两个加起来,再sigmoid
3. Space Attention Module
注意力主要分布在空间中,又被称为空间注意力,表现在图像上就是对图像上不同位置的关注程度不同。反映在数学上就是指:针对某个大小为H×W×C的特征图,有效的一个空间注意力对应一个大小为H×W的矩阵,每个位置对原特征图对应位置的像素来说就是一个权重,计算时做pixel-wise multiply。
- 输入一个特征图
- 基于channel进行global max pooling和global average pooling
- 将上述的结果基于channel做concat
- 将concat后的结果经过一个same卷积操作,channel降为1
- 将结果经过sigmoid生成spatial attention feature,可以与输入的特征图做乘法,为feature增加空间注意力
4.不正经的summary
-
Inception模块中是same卷积
-
Inception模块可以加入残差
-
Inception模块是用来替代一般卷积用的,可以看成Conv2d函数的地位
-
Attention模块其实就是对特征图的权重调整
-
Attention模块可以结合残差
-
残差注意力+残差Inception交替使用,中间学习GoogLeNet的辅助分类;注意力用来调整输入到卷积中的feature map,Inception负责特征选择
-
特别地,可以Inception * 2->Attention->池化
5. 并联的CBAM——BAM
- 这里注意,空间注意力那块,中间用了空洞卷积,但是H * W可是没变的,所以应该是用了padding进行了same卷积
来源:CSDN
作者:把爱藏进晚安
链接:https://blog.csdn.net/dreaming_coder/article/details/104652790