本文分享论文『ConvMLP: Hierarchical Convolutional MLPs for Vision』,由 UO&UIUC 提出 ConvMLP:一个用于视觉识别的层次卷积MLP,且是一个轻量级、阶段级、具备卷积层和MLP的设计。ConvMLP在ImageNet-1k、2.4G MACs和9M参数量上达到了76.8% 的Top-1精度。
详细信息如下:
- 论文链接:https://arxiv.org/abs/2109.04454
- 项目链接:https://github.com/SHI-Labs/Convolutional-MLPs
导言:
最近发现,由一系列连续的多层感知机块(MLP Block)组成的基于MLP的架构,可以达到与基于卷积和Transformer的方法相当的结果。然而,大多数方法都采用了固定维度输入的空间MLP,因此很难将其应用于下游任务,如目标检测和语义分割 。此外,单阶段设计进一步限制了其他计算机视觉任务的性能,且全连接层具有较大的计算量。
为了解决这些问题,作者提出了ConvMLP:一个用于视觉识别的层次卷积MLP,这是一个轻量级、阶段级、具备卷积层和MLP的设计。ConvMLP在ImageNet-1k、2.4G MACs和9M参数量上达到了76.8% 的Top-1精度。目标检测和语义分割的实验进一步表明,ConvMLP学习的视觉表示可以无缝迁移,并在较少的参数下获得有竞争力的结果。
01
Motivation
图像分类是计算机视觉中的一个基本问题,过去五年来,大多数里程碑式的解决方案都是由深度卷积神经网络主导的。自2020年底,视觉Transformer的兴起以来,研究人员不仅将Transformer应用于图像分类,而且还探索了除卷积神经网络之外的更多的模型。
MLP-Mixer提出了token混合和通道混合mlp,以允许空间位置和通道之间的交互。ResMLP使用跨patch和跨通道子层作为构件。gMLP]通过添加空间门控单元来连接通道MLP。从本质上说,基于MLP的模型表明,在分类任务上,简单的前馈神经网络可以实现与卷积和attention相似的操作。
然而,使用mlp对空间信息进行编码需要固定输大小入的维度 ,这使得很难部署在一些下游的计算机视觉任务上(如目标检测和语义分割),因为它们通常需要任意输入大小的分辨率。此外,单阶段设计可能会限制目标检测和语义分割的性能 ,因为它们是基于特征金字塔进行预测的。mlp也带来了沉重的计算负担和更多的参数 。比如,MLP-Mixer的只能略超过ViT-Base,但是参数量和计算量是ViT-Base的两倍多。
基于这些观察结果,作者提出了ConvMLP:用于视觉识别的层次卷积MLP主干,它是卷积层和MLP层的组合,可以用于目标检测和分割等下游任务,如上图所示。为了解决MLP的框架中对输入维度的约束,作者首先将所有空间mlp替换为跨通道连接 ,并建立一个纯MLP baseline模型。
为了弥补空间信息交互,作者在其余的MLP阶段上添加了一个轻量级的卷积阶段 ,并使用卷积层进行降采样 。此外,为了增加MLP阶段的空间连接,作者在每个MLP块中的两个通道MLPs之间添加了一个3×3深度卷积 ,因此称之为Conv-MLP块。作者通过对卷积层和MLP层的共同设计,建立了用于图像分类的ConvMLP模型的原型。
与最近的基于MLP的模型相比,它以更少的参数在ImageNet-1k上实现了不错性能。在目标检测和语义分割方面,作者在MSCOCO和ADE20K基准数据集上进行了实验。结果表明,使用ConvMLP作为主干网络,可以在性能和模型大小之间实现更好的权衡。
02
方法
2.1.整体设计
ConvMLP的整体框架如上图所示。与其他基于MLP的模型不同,作者使用卷积tokenizer来提取初始特征图()。为了减少计算和改善空间连接,作者采用纯卷积阶段进行tokenization,生成特征图()。然后,作者设置3个Conv-MLP阶段,生成2个特征图和(分别为和)。每个Conv-MLP阶段包括多个Conv-MLP块,每个Conv-MLP块有一个通道MLP,然后是一个深度卷积层,然后是另一个通道MLP。
与之前的工作类似,作者在这些块中应用了残差连接和层归一化。每个通道MLP由两个全连接层组成,带有一个GeLU激活函数和dropout。然后,作者将全局平均池化应用到输出特征上,并通过分类head进行分类。当将ConvMLP应用于下游任务时,可以使用特征映射、、、来生成没有输入大小约束的特征金字塔。
2.2.卷积Tokenizer
作者用卷积Tokenizer替换原来的Patch Tokenizer。它包括三个卷积块,每个块由一个3x3的卷积、BatchNorm和ReLU激活函数组成。该Tokenizer还附加了一个最大池化层。
2.3.卷积阶段
为了增加空间连接,作者采用了完全卷积的阶段。它由多个块组成,其中每个块由两个1x1卷积层组成,中间有一个3x3卷积层。(蓝色框所示)
2.4.Conv-MLP阶段
为了减少对输入维度的约束,作者用通道mlp替换所有的空间mlp。但是这样会导致在空间上缺少信息的交互,因此作者通过添加卷积层来进行局部信息交互,以弥补空间交互的缺失。(橘色框所示)
Convolutional Downsampling
在baseline模型中,作者遵循了Swin Transformer中使用基于线性层的patch合并方法来对特征图进行下采样的设计方式。不同的是,作者用步长为2的3x3卷积层替换patch合并,这使得下采样的时候,能够有空间信息的重叠。这提高了分类精度,同时只引入了很少的参数。
Convolution in MLP block
作者进一步在MLP块中的两个通道mlp之间添加了一个深度卷积层,并将其命名为Conv-MLP块。它是一个3x3卷积层,与两个通道mlp的通道数相同,用于增强相邻窗口的联系。这弥补了去除空间mlp的不足,从而大幅度地提高了性能,而只带来很少的参数。
2.5. Model Scaling
为了使ConvMLP可拓展,作者在卷积阶段和Conv-MLP阶段的宽度和深度上扩展了ConvMLP。基于此,作者提出了3个ConvMLP变体。最小的ConvMLP-S只从两个卷积块开始,在3个ConvMLP阶段中,分别有2、4和2个Conv-MLP块。ConvMLP-M和ConvMLP-L从三个卷积块开始。在3个Conv-MLP阶段中,ConvMLP-M有3、6、3个Conv-MLP块,ConvMLP-L在有4、8、3个Conv-MLP块。具体细节如上表所示。
03
实验
3.1. Ablation Study
在Baseline的基础上,作者加入了不同模块,进行消融实验。上表显示了不同消融模块作用,可以看出,本文提出的所有模块都对于性能提升都有作用。
3.2. Comparisons with SOTA
在ImageNet-1k图像分类上,作者将ConvMLP与的其他SOTA模型进行了比较。
3.3. Transfer learning
为了验证本文方法在其他数据集上的迁移能力,作者在多个数据集上和其他方法进行对比,结果如上表所示。
3.4. Object Detection & Semantic Segmentation
上图显示了,在MS COCO和ADE20K数据集上,ConvMLP和ResNet作为RetinaNet, Mask R-CNN的Backbone的结果。基于ConvMLP的模型在不同的评估指标和任务下显示出一致的性能提升。
3.5. Visualization
可以观察到,与ResNet相比,ConvMLP学习的表示涉及更多的低级特征,如边缘或纹理,与Pure-MLP的baseline相比,涉及更多的语义信息。
04
总结
本文分析了当前基于MLP的模型对视觉表示学习的约束条件:1.空间mlp只接受固定分辨率的输入,使得难以转移到下游任务,如目标检测和分割 。2.由于增加的复杂度,单阶段设计和全连接层进一步限制了MLP结构的使用 。
为了解决这些问题,作者提出了ConvMLP:一个层次卷积MLP,通过结合卷积层和mlp来进行视觉表示的学习。ConvMLP架构可以无缝迁移到其他CV任务的网络中,如RetinaNet、MaskR-CNN和Semantic FPN。与其他方法相比,在不同基准数据集上,ConvMLP在参数较少的情况下,达到了不错的结果。
随着Transformer的兴起,目前大多数的工作是将CNN的设计理念结合到Transformer中。而本文重新revisit的MLP的不足(参数量大、过拟合等),并利用CNN的设计理念来缓解这些问题 。由于借鉴了CNN中的层次结构,因此,本文的方法在比较少的计算量下,也能达到比较好的效果。
作者介绍
研究领域:FightingCV公众号运营者,研究方向为多模态内容理解,专注于解决视觉模态和语言模态相结合的任务,促进Vision-Language模型的实地应用。
知乎/公众号:FightingCV