论文:ViT(Transformer 图像分类)

2023-11-18

论文:https://arxiv.org/abs/2010.11929
pytorch代码:https://github.com/lucidrains/vit-pytorch

不了解Transformer的,建议先看这篇:https://blog.csdn.net/czt_666/article/details/118113634


架构

如上图所示,ViT 的基本步骤:

  1. 图片切分为图块
  2. 所有图块作为输入,输入经过一个线性映射并将图块展平为一维向量(patch embedding)
  3. 嵌入可学习的类别
  4. 展平的图块嵌入位置(图片无空间信息)
  5. Transformer Encoder
  6. MLP Head
  7. 分类

Transformer Encoder

ViT 的Transformer Encoder(左图)和 Attention is all you need的Transformer编码器(右图)类似,使用了 Multi-Head AttentionMLP两种残差块,不同的是归一化层Norm前置了,还有就是MLP和前馈网络,不过二者差不多。

ViT 的Transformer Encoder的表达式如下:

在这里插入图片描述
其中,公式(1)为步骤1~4,稍后再做解释。

公式(2) 为残差块 Multi-Head Attention ,图中仅显示了一个编码器,我们称之为子编码器 z l − 1 z_{l-1} zl1为上一个子编码器的输出, LN \text {LN} LN为LayerNorm归一化层,MSA为Multi-Head self-attention,MSA为残差,加上 z l − 1 z_{l-1} zl1就是完整的残差结构。

公式(3) 为残差块 MLPMulti-Head Attention的输出作为残差块 MLP的输入,MLP函数为感知机。


步骤1~4

1. 图片切分为图块

标准的transformer的输入是1维的token embedding。为了处理二维图像,

  • 图像尺寸为 H × W H\times W H×W
  • 图块的尺寸为 P × P P\times P P×P
  • 图块的数量为 N = H W P 2 N=\frac{HW}{P^2} N=P2HW

2. 线性映射和展平(patch embedding)

将图块展平,并使用可训练的线性投影映射到隐矢量D的大小,将此投影的输出称为patch embedding

3. 嵌入可学习的类别

类似BERT的[class] token,作者为patch embedding序列 ( z 0 0 = x c l a s s ) (z_0^0=x_{class}) (z00=xclass)预先准备了一个可学习的embedding。

4. 嵌入位置

位置embedding会添加到patch embedding中,以保留位置信息。作者使用标准的可学习1D位置embedding,因为作者没有观察到使用更高级的2D感知位置embedding可显着提高性能。embedding向量的结果序列用作编码器的输入。

具体表达式为公式(1)
在这里插入图片描述


后言

计算机视觉中,卷积结构仍然占主导地位。 受NLP中Transformer扩展成功的启发,作者尝试将标准Transformer直接应用于图像,并进行最少的修改。为此,作者将图像拆分为小块,并提供这些小块的线性嵌入序列作为Transformer的输入。图像图块与NLP应用程序中的token(words)的处理方式相同,以监督方式对模型进行图像分类训练。

  • 中等规模的数据集(例如ImageNet)进行训练时,模型所产生的适度精度要比同等规模的ResNet低几个百分点

  • 更大的数据集上训练模型(14M-300M图像),ViT经过足够的预训练并转移到数据点较少的任务时,可以获得出色的结果。

当在公共ImageNet-21k数据集或内部JFT-300M数据集上进行预训练时,ViT在多个图像识别基准上达到或超越了最新水平。特别是,最佳模型

  • 在ImageNet上达到88.55%的精度
  • 在ImageNet-ReaL上达到90.72%的精度
  • 在CIFAR-100上达到94.55%的精度
  • 在19个任务的VTAB上达到77.63%的精度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文:ViT(Transformer 图像分类) 的相关文章

  • Vue 中实现 excel文件上传功能

    Duang 最近搭建了一个自己的博客小破站 欢迎各位小伙伴来访吖 ares coder blog portalhttps www ares stack cn blog service game 场景 上传excel表 并将excel表中的数
  • Django实现前后端分离开发

    前后端分离开发 在传统的Web应用开发中 大多数的程序员会将浏览器作为前后端的分界线 将浏览器中为用户进行页面展示的部分称之为前端 而将运行在服务器 为前端提供业务逻辑和数据准备的所有代码统称为后端 所谓前后端分离的开发 就是前后端工程师约

随机推荐

  • Hadoop 之上的数据建模 - Data Vault 2.0

    对比传统的基于 RDBMS 之上的数据仓库和商业智能项目 尝试着说说 Hadoop 之上的数据仓库 从ETL 数据存储 到分析展现 重点围绕数据建模方面做分析 因为这是本文的重点 介绍一份新的数据建模方式 Data Vault 2 0 ET
  • HTML框架构建

    HTML框架构建 1 划分框架 A 使用标签决定如何划分框架 必须要有标签设定每个小窗口的网页 该标签中有src属性为每个URL值指定一个HTML文件 这个文件必须事先做好 B 标签常用的属性 属性 描述 cols 用 像素数 或 分个左右
  • Android-PullToRefresh下拉刷新库基本用法

    PullToRefresh是一套实现非常好的下拉刷新库 它支持 ListView ExpandableListView GridView WebView ScrollView HorizontalScrollView ViewPager 等
  • AutoEncoder (自编码/非监督学习)

    神经网络也能进行非监督学习 只需要训练数据 不需要标签数据 自编码就是这样一种形式 自编码能自动分类数据 而且也能嵌套在半监督学习的上面 用少量的有标签样本和大量的无标签样本学习 这次我们还用 MNIST 手写数字数据来压缩再解压图片 然后
  • Boost升压电路调试

    背景 项目用到了一款升压电路 将12V升压到32V 电流要求有12A 最大18A 设计的方案是使用Boost Controller 外置MOS来实现 选定的Controller芯片为Maxim的MAX25203 问题 回板后进行调试 在不使
  • 硕士毕业论文应该如何梳理论文框架?

    硕士毕业论文相比于本科论文来说 具有更为广阔的知识面 对于研究的课题也更有深度 如果硕士毕业论文能取得一个很高的成绩 那么不管之后是继续求学还是找工作 都会有一定的优势 我曾经就硕士论文这方面和我的一个同学讨论过 当时我询问他是怎么取得69
  • React+React-Redux+Webpack+Express+MongoDB完整项目利用PM2+github部署到服务器

    React项目使用pm2部署上线 简述 项目概述 项目文件和代码结构 登录到服务器 输入指令 安装和配置nginx 安装MongoDB 打通三端 客户端 github 服务器 本地到github 服务器到github 本地到服务器 pm2部
  • 正大讲解什么叫国际期货?需要多少本金?

    国际期货是指交易所建立在中国大陆以外的期货交易 以美国 英国 新加坡等交易所内的产品为常见交易期货合约 有些期货合约品种会对国内期货价格变动产生影响 所以国内投资者可以参考国际期货行情进行期货交易 开户没有资金限制 但交易期货要交纳手续费和
  • 32 位的有符号整数的取值范围以及数值溢出

    short int long 是C语言中常用的三种整数类型 分别称为短整型 整型 长整型 在现代操作系统中 short int long 的长度分别是 2 4 4 或者 8 它们只能存储有限的数值 当数值过大或者过小时 超出的部分会被直接截
  • 关于在VM虚拟机下,安装OpenWrt软路由,所遇错误及解决方法。

    首先是去阿里的openwrt源下载的镜像为img格式 vm虚拟无法识别 需要转换为iso格式或者vmdk格式 用软碟通转换iso格式失败 于是准备转换成vmdk格式 网上大部分采用starwindconverter软件 但是最新的版本老是报
  • 数字水印

    数字水印 Digital Watermarking 1 技术是将一些标识信息 即数字水印 直接嵌入数字载体当中 包括多媒体 文档 软件等 或是间接表示 修改特定区域的结构 且不影响原载体的使用价值 也不容易被探知和再次修改 但可以被生产方识
  • Golang笔记:使用http包实现基础WebServer功能

    文章目录 目的 监听请求并响应 请求解析 进行响应 静态文件服务 总结 目的 WebServer是一种非常常用的功能 Golang的高并发特性在处理此类工作中也有较大的优势 同时借助标准库中的 net http 包可以非常快速的编写WebS
  • mysql Specified key was too long; max key length is 767 bytes

    MySQL默认的索引最大长度是767字节 在5 5版本开始后可以通过设置innodb large prefix on来增大索引长度 可达到3072字节 但是只有row format DYNAMIC COMPRESSED的情况下索引的长度才能
  • 系统学Python(一)整数、浮点数、布尔值及类型转换

    整数 int类型数据是整数 正整数或负整数 没有小数 不限制长度 举例1 x 2 print x print type x 用tpye 函数可以查看变量类型 举例2 y 3 print y print type y 自动化QQ交流群 704
  • 常用的几款性能测试软件

    JMeter Apache JMeter是一款免费 开源的性能测试工具 广泛应用于Web应用程序和服务的性能测试 它支持模拟多种不同类型的负载 可以测试应用程序在不同压力下的性能表现 并提供丰富的图表和报告来分析测试结果 优点 免费且开源
  • youtube-dl 中文版帮助文档目录

    选项 常规选项 h help打印此帮助文本并退出 version打印程序版本并退出 U update将此程序更新为最新版本 使 确保您具有足够的权限 如果需要 使用sudo运行 i ignore errors继续出现下载错误 例如 跳过播放
  • JQueryUI如何读取本地文件

    1 设计html界面 这用了两个按钮主要是因为file类型的按钮太丑了 后面跟一个输入框 这里把它隐藏 用下面的按钮激活文件选择对话框
  • Adroid游戏开发实例讲解(四)-电子白板附源码

    Adroid游戏开发实例讲解 四 电子白板附源码 程序之美 电子白板 在很多Android设备中经常会用到 比如说Android电视 触摸屏用上手写笔 轻松在上面写字 比如视频教学Android设备 有很多培训教学机构 都放有Android
  • phpstudy php调试,phpStudy vscode 搭建debug调试的教程详解

    下载地址 Xdebug zend extension D phpstudy pro Extensions php php7 3 4nts ext php xdebug dll xdebug collect params 1 xdebug c
  • 论文:ViT(Transformer 图像分类)

    论文 https arxiv org abs 2010 11929 pytorch代码 https github com lucidrains vit pytorch 不了解Transformer的 建议先看这篇 https blog cs