为了提高计算机视觉任务的性能,人们研究了各种注意力机制。然而,以往的方法忽略了保留通道和空间方面的信息以增强跨维度交互的重要性。因此,本文提出了一种通过减少信息弥散和放大全局交互表示来提高深度神经网络性能的全局注意力机制。

本文引入了3D-permutation 与多层感知器的通道注意力和卷积空间注意力子模块。在CIFAR-100和ImageNet-1K上对所提出的图像分类机制的评估表明,本文的方法稳定地优于最近的几个注意力机制,包括ResNet和轻量级的MobileNet。

1简介

卷积神经网络已广泛应用于计算机视觉领域的许多任务和应用中。研究人员发现,CNN在提取深度视觉表征方面表现良好。随着CNN相关技术的改进,ImageNet数据集的图像分类准确率在过去9年里从63%提高到了90%。这一成就也归功于ImageNet数据集的复杂性,这为相关研究提供了难得的机会。由于它覆盖的真实场景的多样性和规模,有利于传统的图像分类、表征学习、迁移学习等研究。特别是,它也给注意力机制带来了挑战。

近年来,注意力机制在多个应用中不断提高性能,引起了研究兴趣。Wang等人使用编码-解码器residual attention模块对特征图进行细化,以获得更好的性能。Hu 等人分别使用空间注意力机制和通道注意力机制,获得了更高的准确率。然而,由于信息减少和维度分离,这些机制利用了有限的感受野的视觉表征。在这个过程中,它们失去了全局空间通道的相互作用。

本文的研究目标是跨越空间通道维度研究注意力机制。提出了一种“全局”注意力机制,它保留信息以放大“全局”跨维度的交互作用。因此,将所提出的方法命名为全局注意力机制(GAM)。

2相关工作

注意力机制在图像分类任务中的性能改进已经有很多研究。

SENet在抑制不重要的像素时,也带来了效率较低的问题。

CBAM依次进行通道和空间注意力操作,而BAM并行进行。但它们都忽略了通道与空间的相互作用,从而丢失了跨维信息。

考虑到跨维度交互的重要性,TAM通过利用每一对三维通道、空间宽度和空间高度之间的注意力权重来提高效率。然而,注意力操作每次仍然应用于两个维度,而不是全部三个维度。

为了放大跨维度的交互作用,本文提出了一种能够在所有三个维度上捕捉重要特征的注意力机制。

3GAM注意力机制

本文的目标是设计一种注意力机制能够在减少信息弥散的情况下也能放大全局维交互特征。作者采用序贯的通道-空间注意力机制并重新设计了CBAM子模块。整个过程如图1所示,并在公式1和2。给定输入特征映射,中间状态和输出定义为:

其中和分别为通道注意力图和空间注意力图;表示按元素进行乘法操作。

通道注意力子模块

通道注意子模块使用三维排列来在三个维度上保留信息。然后,它用一个两层的MLP(多层感知器)放大跨维通道-空间依赖性。(MLP是一种编码-解码器结构,与BAM相同,其压缩比为r);通道注意子模块如图2所示:

空间注意力子模块

在空间注意力子模块中,为了关注空间信息,使用两个卷积层进行空间信息融合。还从通道注意力子模块中使用了与BAM相同的缩减比r。与此同时,由于最大池化操作减少了信息的使用,产生了消极的影响。这里删除了池化操作以进一步保留特性映射。因此,空间注意力模块有时会显著增加参数的数量。为了防止参数显著增加,在ResNet50中采用带Channel Shuffle的Group卷积。无Group卷积的空间注意力子模块如图3所示:

Pytorch实现GAM注意力机制

import torch.nn as nn
import torchclass GAM_Attention(nn.Module):def __init__(self, in_channels, out_channels, rate=4):super(GAM_Attention, self).__init__()self.channel_attention = nn.Sequential(nn.Linear(in_channels, int(in_channels / rate)),nn.ReLU(inplace=True),nn.Linear(int(in_channels / rate), in_channels))self.spatial_attention = nn.Sequential(nn.Conv2d(in_channels, int(in_channels / rate), kernel_size=7, padding=3),nn.BatchNorm2d(int(in_channels / rate)),nn.ReLU(inplace=True),nn.Conv2d(int(in_channels / rate), out_channels, kernel_size=7, padding=3),nn.BatchNorm2d(out_channels))def forward(self, x):b, c, h, w = x.shapex_permute = x.permute(0, 2, 3, 1).view(b, -1, c)x_att_permute = self.channel_attention(x_permute).view(b, h, w, c)x_channel_att = x_att_permute.permute(0, 3, 1, 2)x = x * x_channel_attx_spatial_att = self.spatial_attention(x).sigmoid()out = x * x_spatial_attreturn outif __name__ == '__main__':x = torch.randn(1, 64, 32, 48)b, c, h, w = x.shapenet = GAM_Attention(in_channels=c, out_channels=c)y = net(x)

4实验

4.1 CIFAR-100

4.2 ImageNet-1K

4.3 消融实验

5参考

[1].Global Attention Mechanism: Retain Information to Enhance Channel-Spatial Interactions

本文仅做学术分享,如有侵权,请联系删文。

即插即用 | 超越CBAM,全新注意力机制,GAM表现卓著(附Pytorch实现)相关推荐

  1. 图像处理注意力机制Attention汇总(附代码)

    原文链接: 图像处理注意力机制Attention汇总(附代码,SE.SK.ECA.CBAM.DA.CA等) 1. 介绍 注意力机制(Attention Mechanism)是机器学习中的一种数据处理方 ...

  2. 即插即用的轻量注意力机制ECA--Net

    论文名:ECA-Net: Effificient Channel Attention for Deep Convolutional Neural Networks 论文:https://arxiv.o ...

  3. 理解神经网络的注意力机制(Attention)及PyTorch 实现

    刚刚结束的 2022 年对于人工智能的许多进步来说是不可思议的一年.最近 AI 中的大多数著名地标都是由称为变形金刚的特定类别模型驱动的,无论是 chatGPT 的令人难以置信的进步,它席卷了世界,还 ...

  4. 超越CBAM,全新注意力GAM:不计成本提高精度

    为了提高计算机视觉任务的性能,人们研究了各种注意力机制.然而,以往的方法忽略了保留通道和空间方面的信息以增强跨维度交互的重要性.因此,本文提出了一种通过减少信息弥散和放大全局交互表示来提高深度神经网络 ...

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

    目录 引言 2022-04-09 update 2022-02-02 update 2021-12-15 update CV注意力机制资源汇总 Attention Mechanisms in Comp ...

  6. 图像注意力机制汇总学习

    原文链接: 图像处理注意力机制Attention汇总(附代码,SE.SK.ECA.CBAM.DA.CA等) 1. 介绍 注意力机制(Attention Mechanism)是机器学习中的一种数据处理方 ...

  7. 如何通过引入硬注意力机制来学习视觉问答任务?

    作者 | Mateusz Malinowski, Carl Doersch, Adam Santoro, and Peter Battaglia 译者 | linstancy 编辑 | Jane 出品 ...

  8. 【python】注意力机制代码

    every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?type=b ...

  9. 聊一聊计算机视觉中常用的注意力机制 附Pytorch代码实现

    聊一聊计算机视觉中常用的注意力机制以及Pytorch代码实现 注意力机制(Attention)是深度学习中常用的tricks,可以在模型原有的基础上直接插入,进一步增强你模型的性能.注意力机制起初是作 ...

最新文章

  1. 火山引擎向企业客户开放上万款抖音同款特效
  2. CString初始化时提示字符串太大
  3. Redis 启动与授权
  4. 很蛋疼的ORA-00911:无效的字符错误
  5. Spring Cloud Gateway之负载均衡
  6. P4381 [IOI2008]Island
  7. flink 不设置水印_从0到1学习Flink—— Flink parallelism 和 Slot 介绍
  8. [Color]彩色转灰度算法彻底学习
  9. ‘chromedriver.exe‘ executable needs to be in PATH.解决办法
  10. js获取image中src属性的方法语句
  11. Scikit-Learn 与 TensorFlow 机器学习实用指南学习笔记 3 —— 数据获取与清洗
  12. kafka权威指南-笔记
  13. 传奇登陆游戏黑屏错位以及登陆器配置和常见问题
  14. SlideLive:提供阶梯类型PPT模板下载
  15. 微信小程序的简单使用(做一个阻抗计算器)
  16. 我的爷爷(知识渊博的下乡知青)
  17. 开始学习爬虫:爬虫之爬取电影天堂网站资源到本地mysql数据库
  18. 又要放大招了 监控中干扰如何消除你可知道?
  19. C++学生管理系统课程设计
  20. 程序员课外拓展001:EI收录号Accession number中的数字的含义

热门文章

  1. 七牛云转码微信录音永久存储本地
  2. 量子计算机背叛,这本小说双主角,里表世界呼应,背叛与末日交织,解开世界奥秘!...
  3. 用MaskFilter画抽奖大转盘Demo
  4. Android TextView圆形背景
  5. centos的官网下载和vm16虚拟机安装centos8【保姆级教程图解】
  6. VoLTE高丢包差小区分析处理流程
  7. 深度学习中的过拟合问题
  8. 利用python合并与拆分excel
  9. datepick二格式 化时间_My97DatePicker设置日期年月日时分秒格式
  10. DTOS帝拓思的3D引擎将取代游戏引擎巨兽,实现国产化替代