CV攻城狮入门VIT(visiontransformer)之旅——近年超火的Transformer你再不了解就晚了!

近年来,VIT模型真是屠戮各项榜单啊,就像是15年的resnet,不管是物体分类,目标检测还是语义分割的榜单前几名基本都是用VIT实现的!!!朋友,相信你点进来了也是了解了VIT的强大,想一睹VIT的风采。正如我的标题所说,作为一名CV程序员,没有接触过NLP(自然语言处理)的内容,这给理解VIT带来了一定的难度,但是为了紧跟时代潮流,我们还是得硬着头皮往transformer的浪潮里冲一冲。那么这里我准备做一个VIT的入门系列,打算一共分为三篇来讲述,计划如下:

那么下面我们就要开始了,给大家详细的唠唠transformer!!!准备发车

在介绍transformer的整体框架之前,我先来简单说说我们为什么采用transformer结构,即transformer结构有什么优势呢?在NLP中,在transformer出现之前,主流的框架是RNN和LSTM,但这些框架都有一个共同的缺陷,就是程序难以并行化。举个例子,我们期望用RNN来进行语言的翻译任务,即输入ILoveChina,输出我爱中国。对于RNN来说,要是现在我们要输出中国,就必须先输出我和爱,这个过程是难以并行的,即我们必须先得到一些东西才能进行下一步。【注:这里不知大家能否听懂哈,但只要知道传统架构有难以并行化的缺陷即可】

这样的话,就可以顺理成章的提出transformer了,其最主要就是解决了类似RNN框架难以并行的特点。后文我也会详细介绍transformer是如何进行并行处理数据的。

现在就让我们来看看transformer的整体框架,如下图所示:【注:下图图片公式皆为论文中所截,这里整理到了一起】

看了上图,不用想太多,你就是不理解,我想任谁第一眼看到这堆玩意都是懵逼的,但是没关系,后面我会慢慢的解析这个图。

在写这部分之前呢,我觉得有必要提醒一下大家,对于我下面讲述的内容你可能会很难理解selfAttention为什么会这么做,我给的意见是大家先不用过多的在意,而是先了解selfAttention的过程,这个过程理解后,你可能就会对selfAttention产生自己独特的认识,当然这部分介绍完后我也会给出自己的理解供大家参考。此外,这部分我会先给出selfAttention的执行步骤,然后会结合代码帮大家更深入的理解这个过程,大家务必耐心看完!!!

在每给出一个执行步骤后,我都会列出这部分执行的图解公式,其实这些都是一些矩阵运算,如下图所示:

这里在给出此步骤的图解公式:

这部分的图解公式如下:

step2:

step3:

step4:

这部分会根据上述的理论过程结合代码加深各位的理解。此外,这部分我也会分步骤介绍,但会细化理论部分的步骤,这样大家理解起来会更舒服,但整体的步骤是没有变的。

我们定义的输入有三个,它们的维度都是1×4的,将它们放在一起构成一个3×4的输入张量,代码如下:

importtorchx=[[1,0,1,0],#Input1[0,2,0,2],#Input2[1,1,1,1]#Input3]x=torch.tensor(x,dtype=torch.float32)我们来看看输入x的结果:

attn_scores=querys@keys.T计算得到的attn_scores结果如下:

将上步得到的attn_scores输入softmax层,代码如下:

fromtorch.nn.functionalimportsoftmaxattn_scores_softmax=softmax(attn_scores,dim=-1)我们可以来看看attn_scores_softmax的结果:

tensor([[6.3379e-02,4.6831e-01,4.6831e-01],[6.0337e-06,9.8201e-01,1.7986e-02],[2.9539e-04,8.8054e-01,1.1917e-01]])上面的结果有效数字太多了,后文不好教学展示,因此我们对attn_scores_softmax的结果取小数点后一位,即attn_scores_softmax变成下列形式:

attn_scores_softmax=[[0.0,0.5,0.5],[0.0,1.0,0.0],[0.0,0.9,0.1]]##转换为tensor格式attn_scores_softmax=torch.tensor(attn_scores_softmax)##输出attn_scores_softmax结果#tensor([[0.0000,0.5000,0.5000],#[0.0000,1.0000,0.0000],#[0.0000,0.9000,0.1000]])step6:将attn_scores_softmax与矩阵V相乘这部分代码如下:

outputs=attn_scores_softmax@values这里可以看一下这部分的输出:

讲到这里,我相信大家已经知道问题就出在输入输出的维度上的,那么后文我们就会默认经过Attention模块后输入输出的维度保持不变。

最后我们来对照整体框架的第一张图来看看selfAttention的过程,如下图:

到这里,selfAttention的内容就介绍完了。我自认为讲解得算是比较清楚的了,希望能对大家有所帮助。

Multi-HeadAttention称为多头注意力机制,其实你理解了上文的自注意力机制(selfAttention),再来看这部分其实就很简单了,下面就跟着我一起来学学吧!!!

我们可以将上述结果分成两个head进行处理,如下图所示:

你会发现head1和head2就是我们前面所说的selfAttention里面的元素,这样会从head1和head2得到对应输出,如下图所示:

这一步我们会将上一步不同head输出的结果进行Concat拼接,如下图所示:

同样的,这里我们也来对照整体框架中的图片来看看Multi-HeadAttenton的过程,如下图所示:

你会发现这副图画的比较抽象,用虚影表示出多个head的情景,我想大家是能够理解的。需要注意的一点是上图中的Linear操作其实就是指我们对原数据乘一个矩阵进行变换。

那么到这里,Multi-HeadAttention的内容就介绍完了,希望能对大家有所帮助。

encoder模块结构如下图黄色虚线框内所示:

首先我们要先介绍一下输入,即上图InputEmbedding+PositionalEncoding部分,因为这部分我认为内容还是挺多的,因此放在了附录部分,大家可先点击查看。

这部分操作的表达式如下:

是不是发现这种表达式一下子就把上图的结构都展现出来了呢,所以数学真的很奇妙!!!

这部分是不是发现还蛮简单滴,同样,希望大家都有所收获!!!

decoder的结构如下图黄色虚线框内所示:

我觉得这部分最难理解的就是训练和测试是不同的,下面我将分为训练阶段和测试阶段来为大家讲解这个decoder模块。

接着我们来看看decoder的输入和输出是什么:

对于这个输入输出你现在可能还不是很理解,接下来我会慢慢分析。

傻瓜!!!这当然是我们训练的结果啦!!!不然这傻瓜机器怎么会这么智能。我简单的画个图为大家解释解释。

到这里,我相信大家对decoder整体的训练已经有了一个较清晰的认识。下面我就来结合decoder的结构图来看看decoder里到底都有些什么。

得到输入矩阵和Mask矩阵,两者维度一致。图中显示遮挡位置的值为0。可以发现单词0只能使用单词0的信息,单词1可以使用单词0和单词1的信息。

上述过程只展示的是一个Head的情况,输出了Z,最后应该把所有Head的结果拼接,使最终的Z和输入X的维度一致。

最后会进入Linear+Softmax层,最终输出预测的单词,因为Mask的存在,使得单词0的输出Z(0,)只包含单词0的信息,如下:

Softmax根据输出矩阵的每一行预测下一个单词,如下图所示:

那么很明显测试阶段我们是无法做并行化处理的!!!

另外,作为CV程序员的我们,往往对CNN网络是更加熟悉的。那么CNN和Transformer中的self-Attention是否有什么联系呢?大家可以去网上找找资料,其实CNN可以看作是一种简化版的self-Attention,或者说self-Attention是一种复杂化的CNN,它们的大致关系如下:

我们知道越复杂的模型,往往就需要更多的参数来训练,因此在训练Transformer时就需要更多的数据,关于这一点在后面讲述的VIT模型中会有体现,敬请期待吧!!!

这部分来谈谈encoder的输入部分,其结构示意图如下:

上图主要包含两个概念,一个是InputEmbedding,一个是PositionalEncoding。下面就来逐一的进行介绍。

可以看出,上图可以用一串数字表示出“秃头小苏”这四个汉字,如用1000表示“秃”,用0100表示“头”......

但是这种表示方法是否存在缺陷呢?大家都可以思考思考,我给出两点如下:

那么我们采用什么方法来缓解这种问题呢?答案就是Embedding!!!那么何为Embedding呢,我的理解就是改变原来输入input的维度,。比如我们现在分别先用“1”,“2”,“3”,“4”分别代表“秃”,“头”,“小”,“苏”这四个字,然后将“1”,“2”,“3”,“4”送入embedding层,代码如下:

importtorchimporttorch.nnasnnembedding=nn.Embedding(5,3)input=torch.IntTensor([[1,2,3,4]])上文代码(5,3)中的3就代表我们输出每个单词的维度,可以看一下输出结果,如下图所示:

输出矩阵的每一行都代表了一个词,如第一行[0.2095-0.63380.5679]代表1,即代表“秃”。

我们可以修改一下Embedding的参数,将(5,3)换成(5,4),如下:

importtorchimporttorch.nnasnnembedding=nn.Embedding(5,4)input=torch.IntTensor([[1,2,3,4]])这时我们在来看看输出结果,此时每个词就是一个4维向量:

最后我们来大致看看通过Embedding后会达到怎样的效果:

参考一下。

通过上文的介绍,我们知道没有位置编码会导致不管我们的输入顺序如何变换,对于最后的结果是没有影响的,这肯定不是我们期望看到的。那我们就给它整个位置编码呗!可是我们应该采用什么方式的位置编码呢?我想大家可以很自然的想到一个,那就是一个词标一个数字就得了呗,如下表所示:

这种编码操作简单,但是编码长度是不可控的,即词的个数越多,后面编码词越大,这样的方式其实不是理想的。

那我们还可以使用什么编码方式呢?既然上述所述编码规则是编码长度不可控,那么就可以通过除以词的长度将其控制在0-1的范围内呀,如下表所示:

你或许觉得这种编码方式还是蛮不错的,但是呢这种方式会导致结果的尺寸会随着词的长度变换而不断变换,即上例中我们每个词编码结果的间距是0.25,但是要是我们有100个词,有100个词时,这个间距又会变成多少呢?这种尺度的不统一,对模型的训练是不友好的。

“你一会介绍这个方法,这个方法不行;一会介绍那个方法,那个方法不行。那到底行不行!!!”,~~呜呜,大佬们别喷啊,我这是想让大家看看有哪些思路,况且论文中所给的编码方式也不一定是最好的,大家都可以多想想嘛。那么下面就给各位老大爷带来论文中关于此部分的位置编码方式,公式如下:

再来看看“头”的编码,如下:

我相信通过上面的例子你应该已经对这种方式的位置编码有所了解了,即你知道了如何用这种方式来对某个词进行编码。但是你可能会问,为什么用这个方式来进行位置编码呢?即这种位置编码的优势在哪里呢?这里我为大家呈现3点:

第3点说明:

通过上图可以看出,对于pos+k位置的位置编码可以表示位pos位置和k位置的线性组合。这样的线性组合意味着某个位置向量蕴含了其它位置向量的信息。

最后,我们再来看看这张图:

大家觉得这个解释怎么样呢?我当时看到就觉得这实在是太妙了。那么这部分就为大家呈现这么多了,同样希望大家都收获满满喔!!!

THE END
1.可以画矢量图的手机app推荐矢量绘画app下载矢量绘...相关合集推荐:绘画软件排行榜前十名手机指绘软件大全手绘软件大全手机板绘软件零基础自学插画软件大全 电脑版(1个) 熊猫绘画电脑版官方版等级:大小:39.48M更新时间:2023-12-16直接下载简要:说起绘画软件,相信大多数人都使用过sai绘画软件、csp绘画软件,但是小编今日带来的是熊猫绘画电脑版,这是一款非常专业的绘画软件...https://www.ddooo.com/zt/xmhh.htm
2.VISIONAPP下载安装2024最新正版手机免费下载总之,《VISION》是一款功能强大、操作简便的APP,让我能够随时随地享受高质量的远程视频和管理体验! 01 UC浏览器 系统工具|109.61MB 02 淘宝-天猫双11全球狂欢季 58.77MB 03 QQ 302.03MB 04 抖音 261.87MB 05 微信 260.81MB 06 快手 122.27MB 07 抖音极速版 141.53MB 08 快手极速版 71.24MB...https://www.25pp.com/xiazai/8070699/
3.VISION下载链接VISION官方正版免费下载安装与“VISION”类似的APP 1. 《ES文件浏览器》:一款功能强大的文件管理工具,可以浏览、管理手机内外存储的文件和文件夹,支持文件的复制、剪切、粘贴、重命名等操作,还提供快速搜索和压缩/解压缩功能,让您轻松管理手机中的文件。 2. 《安全管家》:一款多功能的系统工具,可以清理手机内存垃圾、优化手机性能,还可以查杀...https://www.996.com/download/8070699/
4.Visionapp下载Vision安卓版下载v1.0.23.采用了简单易懂的打卡方式,将会追踪每一位用户的任务进度。 《Vision》软件测评: 一打开这软件就能够查看打卡情况,用户也可以将自己的打卡数据与好友分享,会获得好友的赞赏,能够督促用户们完成减肥任务和学习任务。 喜欢小编为您带来的Visionapp吗?希望可以您能够喜欢~更多安卓手机App下载尽在1666手游网...http://www.1666.com/az/v663867.html
5.手机ai软件画图永久免费版素材网站图片免费下载手机ai画图软件永久免费版ai画图软件永久免费版手机 AB模板网 AI新火苗 12款最火的AI画图软件,助你探索创新设计 2 摹客设计云 AI艺术字效果 案例 良机真探 - 买电脑免费装AI软件 5 良机真探电脑装机 多多参谋—拼多多商家版辅助软件电脑与手机版免费下载 ...https://www.zcool.com.cn/tag/ZNzk5NTU0MA==.html
6.各种格式的文件如何打开NS2 Lotus Notes数据库(第二版) NTF Lotus Notes数据库模板 NTX CA-Clipper索引文件 ...PIC PC画图位图;Lotus图片;Macintosh PICT绘图 PICT Macintosh PICT图形文件 PIF 程序信息文件;IBM PIF...ROM 基于盒式磁带的家庭游戏仿真器文件(来自Atari 2600、Colecovision、Sega、Nintendo等盒式磁带里的ROM...http://www.360doc.com/content/11/1106/17/2582236_162273413.shtml
1.常用的机器视觉图像处理软件有(机器视觉图像处理难学吗)在机器视觉领域,有许多不同的图像处理软件被广泛使用。以下是一些主流的机器视觉图像处理软件: 软件名称 开发公司 Visionpro 美国康耐视(Cogrex) 简单易用、功能强大、可扩展性好 Halcon 德国Mvtec公司 功能强大、灵活性高、支持多种编程语言和平台 OpenCV https://www.0755vc.com/24125.html
2.sview看图纸手机版免费官方版app2024下载安装机械设计软件看图纸软件cd看图片软件手机版cad看图纸软件手机看图APP安卓画图app手机看图纸的软件手机看图纸软件手机看图软件手机版cad看图软件看图片软件手机免费的看图软件三维画图软件工程图纸软件快速看图app免费的看图纸软件工程看图纸软件三维立体图制作软件看图软件3d画图软件 S...https://os-android.liqucn.com/yx/702466.shtml
3.Vision下载Vision手机APP官方下载Vision VisionV1.2.9 下载543次 大小35.2M 更新一年前 评分3 深圳市大工创新技术有限公司隐私权限 装进手机 * 本站资源来源于互联网,若有侵权请联系我们处理;软件使用中产生的任何问题,均与本站无关,请谨慎判断后下载。 Vision-截图(点击图片查看大图)https://www.anxinapk.com/rj/52687079.html
4.画图手机版Apple Vision 设备需装有 visionOS 1.0 或更高版本。 Sprachen 丹麦语, 乌克兰文, 亚美尼亚文, 俄文, 加泰罗尼亚文, 匈牙利文, 博克马尔文挪威文, 印度尼西亚文, 土耳其文, 希伯来文, 希腊文, 德文, 意大利文, 捷克语, 斯洛伐克文, 日文, 法语, 波兰文, 波斯文, 泰文, 瑞典文, 简体中文, 繁体中文, 罗...https://itunes.apple.com/cn/app/tiny-paint-draw-doodle-art/id1376425610?l=de
5.艾媒商舆情监测百度文小言升级首日,画图功能调用量激增200%;中秋...文小言数据显示,升级首日迎来数百万用户使用自由订阅独家功能,画图功能调用量激增200%。文小言官方回复称,已紧急增加服务器应对大量涌入的用户。据了解,为提升用户体验,除文小言所有用户9月均可免费体验文心大模型4.0外,文心一言PC版即日起也将为新老会员增加1个月专业版免费使用体验。 https://www.iimedia.cn/c1088/102119.html
6.vision画图相关vision画图vision 画图相关ZhengXinTang 已于2024-03-14 10:31:10 修改 阅读量1.3k 收藏 11 点赞数 5 分类专栏: # 环境相关 文章标签: 人工智能 版权 GitCode 开源社区 文章已被社区收录 加入社区环境相关 专栏收录该内容 30 篇文章 0 订阅 订阅专栏 本文介绍了如何在Visio2013中调整加法器符号的位置,去除页面...https://blog.csdn.net/chumingqian/article/details/136307393
7....diffusion,支持oss,支持dalle3gpt4vision特性(社区版,无后台) 免费使用,直接通过docker拉取镜像启动即可使用,需要把命令里的版本号改成社区版本号,不需要授权码。 在无后台版本基础上,限制了一些功能,包括: 1.上传文件只支持minio存储。 2.限制了支持上传文件的模型,vision或者claude模型可以上传图片,Whisper上传语音文件,mj和dall-e-3画图会上传到minio。https://gitee.com/vual/ChatGPT-Next-Web-Pro
8.哪些在线画图工具能够标尺寸?Vision On 是很多人都在使用的一款在线画图工具,适合画各种的流程图、思维导图和电路图等等多种图,少不了的就是标尺寸的功能,毕竟工程管理的图可是非常注重标尺寸的,身为专业的在线画图工具,并且能够画工程管理的图,标尺寸属于必备功能了,所以,有需要的小伙伴也可以使用这一款在线画图工具来进行标尺寸。 https://js.design/special/article/online-drawing-dimensioning.html
9.透视软件TEOVISIONTeowin设计, 管理, 画图, 模型制作, 透视, 控制, 家具设计 应用 用于整体厨房, 用于木工工程, 用于浴室, 用于木材加工, 仓储 类型 3D, 2D, 自动化, 实时 技术参数 智能 产品介绍 使用Teovison,您可以通过一套完整的软件包为您的业务带来新的视角,该软件包可适应您的业务实际情况,并为您提供日常支持。从设计到生产...https://www.archiexpo.cn/prod/teowin/product-167860-2485352.html
10.canvas绘图基础除了使用已有的图片之外,Android应用常常需要在运行时根据场景动态生成2D图片,比如手机游戏,这就需要借助于Android2D绘图的支持。本篇博客主要讲解一下Android下使用Canvas进行绘图的相关操作。最后将以一个简单的Demo演示如何使用Canvas在ImageView上画图并保存。 本篇博客的主要内容: 画布Canvas 画笔Paint 使用Canvas绘图Demo...https://www.pianshen.com/article/81051285406/
11.GitHubmuzihuaner/chatgptCoze中文版,字节旗下一款用来开发新一代 AI ChatBot的应用编辑平台 [?] https://www....[?] https://imagecreator.alkaidvision.comImageCreator。PS中免费使用的SD神级插件 ...[?] https://www.esheep.comeSheep。国内知名的AIGC在线画图网站,提供海量模型,并支持在线AI画图 ...https://github.com/muzihuaner/chatgpt-nav
12.CabinetVision介绍CabinetVision怎么样CabinetVision功能...Cabinet Vision还具备优化路径规划,确保高效的材料利用率和加工速度,是家具制造商的首选软件。外文名称: Cabinet Vision 所属公司: 海克斯康制造智能技术(青岛)有限公司 发源地区: 中国 官方网址: 点击查看 目录 基本介绍 特色功能 技术特点 品牌介绍...https://www.maigoo.com/citiao/1247199.html
13.苹果VisionPro和GPT2023 年上半年的科技新闻热搜显然是被 ChatGPT 霸榜的半年,其中有三个新闻热度最高:GPT-4 发布,基于 GPT-4 能力的微软 Office Copilot 发布,ChatGPT 发布 iOS 版应用。 ▲ 苹果的 Vision Pro 头显 然后,就是苹果 Vision Pro 头显的发布。 之所以这款设备被如此看重,是人们在智能手机之后,孜孜不倦地寻找下...https://www.ifanr.com/1551223
14.微软为VisionPro头显推出OneDrive云盘应用微软为苹果 Vision Pro 头显推出了 OneDrive 应用,允许用户在沉浸式环境中体验 OneDrive 云盘服务。OneDrive 可备份、保护、同步和访问照片及文件,支持共享文件、文档、照片和视频,还能自动备份手机照片和视频。用户可使用 5GB 免费云存储,或升级到 Microsoft 365 订阅https://readhub.cn/topic/8aBjF4NN9qs
15.星空app官网版下载v.9.55.87《忍看萧条为画图》《地下城追踪者》steam页面上线 地牢探索战斗 254.15MB 查看 《五人之战:荣耀战斗...《腾讯手机管家》NS光枪派对游戏《难道是?妖怪射击屋》,将于8月10日推出亚版中文版 349.64MB 查看...《微视》Vision Pro商标已被华为注册 苹果只能求和解? 914.31MB 查看 《青云传》F123发布,DLSS带来...http://wap.c322r2io.weimifushi.com/