论文标题:Consistency-based Active Learning for Object Detection
中文标题:基于一致性的目标检测主动学习
作者团队:School of Computer Science and Engineering, Nanyang Technological University, Singapore & Center for Research in Computer Vision, University of Central Florida, USA
期刊会议:CVPR
时间:2022
📚研究背景
主动学习的核心
主动学习的核心在于找到一个好的度量指标,从未标注数据集中挑选出“最具信息量”的数据去标注,从而以最少的标注代价获得最大的性能提升。这里“最具信息量”的样本,指的是那些能给模型带来新知识或者能够显著提高模型能力的样本。目标检测与分类的差异
以往很多主动学习的方法都源自于图像分类场景,例如基于预测损失(predicted loss) 或 不确定度 来衡量信息量。然而,在目标检测任务中,仅仅依赖分类上的度量并不合理,因为目标检测同时包含边界框(bounding box)回归和分类,并且通常会面对一张图像中有多个目标的情况。传统的基于分类的度量在迁移到检测任务时,会出现诸多不一致之处。文中指出了至少三种不一致:- 检测器需要同时进行回归和分类,而单一的“预测损失”并不能同时衡量回归和分类这两种不确定性。
- 检测更关注于图像的局部区域(即目标所在区域),如果整个图像大部分区域都不含有信息,只有小区域更具信息,单纯的全图指标会忽略那些小而重要的目标区域。
- 目标检测的数据通常含有多个目标,如果挑选的样本包含一些“无信息”或“冗余”的目标,可能会导致样本中类分布不平衡(unbalanced class distribution)的问题,这在分类场景中通常不那么严重。
- 对“好度量”的两项基本要求
随着学习轮次推进,样本信息量应当整体递减
随着模型的学习不断进步,已经“学到”的知识越多,能从新样本里学到的“新增”信息量就越少。所以,无论是已标注的数据还是下一步被选中的数据,它们的平均信息量都应当随着学习轮次的进行而逐渐降低。选出的(要标注的)新数据的信息量应当高于已标注数据
既然模型已经掌握了已标注数据所带来的知识,那么想要继续提高模型,就需要挑选出信息量更高的样本,否则就无法带来额外的性能提升。
🎯主要贡献

提出一致性度量(Stage 1)
- 利用“原图预测”与“增广图预测”之间的一致性来衡量样本的“学习价值”:若增广后预测与原图预测差距大,说明模型对该目标还不够“稳定”,更值得标注。
- 该一致性分数综合了:
- 边界框一致性(通过 IoU 衡量同一目标位置匹配度);
- 分类一致性(通过 Jensen-Shannon 散度衡量类别分布相似度,并加权高置信度预测)。
- 同时引入基准点 $\beta$ 来筛选“既不极端不稳定也不极端稳定”的目标,真正找出“中等稳定、可带来最大收益”的样本。
提出互信息机制(Stage 2)
- 针对仅依据一致性度量容易导致类分布不均衡的问题,作者进一步在初步候选池中计算其“类别分布”与“已标注池整体分布”的JS散度;
- 优先选取分布差异大的样本,以补足先前不足或稀少的类别;
- 有效平衡标注数据的类别分布,提升检测器对各类别的学习。
整体框架——CALD
- 将一致性度量与互信息机制结合成两阶段选样流程:
- 第一阶段:基于一致性,选出“信息量大”的样本;
- 第二阶段:基于类分布差异,进一步平衡类别分布。
- 将一致性度量与互信息机制结合成两阶段选样流程:
🍍技术细节
这部分内容讲的是 CALD 整个流程,尤其是第一阶段怎样基于“原图预测”和“增广图预测”的一致性来挑选“最值得标注”的样本;随后在第二阶段再考虑“类分布的相似性”,进一步筛选,以达到更好的标注效果。
🍓一致性度量$M$
1. 为什么要比较“原图预测”和“增广图预测”?
作者观察到,如果一个检测器真正学会了某个目标,即使对图像做一些常见的增广(翻转、亮度变化等),它也应该能“稳定”地检测并分类该目标;反之,如果增广后预测和原图预测差别很大,说明模型在这个目标上还不够“确定”,因此这个目标(或图像)可能信息量更高,更值得标注。
2. 如何形成“参考预测(reference prediction)”与“增广预测(corresponding prediction)”?
- 未标注图像:记为 $x_U$。
- 增广后的图像:$x’_U = \mathcal{A}(x_U)$,其中 $\mathcal{A}$ 代表各种增广操作(如翻转)。
接着,用检测器 $\Theta$ 得到两种预测方式:
参考预测 ${b_k, s_k} = \mathcal{A}\bigl(\Theta(x_U; \theta)\bigr)$
- 先对原图 $x_U$ 做预测,得到边界框和分类得分;
- 然后把这些预测变换到“增广图”的坐标系(例如,对原图中预测到的边界框做“水平翻转”映射),并沿用原来的分类得分。
增广预测 ${b’_j, s’_j} = \Theta(x’_U; \theta)$
- 直接对增广图 $x’_U$ 做预测,从而得到另一组边界框和分类得分。
这样,就有了 “同一张增广图” 的两种不同来源的预测结果,后面要做的就是匹配并对比它们的一致性。
3. 匹配(Matching)+ 计算一致性
匹配
先用最大 IoU 把参考预测 ${b_k}$ 与增广预测 ${b’_j}$ 配对:
$$b’k = \arg\max{b’_j} \mathrm{IoU}\bigl(b’_j, b_k\bigr)$$边界框一致性
$$C^b_k = \mathrm{IoU}(b_k,, b’_k)$$越大越说明位置预测吻合度高。
分类一致性
用 Jensen-Shannon(JS)散度衡量两者的类别分布差异,再取 $1 - \mathrm{JS}$,使之越大越表示分布越相似。为强调高置信度预测的重要性,作者还引入一个 “最大置信度之和” 的权重因子:
$$C^s_k = \tfrac{1}{2} \Bigl[ \max_{\varphi_n \in s_k}(\varphi_n) ;+; \max_{\varphi’_n \in s’_k}(\varphi’_n) \Bigr] ,\Bigl(1 - \mathrm{JS}\bigl(s_k \parallel s’_k\bigr)\Bigr)$$- $s_k$ 与 $s’_k$ 分别是“参考预测”和“增广预测”的类别置信度分布,比如:$s_k = [\varphi_1,\varphi_2,\dots,\varphi_n]^T,\quad s’_k = [\varphi’_1,\varphi’_2,\dots,\varphi’_n]^T$.
- $\max_{\varphi_n \in s_k}(\varphi_n)$ 表示“参考预测”在某个类别上的最高置信度, $\max_{\varphi’_n \in s’_k}(\varphi’_n)$ 表示“增广预测”的最高置信度。
- $\mathrm{JS}$ 表示 Jensen-Shannon 散度,用来度量两条分类分布的差异。这里用 $1 - \mathrm{JS}$ 的形式,使得数值越大表示分布越相似。
公式里可以分解出两部分:
- 权重因子:
$$\tfrac{1}{2}\bigl[\max(\varphi_n) + \max(\varphi’_n)\bigr]$$
- 若检测器对该目标特别自信(无论是参考预测还是增广预测),就会提高这个乘子,对整体分类一致性赋予更大权重。
- $(1 - JS)$ 分布相似度:
- 若参考预测和增广预测在类别上的概率分布非常接近(JS 散度小),则 $(1 - \mathrm{JS})$ 接近 1;反之则较小。
如果分类分布和置信度在“原图预测”与“增广预测”之间都相对一致,且置信度都较高,则 $C^s_k$ 值会相对更大,说明检测器在分类层面也学得比较稳定。
单对匹配的总体一致性
$$m_k = C^b_k + C^s_k$$
4. 为何“极端小”或“极端大”的 $m_k$ 并不一定最有信息?
$m_k$ 太小:
可能是因为该预测质量很差(位置错、置信度低),甚至也有可能“同一目标”在增广图上另有更优的预测(如图(3)b,car和tv的预测质量很差,但是关于dog的预测质量很高)。所以它并不一定真的是“欠缺理解”的关键点,有时只是随机性或不良匹配导致。$m_k$ 太大:
说明模型对这个目标已经学得很好(位置吻合且分类自信),因此并不需要更多标注来提高对它的理解。

作者通过案例(上图)发现:真正对模型最“有帮助”的往往不是极端值,而是既不算特别稳定,又不算完全不稳定的“中间区域”。所以需要额外设计一个方法,去捕捉这些“中间值”而非简单地选“最小”或“最大”的一致性。
5. 引入基准点 $\beta$,计算图像级度量$M$
为此,作者引入一个基准点 $\beta$(通过搜索或经验设定在 $[0,2]$ 范围的某个中间值),对图像的所有预测 $m_k$ 取
$$\min_k \bigl|,m_k - \beta\bigr|$$
找到最接近 $\beta$ 的那个预测值,并视为该图像的代表性指标。然后再在多次增广(不同翻转、随机变换等)上取平均(期望),形成
$$M(x_U;,\mathcal{A},\Theta) = \mathbb{E}_{\mathcal{A}} \Bigl[\min_k \bigl|;m_k - \beta\bigr|\Bigr]$$
这样就能自动排除那些极端的小/大的 $m_k$,更好地把握图像里“信息量中等、最值得学习的目标”。
6. 排序并初步选出“最具信息量”的图像
最后,对所有未标注图像 ${x_U}$ 算出各自的 $M$ 值,排序后选取排名较靠前的一部分(略高于预算),作为第一阶段初步候选池。
7. 小节
核心目标
通过对比同一目标在「原图预测」和「增广图预测」两种条件下的结果是否一致,来衡量该目标对检测器而言是否还存在“学习空间”,从而挑选更有价值的样本。分量拆解
- 边界框一致性 $C^b_k$:直接用 IoU 衡量参考预测与增广预测的边界框重叠程度;
- 分类一致性 $C^s_k$:用 $1-\mathrm{JS}$ 表示分类分布(概率向量)的相似度,并乘以最大置信度之和作为权重,突出高置信度预测的影响。
综合分数
- 将两项一致性 $C^b_k$ 与 $C^s_k$ 相加得到单个目标的一致性 $m_k$。
- $m_k$ 越大表示位置与分类都更稳定,$m_k$ 越小表示预测很不稳定。但两种极端情况都不一定是真正“信息量最高”的目标。
引入基准点 $\beta$
- 通过 $\min_k |m_k - \beta|$ 的方式聚焦“中间段”目标,避免只挑选到过于稳定或过于随机的预测。
- 对不同增广结果再取平均,得到更具鲁棒性的图像级度量 $M$,最终根据 $M$ 来排序与选取样本。
一致性度量的思想是“ 对同一目标,原图与增广图预测越吻合,说明模型已学得好;越冲突,说明还不稳定”。引入基准点 $\beta$ 则帮助过滤掉极端情况,更准确地挖掘最具信息量的样本。
🍓互信息筛选,控制类分布
这部分主要讲 CALD 的第二阶段(Stage 2):作者在发现仅凭第一阶段的“一致性度量”选出的样本,往往会导致已标注数据的类别分布仍然不平衡。为了解决这个问题,第二阶段提出了一个互信息(Mutual Information的思路,通过比较“候选样本”的类别分布与“已标注池”整体类别分布的差异,来进一步筛选样本,从而提升类别平衡性。
1. 背景:为什么需要第二阶段?
- 第一阶段按照一致性度量挑选的“信息量大”样本,可能带来偏向某些主流类别的选择(例如大量含有 “person” 的图像)。
- 这样会造成类分布不均衡:少数类别(如“bus”、“bike”)数据仍旧非常少,学习不充分。
- 作者在图 4 给出的柱状图也直观显示:若只依靠第一阶段,某些类别柱状高度差异仍然很大(橙色柱)。
于是,第二阶段要在初步候选池中再选一批样本,重点考虑平衡类别分布,令训练集覆盖更广,提升检测器对各类目标的学习效果。
2. 互信息(Mutual Information)的基本思路
作者将“互信息”与“类别分布差异”挂钩,实际上使用的是 JS 散度(Jensen-Shannon Divergence) 来衡量两个类别分布之间的距离:
已标注池的类别分布
- 把所有已标注图像中的真实标签(ground truth)汇总得到 ${Y_L}$。
- 统计各类别出现的总次数(或者权重) $\delta_m = \sum_{y_L \in Y_L} \mathbb{I}(y_L = m)$。
- 然后做一个 Softmax 转化得到 $\Delta_L(Y_L) = \mathrm{Softmax}([\delta_1, \delta_2, \dots, \delta_m, \dots ]^T)$. 这就成了已标注池整体的“类别分布向量”。
候选图像 $x_U$ 的类别分布
虽然它还没标注,但作者利用了检测器在此图像上的 最高置信度预测 来近似每个类别在该图像里的重要性。
这里我感觉应该和定位结合起来考量,$m_k$最大可能合适一点
即:$\delta_m = \max {\varphi_m | \varphi_m \in s_k} + \max {\varphi’_m | \varphi’_m \in s’_j}$,这里 $s_k$ 和 $s’_j$ 分别是原图预测和增广图预测的类别置信度(与第一阶段类似)。
同样通过 Softmax 得到 $\Delta_U(x_U) = \mathrm{Softmax}([\delta_1, \delta_2, \dots,\delta_m,\dots]^T)$.
计算 JS 散度
- 记为 $\mathrm{JS}(\Delta_U(x_U),|,\Delta_L(Y_L))$。
- 若某个候选图像的类别分布与当前已标注池差异越大,则散度越高;意味着它在当前欠缺的类别上可能具有更多目标,能让标注池整体分布变得更均衡。
3. 如何用 JS 散度来选样?
文中给出了一个简单的选择算法(Algorithm 1):
- 有了初步候选池 $X_I$(即第一阶段选出的样本集合),以及已标注池 $Y_L$ 的类别分布 $\Delta_L(Y_L)$。
- 初始化一个“最终选中集” $X_F={}$。
- 在 当前轮次预算范围内(例如可以选 $B/C$ 个样本),反复做以下操作:
- 从 $X_I$ 中选出 能最大化 $\mathrm{JS}(\Delta_U(x_U),|,\Delta_L(Y_L))$ 的那张图像 $x_U$。
- 将其加入 $X_F$,并从 $X_I$ 中移除。
- 直至选满或 $X_I$ 为空。
- 输出 $X_F$ 作为第二阶段最终要标注的图像集合。
思想:每次都挑“与已标注池类别分布差异最大的”图像,将其加入标注池后,慢慢让整体分布向均衡方向推进。
4. 总结
- 动机:单纯依赖第一阶段(一致性度量),可能选到的信息量高但类别分布偏斜的数据。
- 做法:通过计算未标注图像的类别分布与已标注池类别分布的 JS 散度,优先选“差异大的”样本来缩小分布偏差。
- 结果:进一步平衡标注集的类别分布、提高模型整体检测性能。