【Transformer学习笔记】VIT解析

2023-11-17

很久以前科学家做过一个生物实验,发现视觉神经元同样可以被训练来作听觉神经元之用。受此启发,不少计算机研究者也在寻找着机器学习领域的大一统–将CV任务和NLP任务使用相同或者类似的结构进行建模。

随着transformer在nlp领域已经杀出了一片天,便有研究者想用它来进军cv领域。Vit,vision transformer正是在此道路上跨出的一大步。

transformer是世界上最好的结构!(误)

原文地址

VIT整体结构

在这里插入图片描述
论文中的结构图还是十分简单易懂的,相信如果之前接触过Transformer系列,那么看懂这张图不是难事。

首先和在nlp领域中的应用一大不同,就是VIT只有encoder编码层,没有decoder。第二个不同可能就是输入从字符变成了切碎的图片。

其他的embedding(也就是linear projection)和position embedding,muti-head attention基本都是熟悉的配方。

输入转换

首先看输入,不同于cnn中滑动窗口式的卷积,VIT中直接采用了non-overlapping的分割方式,将一张图片分割成很多个大小一致的patches

transformer系列的输入都很有意思。即使patches在一开始的时候是一个个图片块,也就是矩阵,最后为了向nlp中的词向量的表示看齐,都会被拉成条(flatten)。

即使图片有3通道,这三个通道也要被拉平后拼接。如下公式。
H × W × C → N × ( P 2 C ) H \times W \times C \rightarrow N \times (P^{2} C) H×W×CN×(P2C)
其中H,W,C分别是图片的高,宽,通道。N是patches的总数, ( P , P ) (P,P) (P,P)是patches的大小。

这个公式的意思就是每个三维的图片块最后都被拉成一条了。

之后经过linear projection层进行映射,就得到了一个 N × D N \times D N×D大小的输入,同样,此处省略了batchsize。

位置编码

NLP中的位置编码用来记住词语的上下文关系,VIT中的位置编码同样也是为了记住图片之间的相对位置关系。

值得一提的是,VIT中仿照BERT的做法,加了一个classification patch,作为额外的输入。其大小为 1 × D 1\times D 1×D,和经过了linear projection的patch大小一致。这个patch加在了最前头。所以最终进入位置编码实际上有 N + 1 N+1 N+1个patches。

论文中使用的是可学习的一维位置编码,其实就是初始化了一个可学习的随机变量,加到了原本的输入上。

attention

VIT的encoder基本可以说是完全照搬了NLP中encoder的结构了,堆叠了很多层,每层执行一次多头注意力机制。
MLP其实也只是换了一个名字,所做的也是先升维再降维。
具体的可以看我的上一篇文章,里面有注意力机制的详解。
【Transformer学习笔记】Transformer开山之作: Attention is All you Need
如果把每层都看作一个黑盒子,其实encoder做的就是信息的融合,把每个patches的表示和其他所有patches进行融合,达到全局视野的效果。每层的输入和输出大小不变。

分类头

在这里插入图片描述

最后面的classification层中,并没有取所有的patches作为输入,因为在多头注意力机制中,每个patch其实都已经融合了所有的patches的信息,因此此处只取了一个,也就是前面提到的classification patch映射到物体种类数量进行分类。

总结

VIT将transformer引入了CV领域,并且对比现有的CNN方法,也在各类数据集上取得了不错的成果。

但是VIT只在分类work的比较好,因为它虽然有全局性,但是图片的平移不变形和尺度不变形它基本就没办了。

此外,它的计算复杂度也是比较惊人的,因为它的编码是像素级的,所以计算量会随着图片大小二次方地增长。

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

【Transformer学习笔记】VIT解析 的相关文章

随机推荐

  • The Raft Group [naming_instance_metadata] did not find the Leader node;caused: The Raft Group

    1 异常信息 caused errCode 500 errMsg do metadata operation failed caused com alibaba nacos consistency exception Consistency
  • 安装MySQL(无管理员权限)

    Install MySQL without administrator permission Step 1 Download https cdn mysql com Downloads MySQL 5 7 mysql 5 7 24 win3
  • “echo 0 > /proc/sys/kernel/hung_task_timeout_secs“ disables this message

    现象 主机无缘无故死机 主机上服务无响应 日志出现大量 echo 0 gt proc sys kernel hung task timeout secs disables this message 日志输出信息 分析 echo 0 gt p
  • Future异步

    Future异步是Java中常用的异步编程方式之一 它能够在代码执行过程中返回一个代表未来结果的Future对象 使得程序能够在等待结果的同时继续执行其他操作 本文将从Future异步的定义 使用方法和优缺点等方面对其进行详细介绍 一 Fu
  • Qt信号发送过快,槽函数处理不过来解决方法

    问题 跨线程使用信号与槽连接 信号的发送时间间隔小于槽函数处理的时间间隔 造成的问题 子线程下的槽函数 用sleep来模拟槽函数的耗时操作 void MyThread myTimeout qDebug lt lt test QThread
  • 矩阵转置代码,速度优化

    今天心血来潮 想写个CPU版本的矩阵转置代码 过几天写GPU版本的 按照我的想法 就是以下几种方式 1 gt 整块矩阵转置 横读纵写或纵读横写 2 gt 将矩阵分成固定大小的block block与block可以分成横读纵写或纵读横写 而b
  • const修饰成员函数

    常函数 成员函数后加const后 我们称这个函数为常函数 在常函数内不可以修改成员的属性 成员属性声明时加关键字mutable后 在常函数中依然可以修改 常对象 声明对象前加const称该对象为常对象 常对象不能在类外修改其成员属性 但可以
  • K8s(Kubernetes)工具

    文章目录 Kubernetes简介 kubernetes背景和历史 kubernetes特点 kubernetes相关概念 基本对象 Pod Service Volume 持久存储卷 Persistent Volume PV 和持久存储卷声
  • linux怎么用python运维命令_运维笔记--linux环境提示python: command not found

    场景描述 新部署的容器环境 终端执行python命令 提示没有该命令 从报错异常可以看出 可能是python环境未安装 分析思路 检查python路径 方式一 type a python 方式二 ls l usr bin python ls
  • 【python总结】python学习框架梳理

    目录 基础 注释与变量名等基本规则 关键字 操作符 数字 流程控制 序列 文本序列 字符串 二进制序列 字节 列表 元组 映射 字典 集合 函数 面向对象编程 错误和异常 模块 数据结构与算法 数组 字符串 链表 二分查找 排序 栈 队列
  • 企业微信回调-通讯录改变回调

    https work weixin qq com api doc 90000 90135 90966 先配置url token encodingAESKey import com ichangtou common util AesExcep
  • Maven环境正常,打包后使用报 java.lang.NoClassDefFoundError: javax/servlet/ServletInputStream 错误

    也是找的网上的解决方法 下载一个tomcat 里面包含着必要的jar包 然后把TOMCAT PATH common lib servlet api jar复制出来 放到 JDK PATH jre lib ext下面 如果不行就重启一下项目
  • 区块链都记录了哪些信息?

    区块如何连接成区块链 之前的文章里又说到区块链 想要知道区块链上的信息首先需要了解一下什么是区块链 区块链其实是一串使用密码学算法产生的区块连接而成 每一个区块上写满了交易记录 区块按顺序相连形成链状结构 就像世界上的电脑一样 电脑每一台电
  • 十四、内置模块path、邂逅Webpack和打包过程、css-loader

    一 内置模块path 1 path介绍 2 path常见的API 这里重点讲一下path resolve 看上面的例子 从右往左开始解析 所以一开始解析的就是 abc txt 这个时候就会把它当成一个绝对路径了 为什么 因为看到斜杠 默认就
  • httpclient工具类

    import java io IOException import java net URI import java util ArrayList import java util List import java util Map imp
  • Channel-wise Knowledge Distillation for Dense Prediction阅读笔记

    Channel wise KD阅读笔记 一 Title 二 Summary 三 Research Object 四 Problem Statement 五 Method 5 1 spatial distillation 5 2 Channe
  • macOS使用 之 读写NTFS格式磁盘

    因为版权问题 macOS并没有开放是支持Windows NTFS 格式硬盘的写入操作 因此对MAC用户使用移动磁盘造成了极大的困扰 下面楼主就来介绍一下mac系统中读取NTFS格式的简单办法 1 使用常见付费软件 如果你土豪级别的人物 不在
  • CHROME扩展开发之·消息传递Message(window.message)

    由于content scripts运行在Web页面的上下文中 属于Web页面的组成部分 而不是Google Chrome扩展程序 但是content scripts又往往需要与Google Chrome扩展程序的其他部分通信以共享数据 这可
  • 小红书流量逻辑、KOL模型、内容营销

    小红书平台专项课 品牌营销训练营 融合了千瓜历年研究和整理的成果 结合实际案例给到大家最全最干货的内容 本文选取了课程中的精华部分 为大家提供一份历年品牌营销投放的实操总结 助力2022年品牌营销增长 从消费者层级到消费者决策 从品牌内容营
  • 【Transformer学习笔记】VIT解析

    很久以前科学家做过一个生物实验 发现视觉神经元同样可以被训练来作听觉神经元之用 受此启发 不少计算机研究者也在寻找着机器学习领域的大一统 将CV任务和NLP任务使用相同或者类似的结构进行建模 随着transformer在nlp领域已经杀出了