【CNN】ConvMixer探究ViT的Patch Embedding: Patches Are All You Need?

Patches Are All You Need?

探究Patch Embedding在ViT上的作用,CNN是否可用该操作提升性能?

论文链接:https://openreview.net/pdf?id=TVHS5Y4dNvM
代码链接:https://github.com/tmp-iclr/convmixer

1、摘要

  ViT的性能是由于Transformer架构本身的固有优势,还是至少部分归因于使用patch作为输入表示?文中提出了一些证据支持后者:具体来说,提出了ConvMixer,这是一种极其简单的模型,其本质类似于ViT和更基础的MLP-Mixer,它直接处理patch作为输入,分离空间和通道维度的混合,并在整个网络中保持相同大小和分辨率。然而,ConvMixer仅使用标准卷积来实现混合步骤。尽管其简单,实验展示了ConvMixer在相似参数量和数据集大小下,优于ViT、MLP-Mixer及其变体,并且在性能上超过了经典的视觉模型,如ResNet。

目录

  • Patches Are All You Need?
    • 1、摘要
    • 2、关键问题
    • 3、原理
      • A Simple Model: ConvMixer
    • 4、实验
      • Training setup.
      • Results.
      • Comparisons.
      • CIFAR-10 Experiments.
    • 5、相关工作
    • 6、总结
    • 7、附录:可视化

2、关键问题

  - 由于Transformer中使用的自注意力层的计算成本会随着图像中像素数量的平方增长,如果直接在像素级别应用,代价会过高,因此通常会将图像分割成多个“patch”,线性嵌入,然后直接对这些patch应用Transformer。

  - 视觉Transformer的强大性能是否更多地源于patch-based表示,而非Transformer架构本身?
在这里插入图片描述

3、原理

A Simple Model: ConvMixer

在这里插入图片描述

  提出的模型,称为ConvMixer,由一个patch嵌入层,随后是简单全卷积块的重复应用。如图2所示,保持patch嵌入的二维空间结构。使用patch大小为 p p p和嵌入维度为 h h h的patch嵌入,可以通过 c c c个输入通道的卷积实现,输出通道为 h h h,卷积核大小为 p p p,步长为 p p p
KaTeX parse error: Expected 'EOF', got '_' at position 98: …p, \text{kernel_̲size}=p)}) + z_…

  ConvMixer块本身包含深度卷积DWConv(即组卷积,组数等于通道数 h h h)随后是point-wise卷积(即 1 × 1 1 \times 1 1×1卷积)。在第3节将解释,ConvMixer在深度卷积中使用异常大的卷积核尺寸时效果最佳。每个卷积操作后都跟着激活函数和后激活的批归一化:
z l ′ = BN ( σ ConvDepthwise ( z l − 1 ) ) + z l − 1   ( 2 ) z^{'}_{l} = \text{BN}(\sigma{\text{ConvDepthwise}(z_{l-1})}) + z_{l-1} \ (2) zl=BN(σConvDepthwise(zl1))+zl1 (2)

z l + 1 = BN ( σ ConvPointwise ( z l ) )   ( 3 ) z_{l+1} = \text{BN}(\sigma{\text{ConvPointwise}(z_l)}) \ (3) zl+1=BN(σConvPointwise(zl)) (3)

  经过多次这样的块应用后,进行全局池化,得到一个大小为 h h h的特征向量,然后将其传递给softmax分类器。如图 3 所示,这是在 PyTorch 中实现 ConvMixer 的示例。
在这里插入图片描述

Design parameters. \ ConvMixer的实例化依赖于四个参数

(1) "宽度"或隐藏维度 h h h(即嵌入块的维度);

(2) 深度 d d d,或 ConvMixer 层的重复次数;

(3) 控制模型内部分辨率的 p a t c h patch patch大小 p p p

(4) 深度卷积层的内核大小 k k k

  根据隐藏维度 h h h和深度 d d d来命名ConvMixer,例如 C o n v M i x e r − h / d ConvMixer-h/d ConvMixerh/d。文中将原始输入大小 n n n除以 p a t c h patch patch大小 p p p称为内部分辨率;然而,ConvMixer支持可变大小的输入

Motivation. 架构基于Tolstikhin 等人(2021)提出的混合思想。具体来说,选择深度卷积来混合空间位置,点卷积来混合通道位置,以此分离通道和空间的混合。先前工作的关键点是,MLP和自注意力可以混合远处的空间位置,即它们可以具有任意大的感受野。因此,使用了具有异常大内核大小的卷积来混合远处的空间位置。虽然自注意力和MLP在理论上更灵活,能够实现大感受野和内容感知行为,但卷积的先验偏置非常适合视觉任务,且数据效率高。通过使用这种标准操作,还可以观察到patch表示本身与卷积网络中金字塔形、逐层下采样的传统设计相比的影响。

4、实验

Training setup.

  主要在ImageNet-1k分类上评估ConvMixers,无需任何预训练或其他数据。将 ConvMixer 添加到 timm 框架中(Wightman,2019 年),并使用接近标准的设置对其进行训练:除了默认的timm增强之外,实验还使用了 RandAugment(Cubuk 等人,2020 年)、mixup(Zhang 等人,2017 年)、CutMix(Yun 等人,2019 年)、随机擦除(Zhong 等人,2020 年)和梯度范数剪裁。实验使用了AdamW(Loshchilov&Hutter,2018)优化器和一个简单的triangular learning rate策略。由于计算能力有限,在 ImageNet 上完全没有进行超参数调整,并且训练的epoch比竞争对手少。因此,所提模型可能过度或欠正则化,文章报告的精度可能低估了模型的能力。

Results.

在这里插入图片描述
  具有 52M 参数的 ConvMixer-1536/20 在 ImageNet 上可以达到 81.4% 的Top-1准确率,而具有 21M 参数的 ConvMixer-768/32 可以达到 80.2%(见表 1)。更宽的 ConvMixer 似乎收敛在更少的 epoch 中,但对内存和计算都很依赖。它们也适用于大内核大小:当内核大小从 k = 9 k = 9 k=9减小到 k = 3 k = 3 k=3时,ConvMixer-1536/20的准确率损失了 ≈ 1 ≈1% 1(我们在附录A和B中详细讨论了内核大小)。在实验中,具有较小patch的ConvMixers要好得多,类似于Sandler等人(2019);作者认为更大的补丁需要更深的 ConvMixer。除了将补丁大小从 7 个增加到 14 个之外,其他条件都保持不变,ConvMixer-1536/20 实现了 78.9% 的Top-1准确率,但速度提高了约 $4 \times $。实验用ReLU训练了一个模型,以证明在最近的各向同性模型中流行的GELU(Hendrycks&Gimpel,2016)是不必要的。

Comparisons.

  所提模型和仅 ImageNet1k 的训练设置与最近的基于patch的模型(如 DeiT)非常相似(Touvron 等人,2020 年)。由于 ConvMixer 的简单性,作者专注于仅比较适用于 ImageNet-1k 设置的最基本的各向同性基于patch的架构,即 DeiT 和 ResMLP。为了与标准基线进行公平的比较,作者使用与 ConvMixer 完全相同的参数训练了 ResNets;虽然这种参数选择是次优的(Wightman 等人,2021 年),但对于 ConvMixer 来说也可能是次优的,因为作者没有进行超参数调整。

  从表1和图1可以看出,ConvMixer在给定的参数下实现了具有竞争力的精度:ConvMixer-1536/20的性能优于ResNet-152和ResMLP-B24,尽管参数要少得多,并且可与DeiT-B竞争。ConvMixer-768/32 仅使用了 ResNet-152 的三分之一参数,但同样准确。请注意,与 ConvMixer 不同,DeiT 和 ResMLP 结果涉及超参数调优,当大量资源专门用于调优 ResNets 时,包括训练两倍的 epoch,它们的性能仅比同等大小的 ConvMixer 约高出 0.2%(Wightman 等人,2021 年)。然而,ConvMixer 的推理速度比竞争对手慢得多,这可能是因为它们的patch大小较小;超参数调整和优化可以缩小这一差距。有关更多讨论和比较,请参阅表 2 和附录 A.
在这里插入图片描述

CIFAR-10 Experiments.

  作者还在 CIFAR-10 上进行了小规模的实验,其中 ConvMixers 以低至 0.7M 的参数实现了超过 96% 的准确度,证明了卷积归纳偏置的数据效率。这些实验的细节见附录B
在这里插入图片描述在这里插入图片描述

5、相关工作

Isotropic architectures. 视觉Transformer激发了一种新的“同质化”架构理念,即网络中各层的大小和形状保持一致,首层使用patch嵌入。这些模型类似于重复的Transformer编码器块(Vaswani et al., 2017),其中自注意力和MLP操作被不同的操作所替换。例如,MLP-Mixer(Tolstikhin et al., 2021)用跨不同维度(即空间和通道位置混合)的MLP替换两者;ResMLP(Touvron et al., 2021a)则是这一主题的数据效率变体。CycleMLP(Chen et al., 2021)、gMLP(Liu et al., 2021a)和视觉置换器(Hou et al., 2021)则用各种新颖操作替换一个或两个块。这些模型表现出色,通常归功于新颖操作的选择。相反,Melas-Kyriazi(2021)提出了基于MLP的同质化视觉模型,并推测patch嵌入可能是其性能的关键。ResMLP尝试用(小内核)卷积替换其线性交互层,表现出良好性能,但保留了基于MLP的跨通道层,并未进一步探索卷积。正如我们对ConvMixers的研究所示,这些工作可能混淆了新操作(如自注意力和MLP)的效果与patch嵌入使用以及由此产生的同质化架构的影响。

  在视觉Transformer出现之前,已有研究探讨了同质化(或“等距”)的MobileNets(Sandler et al., 2019),甚至以另一种方式实现了patch嵌入。他们的架构简单地重复同质化的MobileNetv3块。他们发现了patch大小与准确性的权衡,这与我们的经验相符,并训练出了性能相近的模型(见附录A,表2)。然而,他们的块远比我们的复杂;我们的工作在于简洁性和动机。

Patches aren’t all you need. 一些论文通过替换标准patch嵌入以提高视觉Transformer的性能,如Xiao et al. (2021)和Yuan et al. (2021a)使用标准卷积茎,而Yuan et al. (2021b)则重复组合附近的patch嵌入。然而,这将patch嵌入的使用效果与添加卷积或类似归纳偏置(如局部性)的效果混为一谈。我们试图关注patch嵌入的使用。

CNNs meet ViTs. 许多努力试图将卷积网络的特性融入视觉Transformer,反之亦然。自注意力可以模拟卷积(Cordonnier et al., 2019),并可以初始化或正则化以类似卷积;其他工作则直接在Transformer中添加卷积操作(Dai et al., 2021;Guo et al., 2021),或包括下采样以更接近传统的金字塔形卷积网络(Wang et al., 2021)。相反,自注意力或类似注意力的操作可以补充或替代ResNet风格模型中的卷积(Bello et al., 2019;Ramachandran et al., 2019;Bello, 2021)。尽管这些尝试在某种程度上都取得了成功,但它们与我们的工作是独立的,我们的目标是强调大多数ViT共有的架构影响,通过展示它与表达能力较低的操作。

6、总结

  文中介绍了ConvMixers,这是一种极其简单的模型,仅使用标准卷积就独立地对嵌入的patch的空间和通道位置进行混合。受ViT和MLP-Mixer大感受野的启发,使用大卷积核尺寸能显著提升性能。ConvMixers超越了Vision Transformer和MLP-Mixer,并与ResNets、DeiT和ResMLPs相当。

  文中提供了证据,表明日益普遍的“同质化”架构,即简单的patch嵌入基础,本身就是深度学习的强大模板。patch嵌入允许所有下采样一次性完成,立即降低内部分辨率,从而增加有效感受野,使得混合远处空间信息更加容易。文中指出,注意力并非语言处理向计算机视觉的唯一输出:使用patch嵌入,即token化输入,同样是一种强大且重要的启示。

7、附录:可视化

  在图4和图5中,分别可视化了 p = 14 p = 14 p=14的 ConvMixer-1536/20 和 p = 7 p = 7 p=7 的 ConvMixer-768/32 的patch embedding层的(完整)权重。与Sandler等人(2019)非常相似,该层由类似Gabor的过滤器以及“彩色球体”或粗糙边缘探测器组成。 过滤器似乎比 MLP-Mixer 学习的过滤器更有结构(Tolstikhin 等人,2021 年);与 MLP-Mixer 不同的是,从 p = 14 p = 14 p=14 p = 7 p = 7 p=7 的权重看起来大致相同:后者看起来只是前者的缩减采样版本。因此,目前尚不清楚为什么看到较大补丁的准确性会下降。然而,一些滤波器本质上看起来像噪声,可能表明需要更多的正则化或更长的训练,甚至需要更多的数据。归根结底,作者不能过多地解读这里所学的表征。图 6 绘制了 ConvMixer 连续层的隐藏卷积核。最初,内核似乎相对较小,但在后面的层中利用了它们允许的全尺寸;有一个清晰的特征层次结构,正如人们所期望的那样 标准卷积架构.有趣的是,Touvron 等人 (2021a) 对 ResMLP 看到了类似的效果,其中早期层看起来像小核卷积,而后期层则更加分散,尽管这些层由无约束矩阵乘法而不是卷积表示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【二分查找】Leetcode 在排序数组中查找元素的第一个和最后一个位置

题目解析 34. 在排序数组中查找元素的第一个和最后一个位置 我们使用暴力方法进行算法演化,寻找一个数字的区间,我们可以顺序查找,记录最终结果 首先数组是有序的,所以使用二分法很好上手,但是我们就仅仅使用上一道题…

2. Django配置信息

第2章 Django配置信息 Django的配置文件settings.py用于配置整个网站的环境和功能, 核心配置必须有项目路径, 密钥配置, 域名访问权限, App列表, 中间件, 资源文件, 模板配置, 数据库的连接方式.* 项目运行时, 如果修改代码, 项目会自动检测发现改动后会重新运行, 除非报错否…

xss.pwnfunction-Jefff

在eval中可以直接执行命令所以直接把"直接闭合在结尾再加上一个"因为后面的"没闭和会报错 ?jeffa";alert(1);" 或 ?jeffa"-alert(1)-" -是分隔符

根据状态转移表实现时序电路

描述 某同步时序电路转换表如下,请使用D触发器和必要的逻辑门实现此同步时序电路,用Verilog语言描述。 电路的接口如下图所示。 输入描述 input A ,input clk ,input rst_n 输出描述 output …

Windows11下Docker使用记录(二)

Docker使用记录(二) 1. 常用指令2. Dockerfile示例3. 构建docker image Docker中container,image,dockerfile 以及docker hub的关系如图所示,详细可见上一篇帖子。 本文主要记录Dockerfile相关。 1. 常用指令 常用指令…

matlab:五点中心差分求解Navier边界的Biharmonic方程(具有纳维尔边界的双调和方程)

我们考虑如下形式的双调和方程的数值解 其中,Ω是欧氏空间中的多边形或多面体域,在其中,d为维度,具有分段利普希茨边界,满足内部锥条件,f(x) ∈ L2(Ω)是给定的函数,∆是标准的拉普拉斯算子。算…

Open3D (C++) 从.txt文件中读取数据到矩阵

目录 一、算法概述二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法概述 在进行实验的时候有时需要借助不同的工具来实现一些比较复杂的操作,比如使用matlab中自带的拉…

竞赛 交通目标检测-行人车辆检测流量计数 - 竞赛

文章目录 0 前言1\. 目标检测概况1.1 什么是目标检测?1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计…

AI大语言模型GPT —— R 生态环境领域数据统计分析

自2022年GPT(Generative Pre-trained Transformer)大语言模型的发布以来,它以其卓越的自然语言处理能力和广泛的应用潜力,在学术界和工业界掀起了一场革命。在短短一年多的时间里,GPT已经在多个领域展现出其独特的价值…

卫星遥感影像如何选择合适的分辨率

​ 卫星遥感影像的分辨率是影响其应用效果的关键因素之一。分辨率越高,所获取的图像细节越丰富,能够更准确地反映地物的特征和变化。因此,在选择卫星遥感影像时,需要根据实际需求和数据可获取性来选择合适的分辨率。 一、分辨…

好看流光风格个人主页HTML源码

这是一款好看流光风格个人主页HTML源码,感觉挺喜欢的,需要的自行下载! 源码下载 好看流光风格个人主页源码

90天玩转Python-02-基础知识篇:初识Python与PyCharm

90天玩转Python系列文章目录 90天玩转Python—01—基础知识篇:C站最全Python标准库总结 90天玩转Python--02--基础知识篇:初识Python与PyCharm 90天玩转Python—03—基础知识篇:Python和PyCharm(语言特点、学习方法、工具安装) 90天玩转Python—04—基础知识篇:Pytho…

2-3多交换机静态流表控制原理与实现

实现目标环境下的静态流表设置: 1 单个ovs上实现多个主机hosts之间的通信 2多ovs上多主机之间的通信 1 单个ovs上实现多个主机hosts之间的通信 使用函数定义的方式创建一个如下的拓扑,并使用静态流表 from mininet.net import Mininet from mininet.n…

智过网:非安全专业能否报考注安?哪些专业可以报考?

近年来,随着社会对安全生产管理的日益重视,注册安全工程师(简称注安)这一职业逐渐受到广大从业人员的青睐。然而,对于许多非安全专业的朋友来说,他们可能会困惑:非安全专业是否可以报考注安&…

【51单片机入门记录】RTC(实时时钟)-DS1302概述

目录 一、基于三线通信的RTC-DS1302 (1)简介 (2)特性 (3)引脚介绍 (4)控制字的格式 (5.0)日历时钟寄存器介绍 (5.1)日历时钟寄存…

配置vscode链接linux

1.安装 remote SSH 2.按F1 ssh ljh服务器公网ip 3. 选择保存远端host到本地 某位置 等待片刻后 4. 切换到远程资源管理器中 应该可以看到一台电脑,右键在当前窗口链接,输入你的服务器用户密码后电脑变绿说明远程连接成功 5.一定要登陆上云服务器后再…

“进击的巨人”:服务器硬件基础知识解析

引言: 服务器是网络环境中负责处理数据、运行应用程序和服务多用户的高性能计算机系统。了解服务器的硬件构成有助于更好地管理和优化IT资源。 服务器和普通PC的差异: 服务器具有比个人电脑更高的处理能力、稳定性和可靠性,它们通常运行在没…

Flutter开发进阶之错误信息

Flutter开发进阶之错误信息 在Flutter开发中错误信息通常是由Exception和Error表示,Error表示严重且不可恢复的错误,一般会导致程序直接终止,而Exception可以被显式抛出,一般为代码逻辑错误,根据Flutter的解释说Excep…

Vue3调试

如何对vue3项目进行调试 调试是开发过程中必备的一项技能,掌握了这项技能,可以很好的定义bug所在。一般在开发vue3项目时,有三种方式。 代码中添加debugger;使用浏览器调试:sourcemap需启用vs code 调试:先开启node服…

ARM、X86、RISC-V三分天下

引入: 简单的介绍一下X86、ARM、RISC-V三种cpu架构的区别和应用场景。 目录 简单概念讲解 1. X86架构 2. ARM架构 3. RISC-V架构 应用场景 X86、ARM和RISC-V是三种不同的CPU架构,它们在设计理念、指令集和应用场景上有一些区别。 简单概念讲解 1. X…