Hallucination Improves Few-Shot Object Detection

2022-09-02 13:07:19 浏览数 (1)

1、摘要

学习从少量的注释实例中检测新目标具有重要的现实意义。当例子极其有限(少于三个)时,就会出现一种特别具有挑战性而又普遍的制度。改进少样本检测的一个关键因素是解决缺乏变化的训练数据。我们提出通过从基类转移共享的类内变异来为新类建立一个更好的变异模型。为此,我们引入一个幻觉网络,该网络可以学习在感兴趣区域(RoI)特征空间中生成额外的、有用的训练示例,并将其纳入现在的目标检测模型。通过不同的区域建议生成过程,我们的方法在两个目前最先进的少样本检测器上产生了显著的性能改善(TFA和CoRPN)。特别是,我们在极具挑战性的COCO基准上达到了最佳的性能。

2、简介

现代卷积神经网络严重依赖大量带注释的图像。这种对数据的渴求限制了它们在一些实际场景中的适用性,例如自动驾驶,在这些场景中,注释示例的成本高得令人望而却步,或者涉及前所未见的概念。相比之下,人类可以迅速掌握一个新概念,并做出有意义的概括,即使是从一个例子。为了弥补这一差距,最近出现了对少量或少量学习的兴趣,旨在从极少数标记的例子中学习新概念。

尽管取得了显著的成功,但大多数现有的工作都集中在人工设置和小规模数据集的简单分类任务上。然而,少样本的物体检测,这是一个非常重要的实际任务,只从几个带注释的bounding box例子中学习物体检测器研究的很少。少样本需要确定一个物体在哪里以及它是什么(以及处理分散注意力的背景区域,等等)。),而且比少样本分类难多了。最困难的情况发生在新类的例子非常有限(少于3个)的时候(图1),这在现实世界中是一个常见但极具挑战性的情况。

虽然少样本分类方法是有帮助的,但少样本检测远不止是简单地应用少样本分类方法。最先进的两阶段微调方法(TFA)通过

(1)、在具有丰富数据的基本类上进行预训练,然后仅在新类上微调bounding box分类器和回归器

(2)在微调期间将实例级特征标准化引入bounding box分类器,来学习更好的少样本检测表示。尽管有所改进,但它在极低数据率下的性能仍远不能令人满意。

我们认为,为了充分提高极少样本检测性能,一个关键因素是有效地处理训练数据中缺乏变化。这是因为为了使目标检测器准确,它的分类器必须用很少的例子建立一个有用的外观变化模型。更具体地说,现代物体检测器首先使用区域建议网络(RPN)找到有希望的图像位置,通常是bounding box,然后通过分类器传递有希望的bounding box以确定存在什么物体,最后执行各种清除操作,例如非最大抑制(NMS),旨在避免重复预测和改善定位。现在假设检测器必须学会从一个例子中检测一个新的类别(图1)。分类器能够建立类别外观变化模型的唯一方法是从RPN给出的的较高IoU的框中学习。虽然有由RPN产生的bounding box的变体,但是来自单个例子的变体太弱,不能为新类训练分类器。

为了克服这个问题,一个策略是调整RPN的学习过程,以便它给出有较多信息的框。CoRPN通过训练多个有点冗余和合作的RPN来实现这一点。因此,如果一个RPN错过了一个信息丰富的盒子,另一个就会得到它。这种合作的区域方案网络方法虽然有用,但仍然不够。在极少数情况下,所有由多个RPN产生的正的新类建议都只是从少数可用的正实例(带有轻量级裁剪和缩放操作)中稍加修改,因此与之相似;它们的变化对于构建强分类器来说是非常有限的。

在这篇文章中,我们提出了一个不同的观点,通过从基类转移共享的类内变化来为新类建立一个变化模型。事实上,视觉世界中的许多变化模式(例如,相机姿势、照明变化,甚至清晰度)在不同类别之间是共享的,并且可以推广到看不见的类别。虽然这种类内变异很难通过建议生成过程进行编码,但通过学习产生幻觉的例子可以有效地捕捉到这种变异。

请注意,在少样本分类中训练幻觉器的现有策略与复杂的元学习过程相结合,使得它难以应用于最先进的少样本检测器。我们通过引入一种更简单但有效的训练程序来克服这一挑战:我们以类似EM(期望最大化)的方式训练我们的幻觉和检测器的分类器,其中首先用所有可用的基类数据训练“最强可能”的分类器;幻觉者然后在这个已经训练好的分类器的指导下被训练;最后,基于新类上的一组扩充示例(带有幻觉示例),对分类器进行重新训练和改进。

我们的贡献有三个方面:1)我们研究了极少样本检测(例如,少至一个样本)中一个关键但未被充分探索的问题——训练数据中缺少变化。(2)我们提出了一种新的基于数据幻觉的方法来解决这个问题,该方法有效地将类内变异的共享模式从基类转移到新类。我们的方法简单、通用,可以与不同区域建议过程配合使用。(3)在极少数情况下,我们的方法明显优于最先进的TFA和最近合作的RPN的检测器。

3、相关工作

1、目标检测

现代检测器通常基于具有两种架构的卷积神经网络——串行检测和并行检测。这两个系列都运行一个区域建议过程,该过程确定图像区域是否包含目标。他们在何时运行区域建议流程方面有所不同。串行检测器(或两级检测器)首先生成有希望的区域提议,然后将每个提议框馈送到分类器,该分类器预测该区域是否包含目标。串行检测器包括R-CNN 及其变体,如Fast R-CNN、Fast R-CNN、Mask R-CNN、SPP-Net、FPN和DCN。并行检测器(或单级检测器)同时运行区域建议过程和分类过程。并行检测器通常比串行检测器更快,但代价是精度降低,因为分类器不知道盒子中是否包含目标。代表性的并行检测器是YOLO,SSD,RetinaNet[19]和ExtremeNet的变体。我们的工作引入了一种通用的数据幻觉策略,以提高少样本模式下的检测性能。虽然我们在本文中主要关注串行检测器,因为它们实现了最先进的少拍检测性能,但我们相信我们的策略也适用于并行检测器,这将作为未来的工作。

2、少样本目标检测

先进的少样本检测器通常以串行方式构建。一方面的工作集中于通过度量学习,学习更好的特征表示,在每一类中建模多模态分布,恢复负信息,并在新类之间保留足够的余量空间。还探索了改进的微调技术。例如,提出了一种正则化的微调方法,将知识从预先训练的检测器转移到少样本检测器。最近,一个简单的两阶段微调方法已被证明优于更复杂的方法。其他工作通过应用元学习技术寻求改进,例如学习一个元模型,在给定少量数据的情况下重新加权预先训练的特征,并将元学习的分类器附加到Faster R-CNN。另一个工作重点是通过引入注意力机制和为分类器生成类感知特征来改进建议生成过程。一些工作修改了建议排序过程,并根据与查询图像的相似性对建议进行排名。一种RPN集成方法被证明是不正确的,以避免遗漏高信息量的建议框。进一步学习对比感知目标建议编码,以减少将新类目标错误分类为易混淆类的可能性。额外的信息也被证明是有帮助的,例如语义关系和多尺度表示。与现有的工作正交,我们通过产生额外的数据和丰富样本变异来解决少样本检测。

3、数据幻化

尽管最近在学习幻化样本来处理数据稀缺方面取得了进展,但大部分工作都集中在分类任务上,并在学习的特征空间中执行。新的类特征是通过从基类学习共享特征变换而生成的。同一个类的例子之间的成对变形被捕获并用于生成新的类实例。元学习者和幻化器被结合在一起,共同优化,以提高识别性能。我们的方法建立在的特征空间幻化框架的基础上,但对幻化器的结构和幻化程序进行了重大修改。据我们所知,我们的工作是第一次证明数据幻化对于少样本的有效性。

3、我们的方法

我们相信幻化会改进任何标准结构的少样本检测模型。在本节中,我们将重点改进两种具有不同区域建议机制的最新少样本检测器。

少样本设置和评估过程:

我们遵循中介绍的少样本设置和标准评估程序。类被分成两组:基本类Cb和新类Cn。我们研究的两个模型都采用两阶段微调过程。模型在第一阶段基于基类进行训练,然后在第二阶段基于新类进行微调。在第一阶段,模型只检测基类——模型是一个|Cb|-way 检测器。第二阶段,模型扩展为(|Cb| |Cn|)-way 检测器。为了在学习检测新类实例的同时保持基类的性能,检测器在包含新类和基类的平衡的少量数据集上进行微调。最后,我们比较了新类的平均精度。

3.1、少样本检测模型

两阶段微调方法(TFA):在广泛使用的Faster R-CNN框架下引入了两阶段微调方法,这显著提高了少样本检测性能。作为一个串行检测器,Faster R-CNN由主干网、区域建议网络、感兴趣区域池层、感兴趣区域特征提取器、bounding box分类器和bounding box回归器组成(图2)。最后四个部分共同构成了RoI头。主干提取图像特征,这些特征通过区域规划网络产生具有潜在目标的有希望的区域。RoI头随后将潜在的目标框转换、分类和细化为带标签的框。TFA通过使用基于余弦相似性的分类器来减少用于少样本学习的类内方差,从而修改了标准的快速反应神经网络。TFA使用预先训练好的影像网,以特征金字塔网络为骨干。如图2所示,在第一阶段,TFA使用基类图像训练整个模型。在第二阶段,只有RoI头中的分类器和bounding box回归框使用新的类实例进行微调,模型的其余部分被冻结。

CoRPNs:CoRPNs中提出了一种改进的基于RPN集成的建议生成机制,该机制为少样本检测产生了信息量大的建议bounding box。如图3所示,CoRPNs训练多个不同但合作的区域建议网络,这样如果一个RPN错过了一个信息丰富的建议框,另一个就会得到它。除了建议生成程序,CoRPNs与TFA共享相同的模型架构和训练策略。具体来说,CoRPNs通过修改后的区域生产网络分类损失来训练区域生产网络。

mathcal{L}=mathcal{L}_{mathrm{CE}}^{j^{*}} mathcal{L}_{mathrm{div}} mathcal{L}_{mathrm{coop}}

其中mathcal{L}_{mathrm{CE}}^{j^{*}} 是所选R P N_{j *} 的二元交叉熵损失。CoRPNs为每一个bounding box选择最确定的RPN。例如,每个锚框将获得概率接近0或1的R P N_{j *} 分数。选定的R P N_{j *} 在训练时获得此框的梯度。

散度损失L_{div} 鼓励RPN的不同,合作损失L_{coop} 通过为每个RPN对前景框的响应设置下限来强制RPN进行合作。L_{div} 定义为

mathcal{L}_{mathrm{div}}=-log (operatorname{det}(Sigma(mathcal{F})))

它是每个RPN对建议框的预测的协方差矩阵的负对数。对于前景框i和RPN j,合作损失为

mathcal{L}_{text {coop }}^{i, j}=max left{0, phi-f_{i}^{j}right}

其中φ是每个RPN对前景框的响应的下限,f_i^j 是RPN j对框I的响应,L_{coop}是所有RPN和前景框的平均值。

3.2、Few-Shot Object Detection with Hallucination

我们引入了一个带有参数φ的幻觉网络H,它通过利用基类的共享类内特征变化来学习为新类生成额外的例子。如图4所示,幻觉发生在RoI头部特征空间。幻觉者将可用的训练示例作为输入,并生成幻觉示例。然后,幻觉样本集S_{gen}被当作额外的训练样本,用于学习新类的分类器。特别地,给定类别c_k 的种子示例x_i^{ck} ,幻觉者通过以下方式生成幻觉示例

widetilde{x_{i}^{c_{k}}}=Hleft(mu_{c_{k}}, x_{i}^{c_{k}}, varepsilon ; phiright)

其中,c_kmu_{ck} 的类原型,它是来自c_k 的所有实例的平均值,ε是每个实例的噪声向量。请注意,我们的幻觉剂配方不同于[40]:我们引入了一个额外的输入mu_{ck} 来明确捕获全局类别信息。对于widetilde{x_{i}^{c_{k}}} ,其标签y_i 与种子示例的类别c_k 相同。假设我们已经有一个训练好的bounding box分类器,我们直接使用分类器对所有幻觉样本的(交叉熵)分类损失来训练幻觉者:

其中w_{y_{i}}w_k 是已经学习的分类器在相应类别上的权重。这种幻觉损失迫使幻觉的例子与训练好的分类器松散地“一致”。此外,由于我们将类原型作为输入,我们的幻觉者被隐式正则化,因此不简单地复制种子例子。与使用复杂元学习过程的相比,我们大大简化了训练过程。

3.3、训练幻觉和分类器

如图5所示,我们提出了一个EM型(期望最大化)训练程序来训练幻觉者和检测器的分类器:当训练幻觉者时,分类器被冻结;当训练分类器(和bounding box回归器)时,幻觉剂被冻结。与端到端联合训练相比,这种迭代策略改善了幻觉者和分类器之间的协作,从而产生对构建少样本分类器更有用的例子。

在基类上训练:

在基础类的训练阶段,我们首先像以前一样用标准的方式训练无幻觉器的普通检测器。然后,我们将幻觉器插入检测,冻结除幻觉器之外的所有模型组件。现在,幻觉器将在预先训练的固定RoI头部特征空间中执行。并且分类器已经使用所有可用的例子在基类上进行了训练。然后我们使用这个基类分类器来指导幻觉器的训练。请注意,与少样本分类不同,检测中的建议生成过程在目标周围生成几个建议框,即使在单样本场景中也可以使用一些训练示例。我们随机抽取这些训练样本作为幻觉器的种子样本。考虑一个由n个基类组成的训练批次。对于批次中的每一类,幻觉者生成m个例子,m对所有批次都是固定的。基于损失函数(5),使用幻觉样本集S_{text {gen }}来训练幻觉者。

在新类上微调:

在基本类上训练了幻觉器之后,我们进入了在包含基本类和新类的少量数据集上微调分类器和幻觉器的阶段。我们在幻觉器出现之前冻结了所有模型组件。每个训练批次S最初由一组不平衡的前景框示例Spos和背景框示例Sneg组成,背景框示例占大多数:S =[S_{pos};S_{neg}]。幻觉器为新类生成一组额外的例子。在不改变样本总数的情况下,我们随机地将背景样本替换为精确的训练样本

widetilde{S}=left[S_{mathrm{pos}}, S_{mathrm{gen}} ; S_{mathrm{neg}}^{prime}right]

4、实验

4.1、实现细节

数据集和评估标准:我们评估了两个广泛使用的少样本检测基准:MS-COCO和PASCAL VOC (07 12) 。为了公平比较,相同的基本/新颖类别划分、训练/测试划分和新颖类别实例用于训练和评估。与最近的工作一致,我们在PASCAL VOC上报告了样本1、2、3、5和10下三种不同基础/新颖分割的AP50我们在COCO上的样本1、2和3下报告AP、AP50和AP75。请注意,我们特别关注极少数的制度。

基线:我们主要侧重于与两种最先进的少样本检测器——TFA和CoRPNs的比较,并评估我们的幻觉与它们结合时的有效性和普遍性。对于我们的模型和主要基线,我们使用Faster R-CNN作为我们的基础模型。在TFA之后,我们使用预先训练好的ResNet-101,以特征金字塔网络[21]为骨干。我们所有的实验,包括那些有主要基线的实验,都在RoI头部附加了基本事实框作为训练例子。如CoRPNs中所报告的,包括基本事实在内,可可的平均收益为0.5%。此外,我们还比较了各种baseline,包括少样本检测的并发工作。

评估过程:我们的模型和主要基线都是(|Cb| |Cn|)-路少样本检测器。我们根据标准评估程序TFA对基础类和新类进行评估,如第3节所述。其他一些基线,如[17],最初是在不同的程序下评估的。为了公平比较,这些方法的所有报告数字都是根据标准评估程序重新评估的结果。

请注意,根据TFA,PASCAL VOC和COCO的微调阶段略有不同。在PASCAL VOC上,分类器在新类上的权重是随机初始化的,并使用具有基本类和新类的平衡数据集直接训练。在COCO上,我们首先在新的类实例上训练一个|Cn|路分类器。训练后的分类器被用作新类别上分类器权重的初始化。然后,我们使用一个带有基本类和新颖类的平衡的少量数据集来训练一个(|Cb| |Cn|)方向的分类器。

幻觉器结构:我们使用两层MLP(多层感知器),ReLU作为幻觉器。假设幻觉器的输入是类原型、种子例子和随机噪声,输入大小是特征大小的三倍;每个线性图层的输出大小与输入要素的大小相同。种子示例是从训练批次中的所有示例中随机抽样的。输入噪声取决于数据集。对于每个数据集,我们计算预先训练的输入特征的均值和标准差,并使用它们对输入噪声进行采样。在训练幻觉者之前,我们使用所有可用的例子预先计算基类原型。在训练幻觉器的过程中,我们不更新这些基类原型。以不同的方式,我们动态地构建新的类原型,当使用学习的幻觉器在新的类上训练分类器时。具体来说,新的类原型是通过使用训练和幻觉器的例子来计算的(相比之下,只有训练例子用于基类原型)。对于一个新颖的类,每当有新的训练例子进来或者新的例子产生的时候,它对应的原型就会被更新。尽管构建原型的基类和新类之间有些不一致,但我们发现这种策略利用了所有可用的例子,并根据经验获得了最佳性能。

幻觉器初始化:遵循[40]中的类似策略,我们通过使用块对角单位矩阵加上小的随机噪声来初始化幻觉。初始化噪声从均值为零、标准差为0.02的正态分布中采样。作为正则化的一种形式,这种身份初始化确保最初产生幻觉的例子不会离种子例子太远,因此不会降低性能。

超参数设置:在PASCAL VOC上,我们训练了批量为16、学习率为0.02的幻觉器,进行了8000次迭代。在2000次和6000次迭代中,我们以0.1的比率衰减学习率。在COCO上,我们训练了批量为64、学习率为0.02的幻觉师,进行了21200次迭代。在6,400和19,200次迭代中,我们以比率0.1衰减学习率。

幻觉样本的数量:当在新的类上训练分类器时,幻觉者在每个训练批次中为每个类别产生固定数量(m)的例子。为简单起见,我们将m设置为与每类训练样本的平均数量(即RoI特征)相同,在训练批次中取平均值。在PASCAL VOC上,每堂课大约有20个训练例子(批量为16),因此我们在所有实验中每堂课都会产生相应的20个例子。我们也在COCO上保留这个数字。在消融研究中,我们表明,通过调整幻觉样本的数量,性能得到进一步提高。请注意,当每批图像的数量变化时,该数字应该会改变。

4.2、主要的结果

和主要的基线TFA和CoRPNs进行比较:

表1和表2分别总结了PASCAL VOC和COCO的新类的结果。我们有以下主要观察结果。

(1)幻觉在极少量样本的情况下比主要基线大幅度提高了性能。在PASCAL VOC上,幻觉在单样本和双样本场景中产生了实质性的改进。在更具挑战性的COCO基准测试中,当与两个基线结合时,幻觉不断提高性能。

(2)我们的幻觉策略是通用的,适用于不同类型的检测器,无论RPN输出如何。这是因为幻觉提供了独立于RPN输出的额外的、有用的样本变化。

(3)在PASCAL VOC(表1)中,幻觉与CoRPNs或TFA组合时表现出略有不同的行为:虽然幻觉在极少数情况下持续改善CoRPNs,但在某些情况下并不总是对TFA有帮助(尽管幻觉也不伤害)。一种可能的解释是,我们的幻觉者倾向于保守,使得产生幻觉的例子仍然接近原始的种子训练例子。 因此,在训练和测试示例非常不同的情况下(例如,新的集合2和3),从训练示例产生的幻觉示例不能帮助建立用于检测测试示例的更好的分类器。在这种情况下,需要更具攻击性的幻觉剂来产生远离种子实例的实例。第4.3节中的消融研究更深入地研究了这个问题,并支持我们的观察。

(4)幻觉的性能增益随着训练例数的增加而减小。在更高的场景中,我们当前的幻觉不会在给定的训练示例之外带来额外的类内变化,因此不再有益。然而,请注意,幻觉不会损害5/10镜头场景中的性能——根据[38],多个随机样本的性能差异在95%的置信区间内。假设在我们的案例中训练了一个单一的幻觉者,我们可能需要在不同的样本量范围内使用不同的幻觉者或幻觉策略。

和最先进方法的比较:

表1和表2表明,我们的方法优于或相当于其他少样本检测方法。特别是,我们在极少数情况下取得了非常有竞争力的成绩。我们相信我们的努力与并行工作是正交的;我们的幻觉策略可以与其他方法相结合,以进一步提高它们的性能。

基类性能:

表3给出了基类的检测结果,这些结果是在用新的类实例进行微调后评估的。我们观察到幻觉提高了新类的性能,但代价是基础类的性能略有下降。这个问题可以通过对基类的分类器组件使用较小的微调学习速率来解决(基类已经过良好的训练)。更值得注意的是,与MPSR和FsDetView等其他最先进的方法相比,我们在新颖和基本类性能之间取得了显著更好的平衡。

4.3、消融研究

EM vs. Joint Training Procedures:

表4显示,在相同的幻觉架构下,我们的EM风格训练程序明显优于联合训练,这表明联合训练在这种情况下可能是贪婪的。此外,iterations的性能优于1iteration,我们发现更多的迭代并不能提高性能。

Conservative vs. Aggressive Hallucinators:

在主要实验中,我们表明保守的幻觉器并不总是有帮助的,在某些情况下,我们需要一种更具攻击性的幻觉器。在这里,我们通过改变幻觉空间来制造这样一个具有攻击性的幻觉。如图4所示,原幻觉器直接在分类器的操作空间(即在bounding box头后、分类器正前方的特征空间)生成例子;这使得它变得保守,并且不愿意产生急剧改变分类器决策边界的例子。

相比之下,我们的新幻觉器在框头部之前的特征空间中生成例子,因此,它成为三层卷积网络。现在框头允许幻觉中的错误,幻觉者变得更具攻击性,并允许分类器的彻底改变。我们还做了如下一些额外的修改:(1)我们与其他模型组件一起训练攻击性幻觉器,以及(2)我们使用余弦原型网络损失[34]作为训练幻觉者的额外指导,该损失是在具有幻觉原型的持续验证示例上计算的。表5显示,攻击性幻觉对保守性幻觉表现滞后的情况有显著帮助。重要的是,这两种幻觉变体都不会损害性能。

幻觉样本的数量:

我们的幻觉者在每一个训练批次中每类产生固定数量的例子(主要结果中有20个例子)。表6调查了幻觉例子数量的影响。随着它从0增加到20,性能逐渐提高,然后饱和并略有下降。请注意,根据[38],在多个随机样本上,下降仍在95%的置信区间内。这是因为即使我们每个训练批次产生少量的幻觉样本(例如3个),在多次迭代之后,幻觉样本的累积数量足够大。

全连接分类器上的结果:

我们在主要结果中使用余弦分类器。表7显示了使用全连接分类器的检测结果。幻觉改善了所有单发病例的CoRPNs,表明幻觉的有效性与分类器的选择无关。

性能分析:

我们调查我们的性能提升来自哪里。检测AP可以从两个方面改进:(1)正确识别更多的框,即真阳性率上升;(2)错误分类的框较少,即假阳性率下降。如表8所示,幻觉在大多数情况下既增加了真阳性的数量,又总是减少假阳性的数量。我们发现对误报的改进规模大于对真报的改进规模。一种可能的解释是,幻觉产生接近边界的例子,并改善决策边界。由于我们对决策边界有了更好的估计,许多错误分类的盒子被消除了。

5、结论和将来的工作

本文解决了少样本检测中缺少样本变化的问题。我们引入了一个幻觉网络来生成额外的特征级训练示例。实验评估表明,数据幻觉作为一种通用策略,可以整合到不同类型的检测器中,大大提高了少样本检测。我们的分析进一步表明,不同的设计选择会改变幻觉者的行为。我们的方法是数据幻觉策略的一个可能的实例。我们相信,对所提出的幻觉发生器体系结构的进一步改进,以及对训练程序的更专门控制的探索,可以导致更有效的幻觉发生器和更好的性能。最后,这是一个很有前途的途径来继续这方面的工作,除了物体检测之外的其他视觉识别任务。

0 人点赞