IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 注意力机制 -> 正文阅读

[人工智能]注意力机制

1,Squeeze-and-Excitation网络

论文:Squeeze-and-Excitation Networks
论文链接:https://arxiv.org/abs/1709.01507
代码地址:https://github.com/hujie-frank/SENet
PyTorch代码地址:https://github.com/miraclewkf/SENet-PyTorch

首先,Squeeze-and-Excitation Networks(SE)并不是一个完整的网络模型,它是一个子结构,我们可以将它加在很多模型中。SENet的核心思想在于通过网络根据loss去学习特征权重,使得有效的feature map权重大,无效或效果小的feature map权重小的方式训练模型达到更好的结果

Figure1就是?SENet的结构,首先Ftr这一步是转换操作(严格讲并不属于SENet,而是属于原网络,可以看后面SENet和Inception及ResNet网络的结合),在文中就是一个标准的卷积操作而已,输入输出的定义如下表示。

接下来就是Squeeze操作,公式非常简单,就是一个global average pooling(全局平均池化)

?因此公式2就将U(H*W*C)的输入转换成Z(1*1*C)的输出,

再接下来就是Excitation操作,如公式3。

前面squeeze得到的结果是z,这里先用W1乘以z,就是一个全连接层操作,W1的维度是C/r * C,这个r是一个缩放参数,在文中取的是16,这个参数的目的是为了减少channel个数从而降低计算量。又因为z的维度是11C,所以W1z的结果就是11C/r;然后再经过一个ReLU层,输出的维度不变;然后再和W2相乘,和W2相乘也是一个全连接层的过程,W2的维度是C*C/r,因此输出的维度就是11C;最后再经过sigmoid函数,得到s。

也就是说最后得到的这个s的维度是11C,C表示channel数目。

在得到s之后,就可以对原来的U操作了,就是下面的公式4。也很简单,就是channel-wise multiplication,什么意思呢?uc是一个二维矩阵,sc是一个数,也就是权重,因此相当于把uc矩阵中的每个值都乘以sc。对应Figure1中的Fscale。

举例,怎样将SENet加入到模型中。

Figure2是在Inception中加入SE block的情况,这里的Inception部分就对应Figure1中的Ftr操作。

?

2,Convolutional Block Attention Module

论文地址:https://arxiv.org/pdf/1807.06521.pdf

代码地址:https://github.com/Jongchan/attention-module

CBAM(Convolutional Block Attention Module)它包含了两部分,结构如下:

上图可以看到,CBAM包含CAM(Channel Attention Module)和SAM(Spartial Attention Module)两个子模块,分别进行通道和空间上的Attention。

首先,具体看一下CAM

首先,对输入层并行进行MaxPool和AvgPool两个操作,输入从C*W*H变成两个了C*1*1,这两个c*1*1分别进行Shared MLP操作,在该模块中,它先将通道数压缩为原来的1/r(Reduction,减少率)倍,再扩张到原通道数,经过ReLU激活函数得到两个激活后的结果。将这两个输出结果进行逐元素相加,再通过一个sigmoid激活函数得到Channel Attention的输出结果,再将这个输出结果乘原图,变回C*H*W的大小。

?再来看一下,SAB:

图解:将Channel Attention的输出结果通过最大池化和平均池化得到两个1*H*W的特征图,然后经过Concat操作对两个特征图进行拼接,通过7*7卷积变为1通道的特征图(实验证明7*7效果比3*3好),再经过一个sigmoid得到Spatial Attention的特征图,最后将输出结果乘原图变回C*H*W大小。
空间注意力公式:

3,ECA-Net

论文地址:

代码地址:GitHub - BangguWu/ECANet: Code for ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

结构如下:

?

与SE类似,先全局平均池化,SE是先用全连接层进行压缩再扩充,ECA通过大小为 k 的快速一维卷积实现,其中核大小k表示?局部跨通道交互?的覆盖范围,即有多少领域参与了一个通道的注意预测,

4,Coordinate Attention

Paper:https://arxiv.org/pdf/2103.02907.pdf
GitHub:https://github.com/Andrew-Qibin/CoordAttention?

SE只考虑内部通道信息而忽略了位置信息的重要性,而视觉中目标的空间结构是很重要的。
BAM和CBAM尝试去通过在通道上进行全局池化来引入位置信息,但这种方式只能捕获局部的信息,而无法获取长范围依赖的信息(过几层的卷积后feature maps的每个位置都包含了原图像一个局部区域的信息,CBAM是通过对每个位置的多个通道取最大值和平均值来作为加权系数,因此这种加权只考虑了局部范围的信息)。

来看一下Coordinate Attention,它包括坐标信息嵌入(coordinate information embedding)和坐标注意力生成(coordinate attention generation),它的具体结构如下图。

1,对输入 X (C*H*W),先使用尺寸 ( 1,W) 和? (H,1)的池化核沿着水平坐标方向和竖直坐标方向对每个通道进行编码,得到两个特征图大小分别是(C*H*1)和(C*1*W)。
2,先级联之前模块生成的两个特征图,再用1*1的卷积核进行卷积,输出为C/r*1*(W+H)。

3,批归一化和非线性变换

4,将C/r*1*(w+h)分裂成C/r*H*1和C/r*1*W两个特征图,再用1*1的卷积核卷积,结果为C*H*1和C*1*W两个特征图,再用激活函数sigmoid.

5,最后,输出为

Xc为输入原图的第c个通道,Gch,Gcw是步骤四两个特征图的第c个通道。

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:44:55  更:2022-08-06 10:48:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:48:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码