Vision Transformer(VIT模型)

news2024/11/25 23:26:18

【11.1 Vision Transformer(vit)网络详解-哔哩哔哩】 https://b23.tv/BgsYImJ

工作流程:

①将输入的图像进行patch的划分

②Linear Projection of Flatted patches,将patch拉平并进行线性映射生成token

③生成CLS token(用向量有效地表示整个输入图像的特征)特殊字符“*”,生成Position Embedding,用Patch+Position Embedding相加作为inputs token

④Transformer Encoder编码,特征提取

⑤MLP Head进行分类输出结果

图片分块嵌入:

对于标准的Transformer模块,要求输入的是token(向量)序列,即二维矩阵[num_token,token_dim]

在代码实现中,直接通过一个卷积层来实现VIT-\frac{B}{16},使用卷积核大小为16*16,stride=16,卷积核个数为768

输入图片大小为224x224,将图片切分为固定大小16x16的patch,则每张图像会生成224x224/16x16=196个patch,输出序列为196;

196个patch(196x3)通过线性投射层(3x768)之后的维度为196x768,即一共有196个token,每个token的维度是768

[224,224,3]\rightarrow [14,14,768]\rightarrow [196,768]

 在输入Transformer Encoder之前需要加上[class]token以及Position Embedding,都是可训练的参数

拼接[class]token:Cat([1,768],[196,768])->[197,768]

叠加:

Embedding层:

Learnable embedding(可学习的嵌入):

它是一个可学习的向量,它用来表示整个输入图像的信息;这个向量的长度是 768。

Position Embedding:

如图,编号有0-9的紫色框表示各个位置的position embedding,而紫色框旁边的粉色框则是经过linear projection之后的flattened patch向量。这样每一个 token 既包括图像信息又包括了位置信息

ViT的Position Embedding采用的是一个可学习/训练的 1-D 位置编码嵌入,是直接叠加在tokens上

使用余弦相似度来表明任意两个patches之间在位置上的关联程度

Transformer Encoder:

Encoder输入的维度为[197, 768],输出的维度为[197, 768],可以把中间过程简单的理解成为特征提取的过程

 Transformer Encoder就是将Encoder Block重复堆叠L次

 

流程:

①Layer Norm层中使用Layer Normalization

②Multi-Head Attention

③Dropout层,论文中使用Dropout,但实际中使用DropPath效果更好

④捷径分支与输入进行相加操作,类似ResNet残差结构

⑤Layer Norm接MLP Block

⑥再接Dropout

⑦捷径分支 

MLP Head:

定义:

MLP Head 是指位于模型顶部的全连接前馈神经网络模块,用于将提取的图像特征表示转换为最终的分类结果或其他预测任务输出。MLP Head 通常跟在 Transformer Encoder 的输出之后,作为整个模型的最后一层。

可以简单理解为一个全连接层,若需要类别概率需要再接上一个softmax激活函数

注意:

 在Transformer Encoder前有个Dropout层,后有一个Layer Norm

训练ImageNet21K是由Linear+tanh激活函数+Linear

迁移到ImageNet1K上或自己的数据上,只有一个Linear

MLP Block:

如图下图所示,就是全连接+GELU激活函数+Dropout组成也非常简单,需要注意的是第一个全连接层会把输入节点个数翻4倍[197, 768] -> [197, 3072],第二个全连接层会还原回原节点个数[197, 3072] -> [197, 768]

注意:

第一个全连接层是输入节点个数的四倍

第二个全连接层将输入还原为原来的大小

VIT-B/16模型结构:

Vision Transformer维度变换: 

 

流程:

①输入图像的input shape=[1,3,224,224],1是batch_size,3是通道数,224是高和宽

②通过patch embedding,由卷积核和faltten组成,因为是16*16的卷积核,个数为768,步距为16,数据变为14*14*768;高度和宽度方向进行展平处理,变为196*768

③concat上一个class token(可训练参数),196*768和1*768拼接为197*768

④与position embedding(可训练参数)相加,相加操作保持shape一致

⑤通过Dropout层

⑥经过Transformer Encoder,将Encoder Block重复L次(VIT-B/16中重复12次)

⑦得到Layer Norm的数据是197*768

⑧提取class token对应的输出,对输入进行切片,提取class token输出1*768

⑨通过MLP Head 得到最终输出,pre-logits是一个全连接层+tahn激活函数

其余:

 

 Layer是Transformer Encoder中重复堆叠Encoder Block的次数

Hidden Size是通过Embedding层后每个token的dim(向量长度)

MLP size是Transformer Encoder中MLP Block第一个全连接的节点个数(是Hidden Size的四倍)

Heads代表Transformer中Multi-Head Attention的heads数 

混合模型:

用传统的卷积神经网络提取特征,然后通过VIT进一步得到最终结果

R50的卷积层采用的是StdConv2d,不是传统的Conv2d

将所有的BatchNorm层替换成GroupNorm层

把stage4中的三个Block移到stage3中

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

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

相关文章

2024年11月最新 Alfred 5 Powerpack (MACOS)下载

在现代数字化办公中,我们常常被繁杂的任务所包围,而时间的高效利用成为一项核心需求。Alfred 5 Powerpack 是一款专为 macOS 用户打造的高效工作流工具,以其强大的定制化功能和流畅的用户体验,成为众多效率爱好者的首选。 点击链…

C#里怎么样检测文件的属性?

C#里怎么样检测文件的属性? 对于文件来说,在C#里有一种快速的方法来检查文件的属性。 比如文件是否已经压缩, 文件是否加密, 文件是否是目录等等。 属性有下面这么多: 例子演示如下: /** C# Program to View the Information of the File*/ using System; using Syste…

网络安全,文明上网(4)掌握网络安全技术

前言 在数字化时代,个人信息和企业数据的安全变得尤为重要。为了有效保护这些宝贵资产,掌握一系列网络安全技术是关键。 核心技术及实施方式 1. 网络监控与过滤系统: 这些系统构成了网络防御体系的基石,它们负责监控网络通信&…

Vue 项目中如何使用FullCalendar 时间段选择插件(类似会议室预定、课程表)

本文中是基于VUEelementui项目中实现的前后端分离的前端功能部分: 插件的官方文档:FullCalendar 1.安装对应依赖(统一安装版本为6.15) npm install --save fullcalendar/core6.15 npm install --save fullcalendar/daygrid6.…

Oracle SQL优化③——表的连接方式

前言 表(结果集)与表(结果集)之间的连接方式非常重要,如果CBO选择了错误的连接方式,本来几秒就能出结果的SQL可能执行一天都执行不完。如果想要快速定位超大型SQL性能问题,就必须深入理解表连接…

小程序25- iconfont 字体图标的使用

项目中使用到图标,一般由公司设计进行设计,设计好后上传到阿里巴巴矢量图标库 日常开发过程中,也可以通过 iconfont 图标库下载使用自带的图标 补充:使用 iconfont 图标库报错:Failed to load font 操作步骤&#xff…

Java基于SpringBoot+Vue的藏区特产销售平台

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

selinux及防火墙

selinux说明 SELinux 是 Security-Enhanced Linux 的缩写,意思是安全强化的 linux 。 SELinux 主要由美国国家安全局( NSA )开发,当初开发的目的是为了避免资源的误用。 httpd进程标签(/usr/share/nginx/html &#…

详细探索xinput1_3.dll:功能、问题与xinput1_3.dll丢失的解决方案

本文旨在深入探讨xinput1_3.dll这一动态链接库文件。首先介绍其在计算机系统中的功能和作用,特别是在游戏和输入设备交互方面的重要性。然后分析在使用过程中可能出现的诸如文件丢失、版本不兼容等问题,并提出相应的解决方案,包括重新安装相关…

生成对抗网络模拟缺失数据,辅助PAMAP2数据集仿真实验

PAMAP2数据集是一个包含丰富身体活动信息的数据集,它为我们提供了一个理想的平台来开发和测试HAR模型。本文将从数据集的基本介绍开始,逐步引导大家通过数据分割、预处理、模型训练,到最终的性能评估,在接下来的章节中&#xff0c…

IEC61850读服务器目录命令——GetServerDirectory介绍

IEC61850标准中的GetServerDirectory命令是变电站自动化系统中非常重要的一个功能,它主要用于读取服务器的目录信息,特别是服务器的逻辑设备节点(LDevice)信息。以下是对GetServerDirectory命令的详细介绍。 目录 一、命令功能 …

基于CNN+RNNs(LSTM, GRU)的红点位置检测(pytorch)

1 项目背景 需要在图片精确识别三跟红线所在的位置,并输出这三个像素的位置。 其中,每跟红线占据不止一个像素,并且像素颜色也并不是饱和度和亮度极高的红黑配色,每个红线放大后可能是这样的。 而我们的目标是精确输出每个红点的…

前端:JavaScript (学习笔记)【2】

目录 一,数组的使用 1,数组的创建 [ ] 2,数组的元素和长度 3,数组的遍历方式 4,数组的常用方法 二,JavaScript中的对象 1,常用对象 (1)String和java中的Stri…

全面解析多种mfc140u.dll丢失的解决方法,五种方法详细解决

当你满心期待地打开某个常用软件,却突然弹出一个错误框,提示“mfc140u.dll丢失”,那一刻,你的好心情可能瞬间消失。这种情况在很多电脑用户的使用过程中都可能出现。无论是游戏玩家还是办公族,面对这个问题都可能不知所…

STM32总体架构简单介绍

目录 一、引言 二、STM32的总体架构 1、三个被动单元 (1)内部SRAM (2)内部闪存存储器 (3)AHB到APB的桥(AHB to APBx) 2、四个主动(驱动)单元 &#x…

【PHP】 环境以及插件的配置,自学笔记(一)

文章目录 环境的准备安装 XAMPPWindowMacOS 配置开发环境Vscode 关于 PHP 的插件推荐Vscode 配置 php 环境Apache 启动Hello php配置热更新 参考 环境的准备 下载 XAMPP , 可以从 官网下载 https://www.apachefriends.org/download.html 安装 XAMPP XAMPP 是一个跨平台的集成开…

跟着问题学5——深度学习中的数据集详解(1)

深度学习数据集的创建与读取 数据 (计算机术语) 数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,是用于表示客观事物的未经加工的的原始素材。 数据可以是连续的值,比如声音、图像,称为模拟数据。…

实验-Linux文件系统和磁盘管理

操作1 远程连接Linux系统 下述连接方式2选一即可。 使用xshell工具连接Linux系统。打开xshell,新建连接,将主机ip修改为实际Linux系统的ip(ifconfig命令查看),可以新建多个xshell会话,使用不同的用户名登录,方便后续…

GPTZero:高效识别AI生成文本,保障学术诚信与内容原创性

产品描述 GPTZero 是一款先进的AI文本检测工具,专为识别由大型语言模型(如ChatGPT、GPT-4、Bard等)生成的文本而设计。它通过分析文本的复杂性和一致性,判断文本是否可能由人类编写。GPTZero 已经得到了超过100家媒体机构的报道&…

Apple Vision Pro开发003-PolySpatial2.0新建项目

unity6.0下载链接:Unity 实时开发平台 | 3D、2D、VR 和 AR 引擎 一、新建项目 二、导入开发包 com.unity.polyspatial.visionos 输入版本号 2.0.4 com.unity.polyspatial(单独导入),或者直接安装 三、对应设置 其他的操作与之前的版本相同…