0.引言
近年来,卷积神经网络一直是计算机视觉任务中的主要架构。然而,最近出现了基于Transformer模型的架构,例如ViT、Swin Transformer等,在许多任务中表现出引人注目的性能。相比于传统的卷积网络,在大型数据集上表现更佳。此外,具有更大自由度的MLP架构也在大型数据集上展现出良好的性能。这种变化似乎带来了神经网络的“表达范式”级别的变革。
Transformer在自然语言处理领域取得了巨大成功。然而,将Transformer应用于图像领域面临着许多问题,其中最先需要解决的问题是如何将图像视为Token。最简单的就是每个像素就是一个Token,但是这种方法在目前并不可行,因为如果在每像素级别上应用Transformer中的自注意力层,它的计算成本将与每张图像的像素数成平方扩展,而现在的硬件计算能力无法承担这样的成本。所以折中的方法是首先将图像分成多个Patch,将Transformer直接应用于Patch集合,则计算成本是Patch个数的平方。在此思想基础上,引导出了ViT、Swin Transformer等一系列优秀的工作,而MLP架构也是在类似的操作下被应用的。
ViT的卓越性能并非仅仅源于Transformer的强大架构,MLP-Mixer的出现证明了简单的MLP架构同样能够有出色表现。而ViT与MLP-Mixer的一个共同之处是,它们都将图像划分为Patches输入。这是否意味着Patches are all you need? 现在的Patch Embedding与传统的stride=1的卷积不同,它直接将一个 尺寸的Patch转换为c维的特征向量,这种将二维信息展平为一维的操作不再为Patch内的每个元素保留位置特征。
为了回答这个问题,ConvMixer应运而生。这是一个思路和实现都非常简单的模型,在思想上,它与ViT和MLP-Mixer类似,直接将Patch作为输入进行操作。然后采用逐层卷积来模拟Transformer Block的空间信息融合,采用逐点卷积来模拟MLP的通道信息融合。尽管它非常简单,但实验结果表明,ConvMixer在参数计数和数据集大小类似的情况下,ConvMixer不仅优于ResNet等经典视觉模型,还优于ViT、MLP-Mixer及其一些模型变体。
论文名称:Patches Are All You Need?
下载地址:https://openreview.net/pdf?id=TVHS5Y4dNvM
1.图像编码成向量
近一年多来,计算机视觉领域神经网络改进的一大进步是Patch Embedding。即Patches在卷积架构中效果更好。常用的Patch Embedding其实就是一个卷积核尺寸等于步长大小的非重叠卷积(Non-overlapping Convolution),然后经过一个激活函数和归一化层。例如,假设一个224×224×3的彩色图像作为输入,卷积核尺寸为7×7同时步长也为7,卷积核数量为1536,比如ViT中的Patch Embedding层。同时这一步有不同的实现方法:如在MLP-Mixer中,其表达的含义是将224×224×3拆分为32×32个Patch(224/7=32),每个Patch大小为7×7×3。然后将其进行展平成为一个147维度的向量。经过一个线性层变为一个1536维度的向量。
而在ConvMixer模型中,也是将224×224×3的彩色图像拆分为32×32个Patch(224/7=32),每个Patch大小为7×7×3。但是,这个过程是使用1536个7×7×3的卷积核(stride=7、padding=0)对图像进行卷积实现的。将卷积后的结果直接送入下游计算流程。
2.ConvMixer模块
在ConvMixer Layer中,采用分离空间和特征通道维度的计算方法,即先通过一个逐层卷积,再通过一个逐点卷积。每个卷积之后是一个激活函数和BN操作,其公式表达如下:
\(\begin{aligned}z_l^{^{\prime}}&=\mathrm{BN}(\sigma\{\text{ConvDepthwise}(z_{l-1})\})+z_{l-1}\\z_{l+1}&=\mathrm{BN}(\sigma\{\text{ConvDepthwise}(z_l^{^{\prime}})\})\end{aligned}\)
对比Transformer Block,可以看出,ConvMixer的基本思想是使用逐层卷积代替多头自注意力机制。需要注意的是,在ConvMixer Layer的逐层卷积中使用大卷积核会产生更好的效果,因为先前工作的一个关键思想是MLP和自注意力可以混合较远的空间位置,即它们可以具有任意大小的感受野。而大卷积核可以一定程度上模仿这种远距离信息交互的行为。选择逐层卷积而非普通卷积的原因是,在卷积核尺寸较大的情况下,如果不在通道维度上共享参数,参数和计算量将过大。此外,逐层卷积没有通道间的交互,这也模拟了注意力机制计算数据时仅融合空间信息的特性。
逐点卷积其实是代替Transformer Block中的MLP的,用来融合特征通道信息,值得关注的是,这里移除了残差连接。总的来说,ConvMixer使用了逐层卷积来混合空间信息,并选择逐点卷积混合通道信息。具体结构如图1所示。
![图片[1]-ConvMixer: 创新之路,卷积与多层感知机的相互借鉴-点头深度学习网站](https://venusai-1311496010.cos.ap-beijing.myqcloud.com/wp-content/upload-images/2024/02/20240223232546661.png)
3.ConvMixer网络结构
在Patch Embedding和多个ConvMixer Layer之后,经过一个全局池化、展平、全连接层即可获得分类输出,这与ResNet、Swin Transformer、AS-MLP等金字塔结构的分类头设计是一致的。具体的网络结构如图2所示。
![图片[2]-ConvMixer: 创新之路,卷积与多层感知机的相互借鉴-点头深度学习网站](https://venusai-1311496010.cos.ap-beijing.myqcloud.com/wp-content/upload-images/2024/02/20240223232648780-1024x302.png)
ConvMixer模型有两种配置,具体见表1。Patch size是最初切分的Patch大小;Kernel Size指ConvMixer Layer中逐层卷积使用的卷积核大小;Act. Fn指激活函数(GELU/ReLU)。1536/20指Token的维度为1536,ConvMixer Layer重复的次数为20。
![图片[3]-ConvMixer: 创新之路,卷积与多层感知机的相互借鉴-点头深度学习网站](https://venusai-1311496010.cos.ap-beijing.myqcloud.com/wp-content/upload-images/2024/02/20240223232804217-1024x301.png)
ConvMixer模型同时使用了GELU和RELU两种激活函数,论文中还提到:使用ReLU训练了一个ConvMixer模型精度也很高,以证明GELU是不必要的。由表1可知,在模型精度上,ConvMixer可以达到与现阶段模型相仿的图像识别准确率。
4.ConvMixer小结
将ConvMixer与经典卷积模型在图像处理的前期进行比较:
(1)经典的卷积算法在模型的前期采用有重叠的卷积(卷积核尺寸>步长)和池化进行下采样操作。
(2)ConvMixer则是使用不重叠的卷积(卷积核尺寸=步长)进行下采样,且使用的卷积核的数量要远远多于经典卷积模型。例如,在ConvMixer中Patch操作的卷积核数量是1536,而ResNet中第一次卷积核的数量则是64。这个差异是非常明显的。
这样设计的目的是让更多的卷积核从原始图像中提取更丰富的特征模式,从而有助于模型后期更有效地提取和理解特征。换个角度说,模型前期如果不能提取到足够的信息,那么这些缺失的信息在后续计算中将难以重建和处理。因此,在前期使用更精细的Patch提取更多的特征才是合理的。至于为什么ConvMixer使用不重叠的卷积,原因可能是重叠卷积计算量过大。
暂无评论内容