# Battle-of-the-Backbones

尽管Vision Transformer(ViTs)和自监督学习(SSL)越来越受欢迎,但在大多数任务中,文章发现在大型训练集上以监督方式预训练的卷积神经网络仍然表现最好。

paper:https://arxiv.org/pdf/2310.19909

code:https://github.com/hsouri/Battle-of-the-Backbones

要解决的问题:

距离深度学习的突破之作AlexNet已过去10年之久,期间各种网络架构层出不穷,那么作为研究者和实践者,该如何选择网络架构?

解决方案:

通过对各种预训练模型(包括视觉-语言模型、自监督学习模型等)在多种计算机视觉任务(如分类、对象检测等)上的性能进行大规模比较,来帮助研究者和实践者更好地选择合适的模型。这就像是在各种预训练模型中进行一场“角逐”,看看哪个模型的性能最好。

结论:

1、尽管Vision Transformer(ViTs)和自监督学习(SSL)越来越受欢迎,但在大多数任务中,文章发现在大型训练集上以监督方式预训练的卷积神经网络仍然表现最好。

2、在相同的架构和类似大小的预训练数据集上进行比较,文章发现SSL BackBone具有很高的竞争力,这表明未来的工作应该使用先进的架构和更大的预训练数据集进行SSL预训练。

关键词:

BoB:Battle of the Backbones

ID:In-Distribution

OOD:Out-of-Distribution

视觉~合集xxs10_泛化

影响BackBone网络性能的三个主要因素是其架构预训练算法预训练数据集。在这三个设计维度上,都有许多选择,为从业者构建计算机视觉系统提供了无数的组合。尽管有这么多的选择,但是从业者却没有可参考的资源,只能自己测试各个BackBone网络。

文章在“BackBone网络之战”中将这些BackBone网络进行对比。文章比较了许多流行的公开可用的预训练模型,还有随机初始化的基线模型,在各种下游任务上进行评估,包括图像分类、对象检测、图像检索等。为了全面考察BackBone网络的能力,文章评估它们在不同任务上的表现,这些任务分属以下几大类:

  • 分类:文章测量BackBone在各种下游分类任务上的微调和线性探测性能,包括自然图像、医学和卫星图像数据集。图像分类任务需要BackBone网络提取识别图像前景内容的特征,而不需要定位对象在图像中的具体数量和位置。
  • 对象检测和分割:不同于图像分类,密集预测任务需要BackBone提取包含对象精确位置的特征,在分割任务中需要像素级别定位,在检测任务中需要足够细致地绘制边界框。文章在这两个任务上评估BackBone网络。
  • 域外泛化:在实际应用中,计算机视觉系统通常会被部署在不同于训练数据分布的新数据上。即使是高性能模型,在域变化下也已知会失败。因此,文章评估模型在新下游域的泛化能力。
  • 图像检索:图像检索需要BackBone网络通过特征空间中的相似度来匹配相似的图像。文章探索需要根据语义内容、视觉相似度等不同标准匹配图像的任务。

除了协助从业者构建计算机视觉系统之外,这个基准测试的另一个核心目标是帮助引导研究界朝着寻求设计更好的BackBone网络的有益研究方向前进。BoB揭示了预训练例程和架构的优势和劣势,揭示了常见的误解和基本限制,以及改进的有希望的方向。下面,文章总结了几个主要的研究结果,并讨论了以前比较BackBone网络的努力。

文章的后续部分包含了大量的实验细节。因此,文章在下面提炼出几个关键的发现:▷ 在BoB的一系列全面评估中,涵盖了任务、数据集和设置(包括ID和OOD),在监督学习下,ConvNeXt-Base、SwinV2-Base(使用ImageNet-21k进行训练)和CLIP ViT-Base表现最好。在较小的规模上,ConvNeXt-Tiny和SwinV2-Tiny获胜,其次是DINO ViT-Small。▷ 尽管最近关注的焦点放在基于Transformer的架构和自监督学习上,但在文章考虑的大多数任务中,通过监督学习预训练的高性能卷积网络优于Transformer。▷ 观察到监督预训练的优越性是因为这些模型在更大的数据集上进行了训练。在相同数据集规模上的比较中,自监督学习模型胜过其监督学习的对应模型。▷ ViT对预训练数据量和参数数量的敏感性高于CNN。▷ 在任务间的性能存在强相关性 - 在BoB中表现最好的BackBone网络往往在各种任务和设置中都表现出色。请参见图1。

BoB指南

文章比较的BackBone之间的区别主要来自于它们的架构预训练算法预训练数据集。表1总结了文章要比较的BackBone,包括预训练算法、粗略分类、预训练数据集和架构。文章附录B中详细描述了每个算法、预训练数据集和架构。

视觉~合集xxs10_泛化_02

大小和公平比较的注意事项。许多从业者有限的计算资源,而且在自己的数据集上需要调优超参数而不超过计算预算。为了模拟这种场景,文章进行适度的超参数网格搜索,不允许特别长的训练计划,并且不考虑比ConvNeXt-Base更大的架构,除了Stable DiffusionBackBone,因为它只有一个尺寸。具体的超参数网格在后续章节详细说明。此外,文章仅使用公开可用的checkpoint,这些checkpoint对从业者也是可访问的。可用的checkpoint进行了不同程度的超参数调优,不同的预训练算法在不同的数据集和架构上进行了训练,所以精确的公平比较是不可行的。尽管如此,这种现有checkpoint的比较对从业者是相关的,因为它代表着现实的条件。文章在下游任务上为每个BackBone使用相同大小的超参数扫描。

任务

为了全面检验BackBone网络的能力,文章评估它们在许多下游任务上的表现,这些任务分属以下几类:

  • 分类:在3.1节中测量BackBone在各种下游分类任务上的微调和线性探测性能,包括自然图像、医学和卫星图像数据集。图像分类任务需要BackBone网络提取识别图像前景内容的特征,而不需要定位对象在图像中的具体数量和位置。
  • 对象检测和分割:不同于图像分类,3.2节中的密集预测任务需要BackBone提取包含对象精确位置的特征,在分割任务中需要像素级别定位,在检测任务中需要足够细致地绘制边界框。文章在这两个任务上评估BackBone网络。
  • 域外泛化:3.3节中,除了评估BackBone在各种下游任务上的域内性能,文章还考察这种性能如何转换到域外设置。
  • 图像检索:图像检索需要BackBone网络通过特征空间中的相似度来匹配相似的图像。在3.4节中探索需要根据语义内容、视觉相似度等不同标准匹配图像的任务。

实验设置

文章现在描述每个任务的实验设置。具体来说,文章列出学习方案、数据集和评估指标。完整的实验和实现细节请见附录C。

分类

学习方案。文章使用两个微调方案评估预训练BackBone在各种数据集上的性能:端到端微调(包括只使用少量标记样本的实验)和线性探测。在前一种情况下,文章在给定的数据集或它的一部分上端到端微调整个模型,并在测试分割上测量准确率。在线性探测场景中,文章从冻结的预训练BackBone中提取特征,并仅在这些预训练表示上学习一个线性分类器。这两种方案在之前的工作中被广泛使用来评估自监督学习等预训练方法,如在自监督视觉表示学习[12, 30, 8, 10]和视觉语言预训练[1, 105]中。

数据集和评估指标。文章在6个常见的图像分类数据集上进行实验,涵盖自然图像(ImageNet-1K [17], CIFAR-100 [46], Flowers-102 [64], Aircraft [60])、卫星图像(EuroSAT [31])和医学X射线数据(CheXpert [37]),展示预训练BackBone的泛化性和迁移性。文章使用的所有数据集都是公开可用的,文章在附录C中列出了它们的详细信息,包括大小和类别数。在只使用训练集的一部分进行微调的实验中,文章随机采样1%和10%的训练样本进行微调。在采样子集时,文章保持原始数据集的标签分布。注意,文章这里只考虑域内泛化,其中训练和测试集来自同一来源。

评估时,文章使用分类准确率和ROC曲线下面积(AUC)作为单标签和多标签分类任务的性能指标。除了超参数向量之间最佳的得分之外,文章还绘制前几个时期的准确率,以显示不同预训练BackBone的收敛率。此外,文章在同一设备上基准测试每个BackBone的延迟和内存使用情况。

对象检测和分割

学习方案。对于对象检测和实例分割的评估,文章采用Cascade Mask R-CNN框架[5]。文章使用三种方案进行实验:(1)从随机初始化进行端到端训练,(2)使用预训练BackBone进行端到端微调,(3)使用冻结的BackBone进行微调。虽然用冻结的BackBone进行微调在检测和分割中不典型,但后一种方案允许文章探测预训练模型的特征中包含的定位信息,并与线性探测分类实验互补。参见附录C.1关于ViT,尤其是大型ViT,在更昂贵的训练方案下可能超过其他模型性能的讨论。

数据集和评估指标。文章在流行的COCO数据集[53]上进行对象检测和实例分割评估。文章遵循COCO式的平均精度(AP)指标,该指标在各种Intersection over Union(IoU)阈值上进行平均。文章报告边界框平均精度(box AP)、box AP@50和AP@75用于对象检测,以及掩膜平均精度(mask AP)、mask AP@50和mask AP@75用于实例分割[54]。

域外泛化

尽管现代网络在它们训练的数据分布上可能展示出强大的性能,但大量的以前的工作[70, 32]发现,这种模型的性能在分布发生变化时可能会显著下降。除了评估BackBone在各种下游任务上的域内性能之外,文章还研究这种性能如何转换到域外(OOD)设置。

学习方案。几个特定任务的数据集和基准已被提出来评估模型对其训练分布偏差的稳健性。具体来说,文章研究经过训练的BackBone在两个任务上的泛化性能,即(1)图像分类和(2)对象检测,以及两种类型的分布转移,(A) ImageNet内部的结构和样式变化以及(B) 从合成到真实的泛化。

数据集和评估指标。文章考虑以下广泛的OOD评估基准:

(A)对结构和样式的变化的稳健性。文章测量在ImageNet上训练或微调的模型在以下基准上的OOD泛化:

(i) ImageNet-A [34]。ImageNet-A(dversarial)包含ImageNet测试图像的200个类别的策略性子集,这些图像对训练好的深度模型具有特定挑战性。

(ii) ImageNet-V2 [75]。ImageNet-V2是在原始数据集收集后10年按照完全相同的收集方案构建的额外的与ImageNet类似的测试集。

(iii) ImageNet-R [33]。ImageNet-R(endition)包含200个来自ImageNet的类别的艺术Rendering,包括卡通、涂鸦、刺绣、折纸、雕塑等。

(iv) ImageNet-S [92]。ImageNet-S(ketch)是从ImageNet类别中网络爬取并人工清理的黑白素描图像集合。

(B) 从合成到真实的泛化。文章还测量在合成数据上训练并在真实数据上测试的模型的性能。合成数据已成为一种流行的替代方法,用于在采集真实世界中可靠注释的数据很难或很贵的情况下。文章在以下两个流行基准上测量从合成到真实的泛化,用于图像分类和对象检测:

(i) VisDA Syn→Real。VisDA分类基准由约152k张合成图像和约55k张真实图像组成,跨12个类别。VisDA中的合成图像是对象从多个视点在不同照明条件下的3D渲染。真实图像是从COCO数据集中裁剪的12个类别的作物。

(2) Sim10k→Cityscapes。对于对象检测,文章使用Sim10k作为合成训练数据集,使用Cityscapes作为真实评估数据集。Sim10k由来自GTAV的约10k张街景图像组成。Cityscapes由约5k张密集注释的街景图像组成,这些图像是从车辆视角拍摄的现实世界图像。遵循以前的工作[13],文章在整个Sim10k上进行训练,以检测“汽车”的实例,并在Cityscapes的验证分割上测量检测性能。

对于图像分类,文章报告在OOD测试集上的分类准确率;对于对象检测,文章报告mAP@50的泛化性能。

图像检索

文章在各种图像检索数据集上进行评估,包括基于内容的图像检索和分类数据集,文章将它们改造为语义检索任务。对于地理地标检索,文章利用牛津数据集[68]和巴黎数据集[69]。为确保准确性,文章使用这些数据集的修正标签版本[71]。INSTRE数据集[94]由放置在不同位置和条件下的玩具和形状不规则的产品组成。为了检验细粒度的检索,文章采用Caltech-UCSD Birds-200数据集(CUB-200)[90],其中包含在不同背景、姿势和照明条件下拍摄的各种鸟类。对于多样化的自然图像,文章使用iNaturalist数据集[87]。这个数据集提供了一个广泛的细粒度类别,被分类到13个超类,包括植物、昆虫、鸟类和哺乳动物。为了评估真实场景下的检索性能,文章采用Objectnet数据集[2]。该数据集由313个对象类组成,具有随机变化的背景、旋转和成像视角。对于大规模地标识别,文章利用谷歌地标V2数据集[98],其中包含约20万个独特地标。最后,文章采用INRIA Copydays数据集[19],其中包含一小部分度假照片。

在上述数据集中,iNaturalist、Objectnet和CUB-200可以分类为语义检索数据集,而其余数据集属于基于内容的检索数据集。

文章使用平均精度或mAP[67]来评估模型性能。文章首先计算给定查询图像的平均精度,然后计算所有查询的平均值以找到mAP。文章还测量Recall@k,它测量返回第一个正确匹配之前的结果数量,并计算这些未命中值的倒数的平均值MRR(平均互反等级)。对于所有指标,值越高越好。

从业者。应该选择哪个BackBone网络?

如今的从业者可以从各种大小、训练方法和预训练数据的大量BackBone网络中进行选择:从业者应该为某项特定任务或一般情况选择哪个BackBone网络?为了回答这个问题,在BoB中,文章系统地比较了各种公开可用的BackBone网络(参见表1),横跨多个任务、数据集和设置。为了进行这些比较,文章使用以下排名方案:

视觉~合集xxs10_监督学习_03

使用排名,文章不仅可以报告每个任务的最佳表现BackBone,还可以报告跨任务、数据集和设置的整体表现最佳的BackBone(见表2摘要)。

视觉~合集xxs10_数据集_04

特定任务的BackBone网络

分类。在多个数据集和实验设置(微调、线性探测、完整和低样本训练)中,文章发现“在IN-21k上监督训练的SwinV2-Base(在IN-1k上微调)”是表现最佳的BackBone网络,其次是“CLIP ViT-Base”和“在IN-21k上监督训练的ConvNeXt-Base”(见第1行,表2)。

对象检测和分割。对于对象检测和实例分割,文章发现“在IN-21K上监督训练的ConvNeXt-Base” > “在IN-21k上监督训练的SwinV2-Base(在IN-1k上微调)” > “在IN-1k上监督训练的ConvNeXt-Base”。

图像检索。对于图像检索,文章发现“在IN-21k上监督训练的ConvNeXt-Base”是最佳选择,其次是“在IN-21k上监督训练的SwinV2-Base(在IN-1k上微调)”和“在LAION-2B上训练的CLIP ViT-B”。

(OOD)分类。在各种OOD评估中,文章发现“在IN-21k上监督训练的ConvNeXt-Base” > “在IN-21k上监督训练的SwinV2-B(在IN-1k上微调)” > “在LAION-2B上训练的CLIP ViT-Base”。

(OOD)对象检测。对于从合成到真实的对象检测,文章发现“在IN-1k上监督训练的ConvNeXt-Base”是最佳BackBone,其次是“在IN-1k上监督训练的ConvNeXt-Tiny”和“在IN-21k上监督训练的ConvNeXt-Base”。

整体最佳的BackBone网络

对于没有具体任务需求的从业者,整体表现最好的模型是“在IN-21k上监督训练的ConvNeXt-Base”,其次是“在IN-21k上监督训练的SwinV2-Base(在IN-1k上微调)”和“在LAION-2B上训练的CLIP ViT-Base”。总体来说,文章注意到以监督方式训练的BackBone(SwinV2-Base、ConvNeXt-Base)或具有视觉语言监督的BackBone(CLIP ViT-Base)优于其他BackBone。此外,文章发现CLIP ViT-Base紧随在IN-21k上监督训练的ViT-Base(在IN-1k上微调)之后。

预算有限的BackBone网络

许多计算机视觉应用需要高效的BackBone网络以实现快速或设备端推理。在这一节中,文章对三个小BackBone进行基准测试:在ImageNet-1k上以监督方式预训练的RegNetX-400F [73]、EfficientNet-B0 [83]和ResNet-18 [28]。文章在表3中对这些小BackBone在一系列任务上的性能进行了排名。文章发现在整体和分类、检索、OOD分类方面,EfficientNet-B0的表现最好,其次是RegNetX-400MF,然后是ResNet-18。有趣的是,在检测和分割方面,新型高效架构仍不如ResNet。

视觉~合集xxs10_监督学习_05

观察结果和趋势

ViT和CNN的性能比较。现代架构明显优于普通ViT。文章在表2中看到,最佳性能的BackBone网络(ConvNeXt-Base)是卷积的,其次是具有分层transformer的架构(SwinV2-Base)。后者融合了强大的空间归纳偏置。这些发现表明,社区应该放弃仍在广泛使用的普通ViT。需要说明的是,文章没有评估非常大的模型,在更大的规模下,ViT可能会胜过其其他变体或卷积网络。

ViT比CNN更依赖规模。对于BoB中考虑的BackBone组,文章发现参数数量的相对性能(z分数)对ViT(斯皮尔曼相关系数 = 0.58)的正相关性高于CNN(斯皮尔曼相关系数 = 0.35)。类似地,而整体相对性能与预训练数据的规模相关,这个相关性对ViT (ρ = 0.72)也明显高于CNN (ρ = 0.33)。这个观察表明,基准测试更大的BackBone可能产生不同的赢家,可能是具有基于transformer的架构。

监督或不监督? 监督学习BackBone占主导地位,但主要是因为它们可以在更大的数据集上预训练。在相似大小的数据集上,SSLBackBone可以胜过其监督对手。文章得到每个预训练方式的前3个BackBone的平均分数,即自监督、用ImageNet-1K监督和用ImageNet-21K监督(见附录D)。在IN-21K上用监督学习预训练的ConvNeXt和SwinV2在所有任务上都优于SSLBackBone。结果表明,文章应该尝试将SSL方法与先进的架构相结合,并在大数据集上进行训练以与监督学习竞争。在这些实验中,监督预训练的checkpoint通常可在更大的数据集(ImageNet-21k)上获得。当比较在类似大小数据集上预训练的模型时,SSL或视觉语言预训练方法在分类(域内和域外)和检索任务上获得了更好的性能,这些任务高度依赖于学习的表示。然而,监督学习BackBone在检测和分割方面保持决定性优势。文章还可以比较使用相同ViT-Base架构的BackBone,发现SSL方法确实优于ImageNet-1k监督BackBone,但比ImageNet-21k训练的BackBone差。

任务之间的性能高度相关。在文章考虑的任务对中,文章发现任务对之间的性能存在高度正相关(通常ρ> 0.8)。这一发现支持通用基础模型在计算机视觉中的当前趋势。此外,这一发现也支持最近的工作,该工作认为单一的归纳偏差可以解决一系列看似不同的问题[24]。然而,值得注意的是,检索任务与分类和检索排名之间的相关性相对较低但仍具有统计意义(ρ = 0.49)。这种较低的相关性可以归因于MiDaS和MAE预训练模型在检索方面的性能限制。在删除这两个BackBone后,相关系数ρ增加到0.8,这进一步证明了上述模型对观察结果的影响。

Transformer在端到端微调下表现优异,而卷积网络在线性探测下表现优异。对于“线性探测”实验,文章冻结预训练BackBone,仅学习头部。请注意,对于检测和分割,头部不仅是一个线性层。通过检查两种微调策略之间的性能差异(图2),文章发现ViT从端到端微调中受益明显多于CNN,无论是在监督预训练还是自监督预训练下。参见图2中的在密集预测任务上的比较。

视觉~合集xxs10_数据集_06

CLIP模型以及视觉语言建模中先进架构的前景。对于几乎所有任务(OOD检测除外),CLIP预训练优于普通视觉transformer,即使与在ImageNet-21k上监督训练的BackBone相比也是如此。在所有BackBone中,CLIP仅次于在IN-21k上训练的SwinV2和ConvNeXt,这显示了视觉语言预训练的力量,并再次表明,在进行自监督或弱监督学习时,文章应考虑除普通ViT之外的更多BackBone架构。

生成BackBone怎么样? 与用监督或自监督方法和对比损失训练的模型相比,用生成对抗目标训练的BackBone,如MAE或Stable Diffusion,其性能相对较差。文章建议谨慎解释这个结果,因为目前仅对Stable Diffusion在有限的任务上进行了评估。尽管如此,Stable Diffusion是一个更大的BackBone,并在一个非常大的数据集上训练,但它展示了比文章考虑的其他模型差的性能。

“小”BackBone之战。考虑到有限的资源,文章还比较了BoB中“小”BackBone的子集(参数< 30M)—— ViT-Small、ConvNeXt-Tiny、Swin-Tiny和ResNet-50架构。总体而言,文章发现在IN-1k上监督训练的ConvNeXt-T表现最好,其次是在IN-1k上监督训练的SwinV2-T,然后是在IN-1k上训练的DINO ViT-S。有趣的是,监督学习在这里再次占据主导地位,而且仅在IN-1k上预训练的BackBone胜过在考虑得多更大的数据集上训练的BackBone(MiDaS)。      

性能与速度? 文章的分析显示,在相同的NVIDIA RTX A5000上计算的吞吐量与平均性能z分数之间存在较强的负相关(ρ = -0.41)。考虑每个BackBone时,这一发现与文章之前的观察一致,即更大的模型往往具有更优越的性能。因此,为了获得增强的性能,可能需要牺牲速度。

单目深度估计作为通用预训练策略。在文章的实验中,即使在自然图像域之外,例如在卫星图像上,MiDaS也达到了与顶级传统监督和自监督学习BackBone相媲美的性能,在图像分类、对象检测和分割方面。这个观察表明,深度估计可以作为强大和通用的主要或辅助预训练任务。

校准和测试似然与准确率相关。在ImageNet测试集上,文章测量了期望校准误差(ECE)以及交叉熵损失。而测试似然与准确率高度相关(r = -0.8278),ECE的相关较弱(r = -0.4876)。在两种情况下,文章都观察到p值低于0.05。文章还注意到,自监督预训练通常会导致较差的校准。

视觉~合集xxs10_监督学习_07

接下来会发生什么?

每个计算机视觉模型的核心是一个BackBone网络。在文章的BackBone网络对战中,文章比较了1500多次训练运行,以发掘对计算机视觉从业者和研究人员有益的见解。

为指导从业者,文章分析了在广泛任务范围内公开可用视觉BackBone的性能,从分割和检测到分类和检索。文章发现监督ConvNext、监督SwinV2和CLIP模型在这一广泛任务范围内性能良好。对于计算资源受限的设置,在文章的“小”BackBone之战中,文章发现较小的对应的架构监督ConvNext-T和SwinV2效果好,其次是带小ViT的DINO。BoB为从业者提供了从令人眼花缭乱的选择中选择合理BackBone的指南。

对于展望未来的研究人员,文章还观察到几个显著趋势。首先,文章发现跨任务的性能高度相关,这表明从专用视觉BackBone向通用BackBone的转变,这些通用BackBone可以在各种任务上发挥良好作用。其次,文章发现吞吐量和性能之间存在反相关,这表明扩展仍然是提高BackBone的有希望途径。最后,文章发现虽然文章的实际建议包括许多监督模型,但在与标准监督训练的公平比较中,自监督学习很有前景。通过发布文章所有的实验结果以及用于测试新BackBone的代码,文章希望BoB能成为今天的从业者和研究明天问题的研究人员的有用指南。

局限性。文章指出,从BoB获得的见解取决于在此工作中考虑的任务词汇、BackBone网络和设置。文章希望通过这项研究得出的结论能够为计算机视觉研究人员提供实际的考虑因素,同时也认识到这些见解需要随着引入更多的BackBone网络、任务和设置而不断发展。最后,文章指出,BoB中的研究主要集中在与性能相关的方面,对于其他重要方面(模型中的偏见等)的探索仍然存在。

文章的基准测试不包括比ConvNext-Base更大的BackBone网络,除了稳定扩散(Stable Diffusion),一些排名可能在大规模上发生变化。例如,虽然文章发现现代经过监督学习预训练的卷积网络在大多数任务上表现最好,但文章也发现Transformer在规模上更有优势,无论是在预训练数据还是架构规模方面。在非常大的规模上,TransformerBackBone网络有可能超过卷积BackBone网络。

计算成本和碳足迹

文章中的实验总计消耗了127k GPU小时的NVIDIA RTX A100卡。假设GPU的平均碳效率为每千瓦时0.37公斤CO2当量,则总排放量估计为11792.36公斤CO2当量[48]。

# EfficientMod

微软提出视觉新主干EfficientMod:融合卷积和注意力机制

Efficient Modulation (EfficientMod) 融合了卷积和注意力机制的有利特性,同时提取空间上下文并对输入特征进行投影,然后使用简单的逐元素乘法将其融合在一起。EfficientMod的设计保证了高效性,而固有的调制设计理念则保证了其强大的表示能力。

论文地址:  https://arxiv.org/abs/2403.19963

论文代码:  https://github.com/ma-xu/EfficientMod

Introduction

视觉TransformerViT)在广泛的视觉任务中展现了令人印象深刻的成就,并为视觉网络设计贡献了创新的思路。得益于自注意力机制,ViTs在动态特性和长距离上下文建模的能力上与传统卷积网络有所区别。然而,由于自注意力机制在视觉标记数量上具有二次复杂度,其既不具备参数效率也不具备计算效率,这阻碍了ViTs在边缘设备、移动设备和其他实时应用场景上的部署。因此,一些研究尝试在局部区域内使用自注意力,或者选择性地计算信息标记,以减少计算量。同时,一些工作尝试将卷积和自注意力结合起来,以实现理想的效果和效率的折衷。

视觉~合集xxs10_泛化_08

最近的一些研究表明,纯卷积网络也能够与自注意力相比取得令人满意的结果。其中,FocalNetVAN以计算效率高和易于实现而著称,展现了领先的性能且显著优于ViT的对应模型。一般来说,这两种方法都使用大核卷积块进行上下文建模,并通过逐元素乘法调节投影输入特征(随后是一个MLP块),如图1b所示。这种设计统称为调制机制,它表现出有前景的性能,并且从卷积的有效性和自注意力的动态性中获益。尽管调制机制在理论上是高效的(从参数和FLOPs的角度来看),但在计算资源有限时推断速度不尽如人意。造成这种情况的原因主要有两个:

  • 冗余和等效操作,如连续的深度卷积和冗余的线性投影占据了大部分操作时间。
  • 上下文建模分支中的碎片化操作显著增加了延迟,并违反了ShuffleNetv2中的指导原则G3

为此,论文提出了高效调制(Efficient Modulation),可以作为高效模型的基本构建块(见图1c)。与FocalNetVAN的调制块相比,高效调制块更加简单并继承了所有的优点(见图1b和图1c)。与Transformer块相比,高效调制块的计算复杂度与图像尺寸呈线性关系,强调大规模但局部的特征交互,而Transformer则与标记数量的立方相关并直接计算全局交互。与反向残差(MBConv)块相比,高效调制块使用更少的通道进行深度卷积,并融入了动态特性。

视觉~合集xxs10_泛化_09

基于高效调制(Efficient Modulation)块,论文提出了基于纯卷积的新型高效网络架构EfficientModEfficientMod块与传统的自注意力块正交,并且与其他设计具有良好的兼容性。通过将注意力块与EfficientMod集成的混合架构,可以产生更好的结果。在不使用神经网络搜索(NAS)的情况下,EfficientMod在各种任务中展现出非常不错的性能。与最先进方法EfficientFormerV2相比,EfficientMod-sGPU上的速度比EfficientFormerV2-S225%,并且在top-1准确率上超过了EfficientFormerV2-S20.3个百分点。此外,EfficienntMod在下游任务中也显著超越了EfficientFormerV2,在ADE20K语义分割基准测试中,其mIoUEfficientFormerV2高出了3.6个百分点,而模型复杂度相当。

Method

Revisit Modulation Design

  • Visual Attention Networks

视觉~合集xxs10_泛化_10

  • FocalNets

视觉~合集xxs10_数据集_11

  • Abstracted Modulation Mechanism

VANFocalNet均展示出了良好的表征能力,并表现出令人满意的性能。实际上,这两种方法都共享一些不可或缺的设计,可能就是性能提升的关键:

  1. 这两个并行分支是独立操作的,从不同的特征空间提取特征,类似于自注意力机制(如图1a所示)。
  2. 在上下文建模方面,两者均考虑了较大的感受野。VAN堆叠了两个具有扩张的大核卷积,而FocalNet引入了分层上下文聚合以及全局平均池化来实现全局交互。
  3. 这两种方法通过逐元素相乘将来自两个分支的特征融合在一起,这在计算上是高效的。
  4. 在特征融合之后采用了线性投影。

与此同时,它们也存在着明显的不同设计,比如上下文建模的具体实现以及特征投影分支的设计(共享或独立投影)。基于上述相似之处并忽略特定的差异,论文将调制机制进行抽象,如图1b所示,并形式定义如下:

视觉~合集xxs10_数据集_12

这个抽象的调制机制在理论上继承了卷积和自注意力的优良特性,但实际以卷积方式运算,且具有令人满意的效率。具体地,公式 4 于逐元素相乘而具有类似自注意力的动态性。上下文分支还引入了局部特征建模,但也通过大的核大小实现了较大的感受野(这对效率来说不是瓶颈)。遵循VANFocalNet,在调制后引入一个两层MLP块。

Efficient Modulation

尽管比自注意力更高效,但抽象的调制机制在理论复杂度和推理延迟方面仍无法满足移动网络的效率要求。因此,论文提出了高效调制(Efficient Modulation),旨在为高效网络量身定制的同时保留调制机制的所有优良特性。

  • Sliming Modulation Design

视觉~合集xxs10_数据集_13

  • Simplifying Context Modeling

视觉~合集xxs10_监督学习_14

这种设计比VANFocalNet中的上下文建模要简单得多,通过一个大核的深度可分离卷积抛弃了等效的多个深度可分离卷积。这可能会在一定程度上牺牲性能以换取效率,但消融研究表明,上下文分支中的每个操作都是必不可少的。

Network Architecture

视觉~合集xxs10_泛化_15

EfficientMod采用了4个阶段的分层架构,每个阶段由一系列带有残差连接的EfficientMod模块组成。为了简化起见,使用重叠的图像块嵌入(通过卷积层实现下采样)分别将特征减小4倍、2倍、2倍和2倍。对于每个模块,使用层归一化来对输入特征进行归一化,然后将归一化的特征输入EfficientMod模块。采用随机深度和层缩放来改善模型的鲁棒性。

需要注意的是,EfficientMod模块与自注意机制是正交的,将EfficientMod模块与注意力模块相结合即可得到一种新的混合设计。混合结构将原始注意力模块引入到特征尺寸相对较小的最后两个阶段,根据纯卷积型EfficientMod对应模块的参数进行宽度和深度修改,保证进行公平比较。一共设计三个规模的混合结构,参数范从4M13M,分别为EfficientMod-xxsEfficientMod-xsEfficientMod-s

Computational Complexity analysis

视觉~合集xxs10_数据集_16

除了理论计算复杂度外,论文提供了一些实际指南:

  1. 通过将更多参数移至特征分辨率较小的后期阶段来减少FLOPs。这样做的原因在于EfficientModFLOPs基本上等于输入分辨率乘以参数数量。遵循这一指导方针,可以在后期阶段添加更多的模块或者大幅增加宽度。需要注意的是,这一指南并不仅适用于我们的EfficientMod,也可以应用于所有的全连接和卷积层。
  2. 只在最后两个阶段引入注意力模块,考虑到自注意力的计算复杂度,这是许多研究中的一种常见做法。
  3. 使用Repeat操作来匹配通道数(两个分支的输出特征),以节省CPU时间并仅需少量GPU开销。EfficientFormer观察到,对于许多模型来说,Reshape操作通常是瓶颈。ReshapeCPU上运行缓慢,但在GPU上友好。与此同时,Repeat操作在CPU上运行迅速,但在GPU上耗时。如图2所示(这里应该是图标反了),选择Repeat操作来获得最佳的GPU-CPU延迟折衷。(这一点有点疑问,这里使用Repeat是为了匹配少了的维度数,Reshape应该达不到这个效果。私信了作者,这里的Reshape实际为torch.broadcast_to函数)

Relation to Other Models

  • MobileNetV2

通过引入Mobile Inverted Bottleneck(简称MBConv)模块,MobileNetV2开启了高效网络领域的新时代。与顺序排列全连接层的MBConv模块相比,EfficientMod模块将深度可分离卷积层分离出来,并通过逐元素乘法将其插入到两层全连接网络的中间。由于深度可分离卷积的通道数量减少,EfficientMod是一种更高效的操作,并且在性能上取得了更好的表现(由于调制操作)。

  • SENet

视觉~合集xxs10_泛化_17

Experiments

EfficientMod在四个任务上进行验证:在ImageNet-1K上进行图像分类, 在MS COCO上进行目标检测和实例分割,在ADE20K上进行语义分割。在PyTorch中实现了所有网络,并将其转换为ONNX模型在两种不同的硬件上进行测试:

  • GPU:选择P100 GPU进行延迟评估,因为它可以模拟近年来大多数设备的计算能力。其他GPU可能会产生不同的基准结果,但我们观察到趋势是类似的。
  • CPU:一些模型在不同类型的硬件上可能会产生不可预测的延迟(主要是由内存访问和零碎操作引起的),在Intel(R) Xeon(R) CPU E5-2680上的所有模型的测得延迟以进行全面比较。

对于延迟基准测试,将批处理大小分别设置为1,以模拟真实世界的应用。为了抵消方差,对每个模型重复进行4000次运行,并报告平均推理时间。遵循常见的做法,使用四个线程同时测试。

Image Classification on ImageNet-1K

视觉~合集xxs10_监督学习_18

EfficientMod在不同硬件上的分类精度和推理延迟方面表现出色。例如,EfficientMod-sGPU上比EdgeViT表现相同,但运行速度快了15毫秒(约快73%),在CPU上快了11毫秒(约快32%)。此外,参数和计算复杂度也更少。EfficientMod-sGPU上也比EfficientFormerV2-S20.6提升,运行速度快了1.8毫秒(约快25%)。需要注意的是,一些高效设计(例如MobileNetV2FasterNet)注重低延迟,而其他模型则注重性能(例如MobileViTv2EdgeViT),而EfficientModGPUCPU上运行速度快且提供了最先进的性能。

视觉~合集xxs10_泛化_19

为了更好地了解EfficientMod的改进,我们以EfficientMod-s为例,概述了每个修改的具体改进。从纯卷积基础版本到混合模型,都显示在了表2中。即使EfficientMod的纯卷积基础版本已经以80.5%的显著结果,明显超过相关的基于卷积的网络。通过调整为混合架构,还可以进一步将性能提升至81.0%。

视觉~合集xxs10_泛化_20

同时,一些方法采用了强大的训练策略,比如MobileOne中的重新参数化和EfficientFormerV2中的蒸馏。经过蒸馏训练,可以将EfficientMod-s的精度从81.0%提升到81.9%,如表3所示。

Ablation Studies

  • Compare to other Modulation models

视觉~合集xxs10_泛化_21

EfficientMod-xxs与具有相似参数数量的FocalNetVAN-B0进行比较。为了公平比较,通过减少通道或块数量的方式定制了FocalNet_Tiny_lrf。一共测试了三种变体,选择了性能最好的一个并将其称为FocalNet@4M。由于Conv2Former的代码尚未完全发布,在比较中没有考虑它。从表4可以看出,EfficientMod在精度和延迟方面均优于其他调制方法。

  • Ablation of each component

视觉~合集xxs10_数据集_22

在没有引入注意力和知识蒸馏的卷积EfficientMod-s上进行实验,检验每个组件所带来的贡献。表5显示了在上下文建模分支中消除每个组件的结果。显然,所有这些组件对最终的结果至关重要,引入所有组件后获得了80.5%top-1准确率。同时,还进行了一个实验来验证逐元素相乘的有效性,用求和来替代(相同的计算和相同的延迟)融合两个分支的特征。如预期一样,准确率下降了1%。显著的性能下降揭示了调制操作的有效性,特别是在高效网络中。

  • Connection to MBConv blocks

视觉~合集xxs10_监督学习_23

  • Context Visualization

视觉~合集xxs10_人工智能_24

 继承自调制机制,EfficientMod块能够区分有信息量的上下文。在与FocalNet相似的基础上,在EfficientMod-Conv-s中可视化了上下文层的推理输出(沿通道维度计算均值),如图4所示。显然,EfficientMod始终捕捉到有信息量的对象,而背景受到了约束,这表明了调制机制在高效网络中的有效性。

Object Detection and Instance Segmentation on MS COCO

视觉~合集xxs10_数据集_25

为验证EfficientMod在下游任务中的性能,在MS COCO数据集上进行了目标检测和实例分割的实验。将EfficientMod-s应用到常用的Mask RCNN检测器上进行验证。遵循以往研究的实现,使用调度器,即12epochs来训练模型。将卷积型和混合型EfficientMod-s与其他方法进行比较。如表7所示,EfficientMod始终优于具有相似参数的其他方法。在没有自注意力的情况下,EfficientMod在检测任务上比PoolFormer高出4.2mAP,在实例分割任务上高出3.6mAP。当引入注意力并与混合模型进行比较时,EfficientMod在两个任务上仍然优于其他方法。

Semantic Segmentation on ADE20K

ADE20K数据集上进行语义分割任务的实验。考虑简单高效的设计,选择Semantic FPN作为分割模型。遵循之前的研究,在8A100 GPU上进行了40,000次迭代训练,数据批次为32。使用AdamW优化器对模型进行训练,使用余弦退火调度器从初始值2e-4衰减学习率。

表7中的结果表明,EfficientMod在性能上明显优于其他方法。在没有使用注意力的情况下,卷积型EfficientMod-smIoU已经比PoolFormer高出6.3个百分点。此外,纯卷积型EfficientMod甚至获得了比使用注意力方法更好的结果。在这方面,卷积型EfficientMod-s的性能比之前的SOTA高效方法EfficientFormerV2提升了1.1mIoU。当引入Transformer块以获得混合设计时,使用相同数量的参数甚至更少的FLOPs也能将性能进一步提升至46.0mIoU。混合型EfficientMod-s的性能显著优于其他混合网络,分别比PvTv2EfficientFormerV2高出3.53.6mIoU。可以得出两个结论:

  1. EfficientMod的设计取得了重大进步,证明了其价值和有效性。
  2. 大的感知域对于分割等高分辨率输入任务尤为有益,而基本的注意力块(实现全局范围)可以成为高效网络的现成模块。