paper:https://openreview.net/forum?id=TVHS5Y4dNvM
code:https://github.com/tmp-iclr/convmixer

名词解释:
patch:因为transformer的输入是在backbone的feature map,可以视feature map的每一个像素均为原图的一块,也就是本文的patch。

前言:作者很有个性,基本上没按八股格式写,而且非常的简洁,若看代码,会发现比论文还简洁,很容易看懂。另外本文是不是也证明了若使用大尺寸卷积+大stride可以得到意想不到的效果?

文章目录

  • 摘要
  • 1.引言
  • 2.A Simple Model: ConvMixer
  • 3.实验
  • 4.相关工作(略)
  • 5.总结

摘要

  尽管卷积网络多年来一直是视觉任务的主导架构,但最近的实验表明,基于transformer的模型,尤其是视觉transformer(ViT),在某些情况下可能超过其性能。然而,由于变压器中自我注意层的二次运行时间,VIT需要使用patch嵌入,将图像的小区域组合成单个输入特征,以便应用于较大的图像尺寸。这就提出了一个问题:ViTs的性能是由于其固有的更强大的Transformer架构,还是至少部分由于使用patch作为输入表示?在本文中,我们为后者提供了一些证据:具体来说,我们提出了ConvMixer,这是一个非常简单的模型,在思想上类似于ViT和更基本的MLP-Mixer,因为它直接对作为输入的patch操作,分离空间和通道维度的混合,并在整个网络中保持相同的大小和分辨率。然而,相比之下,ConvMixer只使用标准的卷积来实现混合步骤。尽管它很简单,我们证明了ConvMixer在类似参数计数和数据集大小的情况下优于ViT、MLP-Mixer及其一些变体,此外还优于ResNet等经典视觉模型。

1.引言


  多年来,卷积神经网络一直是应用于计算机视觉任务的深度学习系统的主导架构。但是最近,基于transformermodels的架构,例如。,即所谓的Vision Transformer架构(Dosovitskiy et al.,2020),在许多此类任务中展示了令人信服的性能,通常优于经典的卷积架构,特别是对于大型数据集。一个可以理解的假设是,Transformer成为视觉领域的主导架构只是时间问题,就像它们成为语言处理领域的主导架构一样。然而,为了将变形金刚应用到图像上,必须改变其表示方式:因为最初的tranformer的self-attention层的计算成本与图像像素的平方成正比,为解决此问题,目前的不得不将一张图分割成多个patch,并线性的嵌入,并使用这些patch作为输入。

  在这项工作中,我们探讨了这样一个问题:从根本上说,Vision Transformer的强大性能可能更多地来自于这种基于补丁的表示,而不是Transformer架构本身。我们开发了一个非常简单的卷积架构,我们将其命名为“ConvMixer”,因为它与最近提出的MLP-Mixer相似(Tolstikhin et al.,2021)。这个架构在很多方面与Vision Transformer(和MLP-Mixer)相似:它直接对补丁进行操作,它在所有层中保持相同分辨率和大小的表示,它不向下采样连续层的表示,它将信息的“通道混合”与“空间混合”分离。但与Vision Transformer和MLP-Mixer不同的是,我们的架构只通过标准的卷积来完成所有这些操作。

  我们在本文中展示的主要结果是,尽管ConvMixer架构极其简单(它可以在约6行密集的PyTorch代码中实现),但它优于“标准”计算机视觉模型,如类似参数数的ResNets和一些相应的vision Transformer和MLP-Mixer变体,(即使这些模型添加了一系列旨在使这些体系结构在较小的数据集上更具性能的功能,依然不如本文模型的性能)。这表明,至少在某种程度上,patch表示本身可能是像Vision transformer这样的新架构“卓越”性能的最关键组件。虽然这些结果自然只是一个简单的对比,但我们相信这提供了一个强大的“令人费解但基于patch”的基线,可以与未来更高级的架构进行比较。

2.A Simple Model: ConvMixer


我们的模型称为ConvMixer,由一个patch嵌入层和一个由简单的完全卷积块的重复应用组成的block组成。我们保持了patch嵌入的空间结构,如图2所示。patch的嵌入尺寸为 p p p,并使用卷积使其嵌入维度从 c i n c_{in} cin变为 h h h,输出维度为 h h h,卷积核尺寸为 p p p,步幅为 p p p:
z 0 = B N ( σ C o n v c i n → h ( X , s t r i d e = p , k e r n e l _ s i z e = p ) ) ⋯ ( 1 ) z_{0}=BN(\sigma {Conv_{c_{in}\to h}(X,stride=p,kernel\_size=p)})\cdots (1) z0=BN(σConvcinh(X,stride=p,kernel_size=p))(1)
注:patch embedding可以视为将原图使用卷积直接分为patch size,实现方式为768个核尺寸为patch_size,stride=patch_size的卷积
ConvMixer由深度可分离卷积组成(例如分组),使用了例如1*1卷积。ConvMixer在使用了异常大的卷积核情况下的深度可分离卷积可以取得最佳结果,详细部分见节3。每个卷积后面都有一个激活和激活后的BatchNorm:

在多次应用该块之后,我们执行全局池以获得sizeh的特征向量,并将其传递给softmax分类器。参见图3了解PyTorch中ConvMixer的实现。

Design parameters. ConvMixer的实例化取决于四个参数:(1) 宽度或者隐藏层的维度 h h h(即patch embedding的维度). (2)深度或ConvMixer层的重复次数。(3)控制模型内部分辨率的patch的大小 p p p。(4)深度卷积层的kernel_size k k k。我们以其隐藏的维度和深度来命名ConvMixer,比如 C o n v M i x e r − h / d ConvMixer-{h/d} ConvMixerh/d。我们参考由patch大小划分的原始输入大小作为内部分辨率;但是请注意,convMixer支持可变大小的输入。

**Motivation.**我们的架构基于混合的思想,如Tolstikhin等人(2021年)。特别是,我们选择深度卷积来混合空间位置,选择点卷积来混合通道位置。先前工作的一个关键思想是MLP和自我注意可以混合遥远的空间位置,也就是说它们可以有任意大的感受野。因此,我们使用具有异常大的内核大小的卷积来混合遥远的空间位置。

虽然self-attention和MLP理论上更灵活,允许较大的感受野和内容感知行为,但卷积的诱导偏差非常适合视觉任务,并拥有高数据效率。通过使用这种标准操作,我们还可以看到与传统的金字塔形、渐进式下采样的卷积网络设计相比,patch表示本身的效果。

3.实验

CIFAR-10实验。我们首先在CIFAR-10上进行了小规模的实验,ConvMixers在仅有0.7M参数量的情况下实现了96%的精度,展示了卷积偏见对于数据的有效性。此实现的细节部分见附录B。

Training 设置。我们主要评估ImageNet-1k分类上的ConvMixer,无需任何预训练或额外数据。我们将ConvMixer添加到timm框架(Wightman,2019)中,并使用近乎标准的设置对其进行培训:除了默认的时间分段外,我们还使用了RandAugment(Cubuk等人,2020)、mixup(Zhang等人,2017)、CutMix(Yun等人,2019)、随机擦除(Zhong等人,2020)和gradient norm
clipping 。我们使用了AdamW(Loshchilov& Hutter,2018)优化器和简单的三角学习率计划。由于计算量有限,我们没有在ImageNet上进行超参数调整,并且比竞争对手的训练次数少。因此,我们的模型可能过拟合/欠拟合,我们报告的精确度可能低估了我们模型的能力。

Result. 参数量为52M的 C o n v M i x e r − 1536 / 20 ConvMixer-1536/20 ConvMixer1536/20在ImageNet上的top-1 精度为81.4%,而参数量为21M的 C o n v M i x e r − 768 / 32 ConvMixer-768/32 ConvMixer768/32在ImageNet上的top-1 精度为80.2%(见表1).更宽的ConvMixer可以在更少的epoch实现收敛但却需要更多的显存与计算资源。在更大的kernel_size中取得了最佳效果:当将 C o n v M i x e r − 1536 / 20 ConvMixer-1536/20 ConvMixer1536/20的kernel_size从9降为3后,其精度降低了1%(对于kernel_size的问题见附录A&B)。在我们的实验中,小尺寸的patch有更好的效果,这点与Sandler等人(2019)类似。我们认为更大的patch需要更深的ConvMixer。我们用Relu训练了一个模型,证明了在最近各种研究方向中流行的GELU(Hendrycks & Gimpel,2016)并非并要的。

**Comparisons.**我们的模型和训练设置非常类似于(ImageNet1k-only) DeiT (Touvron et al.,2020);在最近的各种研究方向中的模型,我们认为,与CaiT (Touvron等人,2021b)等模型相比,DeiT和ResMLP是最公平的比较。我们使用与我们相同的过程来训练ResNets,因为原来的结果现在已经过时了。

看看表1和图1,ConvMixer在给定的参数预算下实现了具有竞争力的精度: C o n v M i x e r − 1536 / 20 ConvMixer-1536/20 ConvMixer1536/20优于ResNet-152和ResMLP-B24,尽管参数少得多,而且与DeiT-B竞争。 C o n v M i x e r − 768 / 32 ConvMixer-768/32 ConvMixer768/32只使用了ResNet-152的三分之一的参数,但同样准确。然而,ConvMixers的推理速度比竞争对手慢得多,可能是因为它们的补丁尺寸较小;超参数调优和优化可以缩小这一差距。有关更多讨论和比较,请参见表2和附录A。

4.相关工作(略)

5.总结

我们介绍了ConvMixers,这是一类非常简单的模型,它仅使用标准卷积独立混合patch embbedding的空间和通道位置。虽然我们的模型和实验都不是为了最大限度地提高精度或速度而设计的,但ConvMixer的性能优于Vision Transformer和MLP混合器,并且与Resnet、DeiTs和ResMLP相比,具有相当的竞争力。

我们提供的证据表明,越来越普遍的“各向同性”体系结构和简单的patch embbedding的本身就是一个强大的深度学习模板。patch embbedding允许一次进行所有下采样,从而立即降低内部分辨率,从而增加有效的接收信息大小,使其为远距离空间对齐信息。我们的标题虽然夸张,但指出注意力并不是从语言处理到计算机视觉的唯一输出:标记化输入,例如使用patch embbedding,也是一个强大而重要的路径。

虽然我们的模型不是最先进的,但我们发现其简单的patch混合设计令人满意。我们希望ConvMixer可以作为未来基于patch的架构(具有新颖操作)的基线,或者它们可以为新的概念简单且性能良好的模型提供基本模板。

Future work. 我们乐观地认为,在经过更长的训练和更多的正则化和超参数调优之后,带有更大patch 的更深层次的ConvMixer可以在准确性、参数和吞吐量之间达成理想的平衡。大核深度卷积的低级优化可以大幅提高吞吐量。类似地,对我们的体系结构进行小的改进,如添加瓶颈或更具有表达能力的分类器,可以以简单换取性能。

Patches Are All You Need?相关推荐

  1. 用-force –opengl 指令_OpenGL-使用Tessellation技术绘制Cubic Bézier Patches

    全球图形学领域教育的领先者.自研引擎的倡导者.底层技术研究领域的技术公开者,东汉书院在致力于使得更多人群具备内核级竞争力的道路上,将带给小伙伴们更多的公开技术教学和视频,感谢一路以来有你的支持.我们正 ...

  2. matplotlib.patches.Polygon

    多边形补丁,在做面积图的时候使用 class matplotlib.patches.Polygon(xy, closed=True, **kwargs) 属性 说明 agg_filter unknow ...

  3. matplotlib 可视化 —— matplotlib.patches

    官方帮助文档 patches - Matplotlib 1.5.1 documentation patches 下主要包含的常用图形类有: Eclipse Circle Wedge 1. plt.gc ...

  4. 一个挑战 ViT,MLP-Mixer 的新模型 ConvMixer:Patches Are All You Need? [Under Review ICLR 2022]

    Convolutions Attention MLPs Patches are All Your Need? [OpenReview] [GitHub] 2021/11/13 更新: 已经确定,被 I ...

  5. SANER 2018 论文阅读- Dissection of a Bug Dataset: Anatomy of 395 Patches from Defects4J

    Foreword This blog aims at explaining the SANER 2018 paper - "Dissection of a Bug Dataset: Anat ...

  6. Fine-Grained Visual Classification via Progressive Multi-Granularity Training of Jigsaw Patches

    文章索引 代码:PRIS-CV/PMG-Progressive-Multi-Granularity-Training 论文:Fine-Grained Visual Classification via ...

  7. matplotlib高级教程之形状与路径——patches和path

    一.什么是形状和路径 在一般的使用matplotlib进行绘图的时候,线形图.条形图.折线图.扇形图等等都是我们常见的一些绘图函数,但是有时候我们需要绘制一些特殊的形状和路径,比如我们要绘制一个椭圆, ...

  8. ConvMixer:Patches Are All You Need

    Patches Are All You Need 发表时间:[Submitted on 24 Jan 2022]: 发表期刊/会议:Computer Vision and Pattern Recogn ...

  9. Fast-MoCo: Boost Momentum-based Contrastive Learning with Combinatorial Patches

    论文链接:https://arxiv.org/abs/2207.08220 ECCV 2022 Abstract 基于对比的自监督学习方法近年来取得了巨大成功,但是自监督训练想要获得不错的结果需要很长 ...

  10. ax.patches 表示什么?

    ax.patches 表示条形图中的每一个矩形 原图: 现在,我们为每个立柱增加对应的数值显示: fig,ax = plt.subplots(figsize=(20,10), dpi=80)# 确定图 ...

最新文章

  1. Python代码高亮显示工具
  2. 51CTO我的梦想将在这里起航【我与51CTO的故事】
  3. python单例模式数据库连接池_Python实现单例模式的四种方式
  4. junit跳过datasource_maven – spring集成测试无法加载上下文“另一个资源已存在,名称为dataSource”...
  5. python创建只包含一个元素的元组时_Python中声明只包含一个元素的元组数据方法...
  6. Excel2003怎样拆分单元格
  7. dede图片轮播php代码,织梦图片集利用JS输出图片轮播
  8. matlab 均值滤波实现
  9. 微信商户批量转账到零钱
  10. 从祖师级到新生代,48位开发者的“武功秘籍”
  11. 木讷的程序员需要知道的事情 (五)
  12. 逻辑思维训练——假设法
  13. 【转载】Microsoft 365 E5邮件API调用自动订阅无限续订服务
  14. 谈谈在我在外包公司工作的经历
  15. ckeditor提交时判断是否为空
  16. 历届奥斯卡最佳影片(1928-2003)
  17. SIP协议栈OSIP分析
  18. 物理实验期末测试(一)
  19. fastreport在delphi中的使用
  20. vsport 虚拟串口 控件 Virtual Serial Port ActiveX注册码

热门文章

  1. 华为南研所机考练习2-计算麻将的番数
  2. RTSP基础之RTSP/RTP推流协议流程
  3. What is outlier?
  4. 乌鸦救赎《社交光环》
  5. Hashtable的原理
  6. 绕不开的TCP之三次握手
  7. 彩色图像、灰度图像、二值图像和索引图像
  8. 凤凰新闻自动评论推荐软件--把自己的评论推荐到最前面,然后通过头像、用户名或者评论内容进行展示
  9. 必须得会的汽车ECU研发基础—软件开发流程6
  10. 操作系统在计算机科学发展中的重要性,浅谈计算机科学中的系统论与辩证法