【深度学习】深刻理解ViT

        ViT(Vision Transformer)是谷歌研究团队于2020年提出的一种新型图像识别模型,首次将Transformer架构成功应用于计算机视觉任务中。Transformer最初应用于自然语言处理(如BERT和GPT),而ViT展示了其在视觉任务中的潜力。ViT的核心思想是将图像划分为小的固定大小的块(patches),然后将这些块视为一个序列输入Transformer模型,类似于NLP中的词序列。这种方法不同于传统的卷积神经网络(CNN),它不依赖卷积操作,而是完全基于全局的自注意力机制。

论文原文:AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

1. 方法

        Transformer用encoder-decoder结构,通过学习语言的拆解组装对照表,实现了很好的机器翻译效果。BERT模型在此基础上通过encoder间的团结协作,在NLP领域实现了多种任务的处理。而视觉领域就是ViT模型了。与BERT相比,ViT的主要框架没有什么改变,都是采用多个Transformer encoder,依然使用多层多头的结构。其主要工作在于输入阶段,把图片进行向量化,转换成embeddings的词结构,从而实现了NLP中类似句子一样的效果,后续encoder的操作和原始Transformer中完全相同。

1.1. patch embedding

        就如同ViT的题目所说的那样,将原始二维图像分成小块,称为patch,大小为16x16。每个patch也就相当于在机器翻译中句子中的一个词,然后经过全连接层,把patch压成一个向量。在向量的开头加入class token <cls>,目的是便于后期实现特征分类。

1.2. position embedding

        将这个长x宽x通道数的矩阵表示进行展平,然后通过一个共享的线性层投射到Transformer模型里面的特征维度,比如1024。在投影后的固定长度的向量上加入tokens的位置信息,即加入一个可学习的向量,为后面的self-attention计算做准备。位置编码可以理解为一张表,表一共有N行,N的大小和输入序列长度相同,每一行代表一个向量,向量的维度和输入序列embedding的维度相同,其中位置编码的操作是sum,而不是concatenate。因为后面采用的是Transformer Encoder,每个Token不论在哪个位置都可以看到所有的Token。

  • 1-D 位置编码:例如3x3共9个patch,patch编码为1到9

  • 2-D 位置编码:patch 编码为11,12,13,21,22,23,31,32,33,即同时考虑X和Y轴的信息,每个轴的编码维度是D/2

  • 实际实验结果表明,不管使用哪种位置编码方式,模型的精度都很接近,甚至不适用位置编码,模型的性能损失也没有特别大。原因可能是ViT是作用在image patch上的,而不是image pixel,对网络来说这些patch之间的相对位置信息很容易理解,所以使用什么方式的位置编码影像都不大。

1.3. MLP Head

        Transformer之后的MLP Head其实就是一个全连接层,先把输入时添加的分类向量拿出来,输入到这个网络里,输出就是图像的分类类别了。

2. ViT训练

        与BERT模型类似,ViT也根据encoder层数的不同训练连三种模型——ViT-BaseViT-LargeViT-Huge。patch size越小,序列越长,计算代价越大,一般来说效果也会越好。ViT的训练与BERT一样,也分为pre-training和fine-tuning两个过程。    

        论文中对学习到的位置编码进行了可视化,发现相近的图像块的位置编码较相似,且同行或列的位置编码也相近。随着encoder的增加,每个头关注的像素距离越来越远,关注全局信息。

参考资料:

ViT(Vision Transformer)解析 - 知乎icon-default.png?t=O83Ahttps://zhuanlan.zhihu.com/p/445122996

【深度学习】详解 Vision Transformer (ViT)-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/qq_39478403/article/details/118704747

【ViT模型】Transformer向视觉领域开疆拓土……_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV13B4y1x7jQ?spm_id_from=333.788.videopod.sections&vd_source=0dc0c2075537732f2b9a894b24578eed

VIT (Vision Transformer)深度讲解_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV15RDtYqE4r/?spm_id_from=333.337.search-card.all.click&vd_source=0dc0c2075537732f2b9a894b24578eed

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

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

相关文章

idea 配置 git .gitignore文件配置

.gitignore 内容 .idea/ *.iml target/ *.class *.log .iml在idea项目里面创建一个.gitignore名字的文件&#xff0c;然后把这个文件提交到git上。我一般是放到.idea同级目录。 我遇到了几种情况这个文件配置了但是不生效的情况 第一种 Git的缓存可能会导致配置不生效。尝试…

Scala的隐式转换

&#xff08;一&#xff09;隐式转换&#xff1a; 编译器 偷偷地&#xff0c;自动地帮我们把一种数据类型转换为另一种类型。例如&#xff1a;int --> double 它有失败的时候(double-->int),有成功的时候。 当它转换失败的时候&#xff0c;我们提供一个工具&#xff0c;让…

Windows安装WSL子系统及docker,以及WSL和docker配置、使用及问题解决

在Windows操作系统中,Ubuntu子系统(也称为Windows Subsystem for Linux, WSL)为开发者提供了一个在Windows环境下运行Linux环境的平台。然而,有时用户在按照Ubuntu子系统或者使用WSL时,可能会遇到各种问题,下面总结一下解决方式。 想要在Windows上安装Docker(实际上是基…

F12抓包01:启动、面板功能介绍、语言设置、前端样式调试

浏览器检查工具通常用来作为浏览器web服务测试过程中&#xff0c;辅助测试、排查问题、定位缺陷的工具。 本文以mac系统下&#xff0c;当前比较常用的Chrome浏览器为例&#xff0c;讲解“检查”工具的常用功能操作方法。 一、打开方式 **1、****鼠标操作&#xff1a;**浏览器…

仿iOS日历、飞书日历、Google日历的日模式

仿iOS日历、飞书日历、Google日历的日模式&#xff0c;24H内事件可自由上下拖动、自由拉伸。 以下是效果图&#xff1a; 具体实现比较简单&#xff0c;代码如下&#xff1a; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color;…

特征交叉-CAN学习笔记代码解读

一 核心模块coaction 对于每个特征对(feature_pairs)weight, bias 来自于P_inductionP_fead是MLP的input 举个例子&#xff1a;如果是用户ID和产品ID的co-action&#xff0c;且产品ID是做induction&#xff0c;用户ID是做feed。 step1 用户ID/产品ID都先形成一个向量&#xf…

Java从入门到工作3 - 框架/工具

3.1、SpringBoot框架结构 在 Spring Boot 或微服务架构中&#xff0c;每个服务的文件目录结构通常遵循一定的约定。以下是一个常见的 Spring Boot 服务目录结构示例&#xff0c;以及各个文件和目录的简要说明&#xff1a; my-service │ ├── src │ ├── main │ │…

基于SpringBoot的青少年心理健康教育网站

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

基于事件驱动的websocket简单实现

websocket的实现 什么是websocket&#xff1f; WebSocket 是一种网络通信协议&#xff0c;旨在为客户端和服务器之间提供全双工、实时的通信通道。它是在 HTML5 规范中引入的&#xff0c;可以让浏览器与服务器进行持久化连接&#xff0c;以便实现低延迟的数据交换。 WebSock…

JavaEE 【知识改变命运】04 多线程(3)

文章目录 多线程带来的风险-线程安全线程不安全的举例分析产出线程安全的原因&#xff1a;1.线程是抢占式的2. 多线程修改同一个变量&#xff08;程序的要求&#xff09;3. 原子性4. 内存可见性5. 指令重排序 总结线程安全问题产生的原因解决线程安全问题1. synchronized关键字…

ElasticSearch如何做性能优化?

大家好&#xff0c;我是锋哥。今天分享关于【ElasticSearch如何做性能优化&#xff1f;】面试题。希望对大家有帮助&#xff1b; ElasticSearch如何做性能优化&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Elasticsearch 中&#xff0c;性能优化是…

Chrome浏览器调用ActiveX控件--allWebOffice控件

背景 allWebOffice控件能够实现在浏览器窗口中在线操作文档的应用&#xff08;阅读、编辑、保存等&#xff09;&#xff0c;支持编辑文档时保留修改痕迹&#xff0c;支持书签位置内容动态填充&#xff0c;支持公文套红&#xff0c;支持文档保护控制等诸多办公功能&#xff0c;…

贪心算法(一)

目录 一、贪心算法 二、柠檬水找零 三、将数组和减半的最少操作次数 四、最大数 五、摆动序列 一、贪心算法 贪心算法的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 贪心策略&#xff1a;1、把解决问题的过程分为若干步。2、解决每一步的时候&#xff…

Scratch节日作品 | 圣诞节礼物——体验节日的温馨与编程的乐趣! ❄️

今天为大家推荐一款充满节日氛围的Scratch作品——《圣诞礼物》&#xff01;这款程序不仅带来了雪花飘落、圣诞老人和麋鹿的经典场景&#xff0c;还通过编程的形式让小朋友们体验到收到礼物的喜悦。通过这款游戏&#xff0c;小朋友们能学习编程知识、了解圣诞文化&#xff0c;同…

基于Qwen2-VL模型针对 ImageToText 任务进行微调训练 - 数据处理

基于Qwen2-VL模型针对 ImageToText 任务进行微调训练 - 数据处理 flyfish 给定的图像生成一段自然语言描述。它的目标是生成一个或多个句子&#xff0c;能够准确地描述图像中的主要内容、物体、动作、场景等信息。例如&#xff0c;对于一张包含一只狗在草地上奔跑的图像&…

Spring Boot整合 RabbitMQ

文章目录 一. 引入依赖二. 添加配置三. Work Queue(工作队列模式)声明队列生产者消费者 四. Publish/Subscribe(发布订阅模式)声明队列和交换机生产者消费者 五. Routing(路由模式)声明队列和交换机生产者消费者 六. Topics(通配符模式)声明队列和交换机生产者消费者 一. 引入依…

谷粒商城—分布式基础

1. 整体介绍 1)安装vagrant 2)安装Centos7 $ vagrant init centos/7 A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on…

【考前预习】1.计算机网络概述

往期推荐 子网掩码、网络地址、广播地址、子网划分及计算-CSDN博客 一文搞懂大数据流式计算引擎Flink【万字详解&#xff0c;史上最全】-CSDN博客 浅学React和JSX-CSDN博客 浅谈云原生--微服务、CICD、Serverless、服务网格_云原生 serverless-CSDN博客 浅谈维度建模、数据分析…

计算机视觉与医学的结合:推动医学领域研究的新机遇

目录 引言医学领域面临的发文难题计算机视觉与医学的结合&#xff1a;发展趋势计算机视觉结合医学的研究方向高区位参考文章结语 引言 计算机视觉&#xff08;Computer Vision, CV&#xff09;技术作为人工智能的重要分支&#xff0c;已经在多个领域取得了显著的应用成果&…

AI智算-k8s部署大语言模型管理工具Ollama

文章目录 简介k8s部署OllamaOpen WebUI访问Open-WebUI 简介 Github&#xff1a;https://github.com/ollama/ollama 官网&#xff1a;https://ollama.com/ API&#xff1a;https://github.com/ollama/ollama/blob/main/docs/api.md Ollama 是一个基于 Go 语言开发的可以本地运…