【第30篇】Vision Transformer

另一个最近的相关模型是图像 GPT (iGPT) ,它在降低图像分辨率和色彩空间后将 Transformers 应用于图像像素。该模型作为生成模型以无监督方式进行训练,然后可以对生成的表示进行微调或线性探测以提高分类性能,在 ImageNet 上实现 72% 的最大准确度。

我们的工作增加了越来越多的论文,这些论文探索了比标准 ImageNet 数据集更大规模的图像识别。使用额外的数据源可以在标准基准上实现最先进的结果。此外,Sun 等人研究了 CNN 的性能如何随数据集大小而变化,而 Kolesnikov 等人对来自大规模数据集(如 ImageNet-21k 和 JFT-300M)的 CNN 迁移学习进行了实证探索。我们也关注后两个数据集,但训练 Transformer 而不是之前工作中使用的基于 ResNet 的模型。

image-20220323172234678

3 方法

===============================================================

在模型设计中,我们尽可能地遵循原始的 Transformer。 这种故意简单设置的一个优点是可扩展的 NLP Transformer 架构及其高效的实现几乎可以开箱即用。

3.1 VISION TRANSFORMER (VIT)


该模型的概述如图 1 所示。标准 Transformer 接收一维令牌嵌入序列作为输入。 为了处理 2D 图像,我们将图像 x ∈ R H × W × C \mathbf{x} \in \mathbb{R}^{H \times W \times C} x∈RH×W×C 重塑为一系列扁平化的 2D 块 x p ∈ R N × ( P 2 ⋅ C ) \mathbf{x}_{p} \in \mathbb{R}^{N \times\left(P^{2} \cdot C\right)} xp​∈RN×(P2⋅C),其中 (H; W ) 是原始图像的分辨率,C 是 通道数,(P,P ) 是每个图像块的分辨率, N = H W / P 2 N=H W / P^{2} N=HW/P2 是生成的块数,它也作为 Transformer 的有效输入序列长度。 Transformer 在其所有层中使用恒定的潜在向量大小 D,因此我们将补丁展平并使用可训练的线性投影映射到 D 维(方程式 1)。 我们将此投影的输出称为补丁嵌入。

与 BERT 的 [class] 令牌类似,我们在嵌入补丁序列 ( z 0 0 = x class  ) \left(\mathbf{z}_{0}^{0}=\mathbf{x}_{\text {class }}\right) (z00​=xclass ​) 之前添加一个可学习的嵌入,其在 Transformer 编码器 ( z L 0 \mathbf{z}_{L}^{0} zL0​) 输出的状态用作图像表示 y (Eq. 4) . 在预训练和微调期间,分类头都附加到 z L 0 \mathbf{z}_{L}^{0} zL0​。 分类头由 MLP 实现,在预训练时具有一个隐藏层,在微调时由单个线性层实现。

位置嵌入被添加到补丁嵌入中以保留位置信息。 我们使用标准的可学习 1D 位置嵌入,因为我们没有观察到使用更高级的 2D 感知位置嵌入带来的显着性能提升(附录 D.4)。 生成的嵌入向量序列用作编码器的输入。

Transformer 编码器由多头自注意力(MSA,见附录 A)和 MLP 块(等式 2、3)的交替层组成。 在每个块之前应用 Layernorm (LN),在每个块之后应用残差连接。MLP 包含两个具有 GELU 非线性的层。

z 0 = [ x class  ; x p 1 E ; x p 2 E ; ⋯   ; x p N E ] + E p o s , E ∈ R ( P 2 ⋅ C ) × D , E p o s ∈ R ( N + 1 ) × D (1) \mathbf{z}_{0}=\left[\mathbf{x}_{\text {class }} ; \mathbf{x}_{p}^{1} \mathbf{E} ; \mathbf{x}_{p}^{2} \mathbf{E} ; \cdots ; \mathbf{x}_{p}^{N} \mathbf{E}\right]+\mathbf{E}_{p o s}, \quad \mathbf{E} \in \mathbb{R}{\left(P{2} \cdot C\right) \times D}, \mathbf{E}_{p o s} \in \mathbb{R}^{(N+1) \times D} \tag{1} z0​=[xclass ​;xp1​E;xp2​E;⋯;xpN​E]+Epos​,E∈R(P2⋅C)×D,Epos​∈R(N+1)×D(1)

z ℓ ′ = MSA ⁡ ( LN ⁡ ( z ℓ − 1 ) ) + z ℓ − 1 , ℓ = 1 … L (2) \mathbf{z}_{\ell}^{\prime}=\operatorname{MSA}\left(\operatorname{LN}\left(\mathbf{z}_{\ell-1}\right)\right)+\mathbf{z}_{\ell-1}, \quad \ell=1 \ldots L \tag{2} zℓ′​=MSA(LN(zℓ−1​))+zℓ−1​,ℓ=1…L(2)

z ℓ = MLP ⁡ ( LN ⁡ ( z ℓ ′ ) ) + z ℓ ′ , ℓ = 1 … L (3) \mathbf{z}_{\ell}=\operatorname{MLP}\left(\operatorname{LN}\left(\mathbf{z}_{\ell}{\prime}\right)\right)+\mathbf{z}_{\ell}{\prime}, \quad \ell=1 \ldots L \tag{3} zℓ​=MLP(LN(zℓ′​))+zℓ′​,ℓ=1…L(3)

y = L N ( z L 0 ) (4) \mathbf{y}=\mathrm{LN}\left(\mathbf{z}_{L}^{0}\right) \tag{4} y=LN(zL0​)(4)

感应偏置。 我们注意到,与 CNN 相比,Vision Transformer 的图像特定归纳偏差要少得多。 在 CNN 中,局部性、二维邻域结构和平移等效性被烘焙到整个模型的每一层中。 在 ViT 中,只有 MLP 层是局部的和平移等变的,而自注意力层是全局的。 二维邻域 结构的使用非常谨慎:在模型开始时,通过将图像切割成块,并在微调时调整不同分辨率图像的位置嵌入(如下所述)。 除此之外,初始化时的位置嵌入不携带有关补丁的 2D 位置的信息,并且必须从头开始学习补丁之间的所有空间关系。

混合架构。 作为原始图像块的替代方案,输入序列可以由 CNN 的特征图形成。 在这个混合模型中,补丁嵌入投影 E(等式 1)应用于从 CNN 特征图中提取的补丁。 作为一种特殊情况,patch 可以具有 1x1 的空间大小,这意味着输入序列是通过简单地将特征图的空间维度展平并投影到 Transformer 维度来获得的。 如上所述添加分类输入嵌入和位置嵌入。

3.2 微调和更高的分辨率


通常,我们在大型数据集上预训练 ViT,并微调到(较小的)下游任务。为此,我们移除预训练的预测头并附加一个零初始化的 D × K 前馈层,其中 K 是下游类的数量。与预训练相比,以更高的分辨率进行微调通常是有益的。当提供更高分辨率的图像时,我们保持补丁大小相同,从而产生更大的有效序列长度。 Vision Transformer 可以处理任意序列长度(直至内存限制),但是,预训练的位置嵌入可能不再有意义。因此,我们根据它们在原始图像中的位置对预训练的位置嵌入进行 2D 插值。请注意,这种分辨率调整和补丁提取是将有关图像 2D 结构的归纳偏差手动注入视觉转换器的唯一点。

4 实验

===============================================================

我们评估了 ResNet、Vision Transformer (ViT) 和混合的表示学习能力。为了了解每个模型的数据要求,我们对不同大小的数据集进行预训练并评估许多基准任务。在考虑预训练模型的计算成本时,ViT 表现非常出色,以较低的预训练成本在大多数识别基准上达到了最先进的水平。最后,我们使用自我监督进行了一个小型实验,并表明自我监督的 ViT 对未来充满希望。

4.1 设置


**数据集。**为了探索模型的可扩展性,我们使用具有 1k 类和 1.3M 图像的 ILSVRC-2012 ImageNet 数据集(我们在下文中将其称为 ImageNet),它的超集 ImageNet-21k 具有 21k 类和 14M 图像和 JFT 具有 18k 类和 303M 高分辨率图像。我们对预训练数据集进行去重。的测试集 Kolesnikov 等人 之后的下游任务。我们将在这些数据集上训练的模型转移到几个基准任务:原始验证标签上的 ImageNet 和清理后的 RealL 标签、CIFAR-10/100、Oxford-IIIT Pets (Parkhi et al.,2012) 和 Oxford Flowers-102 。对于这些数据集,预处理遵循 Kolesnikov 等人。

image-20220323175618483

我们还评估了 19 任务 VTAB 分类套件。 VTAB 评估向不同任务的低数据传输,每个任务使用 1000 个训练示例。这些任务分为三组:自然 - 上述任务、宠物、CIFAR 等。专业 - 医学和卫星图像,以及结构化 - 需要几何理解的任务,如定位。

**模型变体。**我们将 ViT 配置基于用于 BERT 的配置,如表 1 所示。“Base”和“Large”模型直接来自 BERT,我们添加了更大的“Huge”模型。在下文中,我们使用简短的符号来表示模型大小和输入补丁大小:例如,ViT-L/16 表示具有 16×16 输入补丁大小的“大”变体。请注意,Transformer 的序列长度与块大小的平方成反比,因此块大小较小的模型计算成本更高。

对于基线 CNN,我们使用 ResNet,但将 Batch Normalization 层替换为 Group Normalization,并使用标准化卷积。这些修改改进了传输,我们将修改后的模型表示为“ResNet (BiT)”。对于混合体,我们将中间特征图输入到 ViT 中,补丁大小为一个“像素”。为了试验不同的序列长度,我们要么(i)获取常规 ResNet50 的第 4 阶段的输出,要么(ii)移除第 4 阶段,在第 3 阶段放置相同数量的层(保持总层数),然后取此扩展阶段 3 的输出。选项 (ii) 导致 4 倍更长的序列长度和更昂贵的 ViT 模型。

训练和微调。我们使用 Adam 训练所有模型,包括 β1 = 0.9,β2 = 0.999,批量大小为 4096,并应用 0:1 的高权重衰减,我们发现对所有模型的迁移都很有用(附录 D.1 表明,与常见做法相比,在我们的设置中,Adam 对 ResNets 的工作略好于 SGD)。我们使用线性学习率预热和衰减,详见附录 B.1。对于微调,我们使用具有动量的 SGD,批量大小为 512,对于所有模型,请参阅附录 B.1.1。对于表 2 中的 ImageNet 结果,我们在更高分辨率下进行了微调:ViT-L/16 为 512,ViT-H/14 为 518,并且还使用了 Polyak 和 Juditsky (1992) 平均系数为 0.9999。

指标。我们通过小样本或微调精度报告下游数据集的结果。在对相应数据集进行微调后,微调准确度可捕获每个模型的性能。通过解决将训练图像子集的(冻结)表示映射到 f-1 的正则化最小二乘回归问题,可以获得很少的准确率; 1gK 目标向量。该公式使我们能够以封闭形式恢复精确解。虽然我们主要关注微调性能,但有时我们会使用线性少样本精度来进行快速动态评估,而微调成本太高。

4.2 与现有技术的比较


我们首先将我们最大的模型——ViT-H/14 和 ViT-L/16——与文献中最先进的 CNN 进行比较。 第一个比较点是 Big Transfer (BiT) ,它使用大型 ResNets 执行监督迁移学习。 第二个是 Noisy Student,它是一个大型 EfficientNet,使用 ImageNet 和 JFT-300M 上的半监督学习训练,去除了标签。 目前,Noisy Student 是 ImageNet 和 BiT-L 在此处报告的其他数据集上的最先进技术。 所有模型都在 TPU v3 硬件上进行了训练,我们报告了对每个模型进行预训练所花费的 TPU v3 核心天数,即用于训练的 TPU v3 核心数(每个芯片 2 个)乘以训练的天数。

image-20220323194916204

表2显示了结果。在 JFT-300M 上预训练的较小的 ViT-L/16 模型在所有任务上都优于 BiT-L(在同一数据集上预训练),同时训练所需的计算资源要少得多。更大的模型 ViT-H/14 进一步提高了性能,尤其是在更具挑战性的数据集上——ImageNet、CIFAR-100 和 VTAB 套件。有趣的是,与现有技术相比,该模型进行预训练所需的计算量仍然大大减少。然而,我们注意到预训练效率不仅会受到架构选择的影响,还会受到其他参数的影响,例如训练计划、优化器、权重衰减等。我们提供了针对不同架构的性能与计算的对照研究第 4.4 节。最后,在公共 ImageNet-21k 数据集上预训练的 ViT-L/16 模型在大多数数据集上也表现良好,同时使用更少的资源进行预训练:它可以使用具有 8 个核心的标准云 TPU v3 进行训练,大约需要30天。

image-20220323195028856

图 2 将 VTAB 任务分解为各自的组,并在此基准上与之前的 SOTA 方法进行了比较:BiT、VIVI——在 ImageNet 和 Youtube 上共同训练的 ResNet和 S4L——监督加半 ImageNet 上的监督学习(Zhai 等人,2019a)。 ViT-H/14 在自然和结构化任务上优于 BiT-R152x4 和其他方法。 在 Specialized 上,前两个模型的性能相似。

4.3 训练前数据要求


Vision Transformer 在大型 JFT-300M 数据集上进行预训练时表现良好。与 ResNets 相比,视觉的归纳偏差更少,数据集大小有多重要?我们进行了两个系列的实验。

首先,我们在不断增加的数据集上预训练 ViT 模型:ImageNet、ImageNet-21k 和 JFT-300M。为了提高较小数据集的性能,我们优化了三个基本的正则化参数——权重衰减、丢失和标签平滑。图 3 显示了微调到 ImageNet 后的结果(其他数据集上的结果如表 5 所示)2。在最小的数据集 ImageNet 上进行预训练时,尽管有(中等)正则化,但 ViT-Large 模型与 ViT-Base 模型相比表现不佳。通过 ImageNet-21k 预训练,它们的表现相似。只有使用 JFT-300M,我们才能看到更大型号的全部优势。图 3 还显示了不同大小的 BiT 模型所跨越的性能区域。 BiT CNN 在 ImageNet 上的表现优于 ViT,但在更大的数据集上,ViT 超过了。

image-20220323195901447

其次,我们在 9M、30M 和 90M 的随机子集以及完整的 JFT-300M 数据集上训练我们的模型。我们不对较小的子集执行额外的正则化,并对所有设置使用相同的超参数。通过这种方式,我们评估了模型的内在属性,而不是正则化的影响。但是,我们确实使用了提前停止,并报告了在训练期间实现的最佳验证准确度。为了节省计算,我们报告了少量线性精度而不是完全微调精度。图 4 包含结果。 Vision Transformers 比 ResNets 过拟合,在较小的数据集上具有相当的计算成本。例如,ViT-B/32 比 ResNet50 稍快;它在 9M 子集上表现更差,但在 90M+ 子集上表现更好。 ResNet152x2 和 ViT-L/16 也是如此。这一结果强化了这样一种直觉,即卷积归纳偏差对较小的数据集很有用,但对于较大的数据集,直接从数据中学习相关模式就足够了,甚至是有益的。

image-20220323195920744

总体而言,ImageNet 上的小样本结果(图 4)以及 VTAB 上的低数据结果(表 2)似乎对于非常低的数据传输很有希望。 进一步分析 ViT 的少镜头特性是未来工作的一个令人兴奋的方向。

4.4 比例研究


我们通过评估 JFT-300M 的传输性能来对不同模型进行受控缩放研究。在这种情况下,数据大小不会成为模型性能的瓶颈,我们会评估每个模型的性能与预训练成本。模型集包括:7个ResNets,R50x1,R50x2 R101x1,R152x1,R152x2,预训练7个epoch,加上R152x2和R200x3预训练14个epoch; 6 个视觉变形金刚,ViT-B/32、B/16、L/32、L/16,预训练了 7 个 epoch,加上 L/16 和 H/14 预训练了 14 个 epoch;和 5 个混合,R50+ViT-B/32、B/16、L/32、L/16 预训练 7 个 epoch,加上 R50+ViT-L/16 预训练 14 个 epoch(对于混合,在模型名称的末尾不代表补丁大小,而是代表 ResNet 骨干网中的总下采样率)。

image-20220323200114083

图 5 包含传输性能与总预训练计算的关系(有关计算成本的详细信息,请参见附录 D.5)。每个模型的详细结果在附录的表 6 中提供。可以观察到一些模式。首先,Vision Transformers 在性能/计算权衡上主导 ResNet。 ViT 使用大约 2 - 4 倍的计算来获得相同的性能(平均超过 5 个数据集)。其次,在较小的计算预算下,混合模型的性能略优于 ViT,但对于较大的模型,差异就消失了。这个结果有点令人惊讶,因为人们可能期望卷积局部特征处理可以帮助任何大小的 ViT。第三,Vision Transformers 似乎没有在尝试过的范围内饱和,从而激励了未来的扩展努力。

4.5 检查视觉变压器


为了开始了解 Vision Transformer 如何处理图像数据,我们分析了它的内部表示。 Vision Transformer 的第一层将展平的补丁线性投影到低维空间(方程式 1)。图 7(左)显示了学习的嵌入过滤器的顶部主成分。这些组件类似于合理的基函数,用于每个补丁内精细结构的低维表示。

image-20220323201327300
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

f49b566129f47b8a67243c1008edf79.png)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值