VIT论文阅读与理解
transform网络结构

vision transform网络结构

图1:模型概述。我们将图像分割成固定大小的补丁,线性嵌入每个补丁,添加位置嵌入,并将结果向量序列馈送到标准Transformer编码器。为了执行分类,我们使用标准方法向序列中添加一个额外的可学习的“分类令牌”。

补丁生成与嵌入向量




这段代码的功能是从一个图像张量中提取固定大小的 patch,并将这些 patch 转换为特定的排列形式。下面逐步说明这段代码的操作:


















vision transform实验
我们评估了ResNet、Vision Transformer (ViT)和hybrid的表示学习能力。为了了解每个模型的数据需求,我们在不同大小的数据集上进行预训练,并评估许多基准任务。当考虑到预训练模型的计算成本时,ViT表现非常好,以较低的预训练成本在大多数识别基准上达到最先进的水平。最后,我们使用自我监督进行了一个小实验,并表明自我监督的ViT在未来是有希望的。
设置
数据集。
为了探索模型的可扩展性,我们使用了具有1k个类和1.3M张图像的ILSVRC-2012 ImageNet数据集(我们在下文中将其称为ImageNet),具有21k个类和14M张图像(Deng等人,2009)的超集ImageNet-21k,以及具有18k个类和303M张高分辨率图像的JFT(Sun等人,2017)。我们根据Kolesnikov等人(2020)的研究,将预训练数据集与下游任务的测试集进行去重。我们将在这些数据集上训练的模型转移到几个基准任务中:原始验证标签和清理后的ReaL标签上的ImageNet(Beyer等人,2020)、CIFAR-10/100(Krizhevsky,2009)、Oxford IIIT Pets(Parkhi等人,2012)和Oxford Flowers-102(Nilsback&Zisserman,2008)。对于这些数据集,预处理遵循Kolesnikov等人(2020)的研究。
我们还对19个任务的VTAB分类套件进行了评估(Zhai等人,2019b)。VTAB使用每个任务1000个训练示例来评估向不同任务的低数据传输。任务分为三组:自然任务、宠物任务、CIFAR任务等。专业——医学和卫星图像,以及结构化——需要几何理解的任务,如定位。
模型变体
我们将ViT配置基于用于BERT的配置(Devlin等人,2019),如表1所示。“Base”和“Large”模型直接采用BERT,我们添加了更大的“Huge”模型。在下文中,我们使用简短的符号来表示模型大小和输入补丁大小:例如,ViT-L/16表示输入补丁大小为16×16的“大”变体。请注意,Transformer的序列长度与补丁大小的平方成反比,因此补丁大小较小的模型在计算上更昂贵

对于基线CNN,我们使用ResNet(He等人,2016),但用组归一化(Wu&He,2018)替换批归一化层(Ioffe&Szegedy,2015),并使用标准化卷积(Qiao等人,2019)。这些修改改善了传输(Kolesnikov等人,2020),我们将修改后的模型称为“ResNet(BiT)”。对于混合体,我们将中间特征图输入ViT,补丁大小为一个“像素”。为了尝试不同的序列长度,我们要么(i)取常规ResNet50的第4阶段的输出,要么(ii)删除第4阶段,在第3阶段放置相同数量的层(保持总层数),然后取这个扩展的第3阶段的输出。选项(ii)导致序列长度增加4倍,ViT模型更昂贵
训练和微调。我们使用Adam(Kingma&Ba,2015)训练所有模型,包括ResNets,其中β1=0:9,β2=0:999,批量大小为4096,并应用0.1的高权重衰减,我们发现这对所有模型的转移都很有用(附录D.1显示,与常见做法相比,Adam在我们的环境中对ResNets的效果略好于SGD)。我们使用线性学习率预热和衰减,详见附录B.1。为了进行微调,我们使用动量SGD,批量大小为512,适用于所有型号,请参阅附录B.1.1。对于表2中的ImageNet结果,我们以更高的分辨率进行了微调:ViT-L/16为512,ViT-H/14为518,还使用了Polyak和Juditsky(1992)的平均值,系数为0:9999(Ramachandran等人,2019;Wang等人,2020b)。


微调准确率(Fine-tuning accuracy): 微调指的是在已经训练好的模型基础上,进一步在目标数据集上训练,以调整模型参数。这种方法通常需要较长的训练时间,但它能通过调整模型参数适应特定任务,从而提升准确性。
少量示例学习准确率(Few-shot accuracy): 在少量示例学习中,模型通常只用少数样本(少量数据)来进行学习,而不进行完全的微调。在这里,作者采用的是一种正则化的最小二乘回归问题来优化模型表现。这种方法通过冻结模型的特征表示,仅通过少量数据来找到与目标向量的映射关系,通常计算效率较高。
目的:
微调:通常提供更好的准确性,但代价较高,需要更多的计算资源和时间。
少量示例学习:用来快速评估模型的表现,特别是在微调过于昂贵或耗时的情况下。通过线性回归的方式,可以在较短时间内获得一个近似的结果。
与最新技术的比较
我们首先将我们最大的型号ViT-H/14和ViT-L/16与文献中最先进的CNN进行比较。第一个比较点是大迁移(BiT)(Kolesnikov等人,2020),它使用大ResNets进行监督迁移学习。第二个是Noisy Student(Xie等人,2020),它是一个大型的EfficientNet,在ImageNet和JFT300M上使用半监督学习进行训练,并去除标签。目前,Noisy Student是ImageNet和BiT-L上其他数据集的最新技术。所有模型都是在TPUv3硬件上训练的,我们报告了预训练每个模型所需的TPUv3核心天数,即用于训练的TPU v3核心数量(每个芯片2个)乘以训练时间(以天为单位)
表2显示了结果。在JFT-300M上预训练的较小ViT-L/16模型在所有任务上都优于BiT-L(在同一数据集上预训练),同时训练所需的计算资源要少得多。更大的型号ViT-H/14进一步提高了性能,特别是在更具挑战性的数据集上——ImageNet、CIFAR-100和VTAB套件。有趣的是,该模型的预训练计算量仍然比现有技术少得多。然而,我们注意到,预训练效率不仅可能受到架构选择的影响,还可能受到其他参数的影响,如训练计划、优化器、权重衰减等。我们在第4.4节中提供了不同架构的性能与计算的对照研究。最后,在公共ImageNet-21k数据集上预训练的ViT-L/16模型在大多数数据集上也表现良好,同时预训练所需的资源更少:它可以在大约30天内使用具有8个核心的标准云TPUv3进行训练。

检查视觉变换器(Vision Transformer)
为了理解视觉变换器如何处理图像数据,我们分析其内部表示。视觉变换器的第一层将展平的图像块投影到一个低维空间(公式1)。图7(左)展示了学习到的嵌入滤波器的主要成分,这些成分类似于图像块中细致结构的低维表示的合理基函数。

ViT-L/32 RGB值的初始线性嵌入滤波器。
在投影之后,学习到的位置嵌入被添加到图像块表示中。图7(中)显示了模型学习如何根据位置嵌入之间的相似性来编码图像内的距离。即,较近的块通常会有相似的位置嵌入。进一步地,行列结构出现:同一行/列中的块具有相似的嵌入。最后,对于较大的网格,正弦结构有时会显现(附录D)。位置嵌入学习表示2D图像拓扑,解释了为何手工设计的2D感知嵌入变体未能带来改进(附录D.4)。

自注意力使得ViT能够在最低层集成整个图像的信息。我们研究了网络在多大程度上利用了这一能力。具体来说,我们计算了信息在图像空间中的平均距离(图7,右)。这一“注意力距离”类似于CNN中的感受野大小。我们发现,一些注意力头会关注已经图像的绝大部分,表明模型确实具备整合全局信息的能力。其他注意力头则集中于低层中的信息,这种高度局部化的注意力在应用ResNet混合模型之前的Transformer中更为明显(图7,右),这表明它可能在早期卷积层中具有类似的功能。进一步地,模型在图像区域的关注表现出与图像分类相关的区域(图6)
局部与全局信息的整合: 不同的注意力头会分别处理图像的局部细节和全局信息,部分头部关注整个图像,其他头部则集中在更小的区域上。这表明ViT模型能够有效地在图像的不同区域内进行信息整合



相关文章:
VIT论文阅读与理解
transform网络结构 vision transform网络结构 图1:模型概述。我们将图像分割成固定大小的补丁,线性嵌入每个补丁,添加位置嵌入,并将结果向量序列馈送到标准Transformer编码器。为了执行分类,我们使用标准方法向序列中添…...
JavaScript笔记APIs篇01——DOM获取与属性操作
黑马程序员视频地址:黑马程序员前端JavaScript入门到精通全套视频教程https://www.bilibili.com/video/BV1Y84y1L7Nn?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p78https://www.bilibili.com/video/BV1Y84y1L7Nn?…...
SQL表间关联查询详解
简介 本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(left join)、右连接(right join)、全连接(full join)、内连接(inner join)、交叉连接&…...
select函数
系统调用 select()可用于执行 I/O 多路复用操作,调用 select()会一直阻塞,直到某一个或多个文件描述符成为就绪态(可以读或写)。其函数原型如下所示: #include <sys/select.h> int select(int nfds, fd_set *re…...
建造者模式(或者称为生成器(构建器)模式)
一、什么是建造者模式? 将复杂对象的构建与表示进行分离,使得统一的构建过程,可以创建出不同的对象表现模式 就是将复杂对象里面的成员变量,设置不同的值,使得生成出来的对象拥有不同的属性值; 二、特点…...
【深度学习】Huber Loss详解
文章目录 1. Huber Loss 原理详解2. Pytorch 代码详解3.与 MSELoss、MAELoss 区别及各自优缺点3.1 MSELoss 均方误差损失3.2 MAELoss 平均绝对误差损失3.3 Huber Loss 4. 总结4.1 优化平滑4.2 梯度较好4.3 为什么说 MSE 是平滑的 1. Huber Loss 原理详解 Huber Loss 是一种结合…...
A5.Springboot-LLama3.2服务自动化构建(二)——Jenkins流水线构建配置初始化设置
下面我们接着上一篇文章《A4.Springboot-LLama3.2服务自动化构建(一)——构建docker镜像配置》继续往下分析,在自动化流水线构建过程当中的相关初始化设置和脚本编写。 一、首先需要先安装Jenkins 主部分请参考我前面写的一篇文章《Jenkins持续集成与交付安装配置》 二、…...
李宏毅机器学习HW1: COVID-19 Cases Prediction
Kaggle数据集和提交链接 特征选择(主要修改地方) 在sample code的基础上主要修改了Select_feat选择特征函数。 首先,因为数据集中的第一列是id,先在raw_x_train,raw_x_valid,raw_x_test中都去掉这一列。其…...
MySQL下载安装DataGrip可视化工具
目录 WinMySQL下载安装步骤MySQL配置添加环境变量 Mac下载安装配置环境变量 DataGrip可视化工具以Win为例了。Mac忘记截图了。步骤都一样 Win MySQL下载 官网: https://www.mysql.com/ 直接进下载界面: https://downloads.mysql.com/archives/installe…...
多平台下Informatica在医疗数据抽取中的应用
一、引言 1.医疗数据抽取与 Informatica 概述 1.1 医疗数据的特点与来源 1.1.1 数据特点 医疗数据具有显著的多样性特点。从数据类型来看,涵盖了结构化数据,如患者的基本信息、检验检查结果等,这些数据通常以表格形式存储,便于…...
用公网服务器实现内网穿透
首先需要一个公网服务器 下载frp 搜索github下载到frp,服务端frps/客户端frpc。。下载的时候要注意自己本地内网机的cpu版本和服务端cpu架构 我的电脑是mac M1PRO版本 下载的是:darwinarm64 比如 服务端一般是Linux(Intel 64位CPU…...
为什么mysql更改表结构时,varchar超过255会锁表
在 MySQL 中,当修改表结构并将 VARCHAR 字段的长度设置为超过 255 时,可能会出现锁表的情况。这与 MySQL 的存储引擎(主要是 InnoDB)以及表的底层存储方式相关。 原因分析 行格式变化 InnoDB 存储引擎支持多种行格式(…...
ASP.NET Core中 JWT 实现无感刷新Token
在 Web 应用开发中,用户登录状态的管理至关重要。为了避免用户频繁遇到登录过期的问题,我们可以通过实现 JWT(JSON Web Token)刷新机制来提升用户体验 推荐: 使用 Refresh Token(双 Token 机制) 1. 生成和…...
函数(函数的概念、库函数、自定义函数、形参和实参、return语句、数组做函数参数、嵌套调用和链式访问、函数的声明和定义、static和extern)
一、函数的概念 •C语⾔中的函数:⼀个完成某项特定的任务的⼀⼩段代码 •函数又被翻译为子函数(更准确) •在C语⾔中我们⼀般会⻅到两类函数:库函数 ⾃定义函数 二、库函数 1 .标准库和头文件 •C语⾔的国际标准ANSIC规定了⼀…...
物联网在烟草行业的应用
物联网技术在烟草行业的应用 物联网技术在烟草行业的应用主要体现在以下几个方面: 智能制造 :物联网技术可以实现对生产过程中的关键参数进行实时监测,确保产品的质量稳定可靠。同时,通过对设备的远程维护和故障诊断,…...
第6章:Python TDD实例变量私有化探索
写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…...
Java操作Excel导入导出——POI、Hutool、EasyExcel
目录 一、POI导入导出 1.数据库导出为Excel文件 2.将Excel文件导入到数据库中 二、Hutool导入导出 1.数据库导出为Excel文件——属性名是列名 2.数据库导出为Excel文件——列名起别名 3.从Excel文件导入数据到数据库——属性名是列名 4.从Excel文件导入数据到数据库…...
BUUCTF_Web([GYCTF2020]Ezsqli)
1.输入1 ,正常回显。 2.输入1 ,报错false,为字符型注入,单引号闭合。 原因: https://mp.csdn.net/mp_blog/creation/editor/145170456 3.尝试查询字段,回显位置,数据库,都是这个。…...
微软宣布Win11 24H2进入新阶段!设备将自动下载更新
快科技1月19日消息,微软于1月16日更新了支持文档,宣布Windows 11 24H2进入新阶段。 24H2更新于2024年10月1日发布,此前为可选升级,如今微软开始在兼容的Windows 11设备上自动下载并安装24H2版本。 微软表示:“运行Wi…...
SpringBoot:解决前后端请求跨域问题(详细教程)
文章目录 一、前言二、解决方式 2.1 使用 CrossOrigin 注解(简单方便,适用于单个或少量接口)2.2 全局配置跨域(适用于整个项目中大量接口都需要跨域的情况)2.3 使用过滤器来处理跨域(更底层的实现方式&…...
黑苹果长期维护指南:从零开始打造完美macOS体验
黑苹果长期维护指南:从零开始打造完美macOS体验 【免费下载链接】Hackintosh Hackintosh long-term maintenance model EFI and installation tutorial 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintosh 还在为找不到适合自己机型的黑苹果EFI而烦恼吗…...
Steam成就管理器:如何安全高效地掌控你的游戏成就数据
Steam成就管理器:如何安全高效地掌控你的游戏成就数据 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager Steam Achievement Manager(…...
白嫖 1000 次!这款毫秒级企业工商数据 API 实测,真香!
作为一名长期在需求一线摸爬滚打的后端开发,最头疼的就是接各种第三方接口。尤其是企业工商数据这块,由于数据量大、更新快,很多大厂的 API 授权费动辄上万,对于咱们这种接个外包、做个 Demo 验证或者初创项目的团队来说ÿ…...
Step3-VL-10B-Base在软件测试中的应用:自动化生成测试用例与UI验证
Step3-VL-10B-Base在软件测试中的应用:自动化生成测试用例与UI验证 1. 引言 你有没有过这样的经历?面对一份几十页的软件需求文档,要从中梳理出成百上千个测试点,光是想想就让人头疼。或者,在每次版本更新后…...
避坑指南:uniapp中使用uni.requestPayment实现支付宝沙箱支付的完整流程
Uniapp支付宝沙箱支付全流程实战:从环境搭建到避坑指南 第一次在Uniapp中集成支付宝支付功能时,我盯着控制台反复出现的"商家订单参数异常"错误提示整整两天。作为一个从微信生态转战支付宝平台的开发者,本以为支付接口的调用都是…...
保姆级教程:GPT-SoVITS一键部署,5秒语音克隆你的专属AI助手
保姆级教程:GPT-SoVITS一键部署,5秒语音克隆你的专属AI助手 1. 引言:为什么选择GPT-SoVITS 想象一下,你只需要录制5秒钟的语音,就能让AI用你的声音朗读任何文字——这就是GPT-SoVITS带来的神奇体验。作为当前最先进的…...
【OpenClaw全面解析:从零到精通】第039篇:OpenClaw企业级应用完全指南:从30个场景选择到流程优化
上一篇 [第038篇] OpenClaw v2026.4.7v2026.4.8 深度解析:推理中心、记忆-wiki与多模态编辑能力全面升级 下一篇 未完待续 摘要 OpenClaw企业级应用正在成为2026年企业数字化转型的重要引擎。GitHub上已突破33万Star的这款开源AI Agent框架,通过多智能体…...
保姆级教程:手把手教你为ROS机器人定制Rviz多目标点导航插件(基于move_base)
从零构建ROS机器人专属Rviz导航插件:多目标点顺序导航实战指南 当你的ROS机器人需要在复杂环境中执行多点位任务时,一个可靠的多目标点导航插件能极大提升工作效率。本文将带你深入理解Rviz插件机制,并手把手教你如何基于开源代码定制适配自己…...
智慧教室整体建设服务商怎么选?广凌股份给出四大参考
“设备装上了,老师不会用;系统对接了,数据不通;项目验收了,后续没人管。”在2026年教育信息化论坛上,一位高校信息化负责人的这番话引发了不少共鸣。智慧教室建设已进入深水区,选择一家可靠的智…...
Vite代理配置实战:如何通过响应头追踪真实接口地址
1. 为什么需要追踪Vite代理的真实接口地址 前端开发过程中,使用Vite的代理功能解决跨域问题已经成为标配。但实际调试时经常会遇到这样的困扰:浏览器Network面板里看到的请求地址全是http://localhost:5173/api/user这样的本地路径,根本不知道…...
