CV领域中的注意力机制

科研方向需要自己调研一些合适的注意力机制,所以自己总结如下:
一. channel attention:SEnet:Squeeze-and-Excitation Networks
CV领域中的注意力机制
首先是 Squeeze 操作,顺着空间维度来进行特征压缩,一般用GAP操作; 其次是 Excitation 操作,一般为卷积操作;最后是一个 Re-weight的操作,用来对输入数据通道进行权重赋值
CV领域中的注意力机制
实现代码:
CV领域中的注意力机制
二.GSOP-Net (Global Second-order Pooling Convolutional Networks)
CV领域中的注意力机制
给定一个输入,经过卷积降维,GSop块先进行协方差矩阵计算,然后进行线性卷积和非线性**两个运算得到输出的权重再对输入进行通道赋值。属于一个二阶统计的通道注意力机制,与SEnet中的一阶注意力机制最大的区别为这里统计了协方差矩阵,再进行pooling。
实现代码:
CV领域中的注意力机制
三.CBAM (convolutional block attention module)
CV领域中的注意力机制
结合了特征通道和特征空间两个维度的注意力机制,通过学习自动获取每个特征通道的重要程度和每个特征空间的重要程度。
CV领域中的注意力机制
将输入的featuremap,分别经过基于width和height的global max pooling 和global average pooling,然后分别经过MLP。将MLP输出的特征进行基于elementwise的加和操作,再经过sigmoid**操作,生成最终的channel attention featuremap。将该channel attention featuremap和input featuremap做elementwise乘法操作,生成Spatial attention模块需要的输入特征。
CV领域中的注意力机制
将Channel attention模块输出的特征图作为本模块的输入特征图。首先做一个基于channel的global max pooling 和global average pooling,然后将这2个结果基于channel 做concat操作。然后经过一个卷积操作,降维为1个channel。再经过sigmoid生成spatial attention feature。最后将该feature和该模块的输入feature做乘法,得到最终生成的特征。
实现代码:
CV领域中的注意力机制
四.Non-local Neural Networks
CV领域中的注意力机制
输入为THW1024,先经过两个11卷积降维得到两个THW512的特征图,经过reshape操作再进行点乘得到THWTHW的attention maps,经过softmax得到一个THW的权重,与原x经过111得到的value值点乘得到THW512,此时的特征值为加了自注意力机制的特征。作用是可以捕获全局的特征权重,长距离的特征联系。缺点是特征图尺寸过大时,计算量过大,O(HWHW)。
实现代码:
CV领域中的注意力机制