attention机制(SE-Net、CBAM及Triplet)

2023-11-11

简介

注意力机制(Attention Mechanism)源于人类视觉的研究,在认知科学中,人类会选择性地关注所有信息的一部分,而忽略其他可见信息。为了合理利用有限的资源,就需要选择视觉区域的特定部分,并重点关注它。
在神经网络中,attention机制通常是一个额外的神经网络,能够选择输入的某些部分或给不同部分分配不同的权重,从而能够在大量信息中筛选出重要的信息。

空间维度引入attention

1、以inception网络为例,给并联的不同卷积层不同的权重

inception2、给同一通道的不同区域赋予不同权重

通道维度引入attention

1、不同通道赋予不同的权重


一、SE-Net模型

通过对通道维度(channel-wise)增加attention机制,包括squeeze和excitation两个关键操作,通过自动学习的方式(用另一个神经网络实现),获取每个特征通道的最佳权重值。
在这里插入图片描述
其中不同的颜色代表每个通道的不同权重。

1、squeeze( F s q F_{sq} Fsq)

通过全局平均池化(global average pooling),将每个通道的二位特征( H × W H\times W H×W)压缩成1个实数,经squeeze后变成 1 × 1 × C 1\times 1\times C 1×1×C
z c = F s q ( u c ) = 1 H × W ∑ i = 1 H ∑ j = 1 W u c ( i , j ) \begin{aligned} z_c=F_{sq}(u_c) =\frac{1}{H\times W}\sum_{i=1}^H\sum_{j=1}^Wu_c(i,j) \end{aligned} zc=Fsq(uc)=H×W1i=1Hj=1Wuc(i,j)

2、excitation( F e x F_{ex} Fex)

为每一个特征通道生成一个权重值,通过两个全连接层组成一个Bottleneck结构去构建通道间的相关性,并输出和输入特征相同数目的权重值。
SE-InceptionFC+Relu+FC+Sigmoid就是excitation操作,具体过程是通过一个全连接层(FC)将特征维度降低到 1 / r 1/r 1/r,然后通过Relu激活函数再经过一个全连接层将特征维度恢复,最后通过sigmoid函数完成归一化。
excitation操作中的参数随模型 m i n i m i z e   l o s s minimize\ loss minimize loss不断迭代更新。

3、scale( F s c a l e F_{scale} Fscale)

将得到的权重加权到每个通道特征上,通过对应通道值相乘完成引入attention过程。

4、补充说明

对比加入与不加入SE block的效果
(1)对比加入与不加入SE block的效果,SE-Net核心是通过全连接网络根据loss自动学习权重,而不是直接根据数值分布判断,使得有效的特征通道权重更大。
(2)两个全连接层比一个全连接层的好处:增加了非线性,可以更好地拟合通道间的复杂性


二、CBAM(Convolution Block Attention Module)

CBAM结合了空间(spatial)和通道(channel)的attention机制模块,不像SE-Net只关注通道,因此可以取得更好的效果,attention模块架构如下:

在这里插入图片描述
主要包括通道Attention模块和空间Attention模块两部分。

1、通道Attention模块

在这里插入图片描述
将输入feature map分别经过global max pooling和global avgerage pooling,然后经过MLP转换,再通过elementwise的加和操作将两种结果合并,并进行sigmoid归一化,公式如下:
M c ( F ) = σ ( M L P ( A v g P o o l ( F ) ) + M L P ( M a x P o o l ( F ) ) ) = σ ( W 1 ( W 0 ( F a v g c ) ) + W 1 ( W 0 ( F m a x c ) ) ) , 其 中 W 0 ∈ R C / r × C , W 1 ∈ R C × C / r , σ ( ⋅ ) 为 s i g m o i d 操 作 , r 为 减 少 率 W 0 后 接 R E L U 激 活 。 \begin{aligned} M_c(F)=\sigma(MLP(AvgPool(F)) + MLP(MaxPool(F)))\\=\sigma(W_1(W_0(F_{avg}^c)) + W_1(W_0(F_{max}^c))),\\其中W_0\in R^{C/r\times C},W_1\in R^{C\times C/r},\sigma(\cdot)为sigmoid操作,r为减少率W_0后接RELU激活。 \end{aligned} Mc(F)=σ(MLP(AvgPool(F))+MLP(MaxPool(F)))=σ(W1(W0(Favgc))+W1(W0(Fmaxc)))W0RC/r×CW1RC×C/rσ()sigmoidrW0RELU

2、空间Attention模块

在这里插入图片描述
将通道Attention模块的输出作为输入,首先经过基于通道的global max pooling和global avgerage pooling,并将结果在channel维度concat在一起,在经过一个卷积变成单通道,并通过sigmoid归一化生成spatial attention feature,公式如下:
M s ( F ) = σ ( f 7 × 7 ( [ A v g P o o l ( F ) ; M a x P o o l ( F ) ] ) ) = σ ( f 7 × 7 ( [ F a v g s ; F m a x s ] ) ) \begin{aligned} M_s(F)=\sigma(f^{7\times 7}([AvgPool(F);MaxPool(F)]))\\ =\sigma(f^{7\times 7}([F_{avg}^s;F_{max}^s])) \end{aligned} Ms(F)=σ(f7×7([AvgPool(F);MaxPool(F)]))=σ(f7×7([Favgs;Fmaxs]))
其中, σ ( ⋅ ) \sigma(\cdot) σ()是sigmoid操作, f 7 × 7 f^{7\times 7} f7×7是指核大小为 7 × 7 7\times 7 7×7的卷积操作。

最后将其与输入做乘法,得到处理后的特征。


三、Triplet Attention

CBAM虽然是基于空间和通道,但是空间Attention和通道Attention是分离的,Triplet Attention模块旨在捕捉Cross-dimension交互,并且对通道attention和空间attention的建模几乎无参数。
Triplet Attention由3个平行的Branch组成,其中两个负责捕获通道C和空间( W × H W\times H W×H)之间的跨纬交互,最后一个类似CBAM用来构建空间attention,最后将三个Branch的输出进行平均聚合。

在这里插入图片描述


1、Cross-Dimension Interaction

通过三个分支分别捕捉输入张量的(C,H), (C,W), (H,W)维间的依赖关系来引入Attention中的跨维度交互作用。

2、Z-pool

负责将C维度的Tensor缩减到2维,即将该维上的平均汇集特征和最大汇集特征连接在一起。这使得该层能够保留实际张量的丰富表示,同时缩小其深度以使进一步的计算量更轻,如下所示:
Z − p o o l ( x ) = [ M a x P o o l 0 d ( x ) , A v g P o o l 0 d ( x ) ] \begin{aligned} Z-pool(x) = [MaxPool_{0d}(x), AvgPool_{0d}(x)] \end{aligned} Zpool(x)=[MaxPool0d(x),AvgPool0d(x)]

3、Triplet Attention

给定输入张量 x ∈ R C × H × W x\in R^{C\times H\times W} xRC×H×W,将其传递到Triplet Attention模块中的三个分支中。

在第1个分支中,建立(H,C)维交互:
在这里插入图片描述
将输入张量 x x x沿H轴逆时针旋转90° ,此时形状为 ( W × H × C ) (W\times H\times C) (W×H×C),经过Z-pool后变为 ( 2 × H × C ) (2\times H\times C) (2×H×C),再通过 k × k k\times k k×k标准卷积层和BN(batch normalize)得到 ( 1 × H × C ) (1\times H\times C) (1×H×C)的中间输出,然后sigmoid生成attention权值,最后输出是沿着H轴顺时针旋转90°保持和输入shape一致。

在第2个分支中,建立(C,W)维交互:
在这里插入图片描述
将输入张量 x x x沿W轴逆时针旋转90° ,此时形状为 ( H × C × W ) (H\times C\times W) (H×C×W),经过Z-pool后变为 ( 2 × C × W ) (2\times C\times W) (2×C×W),再通过 k × k k\times k k×k标准卷积层和BN(batch normalize)得到 ( 1 × C × W ) (1\times C\times W) (1×C×W)的中间输出,然后sigmoid生成attention权值,最后输出是沿着W轴顺时针旋转90°保持和输入shape一致。

在第3个分支中,建立(H,W)维交互:
在这里插入图片描述
输入张量 x x x维度经Z-pool变为 ( 2 × H × W ) (2\times H\times W) (2×H×W),再经过标准卷积层和BN,通过sigmoid生成形状为 ( 1 × W × H ) (1\times W\times H) (1×W×H)的attention权值,应用于输入 x x x

最后将三个分支产生的张量聚合在一起,即求平均。

参数分析:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

attention机制(SE-Net、CBAM及Triplet) 的相关文章

  • 建立任务,OSTaskCreate()源码解析

    想让uC OS 管理用户的任务 用户必须要先建立任务 用户可以通过传递任务地址和其它参数到以下两个函数之一来建立任务 OSTaskCreate 或 OSTaskCreateExt OSTaskCreate 与uC OS是向下兼容的 OSTa
  • matlab通过两点画线问题&&plot,line的用法和区别。

    先马 1 LINE并不等同于PLOT 我查过HELP 很多属性不同 2 对与外框的问题 PLOT可以用法BOX控制 LINE无外框 3 图形删除的问题 PLOT可用HOLD ON或OFF控制 LINE要是用DELET 因此建议使用PLOT
  • 尾行3解3D马赛克补丁

    尾行3解3D马赛克补丁 尾行3下载尾行3补丁尾行3图片尾行3去马赛克尾行3怎么玩尾行3下载尾行3视频illusion尾行3秘籍尾行3攻略秘籍 尾行3作弊单机游戏尾行3下载尾行3外挂尾行3对话单机游戏尾行3 尾行3中文补丁 尾行3黑屏补丁尾行

随机推荐

  • M1 Mac 安装Python及相关库|pytorch安装M1 Mac

    今天安装pytorch的时候发现安装的anaconda是x86版本的 自己的电脑是arm64架构的 所以一直安装不上 之后找到一个方法 以后可以通过命令行直接安装在arm64上运行的库了很方便 1 安装homebrew 这是一个mac上的包
  • 编译opencv.js

    opencv 支持编译多个平台 其中还支持JavaScript 不过编译需要emscripten 编译环境 centos7 Python2 7 1 下载OpenCV源码 官网 https opencv org releases 例如下载4
  • Docker如何安装seafile

    SQLite 方式 要在 Docker 中安装 Seafile 您可以按照以下步骤进行操作 安装 Docker 确保您的系统上已经安装了 Docker 您可以根据您的操作系统类型 在官方网站上找到适合您系统的 Docker 版本并进行安装
  • 数字化转型的趋势、挑战与战略【一】

    在全球经济进入数字化转型时期 数字化转型已成为传统企业必须付诸行动的必选题 企业为什么要进行数字化转型 如何把握数字化转型的时机 近日 在大华南IT高管共赢圈 大华南IT培训学院联合举办的 企业数据化转型的战略与规划 培训会上 IDC中国副
  • PyTorch:梯度计算之反向传播函数backward()

    一 计算图 计算图 是一种用来描述计算的有向无环图 我们假设一个计算过程 其中 X 1 mathbf X 1 X1 W 1
  • cmd更换主题配色

    cmd更换主题配色 去github下载colortool 地址 使用管理员打开cmd进入解压后的文件夹 执行命令 colortool exe b solarized light itermcolors 其他可选方案在schemes下 更换效
  • java反射基础巩固

    反射机制是在运行状态中 对于任意一个类 都能够知道这个类的所有属性和方法 对于任意一个对象 都能够调用它的任意一个方法和属性 这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制 一直以来反射技术都是Java中的闪亮点
  • 反射和多线程基础

    一 今日内容 1 1 课程回顾 1 2 反射是啥 1 3 进程和线程 1 4 线程的创建方式 1 5 线程的状态 1 6 线程的常用方法 二 课程回顾 Java的基本语法 1 数据类型 基本 引用 2 运算符 算术 逻辑 比较 赋值 位 三
  • 掌握的几种禁止转换八进制,十进制,十六进制

    1 十进制 除表示正负的符号外 以1 9开头 由0 9组成 如 128 234 278 2 八进制 以0开头 由0 7组成的数 如 0126 050000 3 十六进制 以0X或0x开头 由0 9 A F或a f 组成 如 0x12A 0x
  • 实训周笔记

    主机信息收集技术 基础知识 主要收集目标主机的相关信息 主要包括端口 服务 漏洞等信息 信息收集手段多样 可借助工具也多种多样 端口扫描 Nmap 主机信息收集技术 Nmap namp 192 168 1 1 namp A T4 v 192
  • proteus 问题--解决创建项目、打开项目:Error opening VSM Studio project STM32F401VE,无法查看Source Code,无法创建硬件项目

    问题描述 原因 安装软件的路径有中文 删掉所有东西后 重新下载即可 创建新项目 点击New Project 选择GCC for ARM这个配置项 也可以进入后在配置
  • qt如何触发点击事件_PyQt5事件处理机制(一)

    基于窗体的应用程序都是事件 event 驱动的 鼠标单击 按下某个按键 重绘某个组件 最小化窗口都会产生相应的事件 应用程序对这些事件作出相应的处理以实现程序的功能 常用的特定事件处理函数及方法示例代码 from PyQt5 Qt impo
  • 解读 Q_D, Q_Q 指针

    见 qglog h文件定义 define Q D Class Class Private const d d func define Q Q Class Class const q q func d指针是在主类中使用的 来获取私有子类成员指
  • STM32HAL库软件模拟SPI驱动0.96OLED屏幕,F1、F4系列通用,6pin和7pin模块通用

    本实验通过网上搜集的资料 整理出HAL库的SPI驱动 为了方便移植 选择采用软件模拟SPI通信来驱动OLED 本实验使用的OLED为7pin 默认通信模式为SPI 可以更改板上电阻更换为IIC模式 屏幕驱动芯片为SSD1306 模块简介 6
  • 代码流星雨

    什么是html html就是前端可以理解成为网页界面 不会但是想玩 可以在电脑桌面上建一个记事本然后把代码复制后粘贴在记事本里面 然后保存最后吧记事本 新建文本文档 tx 的后缀 就是重命名 改成html 新建文本文档 html 来自htm
  • 阀门与压力表同步代码

    using System Collections using System Collections Generic using UnityEngine public class Mmmmmm MonoBehaviour float sum
  • Elasticsearch 写入和查询优化底层原理

    一 Elasticsearch 写入原理 1 每个index 是由多个shard组成 默认是5个 每个shard有一个主节点和多个副本节点 分散在不同的物理节点上 2 写入数据的时候 先根据routing参数 以那个字段的值作为路由key
  • 入门级题解:704. 二分查找

    题目 给定一个 n 个元素有序的 升序 整型数组 nums 和一个目标值 target 写一个函数搜索 nums 中的 target 如果目标值存在返回下标 否则返回 1 暴力查找 直接找 遍历 直接尝试二分查找 递归应该要用 中间的值 a
  • 1_simulink简单入门_simulink仿真PID控制

    1 simulink简单入门 simulink仿真PID控制 2 simulink搭建RCL 电阻电感电容模块 毕业前想去做物联网还是或者linux 结果玩了一年多的电机控制 早就深知matlab simulink绕不过的 拖到现在 下班晚
  • attention机制(SE-Net、CBAM及Triplet)

    简介 注意力机制 Attention Mechanism 源于人类视觉的研究 在认知科学中 人类会选择性地关注所有信息的一部分 而忽略其他可见信息 为了合理利用有限的资源 就需要选择视觉区域的特定部分 并重点关注它 在神经网络中 atten