CVPR 2021 Oral | OWOD:面向开放世界的目标检测 Towards Open World Object Detection

Towards Open World Object Detection

论文:https://arxiv.org/abs/2103.02603

代码:https://github.com/JosephKJ/OWOD

模型的任务是:

  1. 在没有明确标注时,将尚未引入的目标判别为“未知”
  2. 当对应标签逐渐加入后,逐渐地学习已引入的“未知”目标的类别,且不遗忘之前学习到的类别信息。

主要贡献:

·引入一个新颖的问题集合:开放世界目标检测,这个模型与现实世界的情况更加接近。  

·一个新颖的方法,称之为ORE ,基于对比聚类(一种可以感知到未知的预选网络)和基于能量的未知识别来应对开放世界检测的挑战。

·引入了一个综合的实验数据集来帮助我们衡量目标检测器对开放世界的刻画能力,并给出了ORE与其他的baseline方法的基准参照。

·一个有趣的by-product是,提出的方法达到了增量目标检测的SOTA水平,即使该方法不是为了增量目标检测而设计的。

摘要

人类拥有认知身边未知事物的天性。当最后有相应的知识可用的时候,曾对未知实例产生的固有的好奇心也有助于我们学习这些事物。这推动我们提出了一个新的计算机视觉领域问题:开放世界目标检测。

这个模型的任务是:

  1. 在没有明确标注时,将尚未引入的目标判别为“未知”
  2. 当对应标签逐渐加入后,逐渐地学习已引入的“未知”目标的类别,且不遗忘之前学习到的类别信息。

我们提出这样的问题,引入了一个强大的评估协议并且提供了一个创新性的解决方案,称之为ORE(Open woRld Object DEtector),这是基于对比聚类(contractive clustering)和基于能量的未知识别(energy based unknown identification)所提出的。

实验评估和消融研究分析了ORE方法在开放世界任务中的性能。一个有趣的py-product是,我们我发现识别和表征未知实例有助于减少增量目标检测的混淆性,且此方法没有加入额外的方法技巧上的努力便达到了SOTA性能。我们希望这个工作可以吸引更多的研究进入这个新生且重要的研究方向。

1. 引言

深度学习加速了目标检测的研究,目标检测的任务是识别并定位图片中的目标。所有现有的方法的强前提都是所有需要被检测的类别都会在训练阶段提供标签。当我们弱化这个前提,会出现两个具有挑战性的情景:

  1. 测试图像中也许包括未知类别的目标,这应该被归为“未知”(unknow)
  2. 当这些被识别的未知目标的信息(也就是标签)被引入后,模型应该有能力增量地学习到这些新的类别。

发展心理学的研究[40,35]表明,识别未知事物的能力是吸引好奇心的关键。这样的好奇心会引燃学习新知的欲望[8,15]。这促使我们提出新的问题:其模型应当可以将未知目标的实例识别为 “未知”,并且当训练数据逐渐到达时,模型可以通过统一的方式学会识别他们。我们将这样的问题集称为“开放世界目标检测”。

与真实的开放世界中无穷的类别相比,Pascal VOC[9]和MS-COCO[31]这种标准数据集的标注类别数量是非常少的(分别是20和80类)。将未知实例识别为“未知”需要强大的概括能力(generalization)。Scheirer等人[56]将这形式化为开放集合的分类问题。自此,提出了各种方法(1-vs-rest SVM和深度学习模型)来应对这具有挑战性的问题。Bendale等人[2]通过额外地更新图像分类器来识别已引入的新未知类别,从而将开放集合扩展为开放世界分类集合。有趣的是,如图一所示,开放世界检测由于其问题集合的困难程度而并没有被探索过。

开放集合和开放世界目标检测这两个问题有基础上的不同:目标检测器是被训练成将未知目标检测为背景的,所以开放集合和开放世界图像分类问题上所取得的进展并不能轻易放到开放世界目标检测任务中。未知其类别的实例本应该和已知类别的目标一同被引入到目标检测器中。因为他们没有被标注,所以当模型在训练的时候,这些未知的实例会被明确地被学习为背景。Dhamija 等人[7]发现即使有这样额外的训练信号,最佳性能的目标检测器得到的假阳性检测结果,即未知目标最后被分类为已知类别中的一种,经常有很大的置信度。Miller等人[42]提出使用dropout采样来估计目标检测置信度的不确定性。这是开放集合目标检测学术领域唯一经过同行评审的研究工作。一旦模型检测出未知目标,且专家为这个该兴趣的未知目标提供标签后,我们提出的开放世界目标检测会在增量学习新类别上更进一步。尽我们所知,这项工作还没有在学术中进行研究。图一展示了这个研究领域的已有研究工作的分类。

开放世界目标检测集比现有的封闭世界、静态学习数据集要更加自然。现实世界在数量、种类和结构上都是多样且动态的。直接假设在推理阶段中所有的类别都在训练阶段可见到是不成熟的。检测系统如在机器人、自动驾驶、植物基因分型(plant phenotyping)、健康和监督中无法在封闭训练(in-house)中拥有在之后的推理阶段全部相应类别的知识。我们可以预期的应用到这样数据集的目标检测算法中,其最自然且现实的做法是自信地将未知目标预测为未知,而已知目标分类为对应类别。当更多关于引入的未知目标的类别信息可用时,系统应当有能力将这些知识纳入知识库中。这将定义一种智能的目标检测系统。我们的工作便是向这个目标迈进的。

我们工作的主要贡献是:

·引入一个新颖的问题集合:开放世界目标检测,这个模型与现实世界更加接近。

·一个新颖的方法,称之为ORE ,基于对比聚类:一种对未知有意识的预选网络,和基于能量的未知识别来应对开放世界检测的挑战。

·引入了一个综合的实验数据集来帮助我们衡量目标检测器对开放世界的刻画能力,并给出了ORE与其他性能好的baseline方法的基准参照。

·一个有趣的by-product是,提出的方法达到了增量目标检测的SOTA水平,即使该方法不是为了增量目标检测而设计的

3. 开放世界目标检测

先给出本节中对开放世界目标检测的定义进行说明。在任意时间t,设已知目标类别的集合为\mathcal{K}^{t}=\{1,2, . ., \mathrm{C}\} \subset \mathbb{N}^{+},其中\mathbb{N}^{+}是正整数集合。为了尽可能真实地对动态的真实世界建模,我们假设存在一个在推理过程中可能遇到的未知类别集合\mathcal{U}=\{\mathrm{C}+1, \ldots\}。假设已知目标类别集\mathcal{K}_{t}在数据集\mathcal{D}^{t}=\left\{\mathbf{X}^{t}, \mathbf{Y}^{t}\right\}中被标注,其中XY是输入图像和对应的标签。输入图像集包括M个训练图像,\mathbf{X}^{t}=\left\{\boldsymbol{I}_{1}, \ldots, \boldsymbol{I}_{M}\right\}和其对应的每个图像的标签集合\mathbf{Y}^{t}=\left\{\boldsymbol{Y}_{1}, \ldots, \boldsymbol{Y}_{M}\right\}。每个\boldsymbol{Y}_{i}=\left\{\boldsymbol{y}_{1}, \boldsymbol{y}_{2}, \ldots, \boldsymbol{y}_{K}\right\}编码了目标实例集合,其目标实例带有类别标签和定位,也就是\boldsymbol{y}_{k}=\left[l_{k}, x_{k}, y_{k}, w_{k}, h_{k}\right],其中l_{k} \in \mathcal{K}^{t}x_{k}, y_{k}, w_{k}, h_{k}是对应边框的中心点坐标和宽高。

开放世界目标检测集认为有一个目标检测模型\mathcal{M}_{\mathrm{C}},其被训练来检测所有之前遇到过的C个目标类别。重要的是,模型\mathcal{M}_{\mathrm{C}}有能力辨别测试实例是否属于任何已知的C个类别,同时也可以通过将其标记为类别0,识别为未知,来识别一个新的或者是没有见过类别的实例。实例的未知集合\mathbf{U}^{t}便可以推送给人类用户,他们可以辨别n个新的感兴趣的类别(在可能的大量的未知目标当中),并提供他们的训练样例(example)。不需要从头重新再整个数据集训练,深度学习增量地将n个新的类别加入,并自我更新来创造出最新的模型\mathcal{M}_{\mathrm{C}+n}。已知类别集合也被更新为\mathcal{K}_{t+1}=\mathcal{K}_{t}+\{\mathrm{C}+1, \ldots, \mathrm{C}+n\}。整个循环在目标检测器的整个生命周期中都会持续进行。图2的最上行表示了问题集合。

4. ORE:开放世界目标检测器

一个开放世界检测任务的成功解决方法应当有能力在没有明确监督的情况下识别出未知实例,且当这些被识别的新实例送到模型中进行知识更新(而不是从头重新训练)之后,不会忘记先前的实例。我们提出ORE来应对这些挑战。

神经网络是一个通过一些列隐藏层学习输入和输出映射的通用解决方法[22]。在这些隐藏层学习到的隐含表达直接控制了每一个功能的实现方式。我们假设学习在目标检测器的隐含空间中学习类别间的明确辨别会有双重影响(two fold effect)。第一,这帮助模型辨别一个未知实例的特征表示是如何与其他已知实例不同的,这有助于将一个未知实例辨别为新事物。其次,这有助于在不对先前类别的隐含空间产生交叠的情况下学习新类别实例的特征表示,以对实现增量学习而不会遗忘做出贡献。帮助我们实现这一功能的部件是我们提出的在隐含空间中对比聚类,这会在4.1节中详述。

为了最佳地使用对比聚类来对未知目标聚类,我们需要有对什么是未知实例的一个监督。即使是标注一个小集合中可能含有无限个未知类别,这是不可行的。为了应对这一问题。我们提出了基于候选区域提取网络的(RPN)自标注机[54]来对未知实例进行伪标签标注,在4.2节中进行了说明。隐含空间中对未知实例的自动标注的固有分散度帮助我们的基于能量的分类来进行对已知和未知实例的分类。在4.3节中我们发现未知实例的亥姆霍兹自由能量(Helmholtz free energy)相对偏高。

图2展示了ORE的高阶架构。我们选用FRCNN[54]作为检测器的基本网络,因为Dhamija et al.[8]等人发现其在开放集合的表现要比单阶段的RetinaNet 检测器和基于目标(objectness based)的YOLO检测器更好。FRCNN是一个双阶段检测器,在第一阶段,一个非类别(class-agnostic)候选区域提取网络(RPN)从共享的主干网络提取的特征图中提取出可能含有目标的候选区域。二阶段进行对每一个候选区域的边框进行分类和调整。残差块对ROI提取特征,并被对比聚类。RPN和分类头被改造成自动标注和可以对应的辨别未知目标。下面的小节中介绍一下这些部件。

4.1 对比聚类

隐含空间中的类间距可以作为一个在开放世界方法中识别未知实例的理想特征。一个自然的实现(enforce)方法是将其建模为一个对比聚类问题,其中同样类别的实例会被强行保持接进,而不同类别的实例会被分开。

对于每一个已知的类别i \in \mathcal{K}^{t},我们维护一个原形向量\boldsymbol{p}_{i}。令\boldsymbol{f}_{c} \in \mathbb{R}^{d}为在目标检测器中间层生成的,类别为c的目标的特征向量。我们定义对比损失为:

\begin{aligned} \mathcal{L}_{\text {cont }}\left(\boldsymbol{f}_{c}\right) &=\sum_{i=0}^{\mathrm{C}} \ell\left(\boldsymbol{f}_{c}, \boldsymbol{p}_{i}\right), \text { where, } \\ \ell\left(\boldsymbol{f}_{c}, \boldsymbol{p}_{i}\right) &=\left\{\begin{array}{ll} \mathcal{D}\left(\boldsymbol{f}_{c}, \boldsymbol{p}_{i}\right) & i=c \\ \max \left\{0, \Delta-\mathcal{D}\left(\boldsymbol{f}_{c}, \boldsymbol{p}_{i}\right)\right\} & \text { otherwise } \end{array}\right. \end{aligned}(1)

其中\mathcal{D}是一个距离函数,\Delta表示了相似物和不相似物的相距程度。最小化损失可以保证一个在隐含空间中的类间距离。

每个类别对应的特征向量的平均值被用来建立一个类别原形集合:\mathcal{P}=\left\{\boldsymbol{p}_{0} \cdots \boldsymbol{p}_{\mathrm{C}}\right\}。维护每一个原形向量是ORE的重要部件。当整个网络端到端(end-to-end)训练时,类别原形逐渐形成,其组成的特征也逐渐变化(随机梯度下降通过每次迭代的小步长进行权重的迭代)。我们维护一个长度修正过的队列\boldsymbol{q}_{i},每个类别存放对应的特征。特征分数\mathcal{F}_{\text {store }}=\left\{\boldsymbol{q}_{0} \cdots \boldsymbol{q}_{\mathrm{C}}\right\},存放了这个类在对应队列中的特定特征分。因为存放的特征向量的数量以\mathrm{C} \times \mathrm{Q}(其中Q是队列的最大值)为界,所以这是一个能够持续追踪到特征向量在训练中是如何演化的,可扩展的方法。

算法1给出了在计算聚类损失时,类别原形是如何被管理的。在一个特定的迭代次数(burnin iteration)之后,我们才会开始计算损失。这使得初始化特征嵌入能使自己更成熟,从而对类别信息进行编码。自此,我们使用公式1计算聚类误差。每I_{p}个迭代后,一个新类别原形集合\mathcal{P}_{\text {new }}被计算(line8)。之后通过一个动量参数\eta衡量\mathcal{P}\mathcal{P}_{\text {new }},有的原形\mathcal{P}被更新。这使得在保持跟随在之前语义的基础上,类别原形可以演化。计算到的聚类损失被加入到标准检测损失中并反向传播来进行端到端的学习。

4.2 使用RPN自动标注Unknowns

当通过公式1计算聚类损失时,我们将输入的特征参数\boldsymbol{f}_{c}与包含了未知目标的原型向量进行对比。这个过程可以要求将未知目标实例标记为\text { unknown }的真值,但实际上并不可行,因为重新标注每个已经在大规模数据集中标注过的每个图片的所有实例是一个非常艰难的工作。

作为替代,我们提出对图片中的一些目标自动标注为潜在的位置目标。我们为此依赖RPN的类别不可知性。给定一个输入图像,RPN网络生成一个边框集合来对前景实例和背景实例进行预测,并同时得到对应目标的分数。我们将那些有高目标评分的候选区域进行标注,但不要与真值目标作为潜在的未知目标重叠。简单来说,我们选择前k个目标评分高的背景候选区域,作为未知目标。这个看上去简单地启发式方法取得了很好饿的效果,这会在第5节中进行叙述。

4.3 基于能量的未知辨别

给定在隐含空间F的特征(f \in F),和他们对应的标签l \in L,我们寻求学习一个能量函数E(F,L)。我们的公式是基于能量的模型(EBMs)[27],这个模型使用一个单输出的标量(比如E(\boldsymbol{f}): \mathbb{R}^{d} \rightarrow \mathbb{R}。),来学习一个函数E(\cdot)来估计观测到变量F和输出变量的可能集合L的兼容性(compatibility)。EBMs可以。。。?

明确来说,我们使用Helmholtz free energy方程,这个方程中在L的所有值的能量是组合起来的。

E(\boldsymbol{f})=-T \log \int_{l^{\prime}} \exp \left(-\frac{E\left(\boldsymbol{f}, l^{\prime}\right)}{T}\right)

其中T是温度参数。在softmax层的输出和类别特定能量值的Gibbs分布有一个简单的关系,这个关系可以写为:

p(l \mid \boldsymbol{f})=\frac{\exp \left(\frac{g_{l}(\boldsymbol{f})}{T}\right)}{\sum_{i=1}^{\mathrm{C}} \exp \left(\frac{g_{i}(\boldsymbol{f})}{T}\right)}=\frac{\exp \left(-\frac{E(\boldsymbol{f}, l)}{T}\right)}{\exp \left(-\frac{E(\boldsymbol{f})}{T}\right)}

其中p(l \mid \boldsymbol{f})是对于一个标签l的概率密度函数,g_{l}(\boldsymbol{f})是分类头(classification head)g(.)的第l个分类logit模型。使用这样的对应关系,我们将我们的分类模型以他们logits的形式定义其自由能量:

E(\boldsymbol{f} ; g)=-T \log \sum_{i=1}^{\mathrm{C}} \exp \left(\frac{g_{i}(\boldsymbol{f})}{T}\right)

上述的公式为我们提供一个从标准FRCNN的分类头转化为能量函数的自然的方式。由于我们通过类比聚类,在隐含空间中已经有了清楚的间距,我们可以通过图3看出,能量级别上已知类别和未知类别的数据点被分的很清楚。鉴于这种趋势,我们将已知和未知能量值\xi_{k n}(\boldsymbol{f})\xi_{u k n}(\boldsymbol{f})的能量分布进行建模,使用一个变形(shifted)的Weibull分布集合。对于Gamma, Exponetial和Normal分布,这些分布被发现与一个小的验证集(已知和未知实例)的能量数据非常吻合。使用学习后的分布,如果\xi_{k n}(\boldsymbol{f})<\xi_{\text {unk }}(\boldsymbol{f}),则可以用来对预测标记为未知。

4.4 减轻遗忘(Alleviating Forgetting)

在辨别的未知之后,开放世界目标检测器的一个重要的必须品是,当我们感兴趣的未知类别的样例被标注好时,其有能力学习到新的类别。重要的是,这次新的学习不会用到之前的训练数据,因为从头开始学习不是一个可行的解决方法。而只使用新类别的实例训练会造成对先前类别灾难性的遗忘[40.41]。我们注意到已经有很多现有的方法来减轻这种遗忘,包括基于参数的正则[2,24,29,66],exemplar replay[6,51,37,5], 动态扩展网络[39,60,56],和元学习[50,25]。

对比example replay和其他更加复杂的方法和重要性,我们从近期工作[49,26,62]开始构建。特别地,Prabhu等人[49]回顾了复杂的连续学习(continual learning methodelogies)做出的进展,并展示了增量学习中的贪心范例选择策略进行回放,其一直通过大的边际(margin)达到SOTA性能。Knoblauch等人[26]研究了一个重放方法中对无根据能量进行调整的理论。他们证明一个最佳连续学习器可以解决NP难问题并需要无限的内存。保存少量的样例并回放的有效性在相关的小样本目标检测中本证明是有效的(Wang等人[62])。这些驱动我们使用相对简单的方法来减轻ORE的遗忘,比如我们保存一个平衡的样例集合并在每次增量步骤之对模型进行finetune。在每一点,我们保证每个类别有一个最小N_{ex}个实例出现在样例集合中。

  • 4
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值