ViT 论文逐段精读

news2024/11/28 6:45:07

https://www.bilibili.com/video/BV15P4y137jb

Vision Transformer 挑战了 CNN 在 CV 中绝对的统治地位。Vision Transformer 得出的结论是如果在足够多的数据上做预训练,在不依赖 CNN 的基础上,直接用自然语言上的 Transformer 也能 CV 问题解决得很好。Transformer 打破了 CV、NLP 之间的壁垒。

先理解题目:An image is worth 16 ∗ 16 16*16 1616 words: Transformers for Image Recognition at scale。题目中的 16 ∗ 16 16*16 1616 words 含义是把一张图片看作由很多 16 ∗ 16 16*16 1616 大小 patch 组成的整体。

Abstract

之前的注意力只是作为一个小模块替换 CNN 的某一部分。Vision Transformer 则是直接作用于图像块,而且效果也很好。尤其是当在大规模数据集做预训练,迁移到中小型数据使用,Vision Transformer 能达到跟最好的 CNN 相媲美的效果,而且使用的计算资源更少(但是对普通人来说,也很难获得)。

Introduction

Self-attention-based architecture,特别是 Transformer,成为 NLP 的首选模型。主要的方法是在大型文本语料库上进行预训练,然后在较小的特定任务数据集上进行微调(Bert 这篇文章提出的)。由于 Transformer 的计算效率和可扩展性,它可以训练前所未有的规模的模型,具有超过 100B 个参数。随着模型和数据集的增长,仍然没有出现性能饱和的迹象。(第一段)

在 CV 中,卷积架构仍然占主导地位。Transformer 难以应用在 CV 中,主要是因为图片对应的序列太长。如果 Transformer 用在 CV 上,那么要采取办法降低输入序列的长度,。受 NLP 成功的启发,许多论文尝试在 CV 中应用 self-attention:①、将类 CNN 的架构与 self-attention 结合(文章 Wang et al., 2018 使用网络中间的特征图作为 Transformer 的序列输入,而不是直接使用像素点);②、完全取代卷积,全部使用 self-attention (Ramachandran等人,2019;Wang et al ., 2020a)(第一篇文章使用局部窗口。通过控制窗口的大小,限制计算复杂度。第二篇文章是在 h 与 w 两个维度分别做两次 self-attention)。后一种模型虽然在理论上是有效的,但由于使用了专门的注意力模式,还没有在现代硬件加速器上有效地扩展。因此,在大规模图像识别中,经典的类 Resnet 架构仍然是最先进的(Mahajan等人,2018;谢等,2020;科列斯尼科夫等人,2020)。(第二段)

受 Transformer 在 NLP 的可扩展性的启发,将一个标准的 Transformer 直接应用于图像,且做很少的修改(不针对视觉任务做特定的改变)。此时,必须重新考虑前文的问题:Transformer 如何应对从图像转换来的如此长的序列。ViT 的处理: 先把一个 224 ∗ 224 224*224 224224 的图片打成很多个 16 ∗ 16 16*16 1616 的 patch。原先的序列长度是 50176 ( 224 ∗ 224 ) 50176(224*224) 50176224224;现在的“宽”“高”是 14 ∗ 14 ( 224 / 16 ) 14*14(224/16) 1414224/16,现在的序列长度是 196 ( 14 ∗ 14 ) 196(14*14) 1961414。然后,把每个 patch 当作一个元素,通过一个 fc layer 得到一个 linear embedding。最后,这些作为输入传给 Transformer。这些 image patch 可以看作是 NLP 中的单词 ———— 一个句子有多少个单词;一张图像有多少个 patch。基于有监督的图片分类训练这个模型。为何突出 有监督 的呢?因为 Transformer 都是用无监督的方式训练的,要么用 language modeling,要么用 mask language modeling。对于 CV,大部分的工作还是有监督的训练方式。(第三段)

ViT 把 CV 任务当作 NLP 任务处理去做,尤其中间的这个模型就是用一个 Transformer encoder,跟 Bert 是完全一样的。这篇论文告诉我们用 Transformer 处理 CV 任务也能达到很棒的效果。

如果不加比较强的约束,ViT 在中型数据集(如:ImageNet)训练的效果,跟同等大小的残差网络相比,要弱几个点。这个看起来不太好的结果是可预期的:Transformer 缺少卷积网络具有的 inductive biases(归纳偏置)。卷积网络具有先验信息,可以用较少的数据学习一个比较好的模型。Transformer 没有先验信息。它所有对现实世界的感知都需要从数据里自己学习。(第四段)

inductive biases 可以看作一种先验知识,或者提前做好的假设。卷积网络的两个常见的 inductive biases:①、locality —— 卷积网络以滑动窗口的形式在图片上一点一点地进行卷积。因此,假设图片相邻的区域有相邻的特征。②、translation equivariance —— 不论是先卷积再平移,还是先平移再卷积,得到的结果都是一样的。卷积网络的卷积核相当于一个 template(模板),不论图片中同样的物体移到哪里,同样的输入遇到同样的卷积核,那么输出应该永远是一样的。

在第五段,作者用在更大的数据集预训练,迁移到小数据集,在小数据集上获得近似或者比顶级卷积网络更好的结果。(18:16 —— 19:19)

Introduction 的总结 19:19 —— 20:25

Conclusion

20:30 —— 24:34

Transformer 在图像识别中的直接应用。与之前在计算机视觉中使用自注意的工作不同,除了初始 patch 提取步骤外,我们没有将特定于图像的归纳偏差引入体系结构。相反,我们将图像解释为一系列 patch,并通过 NLP 中使用的标准 Transformer 编码器对其进行处理。当与大型数据集的预训练相结合时,这种简单但可扩展的策略效果出奇地好。因此,Vision Transformer 在许多图像分类数据集上达到或超过了最先进的水平,同时预训练相对便宜。(第一段)

虽然这些初步结果令人鼓舞,但仍存在许多挑战。一是将 ViT 应用于其他计算机视觉任务,如检测和分割。我们的结果,加上 Carion 等人(2020)的结果,表明了这种方法的前景。另一个挑战是继续探索自我监督的预训练方法。我们的初步实验显示了自监督预训练的改进,但自监督预训练与大规模监督预训练之间仍有很大差距。最后,进一步扩展 ViT可能会提高性能。(第二段)

Related Work

Transformer 是由 Vaswani 等人(2017)提出的用于机器翻译的方法,并且已经成为许多 NLP 任务中最先进的方法。基于大型 Transformer 的模型通常在大型语料库上进行预训练,然后针对具体任务进行微调:BERT (Devlin等人,2019)使用去噪自监督预训练任务(“完形填空”);而 GPT 的工作线使用语言建模(预测下一个单词)作为其预训练任务(Radford等人,2018;2019;Brown et al., 2020)。(第一段)

应用在图像领域的 self-attention 要求每个像素都关注其他像素。由于像素数量的代价是二次的( n 2 n^2 n2),因此不能按实际的输入大小进行缩放。直接在像素层面使用 Transformer 是不现实的。因此,为了在图像领域应用 Transformer,过去已经尝试了几种近似方法。Parmar等人(2018)仅在局部邻域对每个查询像素应用自关注,而不是全局。这种局部多头点积自注意块可以完全取代卷积(Hu et al., 2019;Ramachandran等人,2019;赵等,2020)。在不同的工作中,稀疏变形器(Child等人,2019)采用可扩展的全局自关注近似,以便适用于图像。另一种扩展注意力的方法是将其应用于不同大小的块(Weissenborn等人,2019),在极端情况下,仅沿着单个轴(Ho等人,2019;Wang et al., 2020a)。许多这些专门的注意力架构在计算机视觉任务上显示出有希望的结果,但需要复杂的工程才能在硬件加速器上有效地实现。(第二段)

与我们最相关的是 Cordonnier 等人(2020)的模型,该模型从输入图像中提取大小为 2 × 2 2 × 2 2×2 的斑块,并在其上应用完全的自关注。这个模型与 ViT 非常相似,但我们的工作进一步证明了大规模的预训练使 Transformer 可与最先进的 CNN 竞争(效果甚至更好)。此外,Cordonnier et al.(2020)使用了 2 × 2 2 × 2 2×2 像素的小补丁尺寸,这使得该模型仅适用于小分辨率图像,而我们也可以处理中分辨率图像。(第三段)

可以说,ViT 是第三段的这篇文章的 “后续之作”。ViT 采纳了它的研究方法,并将之应用在更大的数据集。

第四段介绍 CNN 与 self-attention 相结合的研究工作。

另一个最近的相关模型是 image GPT(iGPT)(Chen et al ., 2020a),该模型在降低图像分辨率和色彩空间后,将 Transformer应用于图像像素。该模型以无监督的方式作为生成模型进行训练,然后可以对结果表示进行微调或线性探测以获得分类性能,在ImageNet上实现72%的最大准确率。(第五段)

iGPT 是一个生成式模型。CV 中的大多数模型是判别式的。

有些论文探索了比标准 ImageNet 数据集更大规模的图像识别。使用额外的数据集可以在标准基准上获得最先进的结果(Mahajan等人,2018;Touvron等人,2019;谢等,2020)。此外,Sun等人(2017)研究了 CNN 性能如何随数据集大小而扩展,Kolesnikov等人(2020);Djolonga等人(2020) 在 ImageNet-21k 和 JFT-300M 等大规模数据集上对 CNN 迁移学习进行了实证探索。我们也关注后两个数据集,但是训练 Transformer 而不是在之前的作品中使用的基于 Resnet 的模型。(第六段)

Method(ViT)

在模型设计中,我们尽可能地遵循原始 Transformer (Vaswani et al ., 2017)。这样是为了高效的利用 NLP 领域的 Transformer 的优点。

Vision Transformer(ViT)

请添加图片描述

(时间段 30:45-38:20 讲解 Fig.1。Fig.1 是 ViT 的整体架构图)

标准的 Transformer 需要一系列 1D 的 token 作为输入。对 2D 的 image 处理是把图片 X ∈ R H ∗ W ∗ C \pmb{X}\in\pmb{R}^{H*W*C} XRHWC 打成多个小 patch X p ∈ R N ∗ ( P 2 ⋅ C ) \pmb{X}_p\in\pmb{R}^{N*(P^2·C)} XpRN(P2C)。C 是 channel 数,(P,P) 表示每个图像块, N = H W P 2 N=\frac{HW}{P^2} N=P2HW 是 patch 总数。Transformer 使用 D D D 作为向量长度。因此,用一个可训练的线性层(linear projection)把每个 patch 拉伸为 D 维。这个输出作为 patch embedding。(第一段)

为了最后的分类,借鉴 BERT 的 class token(cls token)。它是一个可学习的特征,维度也是 D。经过很多层的 Transformer Encoder 后,把 cls token 作为 ViT 的输出,也就是整个图像的特征。最后,加个 MLP 的分类头用于图像分类即可。(第二段)

ViT 使用标准的可学习的 1D position embedding(也就是 BERT 里的位置编码)。作者也用了 2D-aware position embedding。发现二者的效果差不多。(第三段)(在附录里有更详细的消融实验)

z 0 = [ x c l a s s ;   x p 1 E ;   x p 2 E ;   . . . ;   x p N E ]   +   E p o s s , E ∈ R ( P 2 ⋅ C ) ∗ D , E p o s s ∈ R ( N + 1 ) ∗ D (公式一) \pmb{z}_0 = [x_{class};\ x^1_p\pmb{E};\ x^2_p\pmb{E};\ ...;\ x^N_p\pmb{E}]\ +\ \pmb{E}_{poss},\pmb{E}\in\pmb{R}^{(P^2·C)*D},\pmb{E}_{poss}\in\pmb{R}^{(N+1)*D} (公式一) z0=[xclass; xp1E; xp2E; ...; xpNE] + EpossER(P2C)DEpossR(N+1)D(公式一)
z l ′ = M S A ( L N ( z l − 1 ) )   +   z l − 1 , l = 1... L (公式二) z'_l = MSA(LN(z_{l-1}))\ + \ z_{l-1},l=1...L(公式二) zl=MSA(LN(zl1)) + zl1l=1...L(公式二)
z l = M L P ( L N ( z l ′ ) )   +   z l ′ , l = 1... L (公式三) z_l = MLP(LN(z'_{l}))\ + \ z'_{l},l=1...L(公式三) zl=MLP(LN(zl)) + zll=1...L(公式三)
y = L N ( z L 0 ) (公式四) \pmb{y}=LN(\pmb{z}^0_L)(公式四) y=LN(zL0)(公式四)

以上是对 ViT 的文字描述。下面的 Inductive bias、Hybrid Architecture 是作者对 ViT 的补充分析。

Inductive bias。 我们注意到 Vision Transformer 比 CNN 具有更少的图像特定的感应偏置。在 CNN 中,locality、two-dimensional neighborhood structure、translation equivariance 等被嵌入到整个模型的每一层中。在 ViT 中,只有 MLP 层是 locality、translation equivariance 的,而 self-attention layer 是全局的。two-dimensional neighborhood structure 的使用非常少:在模型开始时通过将图像切割成小块,以及在微调时用于调整不同分辨率图像的位置嵌入(如下所述)。除此之外,初始化时的位置嵌入不携带关于 patch 的二维位置信息,所有 patch 之间的空间关系都需要从头学习。

Hybrid Architecture. 作为原始图像补丁的替代方案,输入序列可以由 CNN 的特征映射形成(LeCun et al, 1989)。在该混合模型中,将 patch embedding 投影 E \pmb{E} E(Eq. 1)应用于从 CNN feature map 中提取的 patch。作为一种特殊情况,patch 的空间大小可以是 1x1,这意味着输入序列是通过简单地将 feature map 的空间维度平坦化并投影到 Transformer 维度来获得的。如上所述添加分类输入嵌入和位置嵌入。

Fine-tuning And Higher Resolution

通常,我们在大型数据集上预训练 ViT,并对(较小的)下游任务进行微调。为此,我们移除预训练的预测头,并附加一个零初始化的 D × K \pmb{D} × \pmb{K} D×K 前传层,其中 K \pmb{K} K 是下游类的数量。与预训练相比,在更高分辨率下进行微调通常是有益的(Touvron等人,2019;Kolesnikov et al, 2020)。当输入更高分辨率的图像时,我们保持 patch 大小不变,从而获得更大的有效序列长度。Vision Transformer 可以处理任意序列长度(直到内存限制),但是,预训练的位置嵌入可能不再有意义。因此,我们根据预训练的位置嵌入在原始图像中的位置对其进行二维插值。请注意,此分辨率调整和补丁提取是将图像的2D结构的感应偏置手动注入 Vision Transformer 的唯一点。

Experiments

(52:18 – 1:09:53)

我们评估了 ResNet、Vision Transformer (ViT) 和 hybrid 的表示学习能力。为了了解每个模型的数据需求,我们在不同大小的数据集上进行预训练,并评估许多基准任务。当考虑到预训练模型的计算成本时,ViT 表现非常好,以较低的预训练成本在大多数识别基准上达到最先进的水平。最后,我们使用 self-supervison 进行了一个小实验,并表明 self-supervision 的 ViT 在未来是有希望的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何学习web前端开发?这样学前端事半功倍,能救一个是一个!

非常理解想要自学前端的伙伴,因为好程序员的学员一开始也是自学插画的,很多同学,自学到最后真的非常枯燥乏味,且走了很多弯路。小源想着能帮一把是一把的原则,这两天整理了一份前端的高效学习路线,想学web前…

接口测试常用工具及测试方法(基础篇)

首先,什么是接口呢? 接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。 系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给…

Windows管理内存的3种方式——堆、虚拟内存、共享内存

一、操作系统管理内存概述 在 Windows 操作系统中,每个进程都被分配了 4GB 的虚拟地址空间,这被称为进程的虚拟地址空间。虚拟地址空间提供了一个抽象的地址空间,使得每个进程都可以认为它拥有自己的独立内存空间。这个虚拟地址空间被分为两…

720度沉浸式体验,VR虚拟展馆的价值有哪些?

展馆作为一个展示商品、会议交流、信息传播、经济贸易的场所,能够创造巨大的经济效益和社会效益。什么是VR虚拟展馆呢?VR虚拟展馆是基于VR全景技术打造的线上展厅,可以应用在多种领域中展示各式的商品和内容,观众通过VR虚拟展馆可…

ubuntu系统下使用ros控制UR真实机械臂,逻辑清晰,亲测有效

梳理一下在ubuntu系统使用ros控制UR真实机械臂的思路,逻辑清晰,亲测有效,并记录踩过的坑。从0开始,使用ros控制真实UR机械臂。 环境:ubuntu18.04 ros版本:melodic 机械臂型号:UR5e 一&#xff…

当我与单链表分手后,在酒吧邂逅了双向循环链表.....

链表的种类有8种,但我们最常用的为无头单向非循环链表和带头双向循环链表。 带头双向循环链表 当带头双向循环链表只有哨兵位头的时候,双向链表的指向如下图。 head->pre和head->next都是指向自己,这个是有巨大优势的,代码…

CTFHub | 文件包含

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。 0x01 题目描述…

一篇文章让你上手Canal数据同步神技~

视频教程传送门: Canal极简入门:一小时让你快速上手Canal数据同步神技~_哔哩哔哩_bilibiliCanal极简入门:一小时让你快速上手Canal数据同步神技~共计13条视频,包括:01.课前导学与前置知识点、02.Canal组件了解、03.My…

光纤收发器可以连接光模块吗?

随着科技的进步发展,城市信息化速度的加快,光通信产品在数据中心和安防监控等场景中的运用越来越广泛,而这之间的连接则需要光模块和光纤收发器来实现。很多用户对光模块和光纤收发器的使用有些疑虑,两者该如何连接?又…

2023年5月实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】

首先,来看下效果图 在线体验地址:https://geojson.hxkj.vip,并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…

第7章链接:重定位、可执行目标文件、加载可执行目标文件

文章目录 7.7 重定位7.7.1 重定位表目7.7.2 重定位符号引用重定位PC相关的引用重定位绝对引用 7.8 可执行目标文件7.9 加载可执行目标文件 7.7 重定位 一旦链接器完成了符号解析这一步,它就把代码中的每个符号引用和确定的一个符号定义(也就是&#xff…

自学成材的黑客很多,但还是得掌握方法,给你黑客入门与进阶建议

建议一: 黑客七个等级(仅供参考) 黑客,对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域,越深入越敬畏,知识如海洋,黑客也存在一些等级,参考知道创宇 CEO ic&#…

如何把图片无损放大?教你图片怎么无损放大

随着数字图像技术的不断发展,图片无损放大成为了许多人关注的问题。当我们需要将小图片放大到更大的尺寸时,使用传统的放大方法可能会导致图片失真、模糊等质量问题。那么如何在保持高清晰度和精度的同时进行无损放大,一直是一个备受关注的课…

数字化时代,如何从战略设计到架构来打造智慧银行?

导语 | 随着人工智能、大数据、云计算等技术向纵深发展,数字化转型已成为银行发展的“必答题”。调整战略规划和架构重组、加大信息科技投入、推进科技人才队伍建设、持续推出数字化产品……近年来,深化数字化转型,以科技赋能金融服务已成为不…

【C++初阶】第十三篇:模板进阶(非类型模板参数、模板的特化以及模板的分离编译)

文章目录 一、非类型模板参数二、模板的特化2.1 概念2.2 函数模板特化2.3 类模板特化2.3.1 全特化2.3.2 偏特化/半特化 三、模板的分离编译3.1 什么是分离编译3.2 模板的分离编译3.3 解决方法 四、模板总结 一、非类型模板参数 模板参数类型可分为:类型形参和非类型…

通达信SCTR强势股选股公式,根据六个技术指标打分

SCTR指标(StockCharts Technical Rank)的思路来源于著名技术分析师约翰墨菲,该指标根据长、中、短三个周期的六个关键技术指标对股票进行打分,根据得分对一组股票进行排名,从而可以识别出强势股。 与其他技术指标一样,SCTR的设计…

中国社科院与美国杜兰大学能源管理硕士项目是你职场通关的密码吗

职场是一场没有硝烟的战争,想要在职场取得取胜,就要拥有超能力。从职场小白晋升到管理层一路走来诸多不易,想要坐稳或升得更高,要不断提升自己能力,要不间断地学习。社科院与美国杜兰大学能源管理硕士项目是你通关的密…

navicat连接oracle报错 ORA-28547

报错 原因 Navicat自带的oci.dll并不支持oracle11g 具体操作 1. 先用idea连接oracle,查看oracle版本 select * from v$version; 2. 去官网下载 Instant Client 地址: Oracle Instant Client Downloads 下载 选择对应的版本(下载时&#x…

未注册老域名扫描软件-免费未注册老域名挖掘

未注册老域名挖掘教程 在SEO优化中,老域名的价值不言而喻,它们的搜索引擎权重、离线广告效果等都比新域名更高。然而,如何挖掘出高质量的老域名并进行注册并非易事。今天,我们将介绍一款名为“147SEO老域名挖掘软件”的工具&…

【SpringBoot】二:自动配置

文章目录 1.自动配置类2. Import3. AutoConfigurationImportSelector4. AutoConfiguration 1.自动配置类 Spring Boot的自动装配机制会试图根据你所添加的依赖来自动配置你的Spring应用程序。 例如,如果你添加了Mysql依赖,而且你没有手动配置任何DataS…