Vision Transformer

news2024/11/27 23:46:46

Vision Transformer

将Transformer应用于CV领域。

不了解Transformer的先去看下:一文看懂Transformer

对比Transformer,ViT的特殊之处不多。因为作者说了他们想要做“尽量少的改动”将Transformer直接应用于图像领域

论文下载地址:https://arxiv.org/abs/2010.11929
github:https://github.com/google-research/vision_transformer
pytorch:https://github.com/WZMIAOMIAO/deep-learning-for-image-processing/tree/master/pytorch_classification/vision_transformer

网络结构图

在这里插入图片描述

patch embedding

一步一步来看,首先呢处理文本的时候我们将每一个单词转化为一个向量。那么处理图像的时候我们采用的办法是将一张图像划分为16x16大小的块Patch(也可以是8x8,也可以是32x32)。

假如输入图片大小为224x224,将图片划分为固定大小的patch,patch大小假设为16x16,则每张图像会生成(224/16)^2=196个patch,

分块之后对每一块进行展平,16x16x3展平之后就是768。所以整个输入的大小就是196x768。

然后就像我们处理单词一样,我们用一个线性投射层,大小为768xN(N=768)

所以经过线性层之后,大小仍然为196x768,尺寸没变

这里还需要加上一个特殊字符cls。

传统的Transformer采取的是类似seq2seq编解码的结构,而ViT只用到了Encoder编码器结构,缺少了解码的过程,假设你16个向量经过编码器之后,你该选择哪一个向量拿去做最后的分类呢?因此这里作者给了额外的一个用于分类的向量,与输入进行拼接。同样这是一个可学习的变量。作者认为,由于自注意力的机制 ,这个向量也会从其他向量里面学到有用的信息。

因为是直接拼接,所以尺寸就变为197x768

positional encoding

图片虽然划分了,但是也是有顺序的,所以我们也需要加入位置信息。

这里可以学习的变量来表示位置信息,大小为197x768,与输入尺寸一样,直接与输入的做加法,最终得到还是197x768。

用这个来学习位置信息。

Transformer Encoder

至此,我们将一张图片,处理为了197个token,每个token长度为768。就将图像问题转化为了nlp问题了,转化成了序列。

直接输入Transformer Encoder就行。

在这里插入图片描述

MLP:将维度放大再缩小回去,197x768放大为197x3072,再缩小变为197x768

堆叠多个Block,最后将特殊字符cls对应的输出 Z 0 Z_0 Z0最为Encoder最终的输出

(另一种做法是不加cls字符,对所有的tokens的输出做一个平均)

分类头

最后把输出,送进分类头就好了

分类头就是一个LN,加两个线性层。

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

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

相关文章

留学Paper写作需要怎么正确引用?

1.MLA文献引用格式的基本描述:文学类Paper通常使用MLA(Modern Language Association)格式。作者在正文中用括号夹注的形式注明参考文献的简要出处,即(作者姓氏页码)。 Ancient writers attributed the inve…

小学生python游戏编程arcade----坦克换色

小学生python游戏编程arcade----坦克换色前言坦克换色1、RGB颜色1.1 RGB1.2 PIL 模块中的image1.3 效果图![在这里插入图片描述](https://img-blog.csdnimg.cn/f533a0bed98f4b49a462a2f056c35786.png)#### 1.4 代码实现1.5 总结2、RGB转换为HSV2.1 RGB2.2 HSV2.3 python RGB 转…

《前端框架开发技术》HTML+CSS+JavaScript 制作个人简历模板

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

23、Mybatis查询功能4(查询结果为一个map集合(多条数据))

Mybatis查询功能4(查询结果为一个map集合(多条数据)) 可以用Lsit集合接收可以用MapKey注解设置键(用一个唯一标识)第一步: 第二步: 第三步:

我的第一个Servlet程序,并理解浏览器和代码如何关联在一起

目录 Servlet 第一个Servlet程序 1.创建项目 maven是什么 如何创建maven项目 2.引入Servlet依赖 找到库中maven代码 3.创建目录结构 4.编写代码 理解注解Webserlet 5.打包程序 生成war包 6.部署程序 7.验证程序 二.理解浏览器发的请求是怎么和自己写的代码建立联…

景联文智能标注平台将数据处理效率提升十倍以上!数据精准度最高可达99%

目前主流的机器学习方式是以有监督的深度学习方式为主,这对标注数据有着强较依赖性需求,未经标注处理过的原始数据多以非结构化数据为主,这些数据难以被机器识别和学习。这就需要标注员借助数据标注工具对数据进行标注。 使用高效率的标注工具…

如何知道你的Linux内核占用的内存大小?

如何知道你的Linux内核占用的内存大小?1、代码段等2、kernel heap2.1、kmalloc2.2、vmalloc3、进程的页表4、内核占用内存大小总和1、代码段等 内核所需的代码段、bss段,内核栈等。 / # dmesg | grep Memory Memory policy: Data cache writealloc M…

springboot使用mybatis

springboot使用mybatis 本文目录springboot使用mybatis引入maven依赖新增数据库配置创建数据库表实体类编写mapper接口层通过xml文件mapper中直接使用注解编写mapper.xmlIDEA创建mybatis的xml文件parameterType启动类controller调用引入maven依赖 <dependency><groupI…

视频转音频怎么转?来试试这三个方法

如今我们可以看到有一些人会把电影/电视变成听电影/电视&#xff0c;相信大家都会感觉很不可思议吧&#xff01;电影/电视不是用来看的吗&#xff1f;听就没办法享受到那种视觉上的震撼了&#xff0c;其实不然&#xff0c;听电影/电视也是一种别样的享受&#xff0c;特别是对有…

看完这篇还不懂MySQL的MVCC机制算我输

前言 MySQL中大名鼎鼎的MVCC机制想必大家都有所耳闻吧&#xff0c;虽然在平时MySQL使用过程中基本上用不到&#xff0c;但是面试中出场率十分高&#xff0c;而且作为架构师的你也是需要知道它的工作机制。那么你对MVCC机制了解多少呢&#xff1f;MVCC机制是用来干嘛的呢&#…

使用 Clion (cmake) 开发FreeRTOS

这里使用的是 f4071. 先用STM32CubeMX 建立一个可以运行的stm32项目&#xff0c;toolchain选择 SW4STM322. 官网下载源码www.freertos.org我这里下载的是FreeRTOSv202112.00.zip 解压缩后得到需要以下几个文件夹或档案FreeRTOS/Source下的所有的 .c 档案FreeRTOS/Source/includ…

m基于GA遗传优化的GRNN广义回归神经网络销售数据预测算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 随着市场经济的发展和全球化&#xff0c;国内外企业面临着越来越残酷的市场竞争&#xff0c;要想赢得竞争&#xff0c;赢得市场&#xff0c;从事商品销售的单位必须在短时间内&#xff0c;以最低…

【图多预警】Pandas绘图函数总结

文章目录简介条形图折线图箱线图直方图饼图散点图和六边形分箱图简介 pandas中提供了plot函数用以绘图&#xff0c;并通过kind参数选择具体的图像类型。 method绘图类别method绘图类别line折线图[默认使用]area堆叠面积图bar纵向条形图barh横向条形图kde概率分布图density概率…

企企通:数字化浪潮下,企业如何利用间接采购策略,实现降本增效?

01、什么是间接采购&#xff1f; 通常&#xff0c;我们将采购分为直接物料和间接物料。 直接采购&#xff1a;用于产品生产及销售的物料与服务的购买&#xff0c;服务于外部客户&#xff0c;也叫生产性采购。如原材料、产品包装、物流服务等。直接采购无论是生产所需的原材料、…

backup (攻防世界)

前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 题目描述 进入网址 解题工具: 浏览器? 问题解析: X老师忘记删除备份文件&#xff0c;他派小宁同学去把备份文件找出来,一起来帮小宁同学吧&#xff01; 先说一下备份文件 科普时间叕到 网站备份 分…

怎样录屏没有外界杂音?3个十分好用的方法,码住收藏!

在互联网时代&#xff0c;使用电脑娱乐、工作逐渐成为了日常生活的一部分。而其中&#xff0c;电脑录屏是经常使用的功能之一。不过对于电脑录屏领域不熟悉的小伙伴就会问了&#xff1a;“为什么录制的视频会有杂音&#xff0c;怎样录屏没有外界杂音&#xff1f;”别着急&#…

对于xshell连接不上虚拟机的一些解答

如果你发现你可以在虚拟机内ping通 之后&#xff0c;在你电脑dos下也可以ping通。 然而&#xff0c;还是发现你的xshell连接不上虚拟机。 这里使用ifconfig 我发现这个地址是在变化的&#xff0c;之前是129&#xff0c;现在是131&#xff0c;所以这样再到xshell&#xff0c;…

【Java面试】谈谈你对HashMap的理解(Map接口)

文章目录说一下 HashMap 的实现原理&#xff1f;HashMap在JDK1.7和JDK1.8中有哪些不同&#xff1f;HashMap的底层实现&#xff1f;HashMap的put方法的具体流程&#xff1f;HashMap的扩容操作是怎么实现的&#xff1f;HashMap是怎么解决哈希冲突的&#xff1f;能否使用任何类作为…

C++ Reference: Standard C++ Library reference: Containers: deque: deque: rbegin

C官网参考链接&#xff1a;https://cplusplus.com/reference/deque/deque/rbegin/ 公有成员函数 <deque> std::deque::rbegin C98 reverse_iterator rbegin(); const_reverse_iterator rbegin() const; C11 reverse_iterator rbegin() noexcept; const_reverse_iterato…

类加载机制和类加载器

文章目录类加载机制为什么需要类加载类加载的时机主动使用——会触发类的初始化被动使用的例子关于接口的初始化类加载详细过程加载链接初始化类加载器类与类加载器,类的实例的关系回顾类的卸载类加载的基本特征类加载器的分类Java虚拟机自带的类加载器用户自定义类加载器Class…