一、背景
视觉注意力机制是人脑特有的一种对信号处理的机制,人类视觉通过观察全局图像,选取一些局部重点关注区域,然后对这些区域投入更多注意力来获取更多的细节信息,抑制其他无用信息。
二、基本思想
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)上,给不同通道特征加权,甚至可以给特征图上每个元素加权。
通常对于C*H*W的feature map,spatial attention的H*W平面权重不同,C权重相同;channel attention的C权重不同,H*W平面权重相同。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的权重。
4》效果:
参考文献
《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区别: