Vision Transformer - VIT
文章目录
- 1. Embedding层
- 2. Encoder层
- 3. MLP Head层
- 4. Hybrid混合模型
论文:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
网址:https://arxiv.org/abs/2010.11929
Hybrid - 传统CNN和Transformer混合模型
模型架构

输入一张图片,首先会将其分为一个一个patches,然后将每个patches输入到embedding层(Linear Projection of Flattened Patches)。通过Embedding层后,我们就会得到一个个向量,这里我们通常将向量称为Token。我们会在这一系列Token到最前面增加一个新的Token,专门用于分类的class token。这里的class token的维度和我们刚才得到的token的维度相同。此外,我们还需要加上关于位置的信息,position embedding,对应于上图中的0,1,2,3,….
将这一系列token加上class token以及位置参数输入到Transformer Encoder之中,Transformer Encoder对应的又是右图中的Encoder Block重复堆叠L次。然后将class token所对应的进行输出。

1. Embedding层
对于标准的Transformer模块,要求输入的是token(向量)序列,即二维矩阵[num_token,token_dim]
在代码实现中,直接通过一个卷积层来实现以VIT-B/16为例,使用卷积核大小为 16 × 16 16\times16 16×16,stride为16,卷积核个数为768。
[224,224,3]->[14,14,768]->[796,768]
在输入Transformer Encoder之前需要加上class token以及position embedding,都是可训练参数
拼接class token:Cat([1,768],[196,768])->[197,768]
叠加position embedding:[197,768]->[197,768]
对于位置编码:

使用位置编码后提升很大,但是各种位置编码之间的差异并不是很大,所以在源码中,默认使用的是1-D Position Embedding。
关于训练得到的位置编码,它的每个位置上与其他位置上的余弦相似度:

2. Encoder层

需要注意:在MLP Block中,第一个全连接层,它的节点个数是我们输入节点个数的4倍,第二个全连接层又回将节点个数还原回原来的大小。
3. MLP Head层
在Transformer Encoder前有个Dropout层,后有一个LayerNorm。
训练ImageNet21K时是由Linear+tanh激活函数+Linear
但是迁移到ImageNet1k上或者自己的数据集上时,只有一个Linear

论文中所给出的三种模型

- Layers是Transformer Encoder中重复堆叠Encoder Block的次数
- Hidden Size是通过Embedding层后每个token的dim(向量的长度)
- MLP size是Transformer Encoder中MLP Block第一个全连接的节点个数(是hidden size的四倍)
- heads代表Transformer中Multi-head Attention的heads数
4. Hybrid混合模型
首先用传统的卷积神经网络去提取特征,再通过VIT模型得到最终的结果,特征提取部分采用ResNet50,但是不是采用传统的卷积层,而是使用StdConv2d,另外将所有的BatchNorm层替换成GroupNorm层,把stage4中的3个Block移至stage3中。
相关文章:
Vision Transformer - VIT
文章目录 1. Embedding层2. Encoder层3. MLP Head层4. Hybrid混合模型 论文:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 网址:https://arxiv.org/abs/2010.11929 Hybrid - 传统CNN和Transformer混合模型 模型架构 输…...
HTTP与HTTPS:网络安全之门户
源码分享 https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tabBB08J2 在进行网页爬取和数据收集时,我们经常会与HTTP(超文本传输协议)和HTTPS(安全的超文本传输协议)打交道。这两种协议都用于互联网上的数据传…...
头歌:共享单车之数据分析
第1关 统计共享单车每天的平均使用时间 package com.educoder.bigData.sharedbicycle;import java.io.IOException; import java.text.ParseException; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java…...
MySQL的数据类型和细节
1.整型 数值类型字节描述TINYINT[UNSIGNED]1很小的整数,默认有符号 [-128,127]/[0,255]SMALLINT[UNSIGNED]2较小的整数,默认有符号 [-32768,32767]/[0,65535]MEDIUMINT[UNSIGNED]3中等的整数,默认有符号 [-8388608,8388607]/[0,16777215]…...
自建AWS S3存储服务
unsetunset前言unsetunset AWS S3(Amazon S3,全名为亚马逊简易存储服务),是亚马逊公司利用其亚马逊网络服务系统所提供的网络在线存储服务。我常用的很多SaaS服务中提供的文件存储功能,底层也都是AWS S3,比…...
『论文阅读|研究用于视障人士户外障碍物检测的 YOLO 模型』
研究用于视障人士户外障碍物检测的 YOLO 模型 摘要1 引言2 相关工作2.1 障碍物检测的相关工作2.2 物体检测和其他基于CNN的模型 3 问题的提出4 方法4.1 YOLO4.2 YOLOv54.3 YOLOv64.4 YOLOv74.5 YOLOv84.6 YOLO-NAS 5 实验和结果5.1 数据集和预处理5.2 训练和实现细节5.3 性能指…...
LeetCode--1445. 苹果和桔子
文章目录 1 题目描述2 测试用例3 解题思路 1 题目描述 表: Sales ------------------------ | Column Name | Type | ------------------------ | sale_date | date | | fruit | enum | | sold_num | int | ------------------------(sale…...
Java基础知识
一、标识符规范 标识符必须以字母(汉字)、下划线、美元符号开头,其他部分可以是字母、下划线、美元符号,数字的任意组合。谨记不能以数字开头。java使用unicode字符集,汉字也可以用该字符集表示。因此汉字也可以用作变量名。 关键字不能用作…...
并发编程-Synchronized
什么是Synchronized synchronized是Java提供的一个关键字,Synchronized可以保证并发程序的原子性,可见性,有序性。 我们会把synchronized称为重量级锁。主要原因,是因为JDK1.6之前,synchronized是一个重量级锁相比于J…...
C语言——从头开始——深入理解指针(1)
一.内存和地址 我们知道计算上CPU(中央处理器)在处理数据的时候,是通过地址总线把需要的数据从内存中读取的,后通过数据总线把处理后的数据放回内存中。如下图所示: 计算机把内存划分为⼀个个的内存单元,每…...
微信小程序-绑定数据并在后台获取它
如图 遍历列表的过程中需要绑定数据,点击时候需要绑定数据 这里是源代码 <block wx:for"{{productList}}" wx:key"productId"><view class"product-item" bindtap"handleProductClick" data-product-id"{{i…...
【删除数组用delete和Vue.delete有什么区别】
删除数组用delete和Vue.delete有什么区别? 在 JavaScript 中,delete 和 Vue.js 中的 Vue.delete 是两个完全不同的概念,它们在删除数组元素时的作用和效果也有所不同。 JavaScript 中的 delete 关键字: 在原生 JavaScript 中&a…...
【QT+QGIS跨平台编译】之四十二:【QWT+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
文章目录 一、QWT介绍二、QWT下载三、文件分析四、pro文件五、编译实践5.1 Windows下编译4.2 Linux下编译5.3 MacOS下编译一、QWT介绍 QWT是一个基于Qt框架的开源C++库,用于创建交互式的图形用户界面。它提供了丰富的绘图和交互功能,可以用于快速开发图形化应用程序。 QWT包…...
yum方式快速安装mysql
问题描述 使用yum的方式简单安装了一下mysql,对过程进行简单记录。 步骤 ①安装wget和vim sudo yum -y install wget vim②下载mysql的rpm包 sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm③升级和更新rpm包 sudo rpm -Uv…...
基于Java的家政预约管理平台
功能介绍 平台采用B/S结构,后端采用主流的Springboot框架进行开发,前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 前台功能包括:首页、家政详情、家政入驻、用户中心模块。后台功能包括:家政管理、分类管理…...
C语言前世今生
C语言前世今生 C语言的发展历史 C语言于1972年11月问世,1978年美国电话电报公司(AT&T)贝尔实验室正式发布C语言,1983年由美国国家标准局(American National Standards Institute,简称ANSI)…...
android aidl进程间通信封装通用实现-用法说明
接上一篇:android aidl进程间通信封装通用实现-CSDN博客 该aar包的使用还是比较方便的 一先看客户端 1 初始化 JsonProtocolManager.getInstance().init(mContext, "com.autoaidl.jsonprotocol"); //客户端监听事件实现 JsonProtocolManager.getInsta…...
【Java中23种设计模式-单例模式2--懒汉式线程不安全】
加油,新时代打工人! 今天,重新回顾一下设计模式,我们一起变强,变秃。哈哈。 23种设计模式定义介绍 Java中23种设计模式-单例模式 package mode;/*** author wenhao* date 2024/02/19 09:16* description 单例模式--懒…...
【后端高频面试题--Linux篇】
🚀 作者 :“码上有前” 🚀 文章简介 :后端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 后端高频面试题--Linux篇 往期精彩内容Windows和Linux的区别?Unix和Linux有什么区别…...
网络原理HTTP/HTTPS(2)
文章目录 HTTP响应状态码200 OK3xx 表示重定向4xx5xx状态码小结 HTTPSHTTPS的加密对称加密非对称加密 HTTP响应状态码 状态码表⽰访问⼀个⻚⾯的结果.(是访问成功,还是失败,还是其他的⼀些情况…).以下为常见的状态码. 200 OK 这是⼀个最常⻅的状态码,表⽰访问成功 2xx都表示…...
3步搞定TikTok音乐提取:DouK-Downloader终极免费工具使用指南
3步搞定TikTok音乐提取:DouK-Downloader终极免费工具使用指南 【免费下载链接】TikTokDownloader TikTok 发布/喜欢/合辑/直播/视频/图集/音乐;抖音发布/喜欢/收藏/收藏夹/视频/图集/实况/直播/音乐/合集/评论/账号/搜索/热榜数据采集工具/下载工具 项…...
12点标定
12点标定九点标定和十二点标定转换本质是两个平面二维空间的转换两个平面的二维空间的转换公式X物理 X图像200 k * 2 k缩放系数 k2/2000.01剪切图像是一个标准的二维平面空间物理世界,某个固定高度的平面物理空间 高度为5的,板子的所在的物理平面空间…...
Kotlin 跨平台 SqliteNow 全平台数据持久化方案
Kotlin 跨平台 SqliteNow 全平台数据持久化方案1. 环境与依赖配置1.0 创建一个Kotlin 多平台项目1.1 版本声明(libs.versions.toml)1.2 项目级插件配置(build.gradle.kts)1.3 模块级依赖配置(app/shared/build.gradle.…...
戴森球计划工厂蓝图架构深度解析:构建高效星际生产线的核心策略
戴森球计划工厂蓝图架构深度解析:构建高效星际生产线的核心策略 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints 项目作为戴森球计划游戏中最…...
AI Agent在体脂管理中的临床级精度突破:基于3276名受试者的双盲对照试验(FDA Class II类器械预审中)
更多请点击: https://kaifayun.com 第一章:AI Agent在体脂管理中的临床级精度突破:基于3276名受试者的双盲对照试验(FDA Class II类器械预审中) 临床验证设计与核心指标达成 本研究采用多中心、随机、双盲、平行对照…...
用Python和NumPy实现2D图像旋转:从复数乘法到旋转矩阵的保姆级实践
用Python和NumPy实现2D图像旋转:从复数乘法到旋转矩阵的保姆级实践 在计算机视觉和游戏开发中,图像旋转是最基础却至关重要的操作之一。想象一下,当你需要调整一张照片的角度,或者在游戏中让角色转向特定方向时,背后的…...
突破距离限制,抗扰稳连|三格电子 Profibus-DP 转光纤模块,工业通信优选
在冶金、矿山、化工、大型制造等工业场景中,Profibus-DP 总线常面临传输距离不足、电磁干扰强、信号易中断三大难题,严重影响生产设备联动与数据传输稳定性。三格电子MS-F155-P (Y) Profibus-DP 转光纤点对点模块,专为解决工业长距离、强干扰…...
利用 Taotoken 的模型广场为你的智能客服场景挑选合适模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用 Taotoken 的模型广场为你的智能客服场景挑选合适模型 构建智能客服或对话系统时,一个核心挑战是如何从众多大模型…...
洛雪音乐音源配置完全指南:免费搭建个人音乐库的终极方案
洛雪音乐音源配置完全指南:免费搭建个人音乐库的终极方案 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 洛雪音乐作为一款强大的音乐播放工具,提供了全网最新最全的音源资…...
C166微控制器引导加载程序到应用程序控制权转移实践
1. C166引导加载程序到应用程序的控制权转移概述 在嵌入式系统开发中,引导加载程序(Boot Loader)与应用程序(Application)的分离设计是一种常见架构。这种设计允许我们在不擦除整个Flash的情况下更新应用程序,同时保持引导加载程序的稳定性。对于使用英飞…...
