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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【3】图像处理中的注意力机制总结 -> 正文阅读

[人工智能]【3】图像处理中的注意力机制总结

一、Attention机制

1.1 注意力机制(是一个很大的范围)

注意力机制:我们会把我们的焦点聚焦在比较重要的事物上

注意力的过程

  • 查询对象 Q —— 我
  • 被查询对象 V —— 这张图片
  • 一般来说 K=V?

我看这张图,第一眼,我就会去判断哪些东西对我而言更重要(计算 Q 和 V 里的事物的重要度)

step1 : 通过点乘的方法计算Q 和 K 里的每一个事物的相似度,再做一层softmax,将结果归一化,得到概率a1,a2,a3,a4,进而就可以找出哪个对Q 而言更重要。

step2:得到重要性后,还要进行汇总。因为使用 Q 查询结束了后,Q 已经失去了它的使用价值了,我们最终还是要拿到这张图片的,只不过现在的这张图片,它多了一些信息(多了于我而言更重要,更不重要的信息在这里),经过:

这样的话,就得到了一个新的 V',这个新的 V' 就包含了,哪些更重要,哪些不重要的信息在里面,然后用 V' 代替 V

总结为一张图:

?注意力机制:通过QK 相乘求相似度,做一个 scale(未来做 softmax 的时候避免出现极端情况),然后做 Softmax 得到概率,新的向量表示了K 和 V(K==V),然后这种表示还暗含了 Q 的信息(于 Q 而言,K 里面重要的信息),也就是说,挑出了 K 里面的关键点。

  • 注意力机制是一个很宽泛(宏大)的一个概念,QKV 相乘就是注意力。
  • 没有规定 QKV 怎么来,他只规定 QKV 怎么做。
  • 通过一个查询变量 Q,去找到 V 里面比较重要的东西。
  • K往往是等同于 V 的(同源),但注意力机制中K和 V 不同源不相等也可以。

1.2 Self-Attention - 自注意力机制

通过 X 找到 X 里面的关键点

自注意力机制 是属于 注意力机制 中的一种:不仅规定了 QKV 同源,而且固定了 QKV 的做法。

Self-Attention 的关键点再于:K≈≈V≈≈Q三者同源,且来源于同一个 X。这里并不是 K=V=Q=X,而是通过三个参数?WQ,WK,WV进行了转换,其他的步骤与和注意力机制一模一样。

?根据Q,K,V不同的取值方法,注意力机制可以演化出多种形式:

  • 交叉注意力机制:Q 和 V 不同源,但是 K 和 V 同源

  • cyd 注意力机制:Q 和 V 同源,Q 和 K 不同源

  • xxx 注意力机制:Q 必须为 1,K 和 V 不同源

1.3 Masked(掩码) Self-Attention

在自注意力模型上面做了改进:

?

1.4 Transformer

二、图像处理中的注意力机制

CV任务中,最常用的注意力机制有空间域、通道域和混合域三种

通道注意力,它关注于选择重要的通道,而在深度特征图中,不同的通道往往表示不同的物体,所以它的含义是关注什么(物体),即what to attend。

同理,空间注意力对应 where to attend, 时间注意力对应 when to attend,分支注意力对应 which to attend。具体的注意力机制请参见论文。

视觉中的注意力机制可以粗略的分成四个部分:第一个部分是开始于 RAM[4],特点是都使用了RNN网络进行产生注意力。第二个部分是开始于 STN[5],特点是显式地预测重要的区域,代表性工作还有DCNs[6, 7] 等。第三个部分是开始于 SENet[3],特点是隐式地预测重要的部分,代表性工作还有CBAM[8] 等。第四个部分是自注意力机制相关的注意力方法,代表性工作有Non-Local[2], ViT[9] 等。图2给出了这些方法的分类树。

2.1 通道注意力--?Channel attention

通道域注意力类似于给每个通道上的特征图都施加一个权重,来代表该通道与关键信息的相关度的话,这个权重越大,则表示相关度越高。在神经网络中,越高的维度特征图尺寸越小,通道数越多,通道就代表了整个图像的特征信息。如此多的通道信息,对于神经网络来说,要甄别筛选有用的通道信息是很难的,这时如果用一个通道注意力告诉该网络哪些是重要的,往往能起到很好的效果,这时CV领域做通道注意力往往比空间好的一个原因。代表的是SENet、SKNet、ECANet等。

1、SENet --?CV领域的真神

注意力机制主要分为三个部分:挤压(squeeze),激励(excitation),以及注意(scale )。

  • 首先是 Squeeze 操作,从空间维度来进行特征压缩,将h*w*c的特征变成一个1*1*c的特征,得到向量某种程度上具有全域性的感受野,并且输出的通道数和输入的特征通道数相匹配,它表示在特征通道上响应的全域性分布。算法很简单,就是一个全局平均池化。
  • 其次是 Excitation 操作,通过引入 w 参数来为每个特征通道生成权重,其中 w 就是一个多层感知器,是可学习的,中间经过一个降维,减少参数量。并通过一个 Sigmoid 函数获得 0~1 之间归一化的权重,完成显式地建模特征通道间的相关性。
  • 最后是一个 Scale 的操作,将 Excitation 的输出的权重看做是经过选择后的每个特征通道的重要性,通过通道宽度相乘加权到先前的特征上,完成在通道维度上的对原始特征的重标定。

2、ECANet --? 一维卷积替换SENet中的MLP

  • ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks (CVPR2020)
  • 论文链接:https://arxiv.org/abs/1910.03151
  • 代码地址:https://github.com/BangguWu/ECANet

主要对SENet模块进行了一些改进,提出了一种不降维的局部跨信道交互策略(ECA模块)和自适应选择一维卷积核大小的方法

在这里插入图片描述

ECABlock创新点:

  • 针对SEBlock的步骤(3),将MLP模块(FC->ReLU>FC->Sigmoid),转变为一维卷积的形式,有效减少了参数计算量(我们都知道在CNN网络中,往往连接层是参数量巨大的,因此将全连接层改为一维卷积的形式)
  • 一维卷积自带的功效就是非全连接,每一次卷积过程只和部分通道的作用,即实现了适当的跨通道交互而不是像全连接层一样全通道交互。

?3.3 SKNet

SKNet是基于SENet的改进,他的思路是在提高精度。而很多网络使用了各种Trick来降低计算量,比如SENet多层感知机间添加了降维。SKNet就是想如果不牺牲那么多计算量,能否精度提高一些呢?因此它设置了一组动态卷积选择来实现精度提升。

上图所示是SKNet的基本结构。主要创新点是设置了一组动态选择的卷积,分为三个部分操作Split、Fuse、Select。

(1)Split:对输入向量X进行不同卷积核大小的完整卷积操作(组卷积),特别地,为了进一步提升效率,将5x5的传统卷积替代为dilation=2,卷积核为3x3的空洞卷积;

(2)Fuse:类似SE模块的处理,两个feature map相加后,进行全局平均池化操作,全连接先降维再升维的为两层全连接层,输出的两个注意力系数向量a和b,其中a+b=1;

(3)Select:Select操作对应于SE模块中的Scale。Select使用a和b两个权重矩阵对之前的两个feature map进行加权操作,它们之间有一个类似于特征挑选的操作。

2.?空间域注意力方法?Spatial attention

2.1?自注意力:Self-Attention

自注意力的结构下图所示,它是从NLP中借鉴过来的思想,因此仍然保留了Query, Key和Value等名称。

自注意力是基于特征图本身的关注而提取的注意力。对于卷积而言,卷积核的设置限制了感受野的大小,导致网络往往需要多层的堆叠才能关注到整个特征图。而自注意的优势就是它的关注是全局的,它能通过简单的查询与赋值就能获取到特征图的全局空间信息。

2.2 非局部注意力:Non-local Attention(CVPR2018)

Non-local Attention是研究self-attention在CV领域应用非常重要的文章。主要思想也很简单,CNN中的卷积单元每次只关注邻域kernel size 的区域,就算后期感受野越来越大,终究还是局部区域的运算,这样就忽略了全局其他片区(比如很远的像素)对当前区域的贡献。所以Non-local blocks 要做的是,捕获这种long-range 关系:对于2D图像,就是图像中任何像素对当前像素的关系权值;对于3D视频,就是所有帧中的所有像素,对当前帧的像素的关系权值。

  • Pros:non-local blocks很通用的,容易嵌入在任何现有的 2D 和 3D 卷积网络里,来改善或者可视化理解相关的CV任务。比如前不久已有文章把 non-local 用在 Video ReID [2] 的任务里。
  • Cons:文中的结果建议把non-local 尽量放在靠前的层里,但是实际上做 3D 任务,靠前的层由于 temporal T 相对较大,构造及点乘操作那步,超多的参数,需要耗费很大的GPU Memory

3. 混合域注意力方法

3.1?CBAM

  • 论文名称:CBAM: Convolutional Block Attention Module(ECCV2018)
  • 论文链接:https://arxiv.org/pdf/1807.06521v2.pdf
  • 论文代码:https://github.com/luuuyi/CBAM.PyTorch(复现版本)?

? ? ? ? CBAM也是基于SENet的改进论文中把 channel-wise attention 看成是教网络 Look ‘what’;而spatial attention 看成是教网络 Look ‘where’,所以它比 SE Module 的主要优势就多了后者。

在这里插入图片描述

? ? ? ? 上图所示是CBAM的基本结构,前面是一个使用SENet的通道注意力模块,后面的空间注意力模块设计也参考了SENet,它将全局平均池化用在了通道上,因此作用后就得到了一个二维的空间注意力系数矩阵。值得注意的是,CBAM在空间与通道上同时做全局平均和全局最大的混合pooling,能够提取到更多的有效信息。

3.2?DANet

? ? ? ? 在CBAM 分别进行空间和通道self-attention的思想上,直接使用了non-local 的自相关矩阵Matmul 的形式进行运算,避免了CBAM 手工设计pooling,多层感知器等复杂操作。同时,把Self-attention的思想用在图像分割,可通过long-range上下文关系更好地做到精准分割。img

imgimg?

? ? ? ? 结构框架使用的是CBAM,使用了Position Attention Module 和 Channel Attention Module。两个模块使用的方法都是self-attention,只是作用的位置不同,一个是空间域的self-attention,一个是通道域的self-attention。

  • Position Attention:通过所有位置处的特征的加权和来选择性地聚合每个位置的特征。无论距离如何,类似的特征都将彼此相关。
  • Channel Attention:通过整合所有通道映射之间的相关特征来选择性地强调存在相互依赖的通道映射。

3.3?CCNet

? ? ? ?亮点在于用了巧妙的方法减少了参数量。在DANet中,attention map计算的是所有像素与所有像素之间的相似性,空间复杂度为(HxW)x(HxW),而本文采用了criss-cross思想,只计算每个像素与其同行同列即十字上的像素的相似性,通过进行循环(两次相同操作),间接计算到每个像素与每个像素的相似性,将空间复杂度降为(HxW)x(H+W-1),以图为例为下:

在这里插入图片描述

?整个网络的架构与DANet相同,只不过attention模块有所不同,在计算矩阵相乘时每个像素只抽取特征图中对应十字位置的像素进行点乘,计算相似度。

在这里插入图片描述

?3.4 Residual Attention Network

?软注意力基本的加掩码(mask)机制,但是不同的是,这种注意力机制的mask借鉴了残差网络的想法,不只根据当前网络层的信息加上mask,还把上一层的信息传递下来,这样就防止mask之后的信息量过少引起的网络层数不能堆叠很深的问题。

文提出的注意力mask,不仅仅只是对空间域或者通道域注意,这种mask可以看作是每一个特征元素(element)的权重。通过给每个特征元素都找到其对应的注意力权重,就可以同时形成了空间域和通道域的注意力机制。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:52:59  更:2022-09-30 00:57:39 
 
开发: 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/25 21:33:06-

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