点击下方卡片,关注「集智书童」公众号

自动驾驶目标检测一直是计算机视觉中的一个具有挑战性的任务,因为存在环境不确定性。这些不确定性包括物体大小之间的显著差异以及遇到未见的类别。直接将传统目标检测模型应用于自动驾驶检测可能会导致性能不佳。因为它们通常假设固定的一般交通参与者类别,如行人和汽车。更糟糕的是,常见与新类之间的巨大类别不平衡进一步加剧了性能下降。


为了应对上述问题,作者提出了一种名为OpenNet的模型,通过使用基于交叉熵损失的平衡损失来调节类别不平衡。此外,作者采用了一种基于梯度重塑的归纳层,以在增量学习中有限样本的情况下快速学习新类。为了防止灾难性遗忘,作者采用了归一化特征蒸馏。


此外,作者通过FPN和基于能量的检测分别提高了多尺度检测的鲁棒性和未知类别的识别。在CODA数据集上的实验结果表明,与现有方法相比,所提出的方法可以获得更好的性能。

I Introduction

自动驾驶检测任务由于复杂的、不确定的检测环境而具有挑战性,该环境包括类别不确定性、类别不平衡、物体大小和其他因素的显著差异。计算机视觉领域已经建立了一些常见的目标检测模型。这些模型通常假设固定类别之间的相对平衡样本分布(COCO,VOC)。然而,现实世界的复杂性和变化性使得模型必须考虑未知类别,特别是在自动驾驶领域。在训练期间,作者无法保证在推理环境中遇到的类别的彻底理解。此外,未知类别的训练数据集通常不足,因为常见与新类之间的类别不平衡。

为了调和这些差异,作者提出了一种新方法,使得目标检测模型能够更好地适应开放式世界目标检测。Joseph [1] 将开放式集合和开放式世界进行了比较,并引入了开放式世界目标检测设置。此外,Joseph提出了一种基于对比聚类、未知感知提议网络和基于能量的未知类别检测的新颖方法,称为ORE。ORE使用灾难性遗忘的微调。然而,ORE 有一些局限性。与通用图像检测数据集不同,自动驾驶领域的数据集[20]往往具有大的类别不平衡,这使得使用传统的训练方法(即直接使用交叉熵分类损失)无法奏效。

同时,仅通过微调来对抗遗忘并不能使ORE 完全奏效,因为微调并不能直接学习前模型的知识。更糟的是,由于新类通常只有有限数量的样本,传统的学习方法在样本有限的情况下并不能很好地学习新类。

为了解决这些问题,作者提出了一种新颖的方法,称为OpenNet,该方法利用元学习增量学习以及平衡损失来提高增量学习并减轻类别不平衡。特别是,OpenNet采用归一化特征蒸馏来对抗灾难性遗忘。通过重塑梯度更新和改进,以及使用元学习在不平衡的样本下有效学习新类,OpenNet的准确性得到了提高。此外,金字塔结构特征提取器提高了OpenNet在不同尺度下的鲁棒性。

最后,作者在CODA自动驾驶目标检测数据集上实现了最先进的性能。

所做的贡献包括:

  1. 提出了一种新的分类损失(平衡损失),以减轻自动驾驶目标检测中的类别不平衡。

  2. 开发了一种两阶段的框架,称为OpenNet。该模型使用一个归纳全连接块(IFC)通过元学习来重塑梯度更新,以提高模型在有限样本上的泛化和学习能力。

  3. 此外,OpenNet采用金字塔特征提取器和归一化特征蒸馏来分别提高OpenNet的尺度鲁棒性和对抗灾难性遗忘。所提出的方法在CODA数据集上实现了最先进的性能。

II Related Work

Open World Object Detection

Dhamija 提出了第一个正式的开放式集合目标检测协议,同时引入了一个新的评估指标(平均荒野影响)来衡量开放式场景中目标检测模型的性能。Joseph 则是第一个引入基于开放式集合和开放式世界的开放式世界目标检测设置的人。此外,Dhamija 提出的评估指标(平均荒野影响)被用于衡量未知目标检测的性能。

同样地,Zheng [3] 提出了一种两阶段的策略来实现未知检测,首先使用开放式目标检测器预测已知和未知物体,然后使用无监督表示学习来发现未知类别的新的物体。然而,Zhao [2] 重新审视了 Joseph [1],引入了五个基本基准原则和两个公平评估协议,包括两个新的评估指标,这些指标更好地评估了开放式世界目标检测模型在处理未知物体和区分困难方面的性能。

此外,本文提出了一种辅助提议顾问(PAD),用于在没有监督的情况下帮助识别未知类别的准确提议,以及一种特定类别的排除分类器(CEC),用于校准已知类别的过度自信激活边界并使用特定类别的排除函数过滤混淆预测。Saito [4] 提出了一种新的数据增强和训练方案,以提高开放式世界实例分割和检测性能。

Class Imbalance

Lin [6] 提出的Focal Loss 试图解决类别不平衡问题。Focal Loss 放大样本权重分布的任何形状的扰动,以便使少数类样本能够更精细地调整。在Lin [6]的基础上,Cui [7] 提出了一种新的损失函数,称为类平衡损失,不仅适用于二分类问题,还适用于多分类问题。此外,还有一些数据方面的方法已经被应用来解决类别不平衡问题[8]-[9]。

Incremental Learning

Finn [10] 提出了一种新的增量学习方法,称为MAML。该方法通过迭代训练模型在多个任务上,以学习初始参数,允许更快地适应新任务。与Finn [10] 不同,Nichol [11] 基于梯度下降(Reptile)的一种特殊变体,可以有效地从多个任务中学习并实现在新任务上更好的性能。然而,随着数据集的增大,直接在大型数据集上应用以前的方法是不切实际的。Wu [12] 提出了一种称为BiC的方法,通过估计偏置参数来纠正全连接层对新类别的不偏置。它在[13]-[14]等数据集上显示出其有效性。

Meta-Learning

最近,元学习已被应用于解决k-shot对象检测设置。Wang [15] 提出了一种简单而有效的基于微调的方法,可以利用先前目标检测器的基石。此外,基于梯度优化的元学习算法已广泛研究。基于MAML的方法iMAML使用了隐式梯度方法,大大降低了内部优化循环计算的计算和内存负担。

III Methodology

在本节中,作者提出了一种名为OpenNet的方法,包括平衡损失和基于元学习的增量学习,以及归纳层。

Incremental Object Detector with Balanced Loss

图1说明了增量目标检测的端到端结构。基于ORE,OpenNet采用归纳全连接块(IFC),通过诱导梯度完成元学习。此外,OpenNet与多尺度金字塔特征提取器相结合,以增强对多尺度的鲁棒性。输入图像经过ResNet和FPN生成特征集,然后分别输入到RPN和RoI Head。RoI Head 分别输出每个实例的类别和边界框。同时,RoI Head生成的输出将被用于对比聚类。

此外,RPN和分类头分别进行了修改,以方便自动标注和识别未知类别。在RoI对齐之后,特征被传递到包含两个全连接层和归纳层(inductive layers)的IFC。归纳层被设计来重新构建梯度。在学习新任务时,从先前的任务中蒸馏出骨干网络和RoI Head生成的特征有助于防止灾难性遗忘。作者将这些凝聚性组成部分如下所述。

Balanced Loss

Lin [6] 发现单阶段检测器与双阶段检测器相比具有显著的性能损失,主要原因是训练过程中前景和背景类别的巨大不平衡。Lin [6] 提出了基于交叉熵损失的Focal Loss来解决前景-背景类不平衡问题,通过减少易于分类损失的权重来实现。Focal Loss是基于二分类任务的设置,即前景和背景,损失函数定义如下:

其中 是:

为了解决多分类任务中不同类别样本不平衡分布的问题,作者提出了一种新的分类损失,称为平衡损失。二分类任务通常使用Sigmoid作为激活函数,输出只有一个概率值 的代表类,那么基于二分类的交叉熵损失函数为:

这是基于 Focal Loss 的。多分类任务另一方面通常使用 Softmax 作为激活函数,输出具有多个值,即每个类别的概率,所有概率之和为1。基于多分类的交叉熵损失函数然后为:

其中 是正确类别的概率。因此,将 Focal Loss 直接应用于多分类是不合适的:

作者注意到,将转换后的 Focal Loss [6] 作为多分类任务的损失可以比标准交叉熵损失获得良好的性能改进。然而,Focal Loss [6] 仅用于减少易于分类样本的权重,使得它们对反向传播的贡献趋于0。因此,作者提出了一种新的分类损失,称为平衡损失,如下所示:

其中 是总样本数, 是正确类别中的样本数, 是权重因子。 是平衡因子。

作者假设数据集中的不同类别样本分布模拟了现实世界中不同类别的样本分布,尽管存在偏差,但偏差不会大于一个数量级。作者比较了直接使用样本大小计算平衡因子的方法,并发现使用实例数量更准确,因为一个样本可能包含少量的新类别和大量的一般类别,使用样本大小计算会掩盖不平衡的真正程度。

Focal Loss 只减少了易于分类类别对损失的贡献,而添加了 Balanced Loss 的分类损失则会同时减少易于分类样本对损失的贡献,同时相应地增加难以分类样本对损失的贡献。与为所有类别分配相同的调节器相比,Balanced Loss 在不同类别对梯度贡献方面更具灵活性。总之,Balanced Loss 相对于 Focal Loss 更能应对极端样本不平衡问题。

Incremental Learning based on Meta-Learning

在开放式世界目标检测中,训练集无法包含可能遇到的所有类别样本,因此需要高效地进行增量学习以应对开放式世界设置中复杂且不断变化的环境。然而,增量学习往往遭受灾难性遗忘,这反映了当前目标检测模型的一个普遍问题,即稳定性和塑性之间的困境。

为了解决稳定性和塑性之间的困境,作者需要一方面减轻灾难性遗忘,另一方面利用新类别的有限样本进行高效的增量学习。因此,作者提出了一种新的模块称为归纳全连接块(IFC),通过元学习基于梯度重塑和知识蒸馏来对抗灾难性遗忘。

Iii-B1 Task Formulation

作者假设一个基于 参数化的目标检测器 的标准反向传播如下:, 其中 是损失函数, 是学习率。作者旨在元学习一个参数化的预处理矩阵 , 其中 是 I 的参数。因此,将 的参数分为两个集合,分别是任务参数 和归纳参数 。通过添加归纳参数,梯度预处理会自然地由归纳层进行归纳。

作者将一些固定的神经网络层指定为归纳层,如图2所示。由于归纳层是非线性的,它允许模型在前一次训练中学习到的丰富信息进行建模,并有效地重塑梯度。与仅使用对角矩阵的前期工作相比,它具有更强的表示能力。用于预处理梯度的归纳参数是通过所有前一次训练任务进行训练的,而通过作者定义的归纳损失实现梯度的重塑。这些归纳层有助于模型模拟遇到的所有类别的联合分布,从而实现对新任务更好的泛化,并隐式地减轻灾难性遗忘。

Iii-B2 Task Loss

作者将任务损失分为两部分,分别对应学习新任务和继承以前任务,分别是 的定义如下:

分别是分类头和回归头的输出, 分别是相应的真实值, 是用于平衡各种类型损失的权重因子,它们的值在实验中设置为1。具体来说, 是平衡损失(BL),其他损失与 Joseph [1] 相同。

为了抵抗灾难性遗忘,作者使用具有冻结参数的 作为教师进行知识蒸馏。作者选择 Backbone、分类头和回归头的输出特征作为蒸馏的度量。输入图像经过 分别得到 。在模型 的 ROI Heads 之后,作者分别得到 。因此, 定义如下:

其中 分别是分类头和回归头的输出, 分别是相应的真实值, 是用于平衡各种类型损失的权重因子,它们的值在实验中设置为1。

以及 分别是分类头和回归头的输出, 分别是相应的真实值, 是用于平衡各种类型损失的权重因子,它们的值在实验中设置为1。

在这里, 是原始特征, 是归一化特征, 是归一化特征蒸馏损失。而 是特征的均值和标准差,默认为沿着 (H, W) 维度归一化特征。 是 L2 距离。 是 L2 回归损失, 是针对之前遇到过的类别计算当前分类头和前一个分类头的输出概率分布的 KL 散度。最终的 是根据 的加权线性组合得到的,如下所示:

是平衡蒸馏损失和学习当前任务的损失的重量因子。在以下实验中,作者取 为1。

Iii-B3 Inductive Loss

对于每个类别 ,作者维护一个队列(),其中存储了 ,用于计算归纳损失。 的长度为 。当输入样本时, 动态更新以保持每个类别最近的 。与存储每个类别对应固定数量的样本相比,这种方法确保每个类别对归纳层的更新都同等贡献,因为可能出现一些常见类别的样本和少量新类别的样本,这加剧了不平衡问题。

此外,因为 存储了所有先前遇到类别的预测和对应注释。它隐式地将之前任务中遇到的类别的丰富信息嵌入归纳层和整个网络中,这也有助于有效对抗灾难性遗忘。作者定义 如下:

其中 是 BL, 是平滑 L1 回归损失。作者想强调的是,诱导层和任务层是交替更新的,诱导层在固定间隔 更新,当诱导层更新时,任务层参数保持冻结,而诱导层参数在任务层更新时保持冻结。

IV Experiments and Results

作者在开放式世界目标检测设置下,使用两个著名的数据集,即 CODA  和 SODA10M,评估所提出的方法。作者将作者的方法与最先进的方法和标准目标检测方法进行比较,分别是 ORE 和 Faster R-CNN。结果始终优于最先进的方法和标准目标检测方法。下面,作者介绍数据集,解释实验设置,提供实现细节并报告作者的结果。

Datasets

实验是在 CODA 和 SODA10M 两个数据集上进行的,这两个数据集是由华为公开发布的,用于解决现实世界自动驾驶的可靠检测问题。CODA 分为 CODA Base 和 CODA 2022。CODA Base 包括 1500 张摄像机图像,而 CODA 2022 包括 9768 张摄像机图像。SODA10M 包含1000万张无标签图像和20,000张有标签图像。作者只使用了 SODA10M 中的有标签图像。

根据 CODA 的设置,SODA10M 包含六个常见类别(行人、自行车、汽车、卡车、有轨电车和三轮车),这些类别占数据集的大部分。CODA 2022 中的其余 23 个类别,即除了六个常见类别之外的所有类别,被认为是新类别。作者将这些类别分组到一个任务集合 中。在某个时刻 ,特定任务的所有类别将被引入到系统中。在学习 时,所有在 中的类别将被视为未知。

为了实现未知类别的检测和增量学习,作者使用 SODA10M 的数据作为第一个任务 T1。CODA 2022 包含 29 个类别,其中包括 SODA10M 中的前六个类别。作者将 CODA 2022 中的前六个类别,即 CODA 2022 中的常见类别,划分为第一个任务。剩下的 23 个类别被分成 6 个类别的组,除了最后一个组。

它们被划分为 T2(公共汽车、自行车、摩托车、滑板车和购物车)、T3(工程车辆、狗、栏杆、路桩、岗亭和交通锥)和 T4(交通岛、交通信号灯、交通标志、碎片、手提箱、垃圾桶、混凝土块、机器、垃圾、塑料袋和石头)。由于剩余类别中的样本太少,无法进一步细分。因此,CODA Base 用作测试集。

如表 I 所示,数据集在常见类和未知类之间具有高度不平衡性。这对传统目标检测方法构成了巨大的挑战。

Evaluation Metrics

V-B1 Unknown Classes

不幸的是,未知类经常被错误地检测为已知类,因此作者使用 Wildness Impact (WI) 度量来明确地测量这一点。WI 定义如下:

指的是在已知类别上验证模型的准确性, 指的是在已知和未知类别上验证模型的准确性,当测试集包含未知类别时,WI 应该越低越好。同时,为了衡量有多少未知类被错误地分类为已知类,作者使用绝对开放集误差(A-OSE)。总之,作者使用 WI 和 A-OSE 来展示模型在预测未知类别的性能。

V-B2 Known Classes

以下实验中,使用 0.5 IoU 阈值下的平均精确度(mAP@50)作为主要的评估指标。

Implementation

在本文中,OpenNet 是在 ImageNet 数据集 上预训练的,用于执行特征提取网络的权重初始化。作者使用随机梯度下降(SGD)并具有 0.9 的动量。初始学习率设置为 0.01,随后在 150 次迭代的热身期间降低到 0.0001。

训练是在一台具有四个 GPU 的机器上进行的,每个 GPU 同时处理两张图像,因此有效批量大小为 8。作者为每个类别设置固定的 长度为 10,当将新的 添加到特定类别时,会删除最旧的 。RoI Head 的分类头只处理已经遇到的类别。根据其他类别的增量工作,这是通过将未见类别的对数设置为非常高的负值()来实现的。这使得在计算类别概率(称为(7)中的 p)时,未见类别的贡献可以忽略不计()。

来自 RoI Head 中的最后全连接块的 1024 维特征向量用于对比聚类。将对比聚类损失(定义在(7)中)添加到分类和定位损失,并一起进行优化。同时,通过选择性地在对应损失函数 的反向传播过程中设置梯度为零,可以实现 保持固定,而 更新的目的。作者分别将 设置为 0.3 和 30。作者改变了 Box Head(原 Res-5) 的结构,将其改为 IFC,因为存在多尺度特征提取器(FPN),Res-5 被移动到了骨干网络。IFC 如图 2 所示,由两组全连接层和归纳层组成。归纳层通过全连接层实现,输入特征维数与输出特征维数相同。

Results

作者选择 ORE,Faster R-CNN 作为基准。ORE 目前已在开放式世界目标检测设置中实现了最先进的性能。此外,Faster R-CNN 也被选择作为标准目标检测方法的基准。实验数据集的划分如下。在以下实验中,作者使用了 CODA 和 SODA10M 数据集,其中 CODA 数据集包含了 CODA Base 和 CODA 2022,而 SODA10M 数据集包含了 1000 万张无标签图像和 20,000 张有标签图像。作者只使用了 SODA10M 中的有标签图像。

根据 CODA 的设置,SODA10M 包含了六个常见类别(行人、自行车、汽车、卡车、有轨电车和三轮车),这些类别占数据集的大部分。CODA 2022 中的其余 23 个类别,即除了六个常见类别之外的所有类别,被认为是新类别。

为了实现未知类别的检测和增量学习,作者使用 SODA10M 作为第一个任务 T1。CODA 2022 包含了 29 个类别,其中包括 SODA10M 中的前六个类别。作者将 SODA10M 中的前六个类别,即 CODA 2022 中的常见类别,划分为第一个任务。作者使用 WI 和 A-OSE 这两个指标来衡量模型在预测未知类别的性能。WI 是定义在已知类别上的指标,而 A-OSE 是定义在未知类别上的指标。实验结果表明,与最先进的方法和标准目标检测方法相比,作者的方法在预测未知类别方面取得了很好的性能。

在 CODA 和 SODA10M 数据集上,作者的方法在预测未知类别方面取得了很好的性能。之前的实验结果显示,OpenNet 在所有验证指标上都优于 Faster R-CNN 和 ORE,最终实现了 8.81% 的 mAP。而 Faster R-CNN、Faster R-CNN+Finetuning 和 ORE 分别取得了 3.34%、6.44% 和 7.66% 的 mAP。

此外,作者可以在开放式世界目标检测设置中看到标准目标检测器(Faster-RCNN)在任务切换方面表现出了灾难性遗忘。与 ORE 和 OpenNet 相比,它在检测先前任务方面的能力存在巨大的差距(分别为 3.044%、6.77% 和 2.12% 的 mAP)。

由于 ORE 是基于 Faster-RCNN 样本回放(即 Finetuning),因此它在检测先前类别方面的能力接近于 Faster R-CNN+Finetuning。而 OpenNet 在对抗灾难性遗忘方面表现更好,因为采用了知识蒸馏。

此外,由于增加了 BL 和标准 ROI Head 被替换为具有重新塑造梯度的 ROI Head,即 IFC 等,可以看出这些使得 OpenNet 在面对极端类不平衡的情况下具有更强的泛化能力和更快的学习能力,即更强的学习能力。最后,通过添加多尺度金字塔结构,OpenNet 的多尺度检测的鲁棒性得到了进一步增强。

一些基于 CODA Base(T1 设置)的实验结果,即只针对常见类进行训练(T1 为常见类)。如图 3 所示,第一行显示了仅针对常见类进行训练的结果,这表明模型目前只能识别常见类,并能将一些新类识别为未知类。

第二行和第三行显示了在 T2 学习新类后进行的检测结果。作者可以看到,具有多尺度特征提取器的 OpenNet 能够很好地检测物体,无论它们的大小如何,这反映了良好的鲁棒性。同时,作者也可以看到,在训练集中只有少量新类的情况下,OpenNet 在学习新类方面具有更好的学习泛化能力,同时很好地保留了从原始常见类学习中获取的学习信息。总之,这些图片展示了 Balanced Loss、知识蒸馏和归纳层的效果。

V Discussions and Analysis

为了测试 Balanced Loss 与 Focal Loss 相比的有效性以及添加 IFC 的有效性,作者进行了消融实验。消融实验使用 6+23 设置,该设置也用于稍后的敏感性实验。由于这里的表现比较与未知类是否被检测无关,因此使用 mAP@50 作为评估指标。同时,将 Standard Cross Entropy Loss 用作 Balanced Loss 的替代品,而 Balanced Loss 将被排除在外。

Ablation Experiments

作者使用消融实验来了解所提出方法中每个组成部分的贡献:平衡损失、知识蒸馏和 IFC。

表 III 显示了消融实验的结果,其中是否选择组成部分用“是”和“否”表示,B、D 和 I 分别代表平衡损失、知识蒸馏和 IFC。当消除平衡损失(即使用标准交叉熵)时,可以实现 22.89% 的 mAP,而当包括平衡损失时,可以实现 24.24% 的 mAP,这是 1.35% 的改进。

虽然在不添加诱导层的情况下,可以实现 22.16% 的 mAP,但当添加诱导层时,可以实现更高的 mAP,即 24.24%,这是 2.08% 的改进。这反映了在类别不平衡的情况下,使用平衡损失和 IFC 的模型具有更高效的一般化和学习能力。

最终,尽管在 T1 和 T2 任务中都同时使用平衡损失和 IFC,相对于移除其中一个,可以分别实现 49.77% 和 15.32% 更高的 mAP,但增量学习的最终结果会导致 mAP 降低到 16.11%,这是由于灾难性遗忘。这说明了知识蒸馏在对抗灾难性遗忘方面的有效性。

为了进一步证明平衡损失的有效性,作者进行了分类损失的消融实验,而其他设置保持不变。在这里,作者使用 OpenNet 并保持标准交叉熵损失不变作为基准。如表 IV 所示,与基准相比,使用加权交叉熵损失实现了 0.98% 的改进。但是,它仍然不是理想的。Focal Loss 从容易和困难的样本的角度来看待问题。Lin [6] 认为,大部分损失来自简单的负样本,并且梯度方向由这些样本主导。与基准相比,Focal Loss 取得了 2.14% 的改进。

Balanced Loss 结合了常见和未知类以及困难和容易的样本。BL 增加了困难样本的权重,减少了容易样本的权重,同时增加了未知类样本的权重。Balanced Loss 在极端类不平衡设置中分别相对于 Standard Cross Entropy Loss、Weighted Cross Entropy Loss 和 Focal Loss 取得了 3.11%、2.13% 和 0.97% 的改进,这充分证明了 Balanced Loss 在极端类不平衡设置中的优越性。

Sensitivity Analysis

作者对权重因子 进行了敏感性分析,该因子衡量了 (11) 中继承损失 和新任务损失 的权重,以及 IFC 的更新间隔 。所有实验均在相同的实验设置 6+23 下进行,与消融实验相同。敏感性分析的结果如下表 V 所示。

在垂直分析中,随着归纳层更新频率的固定,表 V 显示模型学习新任务的能力随着知识蒸馏重要性增加而逐渐降低,这与迭代次数 = 30/300/3000 一致。

VI Conclusion

在开放式世界目标检测设置中,ORE 实现了对未知类别的识别以及增量学习。同时,为了更有效的增量学习,作者提出了一种基于元学习的增量学习方法,通过添加归纳全连接块来重塑梯度,允许信息在增量任务之间隐式共享。结合知识蒸馏,这使得模型不仅能够很好地保留先前的知识,而且只需要有限的新类别样本就可以学习新的类别。此外,作者的广泛比较实验、消融实验和敏感性实验表明,该方法的每个组成部分都具有独立贡献。

将作者的方法扩展到单阶段检测器以及其他计算机视觉任务,如实例分割,将是非常有趣和重要的研究方向。

参考

[1].OpenNet: Incremental Learning for Autonomous Driving Object Detection with Balanced Loss.

点击上方卡片,关注「集书童公众号