目录

  • 引言
  • 2022-04-09 update
  • 2022-02-02 update
  • 2021-12-15 update
  • CV注意力机制资源汇总
  • Attention Mechanisms in Computer Vision: A Survey
  • (NeurIPS 2021) Temporal-adaptive Covariance Pooling Networks for Video Recognition
  • (CVPR 2018) Squeeze-and-Excitation Networks
  • (CVPR 2019) SKNet (Selective Kernel Networks)
  • (NIPS 2018 ) A^2-Nets: Double Attention Networks
  • (ECCV 2018) PSANet: Point-wise Spatial Attention Network for Scene Parsing
  • (BMVC 2018) BAM: Bottleneck Attention Module
  • (ECCV 2018) CBAM: Convolutional Block Attention Module
  • (CVPR 2018) Non-local Neural Networks
  • (CVPR 2019) Dual Attention Network for Scene Segmentation
  • 总结
  • 相关资料


引言
  • 许久没有看相关论文了,在这里先把之前整理过的相关论文,写一下,有其他新的再更新。
2022-04-09 update
2022-02-02 update
2021-12-15 update
CV注意力机制资源汇总
Attention Mechanisms in Computer Vision: A Survey
  1. 将深度神经网络与注意力机制相结合,代表性方法为RAM
  2. 明确预测判别性输入特征,代表性方法为STN
  3. 隐性且自适应地预测潜在的关键特征,代表方法为SENet
  4. 自注意力机制
(NeurIPS 2021) Temporal-adaptive Covariance Pooling Networks for Video Recognition
  • [PDF] [code]
  • 整体框架图,十分清晰,大连理工李培华团队出品:
(CVPR 2018) Squeeze-and-Excitation Networks
  • [PDF] [code]
  • SENet想必大家都很熟悉,胡杰团队用它在2017年最后一届 ImageNet 2017 竞赛 Image Classification 任务的冠军.
  • 最喜欢这种大道至简的工作,思路很清楚,简洁,很容易理解,但是有效
  • 所做任务:自然图像分类,场景分类,目标检测(较为通用)
  • 结构块:

计算机视觉注意力机制代码 计算机视觉 注意力_图像分类

from torch import nn

class SELayer(nn.Module):
def __init__(self, channel, reduction=16):
    super(SELayer, self).__init__()
    self.avg_pool = nn.AdaptiveAvgPool2d(1)
    self.fc = nn.Sequential(
        nn.Linear(channel, channel // reduction, bias=False),
        nn.ReLU(inplace=True),
        nn.Linear(channel // reduction, channel, bias=False),
        nn.Sigmoid()
    )
def forward(self, x):
    b, c, _, _ = x.size()
    y = self.avg_pool(x).view(b, c)
    y = self.fc(y).view(b, c, 1, 1)
    return x * y.expand_as(x)
(CVPR 2019) SKNet (Selective Kernel Networks)
  • [PDF] [code]
  • 这篇工作作者和上一篇SENet的胡杰,都是Momenta的,原来是一家人呢!比较相似,所以放在了一起。
  • 所做任务:自然图像分类(CIFAR,ImageNet)
  • 简单来说,就是在SENet基础之上,加了一个select操作,论文中介绍说,以下方法图主要有三部分构成(Split,Fuse, Select),而前两部分和SE的squeeze和excitation操作很相似,主要区别在于Select部分,通过一种通道间软注意力机制来选择不同空间scale的信息。
  • 主要方法图:
(NIPS 2018 ) A^2-Nets: Double Attention Networks
  • [PDF] [code仅供参考]
  • 具体介绍可以参看这里
  • 所做任务:行人行为(Kinetics),自然图像分类(ImageNet)
  • 主要框架结构
  • 计算图
(ECCV 2018) PSANet: Point-wise Spatial Attention Network for Scene Parsing
  • [PDF] [code]
  • 和上一篇A2Net很像,一个gather,一个collect, A2-Net是串行,PSANet是并行。
  • 所做任务:语义分割(Cityspace、 ADE20K)
  • 网络结构
  • PSA Module
(BMVC 2018) BAM: Bottleneck Attention Module
  • [PDF] [code]
  • 这篇论文主要工作是探索了sptial和channel两个通道间的注意作用,思路清晰,文中具体讨论了spatial和channel的注意力机制的作用;同时还是SENet作了比较,效果还可以。
  • 所做任务:自然图像分类(Cifar-10,100, ImageNet-1k),目标检测(COCO)
  • 整体结构,如下,需要注意的是BAM Module主要放置在每个Bottleneck之后
  • 具体细节:
  • 自己整理公式版:
(ECCV 2018) CBAM: Convolutional Block Attention Module
  • [PDF] [code]
  • 这篇工作和BAM的是同一相关作者,效果更加好一些,该工作可以看做是SENet基础之上,添加了spatial的注意力机制;同时又和BAM类似,不同之处在于BAM同时计算spatial和channel之间的,CBAM先计算channel的,后计算spatial的类似于SENet.
  • 还有一点,相比于BAM Module插在每一个Bottleneck之后,CBAM插入在每一个ResBlock之后。
  • 文中也论证了channel attention放在spatial attention之前效果更好一些
  • 所做任务: 自然图像分类(Cifar, ImageNet),目标检测(VOC, COCO)
  • Channel Module和Spatial Attention Module
  • 整体架构
  • 自己整理公式版:
(CVPR 2018) Non-local Neural Networks
  • [PDF] [code]
  • 主要是用来捕捉到long-range dependencies。引用论文中的话来讲就是:

A position xi ’s response is computed by the weighted average of the features of all positions xj (only the highest weighted ones are shown here).

  • 主要工作和上面几篇颇有相像之处,不过比较有趣的是本文讨论了下图中的计算机视觉注意力机制代码 计算机视觉 注意力_计算机视觉注意力机制代码_02计算机视觉注意力机制代码 计算机视觉 注意力_Network_03两个函数的不同结合方式,有Gaussian Function,Embedded Gaussian,Dot product和 Concatenation。这一点一般很有启发呦!
  • 文中具体讨论了non-local模块的加入方式、位置,想深入了解的小伙伴,建议移步去论文。
  • 所做任务: 视频分类(Kinetics,Charades), 语义分割(COCO)
  • non-local block:
  • 自己整理公式版:
(CVPR 2019) Dual Attention Network for Scene Segmentation
  • [PDF] [code]
  • 本篇工作怎么看怎么想,虽然可能你也想不到像那篇O(∩_∩)O哈哈~,是不是跃跃欲试,自己也能搞出一篇论文了^_^。
  • 所做任务:场景分割(PASCAL Context,COCO, Cityspace)
  • 整体结构:
  • Position Attention 和 Channel Attention
  • 自己整理公式版:
总结
  • 以上相关的注意力机制,都有一个特点,就是进入注意力机制模块前后,shape不变,这一点也就决定了所有这种方法都比较通用,容易加入到自己的方法中去。
  • 不过,就我跑过的实验来看,注意力机制有效的前提是任务的数据量要足够,要不然很有可能发挥不出应有的性能。
相关资料