论文--计算机视觉中的注意力机制

目录

        • 引言
        • 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

  • A General Survey on Attention Mechanisms in Deep Learning

2022-02-02 update

  • 深度学习中的 Attention 机制总结与代码实现(2017-2021年)

2021-12-15 update

  • 超越CBAM,全新注意力机制!GAM:不计成本提高精度(附Pytorch实现)

CV注意力机制资源汇总

  • Awesome-Vision-Attentions
  • External-Attention-pytorch

Attention Mechanisms in Computer Vision: A Survey

  • 2021-11-15 PDF | 清华胡事民团队|中文介绍
  • 论文首先将基于注意力的模型在计算机视觉领域中的发展历程大致归为了四个阶段:
    1. 将深度神经网络与注意力机制相结合,代表性方法为RAM
    2. 明确预测判别性输入特征,代表性方法为STN
    3. 隐性且自适应地预测潜在的关键特征,代表方法为SENet
    4. 自注意力机制

(NeurIPS 2021) Temporal-adaptive Covariance Pooling Networks for Video Recognition

  • [PDF] [code]
  • 整体框架图,十分清晰,大连理工李培华团队出品:
    论文--计算机视觉中的注意力机制_第1张图片

(CVPR 2018) Squeeze-and-Excitation Networks

  • [PDF] [code]
  • SENet想必大家都很熟悉,胡杰团队用它在2017年最后一届 ImageNet 2017 竞赛 Image Classification 任务的冠军.
  • 最喜欢这种大道至简的工作,思路很清楚,简洁,很容易理解,但是有效
  • 所做任务:自然图像分类,场景分类,目标检测(较为通用)
  • 结构块:

论文--计算机视觉中的注意力机制_第2张图片

  • 在ResNet和Inception中的应用:论文--计算机视觉中的注意力机制_第3张图片
  • PyTorch代码实现(很简单):
    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的信息。
    论文--计算机视觉中的注意力机制_第4张图片
  • 主要方法图:
    论文--计算机视觉中的注意力机制_第5张图片

(NIPS 2018 ) A^2-Nets: Double Attention Networks

  • [PDF] [code仅供参考]
  • 具体介绍可以参看这里
  • 所做任务:行人行为(Kinetics),自然图像分类(ImageNet)
  • 主要框架结构
    论文--计算机视觉中的注意力机制_第6张图片
  • 计算图
    论文--计算机视觉中的注意力机制_第7张图片

(ECCV 2018) PSANet: Point-wise Spatial Attention Network for Scene Parsing

  • [PDF] [code]
  • 和上一篇A2Net很像,一个gather,一个collect, A2-Net是串行,PSANet是并行。
  • 所做任务:语义分割(Cityspace、 ADE20K)
  • 网络结构
    论文--计算机视觉中的注意力机制_第8张图片
  • PSA Module
    论文--计算机视觉中的注意力机制_第9张图片

(BMVC 2018) BAM: Bottleneck Attention Module

  • [PDF] [code]
  • 这篇论文主要工作是探索了sptial和channel两个通道间的注意作用,思路清晰,文中具体讨论了spatial和channel的注意力机制的作用;同时还是SENet作了比较,效果还可以。
  • 所做任务:自然图像分类(Cifar-10,100, ImageNet-1k),目标检测(COCO)
  • 整体结构,如下,需要注意的是BAM Module主要放置在每个Bottleneck之后
    论文--计算机视觉中的注意力机制_第10张图片
  • 具体细节:
    论文--计算机视觉中的注意力机制_第11张图片
  • 自己整理公式版:
    论文--计算机视觉中的注意力机制_第12张图片

(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
    论文--计算机视觉中的注意力机制_第13张图片
  • 整体架构
    论文--计算机视觉中的注意力机制_第14张图片
  • 自己整理公式版:
    论文--计算机视觉中的注意力机制_第15张图片

(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).

  • 主要工作和上面几篇颇有相像之处,不过比较有趣的是本文讨论了下图中的 θ \theta θ σ \sigma σ两个函数的不同结合方式,有Gaussian Function,Embedded Gaussian,Dot product和 Concatenation。这一点一般很有启发呦!
  • 文中具体讨论了non-local模块的加入方式、位置,想深入了解的小伙伴,建议移步去论文。
  • 所做任务: 视频分类(Kinetics,Charades), 语义分割(COCO)
  • non-local block:
    论文--计算机视觉中的注意力机制_第16张图片
  • 自己整理公式版:
    论文--计算机视觉中的注意力机制_第17张图片

(CVPR 2019) Dual Attention Network for Scene Segmentation

  • [PDF] [code]
  • 本篇工作怎么看怎么想,虽然可能你也想不到像那篇O(∩_∩)O哈哈~,是不是跃跃欲试,自己也能搞出一篇论文了^_^。
  • 所做任务:场景分割(PASCAL Context,COCO, Cityspace)
  • 整体结构:
    论文--计算机视觉中的注意力机制_第18张图片
  • Position Attention 和 Channel Attention
    论文--计算机视觉中的注意力机制_第19张图片
  • 自己整理公式版:
    论文--计算机视觉中的注意力机制_第20张图片

总结

  • 以上相关的注意力机制,都有一个特点,就是进入注意力机制模块前后,shape不变,这一点也就决定了所有这种方法都比较通用,容易加入到自己的方法中去。
  • 不过,就我跑过的实验来看,注意力机制有效的前提是任务的数据量要足够,要不然很有可能发挥不出应有的性能。

相关资料

  • 【2022-02-18】四万字全面详解 | 深度学习中的注意力机制(上)

你可能感兴趣的:(深度学习,计算机视觉,注意力机制)