ViT(vision transformer)原理快速入门

2023-11-18

本专题需要具备的基础:

  • 了解深度学习分类网络原理。
  • 了解2017年的transformer。

Transformer 技术里程碑:

ViT简介

时间:2020年CVPR

论文全称:《An Image is Worth 16*16 Words: Transformers for Image Recognition at Scale》

发明人:谷歌团队

简介:论文中提出了 Vision Transformer (ViT),能直接利用 Transformer 对图像进行分类,而不需要卷积网络。(论文中也提到CNN+transformer,但效果差不多)

基本原理:将图像划分为16x16的小切片,转成序列,输入ViT中,得到分类。

ViT算法全貌

 ViT算法结构图

 有了基础,理解上图不是很复杂,代码也不是很长,记录几个要点:

  1. 图像是怎么输入transformer中的:用一个16x16尺度,步长为16,通道数为768的卷积,对图像进行特征提取,这种卷积,相当于把图片信息,分割为独立的14*14的小切片。14x14后续会拉平,就成为NLP中序列一样。
  2. 类别编码(class token):假设你9个向量经过编码器之后,你该选择哪一个向量进入到最后的分类头呢?因此这里作者给了额外的一个用于分类的向量,与输入进行拼接。同样这是一个可学习的变量。这东西刚开始会随机初始化,作为图像的类别编码信息,然后会和图像切片信息做通道拼接。
  3. 位置编码:位置编码有两种方式,一种以固定算法生成,另一种是自动学习,ViT中用的自动学习。
  4. 怎么得到分类结果:经过transformer encoder后,数据维度为197 x 768,其中,1x768是网络预测的类别信息,196x768是图像每个‘切片’的信息。后续只要单独提取出类别信息这一维度,通过全连接层(1 x 768转成 1 x class_num)、softmax等,就能让网络学会给出类别索引序号。

较好的参考资料

Vision Transformer详解_霹雳吧啦Wz-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ViT(vision transformer)原理快速入门 的相关文章

随机推荐

  • 【项目】BlogTest(Web自动化)

    个人博客Web自动化 一 项目背景 二 项目功能 三 测试计划 功能测试 自动化测试 一 项目背景 个人 博客系统采用前后端的方法来实现 同时使用了SpringBoot MySQL Ajax等相关技术 同时部署到云服务器上 前端主要有四个
  • Sql Server 存储过程

    摘自收集引言 前面我们曾提到过 T SQL是一门结构化查询语言 我们曾学习过C 语言的函数 使用函数时 需要两步 第一步 定义函数 它允许包含参数和返回值 第二步 调用函数 如果有参数还需传递参数 这样就执行了函数中的代码 函数可以反复调用
  • Redis cluster集群:原理及搭建

    1 为什么使用redis redis是一种典型的no sql 即非关系数据库 像python的字典一样 存储key value键值对 工作在memory中 所以很适合用来充当整个互联网架构中各级之间的cache 比如lvs的4层转发层 ng
  • 基于openstack的免费云计算平台使用方法总结(IBM power架构 、支持docker)

    声明 此文档只做学习交流使用 请勿用作其他商业用途 author 朝阳 tony E mail linzhaolover 163 com Create Date 2015 3 6 13 55 38 Friday Last Change 20
  • 服务器配置vue项目的默认路由,Vue-Router项目设置Nginx伪静态

    Vue Router项目设置Nginx伪静态 使用Vue Vue Router的项目 在history模式下 出现了刷新页面404的问题 服务器为Nginx 出现刷新404的原因是Vue Router定义的路由并没有真实的存在于服务器上 N
  • 图像镜像翻转

    将图像左右镜像翻转 生成翻转后的图像 python3代码 import numpy as np import cv2 import matplotlib pyplot as plt 图片镜像翻转 def left2right img pat
  • STM32矩阵按键(定时器)

    由于采用延时函数会影响程序速度 所以采用定时器中断写的矩阵扫描按键 利用简单的状态机思想 1 定时器初始化 定时器初始化 void TIM2 Configuration void TIM TimeBaseInitTypeDef TIM Ti
  • C++的编程规范

    C 是一种功能强大的编程语言 具有广泛的应用领域 编写高质量 可维护的C 代码需要遵循一定的编程规范 目录 命名规范 头文件和包含 缩进和空格 注释 函数和类 错误处理 内存管理 代码风格 命名规范 使用有意义且易于理解的变量 函数和类名
  • img标签图片加载失败显示图片

    img标签图片加载失败显示图片 onerror nerr r null src image community initialize img png
  • dfs序(基础讲解)

    dfs序简介 dfs序一般用于树状结构中 如图 图中红色序号为每个点对应的dfs序序号 黑色序号为每个点默认的序号 我称之为节点序序号 下文同 可见 dfs序如其名 dfs序序号是按照dfs顺序标记的 所以说给每个节点安排上dfs序序号也很
  • oracle存储过程调试

    oracle如果存储过程比较复杂 我们要定位到错误就比较困难 那么可以存储过程的调试功能 先按简单的存储过程做个例子 就是上次做的存储过程 proc test 1 先在数据库的procedures文件找到我们之前创建存储过程 2 选中存储过
  • R语言 Scale函数

    在我们做数据的时候 一个数据会有很多特征 比如在描述影响房价的因素 有房子面积 房间数量等 而不同的特征存在不同的量纲 为了消除量纲 数值差异等 我们就需要对数据进行中心化和标准化 那什么是中心化 什么是标准化呢 所谓中心化就是将数据减去均
  • STL中的排序

    0 前言 STL 为什么你必须掌握 对于程序员来说 数据结构是必修的一门课 从查找到排序 从链表到二叉树 几乎所有的算法和原理都需要理解 理解不了也要死记硬背下来 幸运的是这些理论 都已经比较成熟 算法也基本固定下来 不需要你再去花费心思去
  • 利用Figlet工具创建酷炫Linux Centos8服务器-登录欢迎界面-SHELL自动化编译安装代码

    因为我们需要生成需要的特定字符 所以需要在当前服务器中安装Figlet 默认没有安装包的 其实如果我们也只要在一台环境中安装 然后需要什么字符只要复制到需要的服务器中 并不需要所有都安装 同样的 我们也可以利用此生成的字符用到脚本运行的开始
  • 大数据入门 - 基础概念

    文章目录 1 发展历史 2 分布式系统 可靠性 可扩展性 可维护性 4 单机引擎的问题 事务 写入和存储 数据的序列化 3 GFS Google File System master 的快速恢复性和可用性保障 数据写入的优化 4 MapRe
  • QT中setWindowFlags和 setAttribute使用详解及注意问题

    1 setWindowFlags QT WindowFlags 主要设置一些窗口标志 平常开发中主要有两类需求 1 1 将某一子窗口设置为最顶层窗口 使用Qt Tool 属性 setWindowFlags Qt Tool 1 2 重新定义窗
  • 【Redis】4、全局唯一 ID生成、单机(非分布式)情况下的秒杀和一人一单

    目录 一 利用 Redis 实现全局唯一 ID 生成 1 为啥要用全局唯一 ID 生成 2 全局唯一 ID 生成器 3 全局 ID 的结构 4 代码实现 RedisIdWorker Test 5 全局唯一 ID 其他生成策略 二 添加优惠券
  • 使用python爬取淘宝商品信息

    要使用Python爬取淘宝商品信息 您可以按照以下步骤 安装必要的库 您需要安装Python的requests库和BeautifulSoup库 要使用Python爬取淘宝商品信息 您可以按照以下步骤 安装必要的库 您需要安装Python的r
  • 「科普」一文读懂生产制造MES系统

    谈及MES必须先谈生产 那什么是生成呢 生产管理是通过对生产系统的战略计划 组织 指挥 实施 协调 控制等活动 实现系统的物质变换 产品生产 价值提升的过程 生产管理是企业价值链的主要环节 是构成企业核心竞争力的关键内容 1 什么是MES系
  • ViT(vision transformer)原理快速入门

    本专题需要具备的基础 了解深度学习分类网络原理 了解2017年的transformer Transformer 技术里程碑 ViT简介 时间 2020年CVPR 论文全称 An Image is Worth 16 16 Words Tran