深度目标检测网络的性能在很大程度上取决于标注数据集的大小。添加更多标注数据会有所帮助,但会增加标注成本。大量未数据中其实包含了很多冗余数据,那么如何只挑选其中有价值的数据进行标注,而达到与标注全量数据相似甚至更好的训练效果呢?这正是主动学习要解决的问题。

Not All Labels Are Equal: Rationalizing The Labeling Costs for Training Object Detection

原文链接:Not All Labels Are Equal: Rationalizing The Labeling Costs for Training Object Detection 2021/06; TUM; NVIDIA; CALTECH
本文思路简洁,效果显著。但没有开源代码。


1. introduction

本文结合了主动学习策略和半监督策略,统筹考虑哪些数据需要人工标注,哪些数据可以自动标注。
如果网络的预测结果在原图和其的水平翻转的图像上的预测结果不一致,那么这张图就需要手动标注。这种简单而有效的方法使我们能够挑选出表现差的和表现好的类别的信息丰富样本。
仅使用 AL 挖掘的informative的数据进行训练,会存在数据集分布漂移的问题,因此在每个 AL 周期中,我们使用先前训练的网络来挖掘简单的样本,即网络预测置信度的样本,并使用网络的预测结果作为标签,将这些自标注的简单样本加入了训练。
 
论文效果:与目前最先进的主动学习算法相比,分别在PASCAL-VOC 和 MS-COCO 数据集上提高了 7.7% 和 7% 的 mAP。与基线性能相同时,可以减少82%的标签数据。

2. 方法

acquisition 函数除了包含检测器的不确定性,还包含了检测器的鲁棒性。我们发现对于 low-performing 的类别,将检测器的鲁棒性作为 acquisition 函数更加高效。
 
符号定义
D: 数据集,分为有标签的数据集L和无标签的数据池U

\Delta:一张图的推理结果。\hat{\Delta}:图片经过水平翻转后的推理结果。

\Delta_{i}:第 i 个目标物体的预测结果,\Delta_{i}包含边界框\boldsymbol{b}_i和神经网络的softmax层之后的概率分布\boldsymbol{c}_i

\boldsymbol{b}_i: [\boldsymbol{\delta} \boldsymbol{x}, \boldsymbol{\delta} \boldsymbol{y}, \boldsymbol{w}, \boldsymbol{h}] 目标框,包含中心点的位移和宽高。

\boldsymbol{c}_i^p:概率分布的第 p 个类别。
 

AL训练过程中,需要从未标注数据池U中发掘样本进行标注,加入训练集L. 然而仅挑选 hard sample 加入训练集,会导致数据分布漂移,因此我们在训练集中增加了使用伪标签(pseudo-labeling)的简单样本,即模型预测置信度高的样本。

2.1 基于不一致性的主动学习 Inconsistency-based AL

大多数 AL 方法使用一些不确定性(uncertainty)度量,例如熵(entropy),来计算 acquisition (采集)函数。 entropy 高的图像所含的信息与训练集图像非常不同,将熵高的图像标注加入训练集,可以提供新的信息。 然而,我们凭经验发现仅使用基于不确定性的 acquisition 函数并不是一个理想的解决方案,尤其是对于low-performing 类别。 正如我们在实验中所展示的,如果网络对某个目标预测的类别不正确,那么无法可靠地计算acquisition函数。
 
为了解决这个问题,我们提出一种新的基于网络预测结果鲁棒性的 inconsistency 的 acquisition 函数。如果网络模型对一张图像和其水平翻转后的图像的预测结果非常相似,那么我们就说模型对于这张图片是鲁棒的。反过来讲,如果图像翻转前后的预测结果不一致,那么就说明这张图片提供了训练集中没有的信息,需要对这张图片进行人工标注,加入训练集。通过专注于鲁棒性,该方法与类别无关,并且在大多数类别中表现良好。
 

Inconsistency-based acquisition function

为了度量网络的鲁棒性,我们首先要定义inconsistency acquisition 函数。给定原始图像及水平翻转的图像,我们需要通过计算 IOU来匹配预测结果\Delta\hat{\Delta}


\Delta_{i}^{\prime}=\operatorname{argmax}_{\boldsymbol{b}_{i} \in{\boldsymbol{b}}} \operatorname{IoU}\left(\boldsymbol{b}_{i}, \hat{\boldsymbol{b}}_{i}\right)
\qquad (1)

对于每一个匹配的目标物体对\Delta_i\hat{\Delta}_i,定义他们的 inconsistency:


\mathcal{L}_{con_{C}}\left(\boldsymbol{c}_{i}^{\prime}, \hat{\boldsymbol{c}}_{i}\right)=\frac{1}{2}\left[KL\left(\boldsymbol{c}_{i}^{\prime}, \hat{\boldsymbol{c}}_{i}\right)+KL\left(\hat{\boldsymbol{c}}_{i}, \boldsymbol{c}_{i}^{\prime}\right)\right]
\qquad (2)

其中 KL 表示 Kullback-Leibler 散度。 不一致性越高,样本中可用于训练的信息越多,越值得人工标注。
 

Aggregating object scores for image selection

聚合对象分数,用于挑选图像。给定图像中每个对象预测的不一致性\mathcal{L}_{con_{C}},我们通过聚合\Delta上的分数来定义图像的 inconsistency。 具体来说,我们首先对其预测应用非极大值抑制,然后将图像的 inconsistency 定义为:


I(\boldsymbol{\Delta})=\max_{i}[\mathcal{L}_{\operatorname{con}_{C}}\left(\boldsymbol{c}_{i}^{\prime}, \hat{\boldsymbol{c}}_{i}\right)]
\qquad (3)

此处采用极大值而不是平均值的原因:我们认为样本信息丰富程度与简单对象的数量无关,即使有只有一个困难样本,这张图片的信息也是丰富的。
相似的,我们将图像的 uncertainty 定义为:


H(\boldsymbol{\Delta})=\max _{i}[H\left(\boldsymbol{c}_{i}\right)]
\qquad (4)

其中,H(\boldsymbol{c}_{i})为分布\boldsymbol{c}_{i}的熵。

考虑到 inconsistency 和 uncertainty 分数的尺度不同,我们通过相乘将两者统一起来。对于一张图片的推理结果\boldsymbol{\Delta},acquisition score(采集分数) 定义为:


A(\boldsymbol{\Delta})=H(\boldsymbol{\Delta}) \times I(\boldsymbol{\Delta})
\qquad (5)

 
在对未标注数据集 U 中的每张图片进行评分后,根据图片采集分数对所有图像进行排序。并选取最高分数的 N/T 张图片进行标注,其中 N 为计划选取的图片总量 ,T 为主动学习cycle 的数量 .请注意,选取图像后需要对图像中的所有目标都进行标注,无论该目标框是否具有高分。 最后此过程重复 T 个周期。

2.2 伪标签(Pseudo-labeling)—防止数据分布漂移

上面描述的主动学习策略只挑选了信息量大的样本(imformative / hard samples),而忽略了置信度高的简单样本(confident samples),这样会造成数据分布的漂移。因此应该让模型看到一些有代表性的简单样本,以确保不会发生数据分布漂移。同时,为了减少标注成本花费标注成本,简单样本采用伪标签标注。采用上一个 AL 周期训练的网络模型推理置信度高的边界框,作为下一个AL 周期的训练数据的伪标签。伪标签标注的置信度阈值\tau,


\begin{array}{ll}\hat{y}_{i}^{p}=1, & \text { if } p=\operatorname{argmax}\left(\boldsymbol{c}_{i}\right) \text { and } \boldsymbol{c}_{i}^{p} \geq \tau \\ \hat{y}_{i}^{p}=0, & \text { otherwise }\end{array}
\qquad (6)

 
我们使用 one-hot 的伪标签作为当前数AL 周期训练集的ground truth。然而我们注意到,模型可能对一张图片中的某些预测框置信度高,而对另一些预测框置信度低。例如一张图片中同时包含一只猫和一条狗,模型对猫的预测框的置信度高,并采用伪标签对其进行了标注,而对狗的预测框的置信度不高,并未对狗标注伪标签。此时如果采用标准的 loss函数训练新模型,会导致新模型对于狗的预测置信度更低。(因为本来是狗的正样本区域被当成了背景。)
下一节,我们将讨论如何解决这个问题。

2.3 损失函数

本节描述了三个损失函数:multibox, consistency 和 pseudolabeling losses。

人工标注样本的 Multibox Loss

multibox loss for labeled sapmles.
 
对于人工标注的样本,类别采用标准的 MultiBox loss、边界框采用 smooth L1 loss 训练模型。
 
给定模型的预测类别\boldsymbol{c}, MultiBox loss 定义为:


\mathcal{L}_{\operatorname{conf}}(\boldsymbol{c}, \boldsymbol{y})=-\sum_{i \in P o s} \sum_{p=1}^{\mid \text {classes } \mid} \boldsymbol{y}_{i j}^{p} \log \left(\boldsymbol{c}_{i}^{p}\right)-\sum_{i \in N e g} \log \left(\boldsymbol{c}_{i}^{0}\right)
\qquad (7)

其中
\boldsymbol{y}_{i j}^{p}=[0,1]
是一个指示符,用于指示类别为p的第i个预测框和第j个 ground truth 框的匹配关系。Pos表示正样本框,Neg表示背景框。

无标签样本的 Consistency Loss

Consistency loss for unlabeled samples。
(此处的 unlabeled samples 应该是指不需要 gt ,而不是训练集中包含无标注样本的意思,训练集中的样本都是有标注的(包含人工标注和伪标注)。因为翻转图像预测结果互为监督,不需要标注标签作为 ground truth。)
 
在 acquisition 函数中,我们利用了检测器的不一致性。如果检测器对一张图片具有很高的不一致性,那么它就不能采用自监督的方式学习,而从该图片中学习的唯一方法是对图片进行标注。在训练期间,我们需要引导检测器输出一致的预测结果。为此,我们镜像主动学习过程,并将原始图片和水平翻转图像送入检测器,用式(1)所示方法匹配预测结果后,我们采用 class acquisition 函数 \mathcal{L}_{\operatorname{con}_{C}} 作为类别不一致性 loss 。为了稳定训练,我们将定位不一致 loss 定义为:


\begin{aligned} \mathcal{L}_{\operatorname{con}_{L}}\left(\boldsymbol{b}_{i}^{\prime}, \hat{\boldsymbol{b}}_{i}\right)=& \frac{1}{4}\left(\left|\boldsymbol{\delta} \boldsymbol{x}_{i}^{\prime}-\left(-\hat{\boldsymbol{\delta} \boldsymbol{x}_{i}}\right)\right|^{2}+\left|\boldsymbol{y} \mathbf{0}_{i}^{\prime}-\hat{\boldsymbol{y} \mathbf{0}_{i}}\right|^{2}+\right.\ &\left.\left|\boldsymbol{w}_{i}^{\prime}-\hat{\boldsymbol{w}}_{i}\right|^{2}+\left|\boldsymbol{h}_{i}^{\prime}-\hat{\boldsymbol{h}}_{i}\right|^{2}\right) \end{aligned}
\qquad (8)

我们通过对所有匹配预测对的损失进行平均来计算总的一致性损失:


\mathcal{L}_{c o n}=\mathbb{E}\left[\mathcal{L}_{c o n_{C}}\left(\boldsymbol{c}^{\prime}, \hat{\boldsymbol{c}}\right)\right]+\mathbb{E}\left[\mathcal{L}_{c o n_{L}}\left(\boldsymbol{b}^{\prime}, \hat{\boldsymbol{b}}\right)\right]
\qquad (9)

伪标签 loss

Pseudo-labeling loss
 
我们仅对图片中检测置信度高的对象做伪标注,而不标注置信度低的对象,使用式(7)的 loss 会使未标注的对象变成假正样本(false positives),因此我们调整了 MultiBox Loss:

\begin{aligned} \mathcal{L}_{\operatorname{conf}}(\boldsymbol{c}, \boldsymbol{y}, \hat{\boldsymbol{y}})=&-\sum_{i \in P o s} \sum_{p=1}^{|c l a s s e s|} \boldsymbol{y}_{i j}^{p} \log \left(\boldsymbol{c}_{i}^{p}\right) \ &-\sum_{i \in N e g} \log \left(\boldsymbol{c}_{i}^{0}\right)-\sum_{i \in \hat{P o s}} \sum_{p=1}^{\mid \text {classes } \mid} \hat{\boldsymbol{y}}_{i j}^{p} \log \left(\boldsymbol{c}_{i}^{p}\right) \end{aligned}
\qquad (10)

其中,\hat{y}\hat{Pos} 表示伪标签的指示符和正边界框。

总的训练 Loss

最后,为了训练模型,我们将 multibox、L1 和 consistency loss 聚合为:


\mathcal{L}_{\text {total }}=\mathcal{L}_{\text {conf }}+\mathcal{L}_{\text {con }}+\mathcal{L} 1
\qquad (11)

其中 \mathcal{L}_{\text {con }} 用于所有的样本,\mathcal{L}_{\text {conf}}\mathcal{L} 1(边界框的 smoth L1 loss) 用于人工标注的和伪标注的样本。(注意,对于人工标注样本和伪标签样本\mathcal{L}_{\text {conf}} 是不一样的。)

 

3. 实验

在两个公开数据集 PASCAL VOC07+12 和 MS-COCO train2014 上进行了实验。VOC 数据集包含 16551 张训练图片,4952 张测试图片。COCO 数据集包含 83K 张训练图片,5K 张测试图片。
在 VOC 数据集上,我们从随机采样 2000 张图像开始实验。在更大的COCO 数据集上,则从随采用 5000 张图像开始。共执行 5 个 AL 周期,在每个周期中挑选 1000 张图进行标注。为了确保网络模型收敛,我们定义每个 mini-batch 中有一半的图像是人工标注的。根据 VOC的第 0 个主动学习周期的结果,我们将伪标签置信度阈值设置为\tau = 0.99

与其他算法的实验结果对比

与 sota 主动学习方法的对比


图 3a
 

图 4a
 

与半监督方法的对比

图 3b
 

图 4b
 

消融实验

Ablation study on the effect of entropy, inconsistency, unified score without pseudo-labeling, and our method.
可以看到,我们统一的acquisition 函数明显优于孤立的 entropy 和 inconsistency 函数,而且添加伪标签后,性能获得明显提升。

图 3c
 

图 4c
 
另一方面,我们观察到 inconsistency 比随机抽样和 entropy 的效果要好得多。 我们进一步观察伪标签的效果。 我们看到在第一个 AL 循环中,添加伪标签将性能提升了 3.1%,并且性能提升一直保持到最后一个循环。 这与单独使用伪标签的结果非常不同,见图 4b,其中性能增益是微不足道的。 换句话说,孤立的伪标签不能很好地工作。 然而,与统一的 acquisition 分数相辅相成的伪标签取得了很好的效果。
 
是否需要SSL 训练。在 Tab1a 中,展示了在有和没有 consistency loss 的情况下训练的网络的 inconsistency acquisition function 的结果。 正如预期的那样,具有 SSL loss 的结果显着优于 fully-supervised 基线的结果。 有趣的是,inconsistency AL 的结果并不比随机的结果好。 显然,为了能够利用样本中的鲁棒性信息,网络需要在训练期间尽量减少它们的 inconsistency。

 
关于 pseudo-labels 的阈值。我们观察到,使用极高的阈值 τ = 0.99,得到了最佳的效果。 将 τ 减小到 0.9 从而允许更多的伪标签,会使模型性能下降。 进一步将阈值降低到 0.5,实际上会损害整个训练。

 
我们还观测到在检测结果表现较好的类别中 entropy 的性能优于 inconsistency,在表现较差的类别中 inconsistency 优于 entropy。整体来看 inconsistency 优于 entropy。