attention机制总结
转自https://www.it610.com/article/1281634546965561344.htm
一、背景
视觉注意力机制是人脑特有的一种对信号处理的机制,人类视觉通过观察全局图像,选取一些局部重点关注区域,然后对这些区域投入更多注意力来获取更多的细节信息,抑制其他无用信息。
二、基本思想
Attention mechanism的本质是模仿人类视觉注意力机制,学习出一个对图像特征的权重分布,再把这个权重分布施加在原来的特征上,为后面任务如图像分类、图像识别等提供不同的特征影响,使得任务主要关注一些重点特征,忽略不重要特征,提高任务效率。
任务聚焦/解耦:通过将任务分解,设计不同的网络结构(或分支)专注于不同的子任务,重新分配网络的学习能力,从而降低原始任务的难度,使网络更加容易训练。
例:Mask R-CNN,将分类和分割解耦,当box branch已经分好类时,segmentation branch只需关注分割,不关注类别,使得网络更加易训练。当训练样本是狗时,生成狗的mask的网络连接只需聚焦于狗的样本,只有这个类别的loss才会被反传,其他类别不会对连接权重更新。(https://blog.csdn.net/yideqianfenzhiyi/article/details/79422857)
三、attention mechanism分类
Attention mechanism可分为Soft attention和Hard attention,soft是保留所有分量进行加权,hard是以某种策略选取部分分量。
Attention mechanism可以加权在原图上,例如《Recurrent model of visual attention》(Google DeepMind 2014)和《Multiple object recognition with visual attention》(ICLR 2015)。
Attention mechanism可以加权作用在空间尺度(Spatial attention)上,给不同空间区域加权,也可以作用在channel尺度(channel attention)上,给不同通道特征加权,甚至可以给特征图上每个元素加权。
通常对于CHW的feature map,spatial attention的HW平面权重不同,C权重相同;channel attention的C权重不同,HW平面权重相同。Channel attention关注“是什么”,spatial attention关注“在哪儿”。
Attention mechanism可以加权作用在不同时刻历史特征上,例如machine translation。
四、attention设计
如何计算权重一般分为两个步骤:
设计一个打分函数,针对每个attention向量,计算出一个score ,的打分依据就是和attention所关注的对象(实质是一个向量)的相关程度,越相关,所得值越大;
对所得到的K个score Si,通过softmax函数,得到最后的权重,即:
关键点:如何结合具体问题,设计出所要关心的attention,然后将attention向量加入到model中,作为计算score的依据。(https://blog.csdn.net/bvl10101111/article/details/7847016)
五、文章中attention mechanism的设计
《Squeeze-and-Excitation Networks》(CVPR 2018 oral / ImageNet2017图像分类任务冠军)
1》任务:图像分类
2》思想:考虑特征通道之间的关系提高网络性能。
3》具体操作
Squeeze操作,沿channel维度压缩特征,将二维的特征变为一个实数,且output维度和input的特征通道数相同,它表示特征通道上响应的全局分布,且使得靠近input的层可以获得全局的感受野。
Excitation操作,通过参数w为每个特征通道生成权重,其中参数w被学习用来显示的建模特征通道间的相关性。
Reweight操作,将excitation输出的权重当作特征选择后的每个特征的重要程度,然后通过乘法加权到每个通道上,完成在通道上对原始特征的重新标定。
备注:1、蓝色-Squeeze操作,Global average pooling用来计算channel-wise的统计量;粉色-Excitation操作;黄色-Reweight操作;
2、用两个FC层比用一个FC层的好处:具有更多非线性,可以更好拟合通道间复杂的相关性;极大的减少了参数量和计算量。缺点:不能保持spatial information
为什么要设置下降比?
答案:下降比的引进可以改变SE blocks的capacity and computational cost。经过实验后发现,performance不能单通过增加capacity来提高,可能的原因是SE blocks过拟合了training set的channel间的相互依赖性。当时得到了accuracy and complexity的很好的平衡。
4》效果(https://blog.csdn.net/wangkun1340378/article/details/79092001)
Table1反映的是网络深度对SE的影响。Original一栏表示原作者实现的结果,Our re-implementation一栏表示在ROCS上重新实验得到的结果,SE-module一栏表示嵌入SE模块的实验结果,与第二栏训练参数相同。红色数值表示相对于Our re-implementation的精度提升幅值。
Table2反映SE module的泛化能力。
Table4列出一些最新的ImageNet分类的结果,SENet实质是一个SE-ResNet-152(64*4d),在ResNet-152上嵌入SE模块,获得了目前在single-crop上最好的性能。
上表反映在ILSVRC 2017竞赛中,SENet获得了2.251%Top-5错误率,相比2016精度提升近25%。
(2)《SCA-CNN:Spatial and Channel-wise Attention in Convolutional Networks for Image Captioning》(CVPR2017)
1》任务:图像标注(Image caption)
2》思想:在网络的multi-layer上用channel-wise attention和spatial attention结合的方式来做图像标注。
3》具体操作:
V是visual feature,是LSTM memory
(3)《CBAM:channel and spatial block modulation》(ECCV 2018)
Channel-wise attention的处理:average pooling——为了聚合spatial information;max-pooling——可以得到区别object features的另一个重要线索(max-pooling更像做了特征选择,选出分类区别度更好的特征,提供了非线性);MLP保存参数,保证在相同的语义嵌入空间中聚合channel features。
为什么同时使用max-pooling和average-pooling?features怎么融合?
答案:max-pooling features编码最显著部分的程度可以补充average-pooling features编码的全局统计量;element-wise summation。
Spatial attention的处理:用max-pooling和average-pooling沿着channel操作,然后cancatenate产生特征描述子(这样做的目的突出信息区域);再通过一个卷积层产生spatial attention map。
为什么要这样操作?经过实验证明(表格)
4》效果
(4)channel-wise and spatial feature modulation network for single image super-resolution》(IEEE 2018)
1》任务:高分辨率
2》思想:设计一个channel-wise and spatial attention residual blocks动态调节multi-level features,加强有效信息,压缩冗余信息,保留long-term信息。
3》具体操作:
(5)《learning a discriminative feature network for semantic segmentation》(CVPR 2018旷视科技Face++)
1》任务:图像语义分割
2》思想:设计两个子网络,Smooth Network利用channel attention选择更强判别特征处理类内不一致问题;Border Network利用deep语义边界监督处理类间无区别问题。
3》具体操作:
Channel attention block处理:将low stage的feature map与high stage的feature map叠加起来,对叠加后的每个feature map用卷积求和,然后经过sigmoid计算每个channel的权重。
参考文献
《Neural machine translation by jointly learning to align and translate》2015 ICLR
Bahdanau等提出attention mechanism,用于对Input的不同部分赋予不同的权重,进而实现软区分。
《Multiple object recognition with visual attention》(ICLR 2015)和《Recurrent models of visual attention》(Google DeepMind 2015)关于spatial attention比较经典的文章。
附:
特征提取误差主要来源:1、邻域大小受限(感受野变小)造成的估计值方差增大;2、卷积层参数误差造成估计均值的偏移。一般来说,average-pooling可减小第一种误差,保留更多的图像的背景信息,max-pooling可减小第二种误差,保留更多的纹理信息。
Average-pooling更强调对整体特征信息进行一层下采样,减少参数维度,更多的体现在信息的完整传递这个维度上,例DenseNet中的模块之间的连接大多采用average-pooling,在减少维度的同时,更有利信息传递到下一个模块进行特征提取。
池化操作:减少参数量;控制过拟合;提高模型性能。
Global average pooling和average pooling区别: