一、Non-local

原文链接:Non-local Neural Networks | IEEE Conference Publication | IEEE Xplore

1.公式

y_i=\frac{1}{C(x)}\sum_{\forall j}f(x_i,x_j)g(x_j)

其中g(x_j)=W_gx_j

f的形式可以不同,如

(1)Gaussian:

f(x_i,x_j)=e^{x_i^\mathrm{T}x_j}

C(x)=\sum_{\forall j}f(x_i,x_j)

(2)Embedded Gaussian:

f(x_i,x_j)=e^{\theta(x_i)^\mathrm{T}\phi(x_j)}

C(x)=\sum_{\forall j}f(x_i,x_j)

自注意力(self-attention)是non-local在Embedded Gaussian中的特例。因为

\frac{1}{C(x)}f(x_i,x_j)

就是对给定的i,沿着维度j作softmax操作。

(3)点积(embedded):

f(x_i,x_j)=\theta(x_i)^\mathrm{T}\phi(x_j)

C(x)=N

(4)拼接:

f(x_i,x_j)=\mathrm{ReLU}(w^\mathrm{T}_f[\theta(x_i),\phi(x_j)])

C(x)=N

其中[\cdot ,\cdot ]表示拼接操作;w_f是将拼接后的向量转换为标量的权重向量。

2.Non-local块

z_i=W_zy_i+x_i

上图为Non-local(embedded Gaussian)的结构。图中蓝色方块为1\times 1\times 1卷积;\oplus\otimes分别表示矩阵加法和矩阵乘法。1024和512代表通道数。softmax操作是对每一行做的。

如果去掉上图中的\theta\phi,就变为Gaussian结构;将softmax操作替换为乘以1/N,就变为点积结构。

实际实施时,不改变性能,但减小计算量的方法:在\phig后加入最大池化层。

二、Criss-Cross

原文链接:CCNet: Criss-Cross Attention for Semantic Segmentation | IEEE Conference Publication | IEEE Xplore

网络结构:

1.Criss-Cross模块结构

图中softmax在通道维度做。

2.Affinity操作

对于Q中每个位置u,可以得到其特征Q_u\in \mathbb{R}^{​{C}'};同时可以得到K中对应位置所在行和列的所有向量集合\Omega_u\in\mathbb{R}^{(H+W-1)\times {C}'}。设\Omega_{i,u}\Omega_u的第i个元素,则Affinity操作定义为

d_{i,u}=Q_u\Omega^{\mathrm{T}}_{i,u}

D为Affinity操作的输出矩阵(或A在softmax前的矩阵;其位置u处的第i个元素为d_{i,u}),则

上图中,左边的矩阵为H,上边的矩阵为K,下边的矩阵为Q,右边的矩阵为D\otimes表示Affinity操作。

3.Aggregation操作

对于V中每个位置u,可以得到其特征V_u\in \mathbb{R}^C和集合\Phi_u\in\mathbb{R}^{(H+W-1)\times C}(所在行和列的所有向量集合)。则Aggregation操作为

{H}'_u=\sum_{i\in \left |\Phi_u \right |}A_{i,u}\Phi_{i,u}+H_u

实际上就是线性组合(以Au位置向量(H+W-1维)的每个元素作为系数/权重,作用于\Phi_u中每一个位置的向量(C维),相乘相加,作为{H}'u位置元素向量(C维))。

三、Squeeze and Excitation(SE)

原文链接:Squeeze-and-Excitation Networks | IEEE Journals & Magazine | IEEE Xplore

上图中:

F_{tr}为卷积、特征提取操作(不属于SE模块);

F_{sq}为均值池化操作,输出为C维向量;

F_{ex}为2层全连接层加sigmoid操作:

s=F_{ex}(z,W)=\sigma(g(z,W))=\sigma(W_2\delta(W_1z))

F_{scale}s的每个元素作为权重乘上U的对应通道得到输出的每个通道:

\tilde{x}_c=F_{scale}(u_c,s_c)=s_cu_c

将SE嵌入到ResNet中:

四、CBAM

原文链接:https://arxiv.org/pdf/1807.06521.pdf

CBAM模块结构:

1.通道注意力模块结构

\begin{aligned} M_c(F)&=\sigma(\textup{MLP}(\textup{AvgPool}(F))+\textup{MLP}(\textup{MaxPool}(F)))\\ &=\sigma(W_1(W_0(F^c_{avg}))+W_1(W_0(F^c_{max}))) \end{aligned}

其中\sigma表示sigmoid函数,W_0\in\mathbb{R}^{C/r\times C}W_1\in\mathbb{R}^{C\times C/r}W_0后有ReLU激活函数。

2.空间注意力模块结构

\begin{aligned} M_s(F)&=\sigma(f^{7 \times 7}([\textup{AvgPool}(F);\textup{MaxPool}(F)]))\\ &=\sigma(f^{7 \times 7}([F^c_{avg};F^c_{max}])) \end{aligned}

其中f^{7\times 7}表示核为7\times 7的卷积操作。

将CBAM嵌入ResNet中:

五、Dual-Attention

原文链接:Dual Attention Network for Scene Segmentation | IEEE Conference Publication | IEEE Xplore

网络结构:

1.位置注意力模块结构

图中B,C,D的维度与A相同;B,C,D的reshape表示将C\times H\times W的矩阵变为C\times N(其中N=HW);S\in \mathbb{R}^{N\times N}为attention map;\otimes表示矩阵乘法;最后的reshape表示将C\times N的矩阵变为C\times H\times W。最终

E_j=\alpha \sum_{i=1}^N(s_{ji}D_i)+A_j

其中\alpha为缩放因子,初始化为0,然后逐渐学习到更大的值;可知E的每个位置是所有位置特征和原始特征的加权和。

2.通道注意力模块结构

图中A的reshape表示将C\times H\times W的矩阵变为C\times N\otimes表示矩阵乘法; 最后的reshape表示将C\times N的矩阵变为C\times H\times W。最终

E_j=\beta \sum_{i=1}^C(x_{ji}A_i)+A_j

其中缩放参数\beta从0开始逐渐学习;可知E的每个通道是所有特征通道和原始通道的加权和。

3.Sum Fusion操作

使用卷积层变换两个注意力模块的输出,然后进行矩阵求和。

注:self attention的permutation equivalent

如上图所示,输入交换次序,输出也会相应交换次序。

5种2D Attention整理(Non-Local、Criss-Cross、SE、CBAM、Dual-Attention)相关推荐

  1. 双重关系感知注意力机制 Dual Relation-Aware Attention[keras实现 dual attention优化版]

    文章目录 前言 一.Compat Position Attention Module紧凑型位置注意力模块 二.Compat Channel Attention Module紧凑型通道注意力模块 三.效 ...

  2. 四种常见背包问题整理

    四种常见背包问题整理 四种常见背包问题包括:① 最优装配 ② 部分背包问题 ③ 01背包问题 ④ 完全背包问题 ① 最优装配 给出 n 个物体,重量分别为 wi,使总重量不超过容量 C 的情况下选择尽 ...

  3. GCN】在NLP中应用GCN的几种构图方法整理

    GCN]在NLP中应用GCN的几种构图方法整理:https://blog.csdn.net/qq_27590277/article/details/106264292

  4. Web 之 html 如何显示隐藏Html元素的两种方法简单整理

    Web 之 html 如何显示隐藏Html元素的两种方法简单整理 目录 Web 之 html 如何显示隐藏Html元素的两种方法简单整理 一.简单介绍 二.实现原理 三.注意事项 四.代码示例 一.简 ...

  5. 注意力机制(SE、Coordinate Attention、CBAM、ECA)、即插即用的模块整理

    总结曾经使用过的一些即插即用的模块以及一些注意力机制 ** 注意力模块:SE ** 代码源自这位大佬的仓库:https://github.com/moskomule/senet.pytorch cla ...

  6. Dual attention network for scene segmentation

    Dual attention network for scene segmentation 设计巧妙,但是没法解释方法的有效性 dual attention的思路太多了,这篇是应用在场景语义分割上. ...

  7. 【论文笔记】D2A U-Net: Automatic segmentation of COVID-19 CT slices based on dual attention and hybrid di

    声明 不定期更新自己精度论文,通俗易懂,初级小白也可以理解 涉及范围:深度学习方向,包括 CV.NLP.Data Fusion.Digital Twin 论文标题:D2A U-Net: Automat ...

  8. 【Attention】Dual Attention(DANet) Fully Attention(FLA)

    空间注意力有助于保留细节信息,通道注意力有助于保留大物体的语义一致性. 有效使用两种注意力可以提升性能. 本文旨在记录一些常用的注意力,以及代码实现,包括两篇文章,DANet,FLA. Dual At ...

  9. 【语义分割】DANet Dual Attention Network for Scene Segmentation

    DANet(Dual Attention Network for Scene Segmentation)在语义分割领域多个数据集上取得了STOA的结果,值得大家关注. [废话两段] 由于之前没跑过语义 ...

  10. 文章阅读:Dual Attention Network for Scene Segmentation

    原文地址:Dual Attention Network for Scene Segmentation 概述 多尺度上下文融合的问题: 虽然上下文融合有助于捕获不同比例的对象,但它无法利用全局视图中对象 ...

最新文章

  1. Type EnumTypeInfo<xxxxx> cannot be used as key. Contained UNSUPPORTED key types: EnumTypeInfo<xxxxx>
  2. 为什么LED灯会越用越暗?
  3. 【线性筛】【质因数分解】【约数个数定理】hdu6069 Counting Divisors
  4. C 迭代器iterator的实现原理
  5. Niginx工作笔记-通过error.log定位错误(记录一个寻找问题的方法)
  6. 转 Grand Central Dispatch 基础教程:Part 1/2 -swift
  7. Linux中Tomcat 服务的搭建
  8. 【学习OpenCV4】图像变换方法总结(放缩、翻转、旋转)
  9. 15张图带你彻底明白spring循环依赖,再也不用怕了
  10. 使用网云穿「内网穿透」实现外网访问内网瑞友天翼等软件
  11. Numpy向量化运算
  12. 《Gpu Gems》《Gpu Pro》《Gpu Zen》系列读书笔记
  13. 移动硬盘 计算机里不显示盘符,移动硬盘插在电脑上不显示盘符是怎么回事啊?...
  14. Incompatible types
  15. 过拟合的原因和解决方法
  16. 关于Left Join On的使用
  17. java freemarker word_Java 用Freemarker完美导出word文档(带图片)(示例代码)
  18. selenium3.141 +IE浏览器环境搭建(含驱动下载链接)
  19. Java面向对象编程——接口
  20. Android ios

热门文章

  1. 解决vue项目背景图片在IE和火狐上不显示的问题
  2. app.use()方法详解
  3. CRM系统与呼叫中心系统对接
  4. 众包专访:高质量的开源众包
  5. Springboot集成SMS发送短信
  6. wine模拟器linux,Wine模拟器使用手册(转)
  7. HTML相对路径简析
  8. 2017个人年终总结
  9. 解决windows10下总是很快进入睡眠问题
  10. 关于结构体、类、联合体、位域等所占内存大小计算