VIT论文阅读

论文地址:https://arxiv.org/pdf/2010.11929.pdf

VIT论文阅读

    • 摘要
    • INTRODUCTION
    • 结论
    • RELATEDWORK
    • METHOD
      • 1.VISIONTRANSFORMER(VIT)
        • 整体流程
        • 消融实验
          • HEAD TYPE AND CLASSTOKEN
          • poisitional embedding
        • 整体过程公式
        • Inductive bias
        • Hybrid Architecture
      • 2.FINE-TUNINGANDHIGHERRESOLUTION
    • 实验

摘要

虽然transformer已经是nlp领域的标准,但是transformer来做cv很有限,cv中跟attention跟cnn一起使用,或者cnn中的某些卷积替换成attention,整体结构不变。文章提出,直接使用transformer也可以在图像,尤其在大数据做训练再迁移到中小数据集。同时,transformer需要更少的训练资源。(2500天TPU V3)

INTRODUCTION

nlp领域的应用,transformer已经是必选模型。主流方式:在大规模数据集做预训练再去特定领域小数据集做微调(Bert)

transformer应用到cv难点:2d图片变成1d数据

self-attention应用到cv领域,

1.featuremap当做transformer输入,

2.孤立自注意力:通过局部小窗口,轴注意力:2d矩阵拆分为2个1d,先在高度维度做self-attention,再宽度维度做self-attention

2理论上高速,没有在硬件上加速,模型不够大。

直接应用transformer在图片领域,不做修改。把图片分成几个patches,每个patch通过fc layer得到一个linear embedding,将其输入给transformer。图片块类似nlp里面的tokens。训练使用有监督

在这里插入图片描述

在中规模数据集,vit缺少归纳偏置(locality, translation equivariance:f(g(x))=g(f(x)),效果较弱。在大规模预训练,在下游任务去vit就可以取得相近或者更好的结果。

结论

抽图片块、位置编码之外没有引入归纳偏置。图像序列的图像块直接做transformer,简单、扩展性好的策略与大规模数据结合,达到了很好的效果。

未来方向:transformer在检测、分割的应用,自监督的预训练方式

模型变大达到更好的结果。

RELATEDWORK

transformer在nlp的应用:

BERT:denoising self-supervised(完形填空)

GPT:language modeling (next word pre)

在cv应用:

如果每个像素点当做一个元素,俩俩自注意力,平方复杂度难以应用

1.local neighborhoods

2.sparse transformer,稀疏点做自注意力

3.应用到不同大小block,或者按轴做自注意机制

需要用复杂工程加速算子

transformer和cnn结合:涵盖各领域

与之相似的工作:

1.Jean-Baptiste Cordonnier,Andreas Loukas,and Martin Jaggi. On the relationship between self-attention and convolutional layers. In ICLR, 2020.

2.iGPT:生成性模型,也使用transformer。微调后性能72%

3.其他相似工作:大数据集预训练;数据集ImageNet-21k、JFT-300M

METHOD

模型设计贴近transformer原理,好处:直接使用nlp的transformer架构

1.VISIONTRANSFORMER(VIT)

在这里插入图片描述

整体流程

1.图分成patch,变成序列

X: 224x224,使用patch size = 16, N= HW/P^2得到196个图像块 ==> 16x16x3

2.每个patch经过linear projection线性投射层(全连接层E)得到特征,即patch embedding。加上位置编码信息position embedding。

3.借鉴bert extra learnable embedding,加入特殊字符cls ,图像*代替,class embedding。token输入transformer encoder

E: 768x768, D = 768,第一个768是图像计算得来16x16x8X * E = 196 x 768 x 768 x 768 = img: 196 x 768 = 197 x 768,  矩阵乘法cls: 1  x 768		
加入位置编码信息,sum

4.多头自注意力机制,mlp head 分类头

12个头:768 / 12 = 64197x64	197x64	197x64 12个头输出拼接:197 x 768
k		q		vlayer norm: 197 x 768
mlp: 放到4倍:197 x 3072 缩小投射———> 197 x 768
消融实验
HEAD TYPE AND CLASSTOKEN

class token 当做图像的整体特征,token输出接mlp,使用tanh为激活函数做预测。

(ResNet)图像全局向量特征:feature map ——> globally average-pooling

在这里插入图片描述

transformer

在这里插入图片描述

两种方式都可以,vit用class token,尽可能跟transformer保持一致

在这里插入图片描述

poisitional embedding
  • 1D: nlp常用的

    1 2 3 4 ... 9   维度 D
    
  • 2D:

    		D/2
    D/2	11	12	1321	22	2331	32	33
    维度D/2的向量表示X-embedding, D/2的向量表示Y-embedding
    contact成维度D --> 2d poisitional embedding
    
  • Relative position embedding:绝对距离、相对距离

实验结果:都可以

在这里插入图片描述

ptach-level而不是pixel-level,图像块较小,获取小块之间相对位置较容易,因此采用不同位置编码差异不大。

本文中vision transformer采用class token 跟1d position embedding(对标准的transformer不做过多改动)

整体过程公式

在这里插入图片描述

Inductive bias

cnn: locality、translation equivariance,模型每一层均体现,先验知识贯穿

vit:mlp layer是局部、平移等变性,self-attention全局,图片2d信息基本没有使用。位置编码也是随机初始化,没有携带任何2d信息。(缺少偏置,中小数据集效果不如cnn)

Hybrid Architecture

使用CNN进行预处理

图片通过CNN获取feature map,拉直后跟全连接层操作

在这里插入图片描述

2.FINE-TUNINGANDHIGHERRESOLUTION

微调用较大尺寸图像,得到更好结果。

使用预训练好的vision transformer,当用更大尺寸图像,patch size 保持一致,序列长度增加,提前预训练好的位置编码失效。

进行2d插值解决该问题(临时解决方案,微调局限性),2D interpolation

实验

对比resnet、vit和hybrid表征学习能力,不同大小数据集做预训练,在很多数据集做测试。vit在大多数数据集上训练时间短效果好

数据集:imagetNet、imagetNet-21k、JFT

下游任务分类:CIFAR-10/100、Oxford-IIIT Pets、,OxfordFlowers-102
在这里插入图片描述

ViT-L/16:Large模型,patch size 16x16

序列长度跟patch size成反比,模型用更小的patch size时,计算代价更大

在这里插入图片描述

bit:cnn中较大的模型

noisy student:image net中表现最好 ,pseudo-label进行self training (伪标签)

vit训练时间更短
在这里插入图片描述

1.小数据集cnn效果好

2.数据规模大于ImageNet-21K,vit效果较好

在这里插入图片描述

使用预训练模型当做特征提取器,做5-shot

原因:缺少归纳偏置,小数据集效果较cnn差;

平均注意力距离

在这里插入图片描述

自监督:masked patch,将图片分成几个patch,随机涂抹几个patch;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/312832.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode236:二叉树的最近公共祖先

题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是…

03攻防世界-unserialize3

根据题目可以看出,这是个反序列化的题目 打开网址观察题目可以看到这里是php的代码,那么也就是php的反序列化 本题需要利用反序列化字符串来进行解题,根据源码提示我们需要构造code。 序列化的意思是:是将变量转换为可保存或传输…

向量数据库与图数据库:理解它们的区别

作者:Elastic Platform Team 大数据管理不仅仅是尽可能存储更多的数据。它关乎能够识别有意义的见解、发现隐藏的模式,并做出明智的决策。这种对高级分析的追求一直是数据建模和存储解决方案创新的驱动力,远远超出了传统关系数据库。 这些创…

计算机网络 2.2数据传输方式

第二节 数据传输方式 一、数据通信系统模型 添加图片注释,不超过 140 字(可选) 1.数据终端设备(DTE) 作用:用于处理用户数据的设备,是数据通信系统的信源和信宿。 设备:便携计算机…

通过调用Vcenter-Api获取Vcenter中服务器信息

通过调用Vcenter-Api获取Vcenter中服务器信息 文章目录 通过调用Vcenter-Api获取Vcenter中服务器信息1. 获取Vmware API帮助文档2. 获取访问凭证3. 获取服务器清单4. 获取服务器更多信息5. 获取虚机更多信息6. 获取磁盘信息7. 获取操作系统相关 1. 获取Vmware API帮助文档 htt…

Chrome修改主题颜色

注意:自定义Chrome按钮只在搜索引擎为Google的时候出现。

抖店每天稳定出单300+,但是不挣钱,你图什么?

我是王路飞。 如果你的抖店已经可以稳定出单了,且每天可以保证稳定出单300。 那么,你有没有算过你到底有没有赚到马内?是小赚还是大赚? 如果这些单量没有给你带来一个比较满意的【利润回报】, 那么请问&#xff0c…

【数据分析】AHP层次分析法

博主总结:根据每个方案x各准则因素权重累加结果 对比来选择目标。数据主观性强 简介 AHP层次分析法是一种解决多目标复杂问题的定性和定量相结合进行计算决策权重的研究方法。该方法将定量分析与定性分析结合起来,用决策者的经验判断各衡量目标之间能…

第十五届蓝桥杯复盘python大学A组——试题B 召唤数学精灵

按照正常思路解决,由于累乘消耗大量时间,因此这不是一个明智的解决方案。 这段代码执行速度非常慢的原因在于它试图计算非常大的数的阶乘(累乘),并且对于每一个i的值都执行这个计算。阶乘的增长是极其迅速的&#xff…

考研数学|「基础」和「强化」阶段分别怎么做?

从目前考研数学的趋势来看,更加注重数学基础的理解和计算量。也就是基础知识和计算,如何锻炼这两种能力就显得尤为重要。希望我的复习经验可以给到读者一些启发。 数学规划 从备考过程来看,数学的复习可以分为三个阶段:1、基础阶…

.net框架和c#程序设计第三次测试

目录 一、测试要求 二、实现效果 三、实现代码 一、测试要求 二、实现效果 数据库中的内容&#xff1a; 使用数据库中的账号登录&#xff1a; 若不是数据库中的内容&#xff1a; 三、实现代码 login.aspx文件&#xff1a; <% Page Language"C#" AutoEventW…

Pytest测试用例中的mark用法(包含代码示例与使用场景详解)

在软件开发中&#xff0c;测试是确保代码质量和功能稳定性的重要环节。Python作为一门流行的编程语言&#xff0c;拥有丰富的测试工具和框架&#xff0c;其中pytest是其中之一。pytest提供了丰富的功能来简化测试用例的编写&#xff0c;其中的mark功能允许我们对测试用例进行标…

程序设计|C语言教学——C语言基础1:C语言的引入和入门

一、程序的执行 1.定义 解释&#xff1a;借助一个程序&#xff0c;那个程序能够试图理解你的程序&#xff0c;然后按照你的要求执行。下次执行的时候还需要从零开始解释。 编译&#xff1a;借助一个程序&#xff0c;能够像翻译官一样&#xff0c;把你的程序翻译成机器语言&a…

【编程TOOL】VC++6.0下载安装配置使用保姆式教程

目录 ​编辑 1.软件介绍 2.软件下载 3.软件安装 3.1.下载得到可执行文件并双击进行安装 3.2. 点击下一步 3.3. 选择安装位置 3.4. 勾选“创建桌面快捷方式”并点击下一步 5. 点击安装并等待 3.6. 先取消运行&#xff0c;后点击完成&#xff0c;软件即安装完毕 4.兼容性配置 4.1…

网络靶场实战-反射DLL注入

在之前的文章中&#xff0c;通过模拟 Windows 映像加载程序的功能&#xff0c;完全从内存中加载 DLL 模块&#xff0c;而无需将 DLL 存储到磁盘上&#xff0c;但这只能从本地进程中加载进内存中&#xff0c;如果想要在目标进程中通过内存加载 DLL 模块&#xff0c;可以通过一些…

求π的近似值(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <math.h>int main() {//初始化变量值&#xff1b;int symbol 1;double denominator 1.0, sum 0, term 1.0;//循…

服务器docker应用一览

文章目录 一、需求概况二、业务流程三、运行效果四、实现过程1. 基础前提2. 源码放送3.核心代码4. 项目打包5.部署步骤 一、需求概况 现有某云主机服务器&#xff0c;用来做项目演示用&#xff0c;上面运行了docker应用&#xff0c;现希望有一总览页面&#xff0c;用来展示部署…

【Spring进阶系列丨第九篇】基于XML的面向切面编程(AOP)详解

文章目录 一、基于XML的AOP1.1、打印日志案例1.1.1、beans.xml中添加aop的约束1.1.2、定义Bean 1.2、定义记录日志的类【切面】1.3、导入AOP的依赖1.4、主配置文件中配置AOP1.5、测试1.6、切入点表达式1.6.1、访问修饰符可以省略1.6.2、返回值可以使用通配符&#xff0c;表示任…

软考131-上午题-【软件工程】-软件可靠性、可用性、可维护性

可靠性、可用性和可维护性是软件的质量属性&#xff0c;软件工程中&#xff0c;用 0-1 之间的数来度量。 0.66 66% 1、 可靠性 可靠性是指一个系统对于给定的时间间隔内、在给定条件下无失效运作的概率。 可以用 MTTF/ (1MTTF) 来度量&#xff0c;其中 MTTF 为平均无故障时间…