Vision Transformer综述 part II

news2024/11/15 21:27:12

Vision Transformer综述

  • 1. Transformer简介
  • 2. Transformer组成
    • 2.1 Self-Attention
      • Multi-Head Attention(多头注意力)
    • 2.2 Transformer的其他关键概念
      • 2.2.1 Feed-Forward Network 前馈网络
      • 2.2.2 Residual Connection 残差连接
      • 2.2.3 解码器中的最后一层
  • 3. VISION TRANSFORMER
    • 3.1 Representation Learning的主干
      • 3.1.1 Pure Transformer
      • 3.1.2 Transformer With Convolution
      • 3.1.3 自我监督的表征学习
      • 3.1.4 讨论

1. Transformer简介

Transformer首先应用于自然语言处理领域,是一种以自我注意机制为主的深度神经网络。由于其强大的表示能力,研究人员正在寻找将变压器应用于计算机视觉任务的方法。在各种视觉基准测试中,基于变压器的模型表现类似或优于其他类型的网络,如卷积和循环神经网络。由于其高性能和较少的视觉特异性感应偏倚需求,变压器正受到计算机视觉界越来越多的关注。在本文中,我们对这些视觉转换器模型进行了综述,并根据不同的任务对其进行了分类,分析了它们的优缺点。我们探讨的主要类别包括骨干网络、高/中级视觉、低级视觉和视频处理。我们还包括高效的变压器方法,用于将变压器推入基于实际设备的应用程序。此外,我们还简要介绍了计算机视觉中的自注意机制,因为它是变压器的基本组件。在本文的最后,我们讨论了视觉变压器所面临的挑战,并提出了进一步的研究方向。

在这里,我们回顾了与基于变压器的视觉模型相关的工作,以跟踪这一领域的进展。图1展示了视觉变压器的发展时间表——毫无疑问,未来会有更多的里程碑。

image-20230607104428932

图1,Transformer发展的关键里程碑。视觉Transformer型号用红色标注。

2. Transformer组成

Transformer首次被用于机器翻译任务的自然语言处理(NLP)领域。如图2,原始变压器的结构。它由一个编码器和一个解码器组成,其中包含几个具有相同架构的转换器块。

image-20230607110916425

编码器生成输入的编码,而解码器获取所有编码并使用它们合并的上下文信息来生成输出序列。每个变压器块由多头注意层、前馈神经网络、快捷连接和层归一化组成。下面,我们详细描述变压器的每个组成部分。

2.1 Self-Attention

在自注意层,首先将输入向量转换为三个不同的向量:

  1. 查询向量(query vector)q

  2. 键(key vector)向量k

  3. 值向量(value vector)v

三种向量的维数d(q、k、v)=d(model)=512,由不同输入导出的向量被打包成三个不同的矩阵,即Q、K和V。然后,计算出不同输入向量之间的注意函数,如下图3所示:

image-20230610124711208

Step 1:计算不同输入向量之间的得分image-20230610124936691

Step 2:对梯度的稳定性分数进行归一化image-20230610124954786

Step 3:使用softmax函数将得分转化为概率image-20230610125047090

Step 4:求加权值矩阵Z=V*P

该过程可以统一为一个单一函数(dk=模型维度=512)image-20230610125237930

公式(1)背后的逻辑很简单。

Step 1 计算每对不同向量之间的分数,这些分数决定了我们在编码当前位置的单词时给予其他单词的关注程度

Step 2 将分数归一化,以增强梯度稳定性,用于改进训练;

Step 3 将分数转化为概率。

最后,将每个值向量乘以概率的和。具有较大概率的向量将获得额外的注意。

解码器模块中的编码器-解码器注意层类似于编码器模块中的自注意层,但有以下例外:密钥矩阵K和值矩阵V由编码器模块导出,查询矩阵Q由上一层导出。

注意,前面的过程对每个单词的位置是不变的,这意味着自我注意层缺乏捕捉单词在句子中的位置信息的能力。然而,语言中句子的顺序性要求我们在编码中整合位置信息。为了解决这个问题并获得单词的最终输入向量,在原始的输入嵌入中添加了一个维度为dmodel的位置编码。具体地说,这个位置是用下面的公式编码的

image-20230610141412149

Pos表示单词在句子中的位置,i 表示位置编码的当前维度。通过这种方式,位置编码的每个元素都对应于一个正弦波,它允许变压器模型学习通过相对位置参与,并在推理过程中外推到更长的序列长度。

除了vanilla transformer中的固定位置编码外,各种模型中还使用了习得的位置编码和相对位置编码。

Multi-Head Attention(多头注意力)

多头注意是一种可以用来提高vanilla自我注意层性能的机制。

注意,对于一个给定的参考词,我们通常想要在整个句子中关注其他几个词。一个单一的自我注意层限制了我们专注于一个或多个特定位置的能力,而不会同时影响对其他同等重要位置的注意。这是通过给注意层不同的表示子空间来实现的。

具体来说,对于不同的头部使用不同的查询矩阵、键值矩阵,这些矩阵通过随机初始化,训练后可以将输入向量投射到不同的表示子空间中。

为了更详细地说明这一点,给定一个输入向量和注意头数量h,dmodel=模型维度

  1. 首先将输入向量转换为三组不同的向量:查询组(query group)、键组(key group)和值组(value group)

  2. 在每一个组中。有h个维度为dq=dk’=dv’=dmodel/h=64的向量

  3. 然后,从不同输入导出的向量被打包成三组不同的矩阵:image-20230610143155208

  4. 多头注意过程如下图所示:image-20230610143224497

其中,Q’(K’,V’同理)是{Qi}的串联,Wo是投影权值。

2.2 Transformer的其他关键概念

2.2.1 Feed-Forward Network 前馈网络

在每个编码器和解码器的自注意层之后采用前馈网络(FFN)。它由两个线性变换层和其中的一个非线性激活函数组成,可以表示为以下函数image-20230610144522413其中w1、w2为两个线性变换层的两个参数矩阵,s为非线性激活函数,如GELU。隐藏层的维度为dh=2048。

2.2.2 Residual Connection 残差连接

如图2中所示,在编码器和解码器的每个子层中增加一个剩余的连接(黑色箭头)。

image-20230610144839128

这加强了信息流,以实现更高的性能。在剩余连接之后,采用层归一化。这些操作的输出可以描述为image-20230610144956642

X作为自我注意层的输入,查询、键值矩阵Q、K和V都来自同一个输入矩阵X。

2.2.3 解码器中的最后一层

解码器中的最后一层用于将向量堆栈转换回一个单词。这是通过一个线性层和一个softmax层实现的。

image-20230610145202538

线性层将该向量投影为具有dword维数的logits向量,其中dword是词汇表中的单词数。然后使用softmax层将logit向量转换为概率。

当用于CV(计算机视觉)任务时,大多数变压器采用原变压器的编码器模块。这种变压器可以看作是一种新型的特征提取器。与只关注局部特征的CNN(卷积神经网络)相比,变压器可以捕获长距离的特征,这意味着它可以很容易地获得全局信息。

与必须顺序计算隐藏状态的RNN(循环神经网络)相比,变压器的效率更高,因为自注意层和全连接层的输出可以并行计算,且易于加速。由此,我们可以得出结论,进一步研究变压器在计算机视觉和自然语言处理中的应用将会产生有益的结果。

3. VISION TRANSFORMER

在本节中,我们回顾了基于变压器的模型在计算机视觉中的应用,包括图像分类、高/中级视觉、低级视觉和视频处理。简要总结了自注意机制和模型压缩方法在高效变压器中的应用。

3.1 Representation Learning的主干

与文本相比,图像涉及更多的维度、噪声和冗余形态,因此被认为生成建模更加困难。除了cnn,可以采用ResNet作为模型的基线,并使用视觉变压器代替卷积的最后阶段。

卷积层提取的低层特征输入vision transformer,之后使用一个标记器(tokenizer)将像素分组为少量的视觉标记(visual tokens),每个标记表示图像中的一个语义概念。

这些视觉标记直接用于图像分类,而转换器用于建模标记之间的关系。

image-20230612091615269

如图4所示,将作品分为单纯使用变压器和将CNN与变压器相结合。

我们将这些模型的结果总结在表2和图6中,以展示backbones的发展情况。

image-20230612092301947

image-20230612092350068

除了监督学习外,自监督学习也在视觉转换器中进行了探索。

3.1.1 Pure Transformer

image-20230612093525765

基础ViT. Vision Transformer (ViT)是一个纯变压器,直接应用于图像补丁序列进行图像分类任务。它尽可能地遵循变压器的原始设计。ViT的框架如图5所示:将2d图像重塑成一块块补丁,并通过线性映射将其位置编码和补丁块嵌合在一起。

令(p,p)为补丁的分辨率,(h,w)为图像分辨率,变压器的有效序列长度为n=hw/p^2。由于变压器在其所有层中使用恒定的宽度,一个可训练的线性投影将每个矢量化路径映射到模型维数d,其输出被称为补丁嵌入(patch embeddings)。

值得注意的是,ViT只使用标准变压器的编码器(除了用于层规范化的位置),其输出在一个MLP头之前。在大多数情况下,ViT是在大型数据集上进行预训练的,然后针对较小数据的下游任务进行微调。

**ViT的变体.**在虚拟视觉技术范式的基础上,人们提出了一系列虚拟视觉技术的变体,以提高视觉任务的性能。主要途径包括增强局部性、提高自我意识和建筑设计。

还有一些其他方向可以进一步改进视觉变压器,如位置编码、归一化策略、快捷连接、去注意力等。

3.1.2 Transformer With Convolution

每个变压器块中的前馈网络(FFN)与卷积层相结合,以促进相邻tokens之间的相关性。此外,一些研究人员已经证明,基于变压器的模型可能更难获得良好的数据拟合能力,换句话说,他们对优化器的选择、超参数和训练的时间表非常敏感。

Visformer揭示了使用两种不同训练设置的变压器和cnn之间的差距。第一个是cnn的标准设定,训练时间更短,数据增加只包含随机裁剪和水平翻转。另一种即训练日程更长,数据增强更强。改变了ViT早期的视觉处理,将其嵌入干替换为标准的卷积干,并发现这种改变使ViT收敛更快,并允许使用AdamW或SGD而不显著降低精度。除了这两项工作外,还选择在变压器顶部添加卷积干。

3.1.3 自我监督的表征学习

基于生成的方法:本文简要介绍iGPT的作用机制。这种方法包括一个训练前阶段,接着是一个微调阶段。在训练前阶段,研究了自回归目标和BERT目标。为了实现像素预测,采用了序列转换器的结构,而不是语言符号(如NLP中使用的)。当与早期停止结合使用时,预训练可以被认为是一个有利的初始化或正则化。在微调阶段,他们向模型中添加了一个小的分类头。这有助于优化分类目标和调整所有权重。

通过k-means聚类将图像像素转化为序列数据。给定由高维数据X=(x1,…,xn)组成的未标记数据集X,他们通过最小化数据的负对数可能性来训练模型:image-20230612142737154

p(x)是图像数据的概率密度,可以建模为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IH41Nqiq-1686551810644)(C:/Users/dell/AppData/Roaming/Typora/typora-user-images/image-20230612142825068.png)]

恒等排列Πi=i 适用于[1,n],这也被称为光栅顺序。

iGPT和ViT是将变压器应用于视觉任务的两项开创性工作。iGPT模型与vi -like模型的区别主要体现在3个方面:

  1. iGPT的输入是一组像素聚类的调色板序列,而ViT则将图像均匀地分割成若干个局部的小块;

  2. iGPT体系结构为编码器-解码器框架,而ViT只有变压器编码器;

  3. iGPT利用自回归的自监督损耗进行训练,而ViT则通过监督图像分类任务进行训练。

基于对比学习的方法。对比学习是当前计算机视觉中最流行的一种自我监督学习方式。将对比学习应用于视觉变压器的无监督预训练

3.1.4 讨论

视觉转换器的多头自注意、多层感知器、快捷连接、层归一化、位置编码和网络拓扑等组成部分在视觉识别中发挥着关键作用。如上所述,为了提高视觉变压器的有效性和效率,人们提出了许多工作。从图6的结果可以看出,将CNN和transformer结合使用可以获得更好的性能,这说明它们通过局部连接和全局连接实现了互补。对骨干网的进一步研究将有助于整个视觉社区的改进。对于视觉变压器的自监督表征学习,我们还需要努力追求大规模的预训练在NLP领域的成功。

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

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

相关文章

Html 下拉选择框 按钮 块

下拉选择框标签 下拉选择框标签&#xff1a;<select></select> 属性描述&#xff1a; 下拉选择框选择标签&#xff1a;<option></option> 属性详情&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"…

新畅美容美发平台V2.1.18 公众号+小程序【平台订单辅助+平台取号+门店插件+平台收银插件】

新畅美容美发平台是一款专注于美容美发等行业的小程序平台【微擎模块版】&#xff0c;专注于提供服务预约行业问题解决方案&#xff0c;涵盖预约服务&#xff0c;商品购买&#xff0c;会员系统&#xff0c;套餐卡项购买&#xff0c;积分商城&#xff0c;商家营销&#xff0c;文…

临近毕业招聘季,BOSS直聘依然困在营销里

临近毕业招聘季&#xff0c;BOSS直聘依然困在营销里。 近日&#xff0c;看准科技有限公司&#xff08;下称&#xff1a;“BOSS直聘”&#xff0c;NASDAQ&#xff1a;BZ&#xff09;公布了2023年一季度财报。 5月25日&#xff0c;财报公布后的首个交易日&#xff0c;其股价下跌…

软件问题解决:Origin的续期使用_导出的图片带有水印

问题&#xff1a; 我们在下载了Origin官方版本的时候&#xff0c;需要通过使用验证码进行验证&#xff0c;否则只能使用几天的时间&#xff0c;时间一旦过了就不能够正常使用了&#xff08;如导出的图片带有水印&#xff09;&#xff0c;为此给出的解决方案如下。 解决方案&am…

JDK8 中 ConcurrentHashMap 变化

结构简单&#xff1a;JDK8 抛弃 JDK7 的 Segment 分段锁机制&#xff0c;由 JDK7 的两级数组变回了原来的一级数组。链表长度>8&#xff0c;该链表转换为红黑树。 降低锁的粒度&#xff1a;锁住数组的每个桶的头结点&#xff0c;锁粒度更小。&#xff08;Hashtable 是锁住整…

新型糖基化氨基酸:Fmoc-Thr((Ac4Galβ1-3)Me,Ac4Neu5Acα2-6AcGalNAcα)-OH,化学CAS号174783-92-7

●英文名&#xff1a;Fmoc-Thr((Ac4Galβ1-3)Me,Ac4Neu5Acα2-6AcGalNAcα)-OH ●外观以及性质&#xff1a; Fmoc-Thr((Ac4Galβ1-3)Me,Ac4Neu5Acα2-6AcGalNAcα)-OH中通过对蛋白进行复杂蛋白糖基化修饰&#xff0c;细胞产生了极大丰度的蛋白质类型&#xff1b;通过对各类糖基…

适合做读书笔记的工具 这款APP满足你的笔记需求

说到读书&#xff0c;就免不了要提到读书笔记。很多人认为&#xff0c;边读书边做笔记才能更好地帮助我们更深入地理解和记忆所读的书籍内容。通过记录书中的重要观点、论据、事实和例子&#xff0c;我们可以更好地掌握书中的知识和思想&#xff0c;而不是仅仅浏览、快速阅读或…

window环境下有事无法下载sentry-cli.exe包解决方案

报错&#xff1a;Error: Unable to download sentry-cli binary from解决方案&#xff1a;查看下载配置 可通过修改SENTRYCLI_CDNURL来改变下载包的地址&#xff0c;手动把包下载下来&#xff0c;然后更改地址 window可以使用&#xff1a;set SENTRYCLI_CDNURLxxx&& n…

led显示屏是如何扫描驱动的

LED显示屏的扫描驱动是指将图像信号分解并按行或按列逐行/逐列地驱动LED点阵&#xff0c;以显示完整的图像。以下是LED显示屏常见的两种扫描驱动方式&#xff1a; 静态扫描驱动&#xff1a; 静态扫描驱动是最简单和最常见的驱动方式。在静态扫描驱动中&#xff0c;每个LED像素都…

怎么利用代理IP优化网络爬虫

网络爬虫会自动扫描互联网&#xff0c;搜集大量数据并将它们组织起来。但是&#xff0c;许多网站都采取了反爬虫策略&#xff0c;限制了网络爬虫的活动。这时候&#xff0c;代理IP就起到了关键作用。 一、代理ip在网络爬虫中的作用 代理ip爬虫中使用代理IP有很多好处。首先&…

EasyExcel 批量导入并校验数据

文章目录 前言一、pom二、使用步骤1.导入对象2.读入数据并保存 前言 EasyExcel 批量导入并校验数据 一、pom <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.7</version></depend…

【图像处理】基于收缩系数的粒子群优化和引力搜索算法的多级图像阈值研究【CPSOGSA】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Android性能优化大法——内存优化

作者&#xff1a;layz4android 内存&#xff0c;是Android应用的生命线&#xff0c;一旦在内存上出现问题&#xff0c;轻者内存泄漏&#xff0c;重者直接crash&#xff0c;因此一个应用保持健壮&#xff0c;内存这块的工作是持久战&#xff0c;而且从写代码这块就需要注意合理性…

python数据分析案例

对订单的数据类型进行封装 # data_define.py # 对数据进行封装 ORM class Record:def __init__(self, date, order_id, money, province):self.date dateself.order_id order_idself.money moneyself.province province# 魔术方法&#xff0c;print Record对象时&#xff…

LC-1483. 树节点的第 K 个祖先(树上倍增算法)

1483. 树节点的第 K 个祖先 难度困难134 给你一棵树&#xff0c;树上有 n 个节点&#xff0c;按从 0 到 n-1 编号。树以父节点数组的形式给出&#xff0c;其中 parent[i] 是节点 i 的父节点。树的根节点是编号为 0 的节点。 树节点的第 k 个祖先节点是从该节点到根节点路径上…

开发板安卓主板定制开发-基于MT6765的考核管理终端方案

Mediatek Genio系列平台以其安全、可扩展、强大且优质的解决方案&#xff0c;受到全球设备制造商的信任。这个系列的平台已经被广泛应用&#xff0c;为不同的应用提供了高效、安全、稳定的解决方案。 在Mediatek Genio系列平台中&#xff0c;Mediatek Helio P35 (MT6765)是一款…

企业提升客户体验,得先搭建在线帮助文档

在企业竞争日益激烈的市场中&#xff0c;客户体验成为企业获得成功的关键因素之一。企业需要不断提升客户体验&#xff0c;以增加客户的忠诚度和满意度。而搭建在线帮助文档是提升客户体验的一个重要手段。本文将介绍为什么企业需要搭建在线帮助文档&#xff0c;并提供一些实用…

【Java SE】一文详解next和nextLine的区别

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 引入 总结:next()和 nextLine()方法的区别 类…

DVWA-5.File upload

前提 1、在实验时&#xff0c;需要在 DVWA Security模块&#xff0c;设置需要实验的级别&#xff0c;对于不同的级别&#xff0c;php会调用不同的代码去执行用户操作。对于low level&#xff0c;系统的安全性低&#xff0c;容易受到攻击。impossible级别&#xff0c;系统的安全…