在计算机视觉中,使用特征图金子塔,融合上文特征,增加深度,增加广度使用复杂的特征图处理手段已经是常态,最近对注意力机制的使用也愈演愈烈。
结合最近的注意力机制学习:
- 空间位置软注意力机制:使用sigmoid对map进行操作,之后再与原来的map进行元素相加,相乘,concat。
- 通道注意力机制:一般是参照SEnet,对通道进行加权操作。
- 结合位置空间和通道注意力机制:1和2并行,1和2串行,1和2同时应用。
- 与GAN结合的注意力机制。
- 与RNN结合的注意力机制。
- 各种手段的注意力机制:在领域, RPN分布上进行注意力机制调节。
@2018年是注意力机制提到最多的一年,每篇论文都会提一下。
SENet
SENet 提出了通道间的注意力机制,通过两个全连接层计算通道之间的重要程度。从而过滤掉不重要的通道值。
使用:
- global average pooling 。把二维特征图变成实数
- 使用两个压缩的全连接层进行通道权重的学习
- 使用门控sigmoid或者softmax
- 进行sclae,把每个权重加到特征图上
重要代码段:
def Squeeze_excitation_layer(self, input_x, out_dim, ratio, layer_name):
with tf.name_scope(layer_name) :
squeeze = Global_Average_Pooling(input_x)
# 进行全局池化
excitation = Fully_connected(squeeze, units=out_dim / ratio, layer_name=layer_name+'_fully_connected1')
# 学习通道权重
excitation = Relu(excitation)
excitation = Fully_connected(excitation, units=out_dim, layer_name=layer_name+'_fully_connected2')
# 学习通道权重
excitation = Sigmoid(excitation)
# 阈值调节
excitation = tf.reshape(excitation, [-1,1,1,out_dim])
scale = input_x * excitation
# 把权重赋给各个通道
return scale
网友评论