探索用于目标检测的普通视觉Transformers骨干
在本文中,“backbone”指的是可以从预训练继承的架构组件,“plain”指的是非分层的、单一尺度的属性。
本文提出了一种简单、无层次的视觉Transformer(ViT)作为目标检测的骨干网络。这种设计使原始的ViT架构能够针对对象检测进行微调,而无需重新设计用于训练前的分层主干。通过对微调的最小调整,我们的普通骨干检测器可以获得具有竞争力的结果。令人惊讶的是,我们观察到:(i)从单尺度特征图(没有常见的FPN设计)构建一个简单的特征金字塔是足够的,(ii)在很少的跨窗口传播块的辅助下,使用窗口注意(不移动)是足够的。通过使用预先训练的纯ViT主干归纳偏置码自动编码器(MAE),我们的检测器,名为ViTDet,可以与之前所有基于分层主干的领先方法竞争,仅使用ImageNet-1K预先训练就可以在COCO数据集上达到61.3 AP。我们希望我们的研究能够引起人们对普通骨干探测器的关注。ViTDet代码是可用的。
现代目标检测器通常由一个与检测任务无关的主干特征提取器和一组包含特定检测先验知识的颈部和头部组成。颈部/头部中的常见组件可能包括感兴趣区域 (RoI) 操作、区域建议网络 (RPN) 或锚点、特征金字塔网络 (FPN)等。如果特定任务的颈部/头部的设计与骨干的设计脱钩,它们可能会并行发展。根据经验,目标检测研究受益于对通用主干和检测特定模块的很大程度上独立探索。长期以来,由于卷积网络 (ConvNet)的实际设计,这些主干一直是多尺度、分层架构,这严重影响了用于检测多尺度对象的颈部/头部设计(例如,FPN )。
在过去的一年里,视觉Transformers(ViT)已经成为视觉识别的强大支柱。与典型的ConvNets不同,最初的ViT是一种简单、无层次的架构,始终保持单一比例的特征图。它的“极简主义”追求在应用于目标检测时遇到了挑战,例如,我们如何在下游任务中使用上游预训练的简单主干来处理多尺度目标?普通ViT是否效率太低,无法与高分辨率检测图像一起使用?放弃这种追求的一个解决方案是在主干中重新引入分层设计。该解决方案,例如Swin Transformers和相关作品,可以继承基于ConvNet的探测器设计,并显示出成功的结果。
在这项工作中,我们追求不同的方向:我们探索仅使用普通、非分层主干的目标检测器。如果这个方向成功,它将能够使用原始ViT主干进行目标检测;这将使预训练设计与微调需求脱钩,保持上游与下游任务的独立性,就像基于 ConvNet 的研究一样。这个方向也部分遵循了ViT哲学,即“更少的归纳偏置”以追求通用特征。
在我们的研究中,我们的目标不是开发新组件。相反,我们进行了足以克服上述挑战的最小调整。特别是,我们的检测器仅从普通 ViT 主干的最后一个特征图构建一个简单的特征金字塔(图 1)。这放弃了 FPN 设计并放弃了分层主干的要求。为了有效地从高分辨率图像中提取特征,我们的检测器使用简单的非重叠窗口注意力(与 [42] 不同,没有“移位”)。少量的跨窗口块(例如 4 个)可能是全局注意力 [54] 或卷积,用于传播信息。这些调整仅在微调期间进行,不会改变预训练。
图 1:典型的分层骨干检测器(左)与我们的普通骨干检测器(右)。传统的分层主干可以自然地适应多尺度检测,例如,使用 FPN。相反,我们探索仅从普通主干的最后一个大步幅 (16) 特征图构建一个简单的金字塔。
我们简单的设计取得了令人惊讶的结果。我们发现在普通的 ViT 主干的情况下,FPN 设计不是必需的,它的好处可以通过从大步幅 (16)、单比例地图构建的简单金字塔有效地获得。我们还发现,只要信息在少量层的窗口中很好地传播,窗口注意力就足够了。
更令人惊讶的是,在某些情况下,我们称为ViTDet的普通主干检测器可以与领先的层次主干检测器竞争(例如,Swin、MViT)。通过掩码式自动编码器(MAE)[24]预训练,我们的普通主干检测器可以比在ImageNet-1K/21K[12]上预先训练并有监督的分层检测器性能更好(图3)。对于较大的模型尺寸,增益更为显著。我们的探测器的竞争力在不同的目标探测器框架下观察到,包括掩码R-CNN、级联掩码R-CNN及其增强功能。我们在COCO数据集上报告了61.3 AP,它具有普通的ViT Huge主干,仅使用ImageNet-1K预训练,没有标签。我们还展示了长尾LVIS检测数据集的竞争结果。虽然这些强大的结果可能在一定程度上是由于MAE预训练的有效性,但我们的研究表明,普通主干检测器可能很有前途,它挑战了层次主干在目标检测中的固定位置。
除了这些结果之外,我们的方法还保留了将特定于检测器的设计与与任务无关的主干分离的理念。这种理念与重新设计 Transformer 主干以支持多尺度层次结构的趋势形成鲜明对比。在我们的案例中,检测特定的先验知识仅在微调期间引入,无需在预训练中先验地调整主干设计。这使得我们的检测器与沿各个方向的 ViT 开发兼容,这些方向不一定受层次约束的限制,例如块设计、自监督学习和缩放。我们希望我们的研究能够启发未来关于普通骨干目标检测的研究。
对象检测器主干。在R-CNN的工作的开创下,目标检测和许多其他视觉任务采用了预训练+微调范式:一个通用的、与任务无关的主干通过监督或自监督训练进行预训练,其结构随后被修改并适应下游任务。计算机视觉中的主要主干是各种形式的 ConvNets [32],例如 [30,49,50,27]。
早期的神经网络检测器,例如 [26,20,48,47],最初是基于单尺度特征图。虽然它们使用默认分层的 ConvNet 主干,但原则上它们适用于任何普通主干。 SSD [40] 是首批利用 ConvNet 骨干网的分层特性的作品之一(例如,VGG 网络的最后两个阶段 [49])。 FPN [37] 通过使用分层主干的所有阶段,通过横向和自上而下的连接来进一步推动这个方向。 FPN 设计广泛用于目标检测方法。最近,包括 Trident Networks和YOLOF在内的工作重新审视了单尺度特征图,但与我们的工作不同,它们专注于从分层主干中提取的单尺度。
ViT是标准ConvNets图像分类的强大替代品。最初的ViT是一个简单的、无层次的架构。提出了各种分层Transformer,例如Swin[42]、MViT[17,34]、PVT[55]和PiT[29]。这些方法继承了ConvNets的一些设计,包括层次结构和平移等变先验(例如卷积、池、滑动窗口)。因此,用这些主干来代替ConvNet进行目标检测相对简单。
普通骨干检测器。 ViT 的成功激发了人们推动目标检测的普通骨干的前沿。最近,UViT被呈现为用于对象检测的单尺度 Transformer。 UViT 在目标检测指标下研究普通 ViT 主干的网络宽度、深度和输入分辨率。提出了一种渐进式窗口注意策略来解决高分辨率输入问题。与在预训练期间修改架构的 UViT 不同,我们的研究侧重于没有先验规范的原始 ViT 架构进行检测。通过保持主干的任务不可知性,我们的方法支持广泛的可用 ViT 主干以及它们在未来的改进。我们的方法将主干设计与检测任务分离,这是追求普通主干的关键动机。
UViT 使用单尺度特征图作为探测器头,而我们的方法在单尺度主干上构建了一个简单的金字塔。在我们研究的背景下,整个检测器必须是单尺度的,这是不必要的限制。请注意,完整的 UViT 检测器也有多种形式的多尺度先验(例如,RPN [48] 和 RoIAlign [25]),因为它基于 Cascade Mask R-CNN [4]。在我们的研究中,我们专注于利用预训练的普通骨干,我们不限制探测器颈部/头部的设计。
对象检测方法。对象检测是一个蓬勃发展的研究领域,它采用了具有不同属性的方法——例如,两阶段与单阶段,基于锚点的与无锚点以及基于区域[21,26,20,48]与基于查询(DETR)。对不同方法的研究不断推进对目标检测问题的理解。我们的研究表明,“普通与分层”主干的主题值得探索,并可能带来新的见解。
我们的目标是消除对骨干网的分层约束,并启用对普通骨干网目标检测的探索。为此,我们的目标是进行最小的修改,以仅在微调期间使简单的主干适应目标检测任务。在这些适应之后,原则上可以应用任何检测器头,我们选择使用Mask R-CNN及其扩展。我们不打算开发新组件;相反,我们专注于在我们的探索中可以得出哪些新见解。
简单的特征金字塔。 FPN [37] 是构建用于目标检测的网络内金字塔的常见解决方案。如果主干是分层的,FPN 的动机是结合早期阶段的高分辨率特征和后期阶段的更强特征。这是在 FPN 中通过自上而下和横向连接实现的 [37](图 1 左)。
如果主干是非分层的,则失去了FPN动机的基础,因为主干中的所有特征地图都具有相同的分辨率。在我们的场景中,我们只使用来自主干的最后一个特征图,它应该具有最强的特征。在这张地图上,我们并行地应用一组卷积或去卷积来产生多尺度特征地图。具体地说,对于比例为1/16(步幅=16)的默认VIT特征地图,我们使用步长{2,1,1/2,1/4}的卷积来产生比例为{1/32,1/16,1 /8,1/4}的特征地图,其中分数步幅表示去卷积。我们将其称为“简单特征金字塔”(图1右侧)。
从单个地图构建多尺度特征图的策略与 SSD 的策略有关。然而,我们的场景涉及从深度、低分辨率的特征图进行上采样,这与 [40] 不同,它利用了较浅的特征图。在分层主干中,上采样通常由横向连接辅助;在普通的 ViT 主干中,我们凭经验发现这不是必需的(第 4 节),简单的反卷积就足够了。我们假设这是因为 ViT 可以依赖位置嵌入 [54] 对位置进行编码,并且还因为高维 ViT 补丁嵌入不一定会丢弃信息。
我们将与同样建立在普通主干上的两个 FPN 变体进行比较(图 2)。在第一个变体中,主干被人为地分为多个阶段,以模仿分层主干的阶段,应用横向和自上而下的连接(图 2(a))[16]。第二个变体与第一个变体类似,但仅使用最后一个映射而不是划分的阶段(图 2 (b))。我们证明这些 FPN 变体不是必需的(第4节)
图 2:在普通主干上构建特征金字塔。 (a) FPN-like:为了模仿分层主干,普通主干被人为地分为多个阶段。 (b) 类似 FPN,但只使用最后一个没有阶段划分的特征图。 (c) 我们没有 FPN 的简单特征金字塔。在所有这三种情况下,只要比例发生变化,就会使用跨步卷积/反卷积。
主干自适应。目标探测器受益于高分辨率输入图像,但计算整个主干的全局自我注意在内存中是禁止的,并且速度很慢。在本研究中,我们关注的场景是,预先训练好的主干执行全局自我关注,然后在微调期间适应更高分辨率的输入。这与最近使用主干预训练直接修改注意力计算的方法形成了对比(例如,[42,17])。我们的场景使我们能够使用原始的ViT主干进行检测,而无需重新设计预训练架构。
我们探索使用带有几个跨窗口块的窗口注意力[54]。在微调期间,给定一个高分辨率特征图,我们将其划分为常规的非重叠窗口。在每个窗口内计算自注意力。这在原始 Transformer [54] 中被称为“受限”自注意力。
与 Swin 不同,我们不会跨层“移动”[42] 窗口。为了允许信息传播,我们使用了极少数(默认情况下,4 个)可以跨窗口的块。我们将预训练的主干平均分成 4 个块子集(例如,对于 24 块 ViT-L,每个子集中有 6 个)。我们在每个子集的最后一个块中应用传播策略。我们研究这两种策略:
(i) 全局传播。我们在每个子集的最后一个块中执行全局自我注意。由于全局块的数量很少,内存和计算成本是可行的。这类似于 [34] 中与 FPN 联合使用的混合窗口注意力。
(ii) 卷积传播。作为替代方案,我们在每个子集之后添加一个额外的卷积块。卷积块是一个残差块[27],由一个或多个卷积和一个恒等快捷方式组成。该块中的最后一层被初始化为零,因此该块的初始状态是一个身份[22]。将块初始化为身份允许我们将其插入到预训练主干中的任何位置,而不会破坏主干的初始状态。
我们的骨干适应很简单,并且使检测微调与全局自注意力预训练兼容。如前所述,没有必要重新设计预训练架构。
讨论。目标检测器包含可以与任务无关的组件,例如主干,以及其他特定于任务的组件,例如 RoI 头。这种模型分解使与任务无关的组件能够使用非检测数据(例如 ImageNet)进行预训练,这可能会提供一个优势,因为检测训练数据相对稀缺。
从这个角度来看,追求包含较少归纳偏置的主干变得合理,因为可以使用大规模数据和/或自我监督来有效地训练主干。相比之下,检测任务特定组件的可用数据相对较少,并且仍可能受益于额外的归纳偏置。虽然追求具有较少归纳偏置的检测头是一个活跃的工作领域,但像 DETR [5] 这样的领先方法难以训练并且仍然受益于特定于检测的先验知识 [60]。
在这些观察的推动下,我们的工作遵循了最初的普通ViT论文中关于检测器主干的精神。ViT论文的讨论[14]集中在减少翻译等值的归纳偏置上,而在我们的案例中,它是关于在骨干网中减少甚至没有规模等值的归纳偏置。我们假设,普通骨干实现尺度等值的方法是从数据中学习先验知识,类似于它在没有卷积的情况下学习翻译等值和定位的方法[14]。
我们的目标是证明这种方法的可行性。因此,我们选择使用标准检测特定组件(即,Mask R-CNN 及其扩展)来实现我们的方法。在检测头中探索更少的归纳偏置是未来工作的一个开放且有趣的方向。我们希望它可以从我们这里的工作中受益,并在此基础上再接再厉。
实施。我们使用 vanilla ViT-B、ViT-L、ViT-H [14] 作为预训练主干。我们将补丁大小设置为 16,因此特征图比例为 1/16,即步幅 = 16。 我们的检测头遵循 Mask R-CNN [25] 或 Cascade Mask R-CNN [4],其架构细节在附录。输入图像为 1024×1024,在训练期间通过大规模抖动 [19] 进行了增强。由于这种重度正则化,我们在 COCO 中微调了多达 100 个 epoch。我们使用 AdamW 优化器 [43] 并使用基线版本搜索最佳超参数。更多细节在附录中。
我们在 COCO 数据集上进行消融实验。我们在train2017拆分上进行训练,并在 val2017 拆分上进行评估。我们报告了边界框对象检测(APbox)和实例分割(APmask)的结果。
默认情况下,我们使用第二节中描述的简单特征金字塔和全局传播。 3. 我们使用 4 个传播块,均匀地放置在主干中。我们使用在不带标签的 IN-1K 上预训练的 MAE [24] 初始化主干。我们消除这些默认值并讨论我们的主要观察结果如下。
一个简单的特征金字塔就足够了。在表 1 中,我们比较了图 2 所示的特征金字塔构建策略。
表 1:使用在 COCO 上评估的 Mask R-CNN 对具有普通 ViT 主干的特征金字塔设计进行消融。主干是 ViT-B(左)和 ViT-L(右)。与没有任何金字塔的基线相比,条目 (a-c) 对应于图 2 (a-c)。 FPN 和我们的简单金字塔都比基线好很多,而我们的简单金字塔就足够了。
我们研究没有特征金字塔的基线:RPN 和 RoI 头都应用于主干的最终单尺度 (1/16) 特征图。这种情况类似于在提出 FPN 之前的原始 Faster R-CNN [48]。所有特征金字塔变体(表 1 a-c)都明显优于此基线,将 AP 提高多达 3.4 个点。我们注意到,使用单尺度特征图并不意味着检测器是单尺度的:RPN 头部具有多尺度锚点,而 RoI 头部在多尺度区域上运行。即便如此,特征金字塔还是有益的。这一观察结果与 FPN 论文 [37] 中关于分层主干的观察结果一致。
然而,FPN的设计是不需要的,我们简单的特征金字塔足以让一个普通的ViT骨干享受到金字塔的好处。为了消减这种设计,我们模仿了图2(a,b)中的FPN结构(即自上而下和横向的连接)。表1(a,b)显示,虽然两个FPN变体都比没有金字塔的基线取得了强大的收益(正如在分层主干上广泛观察到的原始FPN),但它们并不比我们的简单特征金字塔更好。最初的FPN[37]的动机是将分辨率较低、较强的特征图与分辨率较高、较弱的特征图相结合。当骨干网是普通的,没有高分辨率的地图时,这个基础就失去了,这可以解释为什么我们的简单金字塔是足够的。
我们的消融表明,金字塔特征图集,而不是自上而下/横向连接,是有效多尺度检测的关键。为了看到这一点,我们研究了一个更激进的简单金字塔案例:我们通过反卷积仅生成最精细的尺度 (1/4 ) 特征图,然后从这个最好的地图中,我们通过跨步平均池化并行对其他尺度进行子采样。此设计中没有非共享的按比例参数。这个非常简单的金字塔几乎一样好:它有 54.5 AP (ViT-L),比没有金字塔的基线高 3.3。这显示了金字塔特征图的重要性。对于这些特征金字塔的任何变体,锚点(在 RPN 中)和区域(在 RoI 头中)根据它们的尺度映射到金字塔中的相应级别,如 [37] 中所示。我们假设这种显式的尺度等变映射,而不是自上而下/横向连接,是特征金字塔可以极大地有益于多尺度目标检测的主要原因。
在一些传播块的帮助下,窗口注意力就足够了。表 2 消除了我们的骨干适应方法。简而言之,在具有纯窗口注意力且没有跨窗口传播块(表 2,“无”)的基线之上,各种传播方式都可以显示出不错的收益。
在表2a中,我们比较了我们的全局传播策略和卷积传播策略。无传播基线。他们比基线增加了1.7和1.9。我们还将其与“移位窗口”(Swin[42])策略进行了比较,在该策略中,窗口网格每隔一个块就移动一半窗口大小。移位窗口变量比基线增加1.1倍,但比我们的差。注意,这里我们只关注Swin的“移位窗口”方面[42]:主干仍然是一个普通的ViT,仅在微调期间适应移位窗口注意力;这不是我们稍后将要比较的Swin架构。
(a) 具有各种跨窗口传播策略的窗口注意力。
(b) 具有不同残差块类型(4 个块)的卷积传播。
(c) 跨窗口全局传播块的位置
(d) 全局传播块的数量。†:需要内存优化。
表2:在 COCO 上评估的使用普通 ViT 主干和 Mask R-CNN 对主干适应策略的消融。所有块都执行窗口注意,除非被传播策略修改。总之,与仅使用窗口注意力的基线(52.9 APbox)相比,只要信息可以在窗口之间很好地传播,大多数配置都能有效地工作。这里的主干是 ViT-L; ViT-B 的观察结果相似(见附录)。
表 3:骨干适应策略的实际性能。主干是 ViT-L。训练内存(每个 GPU)以批量大小为 1 进行基准测试。测试时间(每个图像)在 A100 GPU 上进行基准测试。†:估计这 3.34 倍内存 (49G) 就像可以使用相同的训练实现一样,这是不切实际的,需要特殊的内存优化,与基线相比,所有这些都将训练减慢 2.2 倍。
表2b比较了卷积传播的不同类型的残余块。我们研究了基本(2个3×3)[27],瓶颈(1×1→3×3→1×1)[27],以及具有一个3×3卷积的nave块。它们都在基线上有所改进,而特定的块设计只产生了微小的差异。有趣的是,即使卷积是一种局部操作,如果它的感受野覆盖两个相邻窗口,原则上也足以连接两个窗口的所有像素。这种连接性得益于后续模块中两个窗口的自我关注。这可能解释了为什么它可以执行全局传播。
在表 2c 中,我们研究了跨窗口传播应该位于主干的哪个位置。默认情况下,平均放置 4 个全局传播块。我们将它们放在第一个或最后 4 个块中进行比较。有趣的是,在最后 4 个块中执行传播几乎与均匀放置一样好。这与 [14] 中的观察结果一致,即 ViT 在后面的块中具有更长的注意力距离,并且在早期的块中更加本地化。相反,仅在前 4 个块中执行传播没有显示增益:在这种情况下,在这 4 个块之后没有跨主干窗口的传播。这再次表明跨窗口传播是有帮助的。
表 2d 比较了要使用的全局传播块的数量。即使只使用 2 个块也能达到很好的准确性,并且明显优于基线。为了全面起见,我们还报告了一个变体,其中 ViT-L 中的所有 24 个块都使用全局注意力。这比我们的 4 块默认值有 0.5 个点的边际增益,而它的训练需要特殊的内存优化(我们使用内存检查点 [8])。这一要求使得扩展到更大的模型(如 ViT-H)变得不切实际。我们的窗口注意力解决方案加上一些传播块提供了一个实用的、高性能的折衷方案。
我们在表 3 中对这种权衡进行了基准测试。使用 4 个传播块可以进行很好的权衡。卷积传播是最实用的,它只增加了 ≤5% 的内存和时间,而代价是增加了 4% 的参数。使用 4 个块进行全局传播也是可行的,并且不会增加模型大小。所有 24 个区块的全局自注意力是不切实际的。
总之,表2表明各种形式的传播是有帮助的,而我们可以在大多数或所有块中继续使用窗口注意力。重要的是,所有这些架构调整仅在微调期间执行;他们不需要重新设计预训练架构。
Masked Autoencoders 提供了强大的预训练主干。表 4 比较了骨干预训练策略。 IN-1K 上的监督预训练比没有预训练略差,类似于 [19] 中的观察结果。对于 ViT-L,IN-21K 的监督预训练略好一些。
表 4:在 COCO 上评估的使用 Mask R-CNN 对具有普通 ViT 主干的预训练策略的消融。
相比之下,MAE[24]关于In-1K(无标签)的预训练显示出巨大的收益,ViT-B的APbox增加了3.1,ViT-L增加了4.6。我们假设,具有较少诱导偏差的香草型ViT[14]可能需要更高的能力来学习平移和缩放等变特征,而更高容量的模型容易出现更严重的过拟合。MAE预训练可以帮助缓解这个问题。接下来,我们将讨论更多关于MAE的内容。
现代检测系统涉及许多实现细节和微妙之处。为了专注于在尽可能公平的条件下比较骨干网,我们将 Swin [42] 和 MViTv2 [34] 骨干网合并到我们的实现中。
设置。我们对所有 ViT、Swin 和 MViTv2 主干使用相同的 Mask R-CNN [25] 和 Cascade Mask R-CNN [4] 实现。我们将 FPN 用于 Swin/MViTv2 的分层主干。我们分别为每个主干搜索最佳超参数(见附录)。我们的 Swin 结果优于原始论文中的同行;9 我们的 MViTv2 结果优于或与 [34] 中报告的结果相当。
在原始论文 [42,34] 之后,Swin 和 MViTv2 都使用相对位置偏差 [46]。为了更公平的比较,这里我们还根据 [34] 在 ViT 主干中采用相对位置偏差,但仅在微调期间,不影响预训练。这种添加将 AP 提高了 ~1 个点。请注意,我们在 Sec 中的消融。 4.1 没有相对位置偏差。
结果和分析。表5显示了这些比较。图3显示了权衡。这里的比较涉及两个因素:骨干和训练前战略。我们的普通主干检测器,结合MAE预训练,呈现出更好的缩放行为。当模型较大时,我们的方法优于Swin/MViTv2的层次结构,包括那些使用IN-21K监督预训练的方法。我们使用ViT-H的结果比使用MViTv2-H的结果好2.6。此外,普通的ViT具有更好的挂钟性能(图3右侧,请参阅ViT-H与MViTv2-H),因为更简单的块对硬件更友好。
表 5:在 COCO 上使用 Mask RCNN [25] 和 Cascade Mask R-CNN [4] 的普通骨干与分层骨干的比较。权衡绘制在图 3 中。所有条目都由我们实现和运行以对齐低级细节。
图 3:准确性与模型大小(左)、FLOP(中)和挂钟测试时间(右)的权衡。所有条目都由我们实现和运行以对齐低级细节。 Swin [42] 和 MViTv2 [34] 在 IN-1K/21K 上进行了预训练并有监督。 ViT 模型使用 MAE [24] 在 IN-1K 上进行预训练。这里的检测头是Mask R-CNN; Cascade Mask R-CNN 和一级检测器 RetinaNet 也观察到了类似的趋势(附录中的图 5)。详细数字见附录(表 9)。
我们也很好奇 MAE 对分层主干的影响。这在很大程度上超出了本文的范围,因为它涉及使用 MAE 为分层主干找到好的训练方法。为了提供一些见解,我们使用 MViTv2 主干实现了 MAE 的原生扩展(参见附录)。我们观察到,在 IN-1K 上进行 MAE 预训练的 MViTv2-L 比 IN-21K 监督预训练好 1.3(54.9 对 53.6 APbox)。作为比较,对于我们的普通骨干检测器,这个差距是 4 个点(表 4)。这表明普通 ViT 主干可能比分层主干更受益于 MAE 预训练,这表明 MAE 的自我监督训练可以弥补尺度上缺乏归纳偏置。虽然通过 MAE 预训练改进分层主干是一个有趣的未来主题,但我们的普通主干检测器使我们能够使用 MAE 中现成的 ViT 主干来获得强大的结果。
我们还注意到,分层主干通常涉及增强的自注意力块设计。示例包括 Swin [42] 中的转移窗口注意力和 MViT v1/v2 [17,34] 中的集中注意力。如果将这些块设计应用于普通骨干网,还可以提高准确性和参数效率。虽然这可能会使我们的竞争对手处于优势地位,但如果没有这些增强功能,我们的方法仍然具有竞争力。
接下来,我们将提供与之前论文中报告的主要结果的系统级比较。我们将我们的系统称为ViTDet,即ViT检测器,旨在使用ViT主干进行检测。由于这些比较是系统级的,所以这些方法使用了各种不同的技术。虽然我们努力平衡比较(如下所述),但进行完全受控的比较通常是不可行的;相反,我们的目标是将我们的方法置于当前领先方法的背景下。
COCO上的比较。表 6 报告了 COCO 的系统级比较。为了更公平的比较,我们在竞争对手的基础上进行了两项更改:我们采用了该表中所有竞争对手 [42,34,36,41] 使用的 soft-nms [3],并增加了输入大小(从 1024 到 1280 ) 在 [36,41] 之后。我们注意到我们没有在以前的消融中使用这些改进。与上一小节(第 4.3 节)一样,我们在这里使用相对位置偏差。
表 6:与原始论文报告的 COCO 领先结果的系统级比较。检测框架是 Cascade Mask RCNN [4](表示为“Cascade”)、混合任务级联(HTC)[6],或其扩展(HTC++ [42])。这里我们比较使用 ImageNet 数据(1K 或 21K)的结果; [41,11] 使用额外数据报告了更好的结果。 †:[36] 结合了两个 Swin-L 主链。
迄今为止,领先的系统都基于分层主干(表 6)。我们首次展示了普通主干检测器可以在 COCO 上获得高度准确的结果,并且可以与领先的系统竞争。
我们还与最近的普通骨干检测方法 UViT [9] 进行了比较。如第二节所述。 2、UViT和我们的工作重点不同。 UViT 旨在设计一个有利于检测的新的普通骨干网,而我们的目标是支持通用的 ViT 骨干网,包括 [14] 中的原始骨干网。尽管关注点不同,UViT 和我们的工作都表明,plainbackbone 检测是一个很有前途的方向,潜力巨大。
LVIS比较。我们进一步报告了LVIS数据集的系统级比较[23]。LVIS包含∼1203个类的2M高质量实例分段注释显示了自然的长尾对象分布。与COCO不同,班级分布严重不平衡,许多班级的训练实例很少(例如<10个)。
我们遵循与 COCO 系统级比较相同的模型和训练细节以及两个常见的 LVIS 实践:我们使用来自 [59] 的联合损失和具有重复因子采样的样本图像 [23]。我们在 v1 训练拆分上微调了 100 个 epoch。
表7显示了v1 val拆分的结果。我们的普通主干检测器与之前所有使用分层主干的领先结果相比,取得了具有竞争力的性能。我们的分数比2021年比赛冠军的“强基线”[18](48.1比43.1 APmask)高5.0分,后者使用HTC和CBNetV2[36],结合了两个swwin - l主干。LVIS的一个特殊问题是关于长尾分布的,这超出了我们的研究范围。专门解决这个问题的技术,例如,使用CLIP[44]文本嵌入或来自[18]的其他改进,可以在很大程度上增加稀有类上的AP (APmask rare),从而提高整体AP。这些与我们的方法正交,可以相互补充。然而,我们在LVIS上的结果再次表明,普通主干检测器可以与分级检测器竞争。
表7:系统级与原始论文报告的LVIS(V1val)领先结果的比较。所有结果均未增加测试时间。Detic[58]使用预先训练的CLIP[44]文本嵌入。†:这些条目使用结合了两个Swin-L主干的CBNetV2[36]。
我们的探索表明,plain-backbone 检测是一个很有前途的研究方向。这种方法在很大程度上保持了通用骨干和下游特定于任务的设计的独立性——这是基于convnet的研究的情况,而不是基于transformer的研究的情况。我们希望将预训练与微调分离是一种普遍有益于社区的方法。例如,在自然语言处理(NLP)中,通用预训练(GPT、BERT)极大地推动了该领域的发展,并一直支持各种下游任务。在这项研究中,我们的普通骨干检测器受益于 MAE中现成的预训练模型。我们希望这种方法也有助于拉近计算机视觉和NLP 领域的距离。
目标检测研究受益于对通用主干和检测特定模块(例如锚\FPN)的很大程度上独立探索。如果特定任务的颈部/头部的设计与骨干的设计脱钩,它们可能会并行发展。长期以来,由于 ConvNet的实际设计,这些主干一直是多尺度、分层架构,这严重影响了用于检测多尺度对象的颈部/头部设计。
最初的ViT是一种简单、无层次的架构,始终保持单一比例的特征图。它的“极简主义”追求在应用于目标检测时遇到了挑战,例如,我们如何在下游任务中使用上游预训练的简单主干来处理多尺度目标?普通ViT是否效率太低,无法与高分辨率检测图像一起使用?
前人解决方法:
放弃“极简主义”的一个解决方案是在主干中重新引入分层设计。(例如Swin Transformers,可以继承基于ConvNet的探测器设计,并显示出成功的结果。)
我们的想法:
我们追求不同的方向:我们探索仅使用普通、非分层主干的目标检测器。在我们的研究中,我们的目标不是开发新组件。相反,我们进行了足以克服上述挑战的最小调整。
将主干设计与检测任务分离,专注于利用预训练的普通骨干,我们不限制探测器颈部/头部的设计。
(1)从单尺度特征图(没有常见的FPN设计)构建一个简单的特征金字塔
(2)在很少的跨窗口传播块的辅助下,使用(不移动的)窗口注意。
通过使用预先训练的纯ViT主干掩码自动编码器(MAE),我们的检测器,名为ViTDet。
骨干:在R-CNN的工作的开创下,目标检测和许多其他视觉任务采用了预训练+微调范式:一个通用的、与任务无关的主干通过监督或自监督训练进行预训练,其结构随后被修改并适应下游任务。计算机视觉中的主要主干是各种形式的 ConvNets 。
我们的研究侧重于没有先验规范的原始 ViT 架构进行检测。通过保持主干的任务不可知性,我们的方法支持广泛的可用 ViT 主干以及它们在未来的改进。我们的方法将主干设计与检测任务分离,这是追求普通主干的关键动机。
(1)简单的特征金字塔:在我们的场景中,我们只使用来自主干的最后一个具有最强的特征的特征图。在这张地图上,我们并行地应用一组卷积或去卷积来产生多尺度特征地图。具体地说,对于比例为1/16(步幅为16)的默认VIT特征地图,我们使用步长{2,1,1/2,1/4}的卷积来产生比例为{1/32,1/16,1 /8,1/4}的特征地图,其中分数步幅表示去卷积。我们将其称为“简单特征金字塔”(图1右侧)。
(2)主干自适应:我们关注的场景是,预先训练好的主干执行全局自我关注,然后在微调期间适应更高分辨率的输入。这与使用主干预训练直接修改注意力计算的方法形成了对比。我们的场景使我们能够使用原始的ViT主干进行检测,而无需重新设计预训练架构。
我们探索使用带有几个跨窗口块的窗口注意力。在微调期间,给定一个高分辨率特征图,我们将其划分为常规的非重叠窗口。在每个窗口内计算自注意力。
与 Swin 不同,我们不会跨层“移动”窗口。为了允许信息传播,我们使用了极少数(默认情况下,4 个)可以跨窗口的块。将预训练的主干平均分成 4 个块子集。在每个子集的最后一个块中应用传播策略。我们研究这两种信息传播方式策略:
(i) 全局传播。我们在每个子集的最后一个块中执行全局自我注意。由于全局块的数量很少,内存和计算成本是可行的。这类似于 [34] 中与 FPN 联合使用的混合窗口注意力。
(ii) 卷积传播。作为替代方案,我们在每个子集之后添加一个额外的卷积块。卷积块是一个残差块,由一个或多个卷积和一个恒等快捷方式组成。该块中的最后一层被初始化为零,因此该块的初始状态是一个身份。将块初始化为身份允许我们将其插入到预训练主干中的任何位置,而不会破坏主干的初始状态。
我们的骨干适应很简单,并且使检测微调与全局自注意力预训练兼容,又说明了没有必要重新设计预训练架构。
归纳偏置:
目标检测器包含可以与任务无关的组件(例如主干)以及其他特定于任务的组件(例如RoI 头)。而检测训练数据相对稀缺,这种模型分解使与任务无关的组件能够使用非检测数据(例如 ImageNet)进行预训练。
由上可得,追求包含较少归纳偏置的主干变得合理,因为可以使用大规模数据和/或自我监督来有效地训练主干。相比之下,检测任务特定组件的可用数据相对较少,并且仍可能受益于额外的归纳偏置。虽然追求具有较少归纳偏置的检测头是一个活跃的工作领域,但像 DETR 这样的领先方法难以训练并且仍然受益于特定于检测的先验知识。
ViT论文的讨论集中在减少翻译等值的归纳偏置上,在我们的案例中,在骨干网中减少甚至没有规模等值的归纳偏置。我们假设,普通骨干实现尺度等值的方法是从数据中学习先验知识,类似于它在没有卷积的情况下学习翻译等值和定位的方法。
我们的目标是证明这种方法的可行性。因此,我们选择使用标准检测特定组件(即,Mask R-CNN 及其扩展)来实现我们的方法。在检测头中探索更少的归纳偏置是未来工作的一个开放且有趣的方向。
(说了一堆,就是想表达我们追求骨干网中减少甚至没有规模等值的归纳偏置,而且还鼓励以后的研究在检测头探索更少的归纳偏置)
表 1:使用在 COCO 上评估的 Mask R-CNN 对具有普通 ViT 主干的特征金字塔设计进行消融。主干是 ViT-B(左)和 ViT-L(右)。与没有任何金字塔的基线相比,条目 (a-c) 对应于图 2 (a-c)。 FPN 和我们的简单金字塔都比基线好很多,而我们的简单金字塔就足够了。
两阶段vs单阶段
锚点vs无锚点
基于区域vs基于查询
我们要推出第四种: 普通主干vs分层主干
Transformers:Attention is all you need.
FPN:Feature Pyramid Networks for Object Detection
DETR:End-to-end object detection with Transformers.
Deformable DETR: Deformable Transformers for end-to-end object detection.
ViT:An image is worth 16x16 words: Transformers for image recognition at scale.
Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
Swin Transformer V2: Scaling up capacity and resolution