跳转至

ICCV2023-AlignDet:在各种检测器的所有模块实现无监督预训练

文章简介

大规模预训练后再进行下游微调的方法已经被广泛地应用于各种目标检测算法中。在本文中,我们揭示了目前实践中预训练和微调过程之间存在的数据、模型和任务方面的差异,这些差异隐式地限制了检测器的性能、泛化能力和收敛速度。为此,我们提出了AlignDet方法,这是一个通用的预训练框架,可以适配各种现有检测器,以减轻这些差异。AlignDet将预训练过程分解为两个阶段,即图像域预训练阶段和框域预训练阶段。图像域预训练优化检测骨干网络以捕获整体的视觉抽象,框域预训练学习实例级语义和任务感知概念以初始化骨干网络之外的部分。通过融合自监督预训练的骨干网络,可以实现在各种检测器中所有模块进行无监督预训练。如图1所示,大量实验表明,AlignDet可以实现对各种协议进行显著改进,如检测算法、模型骨干网络、数据设置和训练计划。例如,在更少的训练轮数下,AlignDet分别为FCOS提高了5.3 mAP,RetinaNet提高了2.1 mAP,Faster R-CNN提高了3.3 mAP,DETR提高了2.3 mAP。

原文链接:https://arxiv.org/abs/2307.11077

图1 对象检测中预训练和微调阶段之间的数据、模型和任务差异说明。在大多数预训练阶段,只有骨干通过以对象为中心的数据集(如ImageNet)上的分类任务监督进行更新。然而,整个检测器在基于多对象的数据集中进行微调,通过分类和回归任务进行监督。通过自监督的预训练减少这些差异,AlignDet在COCO上的各种检测算法、模型主干、数据设置和训练计划方面实现了显著增强。项目页面:https://liming-ai.github.io/AlignDet.

1. 背景介绍

近年来,大规模预训练后微调优化方法在计算机视觉中取得了重大进展。一系列预训练算法被设计出来,以学习特定领域的或任务感知的概念,以提升下游性能。就目标检测而言,当前方法通常利用ImageNet来预训练骨干网络,采用面向分类的监督。然而,与面向检测的微调过程相比,这种预训练方法存在三个差异,如图1所示。

数据:大多数预训练方法是在单个以物体为中心的数据集上进行的,如ImageNet。但是,检测数据集,例如COCO,通常由不同尺度和位置的多个物体组成。数据特征和领域上的差异可能导致预训练偏离下游任务。

模型:由于检测器的多样性和复杂性,当前预训练算法主要关注模型内的部分模块(例如骨干网络)。检测器中的某些关键组件(例如RPN和回归头)仍然是随机初始化的。

任务:现有预训练方法仅将分类任务视为替代任务,未能捕获包括建议生成、目标分配和框回归在内的与物体相关的位置上下文。

这些差异可能导致受限的结果、较差的泛化能力和较慢的收敛速度。

2. 相关知识补充

目标检测。 当前的目标检测算法可以根据不同的预测流程分为基于锚点、基于点和基于查询的方法。基于锚点的方法在每个像素上生成多个具有预定义大小和尺度的锚点。 它们通常通过交并比将训练样本划分为正样本和负样本。 基于点的方法旨在找到与每个对象相对应的参考点,这可以是每个实例的中心点,预定义或自学习的关键点 。与基于锚点和基于点的方法中使用预定义的先验知识不同,基于查询的方法通过一组可学习的查询来表示不同的对象。

自监督预训练。 自监督学习充分利用了大量无标注数据来学习结构化的数据特征,预训练的权重被转移到下游任务中以确保良好的初始化。 已经为无监督预训练提出了许多替代任务,例如特征聚类 ,着色,上下文预测,旋转预测和图像填充。一方面,对比学习通过最大化来自同一实例的不同视图的相似度来捕获良好的表征 ,在多个下游任务中取得了有竞争力的性能。 另一方面,Mask Image Modeling (MIM)最近在自监督学习中引起了越来越多的关注。 MIM不需要特定的数据增强,并且对下游任务具有更强大的泛化能力。

目标检测的自监督预训练。 尽管无监督预训练在目标检测中显示出了有竞争力的结果,但直接将图像级预训练知识转移到密集级下游任务存在一系列不一致之处。 为减小预训练和微调之间的差距,一些方法通过探索不同视图之间的局部特征相似性来提出密集级对比学习。 一些研究人员发现仅预训练骨干网络是不够的,他们尝试预训练其他常见模块,如FPN 。 然而,这些方法需要从头开始进行大量的预训练,检测器中的其他关键模块(如RetinaNet 中的回归头)仍然是随机初始化的。 另一方面,UP-DETR和DETReg 通过引入区域匹配和特征重构替代任务来预训练整个DETR样式检测器。 尽管这些方法可以对整个模型进行充分的预训练,但DETR定向的替代任务无法直接应用于其他检测方法。 相比之下,AlignDet实现了各种检测器的高效充分的自监督预训练。

3. 方法详解

最近的工作通过构建无监督预训练替代任务来扩展“预训练和微调”方法,与仅使用监督预训练的方法相比,这些方法取得了更高的性能。然而,与检测过程相比,当前预训练方法在数据、模型和任务上存在不一致之处,如图1所示。尽管可以通过大规模标注数据集的训练来缓解这些不一致,但它需要巨大的计算资源和手工标注成本。这些问题和局限激发我们提出AlignDet,一个通用的自监督框架,用于减小预训练和微调阶段中的差异。

图2 AlignDet的预训练流程图。监督和自监督预训练都可以用于图像域阶段,以捕捉整体视觉概念。对于框域预训练,首先采用选择性搜索生成无监督建议作为伪标签,然后对每个建议进行扩充,构建两个具有不同尺度和变换的视图。每个预测框用于构建对比学习和协调相关损失,以适应检测任务。

整个预训练流程如图2所示。在以下小节中,我们分别在第3.1节和第3.2节中介绍图像域预训练和框域预训练。我们提供了伪代码,以便更直观地理解AlignDet流程,以及与其他方法在技术细节上的比较见补充材料。

3.1 图像域预训练

图像域预训练优化骨干网络,为后续的框域预训练提取高层语义特征,如图2左侧的步骤1所示。一方面,给定图像x,骨干网络可以在完全监督的设置下与分类器和分类类别进行预训练。另一方面,最近出现的无监督学习算法有助于通过大量无标注数据捕获更普适的表征。以SimSiam 为例,从输入图像中构造两个视图x_1x_2,并采用不同的数据增强。骨干网络可以通过最大化不同视图的相似性来学习普适的表征,并且利用预测器和停止梯度用来防止模式崩溃。

图像域预训练通常在大规模的图像分类数据集(如ImageNet)上进行,其中每个样本主要包含一个或少数几个主要物体位于图像中心。这里存在一个差距,因为在预训练过程无法访问包含不同尺度和位置的多个物体目标数据集。此外,检测头仍然是随机初始化的,回归工作在此图像域预训练中也未明确学习到。为此,我们设计框域预训练以减小这些差异。

3.2 框域预训练

自监督对象检测。 如图2所示,给定输入图像x,我们首先通过选择性搜索[48]生成无监督建议 P = {p_1, p_2, ..., p_n}。每个建议p_i \in P可以表示为一个边界框,坐标为(\hat{x}, \hat{y}, \hat{w}, \hat{h}),其中(\hat{x}, \hat{y})表示框中心的坐标,({\hat{w}, \hat{h}})表示宽度和高度。然后图像x通过从变换集T中采样变换t进行增强,生成增强视图x_1x_2。无监督建议P的坐标也根据相应的图像变换改变为P_1P_2。在预训练过程的每次迭代中,在线检测器f_q和动量检测器f_k将在不同视图的图像上生成其预测框。通过将无监督建议P_1,P_2视为真值,我们可以通过下式获得在线检测器f_q和动量检测器f_k对应的预测框B_1,B_2:

B_1 = \phi(f_{reg}^q(x_1), P_1), B_2 = \phi(f_{reg}^k(x_2), P_2)

其中f_{reg}(x)表示基于图像x根据回归相关模块f_{reg}预测的框坐标。\phi表示目标分配操作,在f_{reg}^q(x_1)和无监督建议P_1之间进行样本匹配,如锚框检测器中计算IoU。注意,不同检测器的标签匹配方法各不相同,我们在预训练过程中保持检测器的默认分配机制而不做任何更改,以确保我们的方法可以轻松应用于不同类型的检测器。然后每个输出框在B_1B_2中可以重写为b = (x, y, w, h, l)

框域对比学习。 在获取每个预测框的坐标后,我们可以通过用无监督头f_{con}替换检测头中的原始监督分类头,进一步获取不同视图中相应的特征:

Z_1 = g_q(f_{con}^q(x_1, B_1)), Z_2 = g_k(f_{con}^k(x_2, B_2))

其中f_{con}(x, B)表示框域预训练过程中用于对比学习的预测框B的提取特征。g是特征投影模块,这里我们遵循MoCo v2 [9]中的架构,即一个2层MLP头与ReLU [19]。请注意,f_{con}f_{reg}通常是检测头中的两个不同模块,这里为简洁起见没有在图3中绘制。

在此无监督预训练过程中,对比学习的原理是:对应同一建议的框表示应该相似,反之则不相似。具体来说,我们将查询框的集合定义为Q = {b∈B_1:l≠∅}。对于每个查询框q∈Q,假设其分配的建议索引是i,特征是z_q。则正关键Z_+和负关键集K_- 对于查询特征z_q可以构造为:

Z_+ = {z∈Z_1:l=i}, \ Z_- = {z∈Z_1∪Z_2:l≠i}

则所有查询框Q中的框域对比损失L_{con}定义为:

L_{con} = - \sum_q \sum_{z+} log(\frac{exp(z_q·z_+/τ)}{exp(z_q·z_+/τ)+\sum_{z-} exp(z_q·z_-/τ)})

其中\tau是一个控制对比学习任务难度的温度超参数[50],在本文中对所有方法均设置为0.5。

总体损失。 对于预测框q_i = (x, y, w, h, l),其中q_i∈Ql是其在P_1中对应的建议的索引,我们将其定义为\hat{p}_l = (\hat{x}, \hat{y}, \hat{w}, \hat{h})。坐标相关回归损失根据每个检测器计算,我们在预训练过程中不做修改:

L_{reg} = \sum_q \sum_{k=1}^K λ_k · L_k((x, y, w, h), (\hat{x}, \hat{y}, \hat{w}, \hat{h}))

其中K是坐标相关损失的数量,\lambda_k表示损失系数。L_k可以是任何坐标相关损失,如FCOS [47]中的IoU损失或Mask R-CNN [24]中的L1损失。然后总体损失是框级对比损失L_{con}和坐标相关损失L_{reg}的组合:

L = \lambda_{con} · L_{con} + \lambda_{reg} · L_{reg}

其中\lambda_{con}, \lambda_{reg}是损失超参数,我们与对应的检测器保持相同的默认设置。我们在框域阶段冻结了骨干网络,以避免检测器过度拟合于噪声伪标签。框域预训练通过采用多对象数据构建面向检测的替代任务,解决了数据和任务上的差异。结合图像域预训练,AlignDet有助于预训练检测器中的所有模块,从而解决了模型差异。

4. 结论

本文中,我们指出预训练和微调阶段在目标检测中存在数据、模型和任务的差异,并提出了AlignDet来解决这些问题。AlignDet学习分类和回归知识,实现高效针对所有模块的预训练。值得注意的是,AlignDet是第一个实现各种检测器完全无监督预训练的框架。我们广泛的实验表明,AlignDet可以在各种设置下显著提升检测性能,包括不同的检测器、骨干网络、数据设置和微调计划。我们相信我们的工作为目标检测中的预训练问题提供了有价值的洞见,并开辟了新的研究方向。


本文总阅读量