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

news2024/10/6 17:26:28

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 看到了类似的效果,其中早期层看起来像小核卷积,而后期层则更加分散,尽管这些层由无约束矩阵乘法而不是卷积表示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

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

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

相关文章

基于Spark中随机森林模型的天气预测系统

基于Spark中随机森林模型的天气预测系统 在这篇文章中,我们将探讨如何使用Apache Spark和随机森林算法来构建一个天气预测系统。该系统将利用历史天气数据,通过机器学习模型预测未来的天气情况,特别是针对是否下雨的二元分类问题。 简介 Ap…

【unity】【C#】延时调用(协程)和场景管理

文章目录 什么是协程协程的应用 - IEnumerator如何控制协程的暂停协程的另一种写法 - Invoke场景管理 多看代码块中的注释 什么是协程 A coroutine alows vou to spreacwhere it left off on the following anc return control toolinencoeframe. 协程允许您将任务分布在多个帧…

Android14应用启动流程(源码+Trace)

1.简介 应用启动过程快的都不需要一秒钟,但这整个过程的执行是比较复杂的,无论是对手机厂商、应用开发来说启动速度也是核心用户体验指标之一,本文采用Android14源码与perfetto工具进行解析。 源码参考地址:Search trace分析工…

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

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

第四百四十二回 再谈flutter_launcher_icons包

文章目录 1. 概念介绍2. 使用方法3. 示例代码4. 经验与总结4.1 经验分享4.2 内容总结 我们在上一章回中介绍了"overlay_tooltip简介"相关的内容,本章回中将 再谈flutter_launcher_icons包.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 …

配置vscode链接linux

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

Day:004(2) | Python爬虫:高效数据抓取的编程技术(数据解析)

正则表达式实战-腾讯新闻 需求: 使用正则获取腾讯新闻标题内容 网站:https://sports.qq.com/ 代码: import reimport requests from fake_useragent import UserAgenturl https://sports.qq.com/ # 构建请求头信息 headers {User-Agent:…

【JavaWeb】Day33.MySQL概述

什么是数据库 数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库。 像我们日常访问的电商网站京东,企业内部的管理系统OA、ERP、CRM这类的系统,以及大家每天都会刷的头条、抖音类的app,那这些大家所…

前端学习之DOM编程星星点灯案例

这个案例的实现逻辑是当你点击屏幕时&#xff0c;会完成一个事件&#xff0c;在你的屏幕上生成一张星星图片。然后再设置星星图片的大小将其改为随机。 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><t…

K8S基于containerd做容器从harbor拉取镜

实现创建pod时&#xff0c;通过指定harbor仓库里的镜像来运行pod 检查&#xff1a;K8S是不是用containerd做容器运行时&#xff0c;以及containerd的版本是不是小于1.6.22 kubectl get nodes -owide1、如果containerd小于 1.6.22&#xff0c;需要先升级containerd 先卸载旧的…

C/C++预处理过程

目录 前言&#xff1a; 1. 预定义符号 2. #define定义常量 3. #define定义宏 4. 带有副作用的宏参数 5. 宏替换的规则 6. 宏和函数的对比 7. #和## 8. 命名约定 9. #undef 10. 命令行定义 11. 条件编译 12. 头文件的包含 13. 其他预处理指令 总结&#x…

最新高自定义化的AI翻译(沉浸式翻译),可翻译网页和PDF等文件或者文献(附翻译API总结,Deeplx的api,Deepl的api)

前序 常见问题&#xff1a; 1.有时候想翻译网页&#xff0c;又翻译文献怎么办&#xff1f;下两个软件&#xff1f; 2.什么软件可以翻译视频字幕&#xff1f; 3.什么软件可以翻译PDF文件&#xff1f; 沉浸式翻译介绍 可以翻译文献可以翻译视频字幕可以翻译PDF文件支持OpenAI翻译…

7 个 iMessage 恢复应用程序/软件可轻松恢复文本

由于误操作、iOS 升级中断、越狱失败、设备损坏等原因&#xff0c;您可能会丢失 iPhone/iPad 上的 iMessages。意外删除很大程度上增加了这种可能性。更糟糕的是&#xff0c;这种情况经常发生在 iDevice 缺乏备份的情况下。 &#xff08;iPhone消息消失还占用空间&#xff1f;&…

很多名人让人们警惕人工智能,这是为何?

很多名人让人们警惕人工智能的原因可以从多个角度来理解。首先&#xff0c;人工智能作为一个快速发展的领域&#xff0c;具有巨大的潜力和未知性。它涉及到机器学习、深度学习、神经网络等多个复杂的技术领域&#xff0c;而这些技术正日益渗透到我们的日常生活中&#xff0c;从…

JWT/JWS/JWE

JWT(JSON Web Token)&#xff1a;一种基于JSON格式&#xff0c;用于在Web应用中安全传递用户身份验证和授权信息的标准令牌&#xff0c;可以包含签名(JWS)和加密(JWE)的信息 MacAlgorithm(Message Authentication Code Algorithm)&#xff1a;消息认证码算法 HMAC(Hash-based…

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

目录 一、DS1302相关写函数 &#xff08;1&#xff09;Write&#xff3f;Ds1302 &#xff08;2&#xff09;Write&#xff3f;Ds1302&#xff3f;Byte 二、DS130相关数据操作流程及相关代码 &#xff08;1&#xff09;DS1302初始化数据操作流程及相关代码 (shijian[i]/10&…

阿里云4核8G服务器ECS通用算力型u1实例优惠价格

阿里云4核8G服务器优惠价格955元一年&#xff0c;配置为ECS通用算力型u1实例&#xff08;ecs.u1-c1m2.xlarge&#xff09;4核8G配置、1M到3M带宽可选、ESSD Entry系统盘20G到40G可选&#xff0c;CPU采用Intel(R) Xeon(R) Platinum处理器&#xff0c;阿里云活动链接 aliyunfuwuq…

2023年度总结:允许迷茫,破除迷茫;专注自身,把握当下

0、前言 &#x1f4dc;为什么24年已经过了几个月&#xff0c;才提笔写这年度总结呢&#xff1f;毫不羞愧直问我的内心&#xff0c;其实就是懒罢了。直到前几天朋友看到了我去年写的总结&#xff0c;我自己点进那篇总结&#xff0c;完完整整的看了一遍&#xff0c;又翻看我23年…

C#使用Selenium驱动Chrome浏览器

1.Selenium库依赖安装 Selenium WebDriver是Selenium项目的一部分&#xff0c;用于模拟用户在Web应用程序中的交互操作。它支持多种浏览器&#xff0c;如Chrome、Firefox、IE等&#xff0c;且与各种编程语言&#xff08;如Java、Python、C#等&#xff09;兼容&#xff0c;具有…

探索Linux的挂载操作

在Linux这个强大的操作系统中&#xff0c;挂载操作是一个基本而重要的概念。它涉及到文件系统、设备和数据访问&#xff0c;对于理解Linux的工作方式至关重要。那么&#xff0c;挂载操作究竟是什么&#xff0c;为什么我们需要它&#xff0c;如果没有它&#xff0c;我们将面临什…