论文阅读笔记 | 分类网络——ConvMixer

简介: 论文阅读笔记 | 分类网络——ConvMixer

paper:Patches Are All You Need

code:https://github.com/tmp-iclr/convmixer

image.png

(目前文章还处理盲审阶段)


摘要:


多年来卷积网络一直是视觉任务的主要架构,但最近的实验表明,基于Transformer的模型,尤其是vision Transformer (ViT),在某些设置下可能会超过它们的性能。然而,为了将 Transformer 应用于图像领域,信息的表示方法必须改变:因为如果在每像素级别上应用 Transformer 中的自注意力层,它的计算成本将与每张图像的像素数成二次方扩展,所以折衷的方法是首先将图像分成多个 patch,再将这些 patch 线性嵌入 ,最后将 transformer 直接应用于此 patch 集合。


随后,作者便提出了一个问题:ViT的性能是由于固有的更强大的Transformer架构,还是因为使用patch作为输入来进行表示?


基于这个想法,作者提出了ConvMixer为后者提供了一些证据。ConvMixer类似于ViT和更基本的MLP-Mixer,它直接对作为输入的patch操作,分离空间和通道维度的混合,并在整个网络中保持相同的大小和分辨率。相比之下,ConvMixer只使用标准的卷积来实现混合步骤。


ConvMixer在类似参数计数和数据集大小的情况下优于ViT、MLP-Mixer及其一些变体,此外还优于ResNet等经典视觉模型。


1. Introduction


Vision Transformer架构在许多计算机视觉任务中展示了令人信服的性能,通常优于经典的卷积架构,特别是对于大型数据集。一个可以理解的假设是,Transformer成为视觉领域的主导架构只是时间问题,就像它们成为语言处理领域(NLP)的主导架构一样。


然而,为了将 Transformer 应用于图像领域,信息的表示方法必须改变:因为如果在每像素级别上应用 Transformer 中的自注意力层,它的计算成本将与每张图像的像素数成二次方扩展,所以折衷的方法是首先将图像分成多个 patch,再将这些 patch 线性嵌入 ,最后将 transformer 直接应用于此 patch 集合。


作者提出了一个探讨:Vit的强大性能可能更多的来自与基于patch的表示方法,而不是Transformer架构的本身。为此,作者开发了一个非常简单的卷积架构,命名为:ConvMixer。


ConvMixer直接在patch上操作,它在所有层中保持相同分辨率和大小的表示。其不对连续层的表示进行下采样操作,分离空间和通道维度的混合。但与Vision Transformer和MLP-Mixer不同的是,ConvMixer架构只通过标准的卷积来完成所有这些操作。


ConvMixer架构极其简单(它可以在约6行密集的PyTorch代码中实现),但它优于一些标准的计算机视觉模型,如类似参数数的ResNets和一些相应的vision Transformer和MLP-Mixer变体。实验结果表明,patch表示本身可能会是Vision transformer这样的新架构卓越性能的最关键组件。


2. ConvMixer Model


ConvMixer由一个patch embedding层和一个简单的全卷积块的重复应用组成,并保持着patch embedding的空间结构。ConvMixer结构如图所示:

image.png

(整体结构一目了然,确实比较简单)

image.png

应用多次convmixer layer之后,执行全局池化操作以得到一个size为h 的特征向量,并将其传递给softmax分类器。(也就是将h个patch变成了一个h维的特征向量,再进行全连接分类)


  • 维度变化过程:

现在以一个3x224x224图像处理为例,设置p为7也就是设置patch_size大小为7,所以会得到32x32个patch,每个patch多携带的信息维度channels为h(设置dim=512,既h=512),那么经过了Patch Embedding卷积操作后会有3x224x224变成512x32x32的大小(在Patch Embedding这一步中,kernel_size = stride = patch_size = 7)。通过了Patch Embedding之后,就是堆叠一系列的DW+PW卷积(这里的kernel_size会认为设置得大一点,来混合较远的空间位置),这些步骤中的channels是保持不变的,最后32x32会被池化为1x1,也就是512x1x1再通过一个全连接进行分类,得到最后的结果。


  • 设计参数:ConvMixer 的实例化取决于四个参数:

(1)宽度或隐藏维度 h(即 patch 嵌入的维度)

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

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

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

image.png

  • 动机:ConvMixer 架构基于混合思想

该研究选择了 depthwise 卷积来混合空间位置,选择 pointwise 卷积来混合通道位置。先前工作的一个关键思想是 MLP 和自注意力可以混合较远的空间位置,即它们可以具有任意大的感受野。因此,该研究使用较大的内核卷积来混合较远的空间位置。


pytorch代码实现

代码可以所是比较简单了

import torch.nn as nn
import torch
class Residual(nn.Module):
    def __init__(self, fn):
        super().__init__()
        self.fn = fn
    def forward(self, x):
        return self.fn(x) + x
def ConvMixer(dim, depth, kernel_size=9, patch_size=7, n_classes=1000):
    return nn.Sequential(
        nn.Conv2d(3, dim, kernel_size=patch_size, stride=patch_size),
        nn.GELU(),
        nn.BatchNorm2d(dim),
        *[nn.Sequential(
            Residual(nn.Sequential(
                nn.Conv2d(dim, dim, kernel_size, groups=dim, padding="same"),
                nn.GELU(),
                nn.BatchNorm2d(dim)
            )),
            nn.Conv2d(dim, dim, kernel_size=1),
            nn.GELU(),
            nn.BatchNorm2d(dim)
        ) for i in range(depth)],
        nn.AdaptiveAvgPool2d((1, 1)),
        nn.Flatten(),
        nn.Linear(dim, n_classes)
    )



另外一个更加简化的版本为:


def ConvMixr(h,d,k,p,n):
  S,C,A=Sequential,Conv2d,lambdax:S(x,GELU(),BatchNorm2d(h))
  R=type('',(S,),{'forward':lambdas,x:s[0](x)+x})
  return S(A(C(3,h,p,p)),*[S(R(A(C(h,h,k,groups=h,padding=k//2))),A(C(h,h,1))) for i
  in range(d)],AdaptiveAvgPool2d((1,1)),Flatten(),Linear(h,n))


3. Result


  • 与DeiT与ResMLP的比较:

image.png

  • 与其他模型的比较(全面):

c2440525661447898c6e57a7f3d0931c.png

ConvMixers 的推理速度较竞品模型慢得多,这可能因为它们的 patch 更小。超参数调整和优化可以缩小这一差距。从图中也可以看见一个大Kernel_Size卷积操作所带来的效果提升。


小结:


作者提出了ConvMixer,仅仅使用标准卷积就能独立地混合patch embeddings的空间和通道位置。尽管达不到SOTA,但是优于Vision Transformer和MLPMixer,并可以与ResNets、DeiTs和ResMLPs竞争。


实验证明,越来越常见的“各向同性”架构与一个简单的Patch embeddings就可以构建出一个强大的网络结构。Patch embeddings允许所有的下采样同时发生,立即降低了内部分辨率,从而增加了有效的感受野大小,使其更容易混合遥远的空间信息。


标题主要想表达的意思是,attention并不是全部,token与Patch embeddings同样是一个重要的因素。


作者认为,经过更长的训练和更多的正则化和超参数调优,带有更大patch的更深层次的ConvMixer可以在精度、参数和吞吐量之间达成理想的折衷。大核深度卷积的低级优化可以大幅提高吞吐量。类似地,对体系结构进行小的改进,如添加bottlenecks或更具有表达能力的分类器,可以以简单换取性能。


整片文章主要内容只有4页,最后的结尾作者还补充了一点:

image.png


总结:


作者提出了Patch可能是Vit结构中另外一个比较重要的因素,而不仅仅是attention。通过搭建了一个比较简单的模型结构ConvMixer,结合了Patch Embedding同样可以与诸多先进模型比较,说明Patch在网络结构的重要性。



目录
相关文章
|
4月前
|
人工智能 算法 异构计算
阿里云基础网络技术5篇论文入选全球网络顶会NSDI
近日,阿里云基础网络技术5篇论文被NSDI 2025主会录用。研究涵盖大模型训练网络故障诊断、仿真、容器网络性能诊断、CDN流控算法智能选择及GPU解耦推理优化等领域。其中,《Evolution of Aegis》提出增强现有体系+训练过程感知的两阶段演进路线,显著降低故障诊断耗时;《SimAI》实现高精度大模型集群训练模拟;《Learning Production-Optimized Congestion Control Selection》通过AliCCS优化CDN拥塞控制;《Prism》设计全新GPU解耦推理方案;《ScalaCN》解决容器化RDMA场景性能问题。
156 7
阿里云基础网络技术5篇论文入选全球网络顶会NSDI
|
4月前
|
存储 数据管理 网络虚拟化
特殊网络类型分类
本文介绍了网络技术中的关键概念,包括虚拟局域网(VLAN)、存储区域网络(SAN)、网络桥接、接入网以及按拓扑结构和交换方式分类的网络类型。VLAN通过逻辑分隔提高性能与安全性;SAN提供高性能的数据存储解决方案;网络桥接实现不同网络间的互联互通;接入网解决“最后一千米”的连接问题。此外,文章详细对比了总线型、星型、树型、环型和网状型等网络拓扑结构的特点,并分析了电路交换、报文交换和分组交换的优缺点,为网络设计与应用提供了全面参考。
154 8
|
6月前
|
SQL 缓存 Cloud Native
NSDI'24 | 阿里云飞天洛神云网络论文解读——《Poseidon》揭秘新型超高性能云网络控制器
NSDI'24 | 阿里云飞天洛神云网络论文解读——《Poseidon》揭秘新型超高性能云网络控制器
226 63
|
4月前
|
canal 负载均衡 智能网卡
阿里云洛神云网络论文入选SIGCOMM'25主会,相关实习生岗位火热招聘中
阿里云飞天洛神云网络的两项核心技术Nezha和Hermes被SIGCOMM 2025主会录用。Nezha通过计算网络解耦实现vSwitch池化架构,大幅提升网络性能;Hermes则提出用户态引导I/O事件通知框架,优化L7负载均衡。这两项技术突破解决了云网络中的关键问题,展现了阿里云在网络领域的领先实力。
712 2
|
6月前
|
前端开发 Java 关系型数据库
基于ssm的网络直播带货管理系统,附源码+数据库+论文
该项目为网络直播带货网站,包含管理员和用户两个角色。管理员可进行主页、个人中心、用户管理、商品分类与信息管理、系统及订单管理;用户可浏览主页、管理个人中心、收藏和订单。系统基于Java开发,采用B/S架构,前端使用Vue、JSP等技术,后端为SSM框架,数据库为MySQL。项目运行环境为Windows,支持JDK8、Tomcat8.5。提供演示视频和详细文档截图。
152 10
|
6月前
|
负载均衡 数据中心 芯片
NSDI'24 | 阿里云飞天洛神云网络论文解读——《LuoShen》揭秘新型融合网关 洛神云网关
NSDI'24 | 阿里云飞天洛神云网络论文解读——《LuoShen》揭秘新型融合网关 洛神云网关
171 0
|
9月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
218 17
|
9月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
170 10
|
9月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
|
9月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
175 10

热门文章

最新文章