当前位置: 首页 > news >正文

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 多路复用操作&#xff0c;调用 select()会一直阻塞&#xff0c;直到某一个或多个文件描述符成为就绪态&#xff08;可以读或写&#xff09;。其函数原型如下所示&#xff1a; #include <sys/select.h> int select(int nfds, fd_set *re…...

建造者模式(或者称为生成器(构建器)模式)

一、什么是建造者模式&#xff1f; 将复杂对象的构建与表示进行分离&#xff0c;使得统一的构建过程&#xff0c;可以创建出不同的对象表现模式 就是将复杂对象里面的成员变量&#xff0c;设置不同的值&#xff0c;使得生成出来的对象拥有不同的属性值&#xff1b; 二、特点…...

【深度学习】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数据集和提交链接 特征选择&#xff08;主要修改地方&#xff09; 在sample code的基础上主要修改了Select_feat选择特征函数。 首先&#xff0c;因为数据集中的第一列是id&#xff0c;先在raw_x_train&#xff0c;raw_x_valid&#xff0c;raw_x_test中都去掉这一列。其…...

MySQL下载安装DataGrip可视化工具

目录 WinMySQL下载安装步骤MySQL配置添加环境变量 Mac下载安装配置环境变量 DataGrip可视化工具以Win为例了。Mac忘记截图了。步骤都一样 Win MySQL下载 官网&#xff1a; https://www.mysql.com/ 直接进下载界面&#xff1a; https://downloads.mysql.com/archives/installe…...

多平台下Informatica在医疗数据抽取中的应用

一、引言 1.医疗数据抽取与 Informatica 概述 1.1 医疗数据的特点与来源 1.1.1 数据特点 医疗数据具有显著的多样性特点。从数据类型来看&#xff0c;涵盖了结构化数据&#xff0c;如患者的基本信息、检验检查结果等&#xff0c;这些数据通常以表格形式存储&#xff0c;便于…...

用公网服务器实现内网穿透

首先需要一个公网服务器 下载frp 搜索github下载到frp&#xff0c;服务端frps/客户端frpc。。下载的时候要注意自己本地内网机的cpu版本和服务端cpu架构 我的电脑是mac M1PRO版本 下载的是&#xff1a;darwinarm64 比如 服务端一般是Linux&#xff08;Intel 64位CPU&#xf…...

为什么mysql更改表结构时,varchar超过255会锁表

在 MySQL 中&#xff0c;当修改表结构并将 VARCHAR 字段的长度设置为超过 255 时&#xff0c;可能会出现锁表的情况。这与 MySQL 的存储引擎&#xff08;主要是 InnoDB&#xff09;以及表的底层存储方式相关。 原因分析 行格式变化 InnoDB 存储引擎支持多种行格式&#xff08;…...

ASP.NET Core中 JWT 实现无感刷新Token

在 Web 应用开发中&#xff0c;用户登录状态的管理至关重要。为了避免用户频繁遇到登录过期的问题&#xff0c;我们可以通过实现 JWT&#xff08;JSON Web Token&#xff09;刷新机制来提升用户体验 推荐: 使用 Refresh Token&#xff08;双 Token 机制&#xff09; 1. 生成和…...

函数(函数的概念、库函数、自定义函数、形参和实参、return语句、数组做函数参数、嵌套调用和链式访问、函数的声明和定义、static和extern)

一、函数的概念 •C语⾔中的函数&#xff1a;⼀个完成某项特定的任务的⼀⼩段代码 •函数又被翻译为子函数&#xff08;更准确&#xff09; •在C语⾔中我们⼀般会⻅到两类函数&#xff1a;库函数 ⾃定义函数 二、库函数 1 .标准库和头文件 •C语⾔的国际标准ANSIC规定了⼀…...

物联网在烟草行业的应用

物联网技术在烟草行业的应用 物联网技术在烟草行业的应用主要体现在以下几个方面&#xff1a; 智能制造 &#xff1a;物联网技术可以实现对生产过程中的关键参数进行实时监测&#xff0c;确保产品的质量稳定可靠。同时&#xff0c;通过对设备的远程维护和故障诊断&#xff0c;…...

第6章:Python TDD实例变量私有化探索

写在前面 这本书是我们老板推荐过的&#xff0c;我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后&#xff0c;我突然思考&#xff0c;对于测试开发工程师来说&#xff0c;什么才更有价值呢&#xff1f;如何让 AI 工具更好地辅助自己写代码&#xff0c;或许…...

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 &#xff0c;正常回显。 2.输入1 &#xff0c;报错false&#xff0c;为字符型注入&#xff0c;单引号闭合。 原因&#xff1a; https://mp.csdn.net/mp_blog/creation/editor/145170456 3.尝试查询字段&#xff0c;回显位置&#xff0c;数据库&#xff0c;都是这个。…...

微软宣布Win11 24H2进入新阶段!设备将自动下载更新

快科技1月19日消息&#xff0c;微软于1月16日更新了支持文档&#xff0c;宣布Windows 11 24H2进入新阶段。 24H2更新于2024年10月1日发布&#xff0c;此前为可选升级&#xff0c;如今微软开始在兼容的Windows 11设备上自动下载并安装24H2版本。 微软表示&#xff1a;“运行Wi…...

SpringBoot:解决前后端请求跨域问题(详细教程)

文章目录 一、前言二、解决方式 2.1 使用 CrossOrigin 注解&#xff08;简单方便&#xff0c;适用于单个或少量接口&#xff09;2.2 全局配置跨域&#xff08;适用于整个项目中大量接口都需要跨域的情况&#xff09;2.3 使用过滤器来处理跨域&#xff08;更底层的实现方式&…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...