论文阅读(二十四):SA-Net: Shuffle Attention for Deep Convolutional Neural Networks

文章目录

  • Abstract
  • 1.Introduction
  • 2.Shuffle Attention
  • 3.Code


  论文:SA-Net:Shuffle Attention for Deep Convolutional Neural Networks(SA-Net:置换注意力机制)
  论文链接:SA-Net:Shuffle Attention for Deep Convolutional Neural Networks
  代码链接:Github

Abstract

  计算机视觉的注意力机制主要有空间注意力机制和通道注意力机制两种,分别旨在捕获像素(空间域)依赖性和通道依赖性,尽管将它们融合在一起可能会获得更好的性能,但也会增加计算开销。本文提出一种高效的置换注意力机制 S h u f f l e A t t e n t i o n ( S A ) Shuffle\;Attention(SA) ShuffleAttention(SA),其将通道维度分组到多个子特征中,然后再并行处理。对于每个子特征,SA 利用 S h u f f l e U n i t Shuffle\;Unit ShuffleUnit来描述空间和通道维度的特征依赖关系。之后将所有子特征聚合,并采用 c h a n n e l s h u f f l e channel shuffle channelshuffle运算来实现不同子特征之间的信息通信。

1.Introduction

  常见的注意力机制,如GCNet(Gcnet: Non-local networks meet squeeze-excitation networks and beyond)、CBAM(CBAM: convolutional block attention module),将空间注意力和通道注意力整合到一个模块中,但也带来较大的计算负担。受ShuffleNet v2(Shufflenet V2: practical guidelines for efficient CNN architecture design)的启发,本文针对深度卷积神经网络提出了置换注意力机制SA(Shuffle Attention)。它将通道维度分为多个子特征,然后利用Shuffle Unit为每个子特征集成互补的通道和空间注意力模块。

2.Shuffle Attention

在这里插入图片描述
   S h u f f l e A t t e n t i o n Shuffle\;Attention ShuffleAttention机制包含两种运算:
【1.特征分组】
  设有特征图 X ∈ R C × H × W X∈R^{C×H×W} XRC×H×W,SA沿通道维度将 X X X分为 G G G组,即, X = X 1 , X 2 , . . . X g , X k ∈ R C g × H × W X={X_1,X_2,...X_g},X_k∈R^{\frac{C}{g}×H×W} X=X1,X2,...Xg,XkRgC×H×W。通过attention模块为每个子特征生成相应的重要性系数。具体来说,在每个注意力单元的开始,将输入 X k X_k Xk沿通道维度拆分为两个分支 X k 1 、 X k 2 ∈ R C 2 g × H × W X_{k1}、X_{k2}∈R^{\frac{C}{2g}×H×W} Xk1Xk2R2gC×H×W。一个分支利用通道的相互关系生成通道注意力图,另一个分支利用特征的空间关系生成空间注意力图。
【2.通道注意力图】
  完全捕获通道之间的依赖关系的常见模块,如SE(Squeeze-and-Excitation Networks)模块,其会带来太多的参数。本文提出了一种替代方案,与SE模块的思想一样,先通过全局平均池化(GAP)操作来收集空间域的所有信息,将 X k 1 X_{k1} Xk1转换为向量 1 × 1 × C 2 g 1×1×\frac{C}{2g} 1×1×2gC。计算公式:
在这里插入图片描述
之后通过简单的门控机制( F c F_c Fc)与 s i g m o i d sigmoid sigmoid函数( σ σ σ)生成通道注意力图,将其与 X k 1 X_{k1} Xk1相乘,即可完全捕获通道之间的依赖关系。计算公式:
在这里插入图片描述
【3.空间注意力图】
  空间注意力图用于捕获位置信息(语义信息),其一般是通道注意力的补充。具体来说,对 X k 2 X_{k2} Xk2使用组归一化来捕获空间域的统计信息,与生成通道注意力图的方式相同,使用简单的门控机制( F c F_c Fc)与 s i g m o i d sigmoid sigmoid函数( σ σ σ)生成空间注意力图,将其与 X k 2 X_{k2} Xk2相乘,即可完全捕获空间域信息。计算公式:
在这里插入图片描述
【4.特征融合】
  先通过 C o n c a t Concat Concat操作将特征图融合得到 X k ′ = [ X k 1 ′ , X k 2 ′ ] ∈ R C 2 G × H × W X'_k=[X'_{k1},X'_{k2}]∈R^{\frac{C}{2G}×H×W} Xk=[Xk1,Xk2]R2GC×H×W。最后采用与ShuffleNetV2相同的思想,采用通道置换操作(channel shuffle)。进行组间通信。SA的最终输出具有与输入相同的尺寸。

3.Code

import torch
import torch.nn as nn
from torch.nn.parameter import Parameter
class sa_layer(nn.Module):"""Constructs a Channel Spatial Group module.Args:k_size: Adaptive selection of kernel size"""def __init__(self, channel, groups=64):super(sa_layer, self).__init__()self.groups = groupsself.avg_pool = nn.AdaptiveAvgPool2d(1)self.cweight = Parameter(torch.zeros(1, channel // (2 * groups), 1, 1))self.cbias = Parameter(torch.ones(1, channel // (2 * groups), 1, 1))self.sweight = Parameter(torch.zeros(1, channel // (2 * groups), 1, 1))self.sbias = Parameter(torch.ones(1, channel // (2 * groups), 1, 1))self.sigmoid = nn.Sigmoid()self.gn = nn.GroupNorm(channel // (2 * groups), channel // (2 * groups))@staticmethoddef channel_shuffle(x, groups):b, c, h, w = x.shapex = x.reshape(b, groups, -1, h, w)x = x.permute(0, 2, 1, 3, 4)# flattenx = x.reshape(b, -1, h, w)return xdef forward(self, x):#1.特征分组b, c, h, w = x.shapex = x.reshape(b * self.groups, -1, h, w)x_0, x_1 = x.chunk(2, dim=1)#2.通道注意力图xn = self.avg_pool(x_0)xn = self.cweight * xn + self.cbiasxn = x_0 * self.sigmoid(xn)#3.空间注意力图xs = self.gn(x_1)xs = self.sweight * xs + self.sbiasxs = x_1 * self.sigmoid(xs)#特征融合out = torch.cat([xn, xs], dim=1)out = out.reshape(b, -1, h, w)out = self.channel_shuffle(out, 2)return out

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/56395.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

九州未来亓绚亮相丽台Solution Day 2024,共建AI赋能教育新时代

在数字化浪潮席卷全球的当下,生成式人工智能正迅速渗透至数字世界的每一个角落,而AI技术的物理化应用也正成为新的趋势。10月22日,丽台解决方案日Solution Day 2024:物理AI推动行业数字变革在上海绿地外滩中心顺利举行。 大会聚焦…

报表工具怎么选?山海鲸VS帆软,哪个更适合你?

概述 在国产报表软件市场中,山海鲸报表和帆软这两款工具都占有一席之地,许多企业在选择报表工具时常常在它们之间徘徊。然而,随着企业对数据分析需求的不断增长和复杂化,如何选取一款高效、易用且性价比高的报表工具,…

“摄像机”跟随及攻击抖动实现

学习Unity的摄像机功能,可以帮助我们实现摄像机对人物的跟随移动,还可以使用这个工具自带的插件,摄像机震动,颤动,增强打击感; 首先来安装一下这个插件,window菜单--packageManage--左上角Unit…

vcpkg 从清单文件安装依赖项

vcpkg 有两种运行模式:经典模式和清单模式。清单文件有自己的 vcpkg_installed 目录,可在其中安装依赖项,与所有包都安装在通用 %VCPKG_ROOT%/installed 目录中的经典模式不同。 因此,每个项目都可以有自己的清单和自己的一组依赖…

R语言机器学习算法实战系列(十)自适应提升分类算法 (Adaptive Boosting)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍原理步骤教程下载数据加载R包导入数据数据预处理数据描述数据切割调节参数构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性保存模型总…

生发产品哪个效果最好?油秃头秋冬季养发搭子

如果你是大额头 或者 M型发际线,无论是天生的 亦或者是后天造成的,养发防脱一定要重视起来,因为防脱育发是需要循序渐进坚持的,今天就给大家分享一下几个特别有效的育发液,选对产品养发那真是稳了~ 1、露卡菲娅防脱育发…

Unity之XR Interaction Toolkit 射线拖拽3DUI

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、想实现的功能二、实现原理1.UI挂在XRGrabInteractable、刚体、BoxCollder2.修改刚体属性3.加BoxCollder 总结 前言 VR项目里正常情况有放置两种3DUI的方式…

Ovis: 多模态大语言模型的结构化嵌入对齐

论文题目:Ovis: Structural Embedding Alignment for Multimodal Large Language Model 论文地址:https://arxiv.org/pdf/2405.20797 github地址:https://github.com/AIDC-AI/Ovis/?tabreadme-ov-file 今天,我将分享一项重要的研…

关于使用 C# 处理水位数据多种格式的统一转换

关于使用 C# 处理水位数据多种格式的统一转换 1、前言2、水位数据的多种格式3、水位数据多种格式的统一转换程序展示4、水位数据多种格式的统一转换 C# 代码4.1、声明引用命名空间4.2、多种格式的统一转换 C# 代码4.3、多种格式的统一转换 C# 代码,文件输出保存 1、…

微知-Lecroy力科的PCIe协议分析仪型号命名规则(PCIe代,金手指lanes数量)

文章目录 要点主要型号命名规则各代主要产品图片Summit M616 协议分析仪/训练器Summit T516 分析仪Summit T416 分析仪Summit T3-16分析仪Summit T28 分析仪 综述 要点 LeCroy(力科)成立于1964年,是一家专业生产示波器厂家。在美国纽约。一直把重点放在研制改善生产…

Hallo2 长视频和高分辨率的音频驱动的肖像图像动画 (数字人技术)

HALLO2: LONG-DURATION AND HIGH-RESOLUTION AUDIO-DRIVEN PORTRAIT IMAGE ANIMATION 论文:https://arxiv.org/abs/2410.07718 代码:https://github.com/fudan-generative-vision/hallo2 模型:https://huggingface.co/fudan-generative-ai/h…

TikTok营销实用技巧与数据分析工具:视频洞察

TikTok凭借其独特的机制和庞大的流量,成为了众多品牌和卖家对产品进行宣传推广的必要平台之一。要在TikTok上优化营销效果、提升推广效率,可以使用平台提供的重要工具——视频洞察(Video Insights)。 一、视频洞察功能与技巧 视频…

线性回归(一)

线性回归 1.基本术语 ①特征:预测所依据的自变量称为特征或协变量 ②标签:试图预测的目标称为标签或目标 2.举个栗子 线性假设是指目标(房屋价格)可以表示为特征(面积和房龄)的加权和,如下面…

YOLOv11入门到入土使用教程(含结构图)

一、简介 YOLOv11是Ultralytics公司在之前的YOLO版本上推出的最新一代实时目标检测器,支持目标检测、追踪、实力分割、图像分类和姿态估计等任务。官方代码:ultralytics/ultralytics:ultralytics YOLO11 🚀 (github.com)https://g…

解决跨域问题

跨域是浏览器受同源策略的限制,同源策略是浏览器为确保资源安全,而遵循的一种策略,该策略对访问资源进行了一些限制(如发送 ajax 请求,操作 dom,读取 cookie)。 最常见的影响就是发送 ajax 请求…

【微知】如何通过命令行在非串口界面触发sysrq的help信息?(echo h > /proc/sysrq-trigger)

背景 在服务器上,触发sysrq通常需要在串口执行sysrq热键,比如 ~相关的操作 如何通过在ssh界面触发sysrq触发一些操作? 命令 通过sysrq指定的/proc接口文件进行操作 echo h > /proc/sysrq-trigger dmesg #产看输出的帮助信息然后根据打…

Junit + Mockito保姆级集成测试实践

一、做好单测,慢即是快 对于单元测试的看法,业界同仁理解多有不同,尤其是在业务变化快速的互联网行业,通常的问题主要有,必须要做吗?做到多少合适?现在没做不也挺好的吗?甚至一些大…

MYSQL-SQL-01-DDL(Data Definition Language,数据定义语言)

DDL(数据定义语言) DDL(Data Definition Language),数据定义语言,用来定义数据库对象(数据库,表,字段) 。 一、数据库操作 1、 查询mysql数据库管理系统的所有数据库 语法&#…

django(3)jinja2模版的使用

启动模版 安装jinja2 pip install jinja2 配置setting TEMPLATES中添加配置 {BACKEND: django.template.backends.jinja2.Jinja2,DIRS: [os.path.join(BASE_DIR,jinja2)], #模版在项目中的所在位置} template中各项的含义 这个配置项中模版自上而下加载,重名…

Spring Boot框架的电影评论系统设计与实现

3系统分析 3.1可行性分析 通过对本电影评论网站实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本电影评论网站采用SSM框架,JAVA作为开发语言&#…