[注意力机制]--CV领域中的注意力机制

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

你可能感兴趣的:([注意力机制]--CV领域中的注意力机制)