《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》 受机器翻译中的Attention机制启发,Bengio等人于2015年在ICML上发表的一篇文章,首次将注意力机制应用大图像描述(Image Caption)领域,同时提出硬注意力和软注意力两种机制,并利用可视化的技术来直观的表达了Attention机制的作用,为后续注意力机制在计算机视觉领域的发展开了先河。商汤科技和港中文于2017年发表在CVPR上的一篇文章提出了一种利用下采样和上采样空间注意机制的残差注意力网络。在此之前, 以往的Attention模型大多应用于图像分割和显著性检测任务,出发点在于将注意力集中在部分感兴趣区域或显著区域上。作者利用这种模式,在常规的分类网络中,引入侧边分支,该分支同样是由一系列卷积和池化操作来逐渐地提取高级语义特征并增大网络的感受野,最后再将该分支直接上采样为原始分辨率尺寸作为特征激活图叠加回原始输入。遗憾的是,该方法提升效果好像并不明显,而且由于引入大量额外的参数,导致计算开销非常大。
《Improving Convolutional Networks with Self-Calibrated Convolutions》 这是由南开大学程明明团队发表于2020年CVPR上的一篇文章,像这种通过先下采样来扩大感受野再上采样回去充当注意力图的方式与上面这篇论文的思路有点重复了,只不过将其从网络分支迁移到卷积分支,按理来说如果有引用下比较恰当。不过熟悉程老师 【知乎ID:@程明明】的工作的可以发现,他们大多数的工作都非常简洁高效,而且大力提倡开源这一点很是佩服,大家有兴趣的可以直接去官网的Publications访问。
Gather-Excite: Exploiting Feature Context in Convolutional Neural Networks 这篇文章是胡组长继SE-Net后于2018年在NIPS上发表的一篇文章,本文从上下文角度出发,提出了SE的更一般的形式GE,即Gather和Excite,并利用空间注意力来更好的挖掘特征之间的上下文信息。其中,Gather操作用于从局部的空间位置上提取特征,Excite操作则用于将其进行缩放还原回原始尺寸,是一种类似于编解码即Encoder-Decoder模型,可以以很小的参数量和计算量来提升网络的性能,不过知名度和影响力好像远不及SE。
Global Second-order Pooling Convolutional Networks GSoP-Net是发表于CVPR 2019年的一篇文章,作者认为CNN的主要目标是表征高维空间中数千个类别的复杂边界,学习高阶表示对于增强非线性建模能力至关重要。然而,传统的一阶网络显然不能够有效的表征,因此作者从底层到高层逐步引入全局的二阶池化模块,通过对整体图像信息的相关性建模,来捕获长距离的统计信息,充分利用到了图像的上下文信息。与SE等操作提倡的利用2维的GAP操作不同,GSoP通过引入协方差来计算通道之间的关系。具体来说,在利用卷积和池化进行非线性变换以后,该协方差矩阵不仅可以用于沿通道维度进行张量的缩放,也可以用于沿空间维度进行张量缩放。整体来说,通过应用GSoP可以充分利用到图像中的二阶统计量,以高效的捕获全局的上下文信息。BAM是发表于BMVC 2018上的一篇文章,是由CBAM原班人马打造的,作者提出了一个简单可是有效的注意力模型,它能够结合到任何前向传播卷积神经网络中,同时经过两个分离的路径,即空间和通道,去获得注意力图。有趣的是,作者将其放置到了主干网络中每个Stage的中间,通过可视化的中间过程图我们可以明显的看出,BAM形成了一种分层的注意力机制,抑制背景特征,使模型能更加聚焦于前景特征,从而加强高级语义。BAM是通过将两个注意力分支进行串联求和,而CBAM则是一种并联的形式。类似的双重注意力模式还有DA-Net和scSE注意力,有兴趣的可以自行查看。
Rotate to Attend: Convolutional Triplet Attention Module 这是由印度小哥最新提出来的一个工作,作者从维度交互的角度出发,提出了一种三重注意力,即Triplet Attention。传统的注意力方式是通过GAP操作计算出一个权值系数,然后利用这个系数对原始的输入特征图进行统一缩放。其实这里也反复提到,GAP是在二维空间层面上对输入张量进行分解,浓缩为一个系数,不可避免的会导致空间细节信息的大量缺失。而且,单纯的在通道上进行操作,也容易忽略掉空间上一些关键的信息。虽然后面BAM和CBAM的出现缓解了通道和空间的依赖关系,但本质上这两者还是独立的,只不过是将其串联或并联起来。于是乎,印度小哥提倡要让不同维度之间的信息互相交互起来,比如有三个维度,HWC,那就让它们两两进行交互即可。不过说实话,个人感觉这工作有点鸡肋,随意的维度交互有时会破坏信息的空间一致性,结果反而得不偿失,这工作还不如GC-Net来的实在,结合SE操作直接对Non-local进行简化,通俗易懂,简洁高效,欢迎打脸。ResNeSt,号称ResNet的强化版,是由李沐团队张航博士(知乎ID:@张航 )所提出来的一篇文章,作者从基数维度出发,将注意力的思想融入到多分支卷积结构当中,来解决传统CNN感受野受限以及却反跨通道信息交互的问题,遗憾的是刚被ECCV 2020拒了。ResNeSt整体延续了“Split-Transfore-Merge”结构,有点SK(知乎ID: @李翔 )的味道,综合SENet、SKNet与ResNeXt三者的思想。ResNeSt所呈现的效果确实非常惊艳的,在ADE20K、MS-COCO等数据集上屠榜,碾压其他的手动网络架构,没有额外的计算开销,代码也不是很复杂。尽管出来后许多人质疑其性能的提升跟大量的trick有很大关系且一开始代码实现有点问题,但不妨碍我们学习其思想,毕竟做科研不像搞开发,工程侧重的是talk is cheap, show me your code,而研究侧重的是code is weak, show me your idea.
Relation-Aware Global Attention是中科大&微软亚洲研究院发表于CVPR 2020上针对行人重识别任务所提出的一种注意力方法。本文提倡的观点是,要直观地判断一个特征节点是否重要,就应该知道全局范围的特性,这样便可以通过得到进行决策所需要的关系信息,来更好地探索每个特征节点各自的全局关系,从而更好地学习注意力。
作者从参数量和计算量两方面分析了所提出方法的复杂度。首先,由于2维DCT操作涉及到的权重是通过预先计算出来的一组常数,因此相比于原始的通道注意力方法如SE而言,没有引入额外的参数量。其次,计算量方面MCA仅仅比SE高出了略微的代价,可以忽略不计。作者补充说“All other results are quoted from their original papers if available.”这样子的话存在不少问题,就是算着现在硬件算力的提升,性能也会更好一点,而且作者在实验过程也应用了《Deep residual learning for image recognition》和《Bag of tricks for image classifification with convolutional neural networks》这两篇文章所涉及的trick。严谨一点的话应该基于同一实验条件下进行公平的比较,所得到的结果会比较客观一点,或许相对其他rival的提升就不是 large margin,而是trivial contributions。
The results of Low-k combinations and Bot-k combinations. 从实验结果可以看出,Top-k性能最差的频率组合明显低于选择低频频率分量的组合策略,这也充分验证了低频分量是重要的,即DNN更加关注低频分量。当然,最佳的实验效果还是选择性能表现最好的Top-k个分量。