【Transformer系列(5)】vision transformer(ViT)带来的思考?

一、ViT的意义

Vision Transformer(ViT)是一种基于Transformer架构的图像分类模型,它通过将图像划分为一系列的图像块(patches),并将这些块转换为向量序列,然后通过Transformer的自注意力机制对这些序列进行处理,最后通过全连接层进行分类。

与传统的卷积神经网络(CNN)相比,ViT的主要意义在于:
(1)消除了传统卷积神经网络对于图像尺寸的限制。传统的CNN需要固定大小的输入图像,而ViT可以处理任意尺寸的图像,将其划分为块并进行处理,大大提高了模型的灵活性。
(2)提供了一种新的处理序列数据的思路。Transformer最初是针对自然语言处理任务设计的,而ViT将其成功应用于图像分类任务,验证了Transformer在处理序列数据方面的广泛适用性。
(3)可以处理长程依赖关系。由于自注意力机制的存在,ViT可以捕捉图像中任意两个位置之间的关系,从而更好地处理长程依赖关系的问题,如目标检测、图像分割等任务。

因此,Vision Transformer的意义在于为图像分类任务带来了一种全新的模型架构,打破了传统的卷积神经网络对图像尺寸的限制,并且展示了Transformer在图像处理领域的潜力。它为研究人员提供了一种全新的思路,可以进一步探索Transformer模型在计算机视觉领域的应用。

二、使用Position Embedding实现了图像和文本的向量尺度统一

由于多头自注意力是针对NLP提出的,它的输入尺度为[batch size, num token , dim_token] ,而CV中图像输入尺度通常为[batch_size, num_channel, height, width]ViT通过Patch Embedding将其尺度转换至期望的形式。
说白了,就是CV中空间(height*width)对应NLP中的num_tokenCV中的通道num_channel对应NLP中的dim_token
在这里插入图片描述

如上图所示,假设一张图像的尺寸为[ 3 , 224 , 224 ],ViT会将其均分为多个Patch(上图是3 ∗ 3 = 9个,ViT结构图中是14 ∗ 14 = 196个),于是每个Patch的尺度为[ 3 , 16 , 16 ](16 = 224 ÷ 14)。对于每个PatchViT使用一层2D卷积进行特征提取可以得到尺度为[ 768 , 14 , 14 ]的特征(卷积核大小和步长均与Patch一致,输出通道数为768)。之后将[ 768 , 14 , 14 ]的特征转置为[ 14 , 14 , 768 ]的并将其展平即可得到[ 196 , 768 ]的特征。
此时转换完成,其中:
(1)196即为token的数量,对应文本输入尺度[batch size, num token , dim_token] 中的num_token
(2)768token的向量长度,对应文本输入尺度[batch size, num token , dim_token] 中的dim_token
如下图所示。
在这里插入图片描述

由于ViT处理的是分类任务,所以它参考BERT特地拼接上了一个大小为[ 1 , 768 ]Class token,于是现在token的大小变成[ 197 , 768 ]ViTClass token是一个初始化为0的可学习参数向量。通常Class token会被单独拿出来作为ViT提取出来的图像特征用于下游任务。

另外,ViT保留了Transformer中的位置编码(Position Embedding),它也是初始化为0的可学习参数,不过不是拼接而是加入,所以其大小为[ 197 , 768 ],与当前token的大小一致。

此时,所以token的准备完成,一个批次的图像转换为token后尺度是[batch_size, num_token, dim_token] (num_token=197, dim_token=768)

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

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

相关文章

【数据结构】C/C++ 带头双向循环链表保姆级教程(图例详解!!)

目录 一、前言 二、链表的分类 🥝单链表 🥝双链表 🥝循环链表 🥝带头双向循环链表 🍍头节点(哨兵位)的作用 ✨定义: ✨作用: 🍇总结 三、带头双向循环链表 …

[JUCE]从一个有关右值引用的bug,探幽移动语义

一、问题 当我尝试在\JUCE\extras\WindowsDLL\Builds\VisualStudio2022目录下编译JUCE库的时候,提示报错如下: 报错提示如下: 这里涉及到两个问题 一、这个std::move是干嘛用的 二、为什么这里会报错? 另外,我在实…

详细讲解lua中string.gsub的使用

string.gsub 是 Lua 标准库中的一个函数,用于全局替换字符串中的某些部分。string.gsub 是 Lua 中非常实用的一个函数,它可以用来进行字符串的处理和替换操作。 它的基本语法如下: string.gsub(s, pattern, replacement [, n])s 是要处理的…

栈的磁盘优化:降低存取成本的算法与实现

栈的磁盘优化:降低存取成本的算法与实现 问题背景简单实现方法的分析实现方法PUSH操作POP操作成本分析渐近分析 优化实现方法实现方法成本分析渐近分析 进一步优化:双页管理策略实现方法管理策略成本分析 伪代码示例C代码示例结论 问题背景 在具有有限快…

【vulhub靶场】Tomcat中间件漏洞复现

【vulhub靶场】Tomcat中间件漏洞复现 一、Tomcat AJP 任意文件读取/包含漏洞 (CVE-2020-1938)1. 漏洞描述2. 影响版本3. 漏洞原理4. 漏洞复现 二、任意文件写入漏洞 (CVE-2017-12615)1. 漏洞原理2. 影响版本3. 漏洞复现 三、Tomca…

unity华为sdk接入指路指南

目前比较靠谱的几个方案:试过几个仅供参考 温馨提示:最高目前可支持方案到unity2021版本以下,以上请联系华为官方寻求技术支持 Unity集成华为游戏服务SDK方式(一):集成Unity官方游戏SDK: 华为…

基于CLAHE算法的图像增强及评价

摘要: 本研究旨在探讨对比度限制自适应直方图均衡化(CLAHE)算法在数字图像处理中的应用。CLAHE算法通过在局部区域内进行直方图均衡化,有效地增强了图像的对比度,并在保持图像细节的同时避免了过度增强的问题。本文通过…

Eclipse 开创性地集成 Neon Stack,将 EVM 兼容性带到 SVM 网络

2024年5月2日,全球——在塑造区块链网络的战略联盟的过程中,Eclipse 通过集成 Neon EVM 核心团队开发的技术堆栈 Neon Stack,成为首个打破 EVM-SVM 兼容性障碍的生态。 Eclipse 旨在通过结合以太坊和 Solana 的最佳特性,来重构区…

数据结构(c):队列

目录 🍺0.前言 1.什么是队列 2. 队列的实现 2.1定义队列节点 2.2定义队列 2.3队尾入队列 2.4判断队列是否为空 2.5队头出队列 2.6 队列首元素 2.7队尾元素 2.8队列内的元素个数 2.9销毁队列 3.试运行 💎4.结束语 🍺0.前言 言C之…

Partisia Blockchain 生态首个zk跨链DEX现已上线

在5月1日,由Partisia Blockchain与zkCross创建合作推出的Partisia zkCrossDEX在Partisia Blockchain生态正式上线。Partisia zkCrossDEX是Partisia Blockchain上重要的互操作枢纽,其融合了zkCross的zk技术跨链互操作方案,并利用Partisia Bloc…

【SSM进阶学习系列丨分页篇】PageHelper 分页插件集成实践

文章目录 一、说明什么是分页PageHelper介绍 二、导入依赖三、集成Spring框架中四、编写Service五、编写Controller六、编写queryAllByPage页面展示数据 一、说明 什么是分页 ​ 针对分页,使用的是PageHelper分页插件,版本使用的是5.1.8 。 ​ 参考文档…

Linux命名管道的创建及应用

目录 一、命名管道的定义即功能 1.1创建命名管道 1.2匿名管道和命名管道的区别 1.3命名管道的打开规则 1.4系统调用unlink 二、进程间命名管道的创建及使用 2.1Comm.hhp 2.2PipeServer.cc 2.3PipeClient.cc 一、命名管道的定义即功能 管道应用的一个限制就是只能在具有…

[报错解决]SpringBoot子项目打jar包启动报 XXX--1.0-SNAPSHOT.jar中没有主清单属性

目录 报错信息解决原因原因分析解决方案 报错信息 解决 原因 在使用SpringBoot架构搭建父子工程时,使用IDEA可以正常启动,对子项目打成jar包后使用jar方式启动时,会报错xx.jar中没有主清单属性。 原因分析 原因主要是在使用jar方式启动时…

鸿蒙OpenHarmony南向:【Hi3516标准系统入门(命令行方式)】

Hi3516标准系统入门(命令行方式) 注意: 从3.2版本起,标准系统不再针对Hi3516DV300进行适配验证,建议您使用RK3568进行标准系统的设备开发。 如您仍然需要使用Hi3516DV300进行标准系统相关开发操作,则可能会…

javaweb学习笔记1

1、基本概念 1.1、前言 web开发: web,网页的意思,www.baidu.com 静态web html,css 提供给所有人看的数据始终不会发生变化! 动态web 淘宝,几乎是所有的网站; 提供给所有人看的数据始终会发生变化&…

GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术

采用全流程模式将地下水数值模拟软件GMS的操作进行详细剖析和案例联系。不仅使学员掌握地下水数值模拟软件GMS的全过程实际操作技术的基本技能,而且可以深刻理解模拟过程中的关键环节,以解决实际问题能力。同时为满足环评从业人员进一步加强地下水数值模…

腾讯突然宣布,微信鸿蒙版要来了!

今年初,华为宣布HarmonyOS NEXT命名为“鸿蒙星河版”,并计划在二季度启动开发者 Beta 计划,四季度发布商用正式版。 消息一出,不少人为之振奋。 鸿蒙星河版因不再兼容安卓开源应用,仅支持鸿蒙内核和系统的应用&#x…

Penpad再获 Presto Labs 投资,Scroll 生态持续扩张

Penpad是Scroll生态的LaunchPad平台,其整计划像收益聚合器以及RWA等功能于一体的综合性Web3平台拓展,该平台在近期频获资本市场关注,并获得了多个知名投资者/投资机构的支持。 截止到本文发布前,Penpad已经获得了包括Scroll联合创…

(三)JSP教程——JSP动作标签

JSP动作标签 用户可以使用JSP动作标签向当前输出流输出数据&#xff0c;进行页面定向&#xff0c;也可以通过动作标签使用、修改和创建对象。 <jsp:include>标签 <jsp:include>标签将同一个Web应用中静态或动态资源包含到当前页面中。资源可以是HTML、JSP页面和文…

B端UX/UI设计面试作品集分层源文件figmasketch模板

当您考虑找工作时&#xff0c;是否曾质疑过项目复盘作品集的重要性&#xff1f;实际上&#xff0c;一份精心准备的项目复盘作品集对于求职者来说具有无可估量的价值&#xff0c;特别是对于设计师这一职业领域。 以下所述或许对您而言已非陌生。您的作品集应当成为您专业技能与…