CALD

论文标题: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

代码we1pingyu/CALD


📚研究背景

  1. 主动学习的核心
    主动学习的核心在于找到一个好的度量指标,从未标注数据集中挑选出“最具信息量”的数据去标注,从而以最少的标注代价获得最大的性能提升。这里“最具信息量”的样本,指的是那些能给模型带来知识或者能够显著提高模型能力的样本。

  2. 目标检测与分类的差异
    以往很多主动学习的方法都源自于图像分类场景,例如基于预测损失(predicted loss)不确定度 来衡量信息量。然而,在目标检测任务中,仅仅依赖分类上的度量并不合理,因为目标检测同时包含边界框(bounding box)回归分类,并且通常会面对一张图像中有多个目标的情况。传统的基于分类的度量在迁移到检测任务时,会出现诸多不一致之处。文中指出了至少三种不一致:

    1. 检测器需要同时进行回归分类,而单一的“预测损失”并不能同时衡量回归和分类这两种不确定性。
    2. 检测更关注于图像的局部区域(即目标所在区域),如果整个图像大部分区域都不含有信息,只有小区域更具信息,单纯的全图指标会忽略那些小而重要的目标区域。
    3. 目标检测的数据通常含有多个目标,如果挑选的样本包含一些“无信息”或“冗余”的目标,可能会导致样本中类分布不平衡(unbalanced class distribution)的问题,这在分类场景中通常不那么严重。

  • 对“好度量”的两项基本要求
  1. 随着学习轮次推进,样本信息量应当整体递减
    随着模型的学习不断进步,已经“学到”的知识越多,能从新样本里学到的“新增”信息量就越少。所以,无论是已标注的数据还是下一步被选中的数据,它们的平均信息量都应当随着学习轮次的进行而逐渐降低。

  2. 选出的(要标注的)新数据的信息量应当高于已标注数据
    既然模型已经掌握了已标注数据所带来的知识,那么想要继续提高模型,就需要挑选出信息量更高的样本,否则就无法带来额外的性能提升。


🎯主要贡献

image.png

  1. 提出一致性度量(Stage 1)

    • 利用“原图预测”与“增广图预测”之间的一致性来衡量样本的“学习价值”:若增广后预测与原图预测差距大,说明模型对该目标还不够“稳定”,更值得标注。
    • 该一致性分数综合了:
      1. 边界框一致性(通过 IoU 衡量同一目标位置匹配度);
      2. 分类一致性(通过 Jensen-Shannon 散度衡量类别分布相似度,并加权高置信度预测)。
    • 同时引入基准点 $\beta$ 来筛选“既不极端不稳定也不极端稳定”的目标,真正找出“中等稳定、可带来最大收益”的样本。
  2. 提出互信息机制(Stage 2)

    • 针对仅依据一致性度量容易导致类分布不均衡的问题,作者进一步在初步候选池中计算其“类别分布”与“已标注池整体分布”的JS散度;
    • 优先选取分布差异大的样本,以补足先前不足或稀少的类别;
    • 有效平衡标注数据的类别分布,提升检测器对各类别的学习。
  3. 整体框架——CALD

    • 将一致性度量与互信息机制结合成两阶段选样流程:
      1. 第一阶段:基于一致性,选出“信息量大”的样本;
      2. 第二阶段:基于类分布差异,进一步平衡类别分布。

🍍技术细节

这部分内容讲的是 CALD 整个流程,尤其是第一阶段怎样基于“原图预测”和“增广图预测”的一致性来挑选“最值得标注”的样本;随后在第二阶段再考虑“类分布的相似性”,进一步筛选,以达到更好的标注效果。


🍓一致性度量$M$

1. 为什么要比较“原图预测”和“增广图预测”?

作者观察到,如果一个检测器真正学会了某个目标,即使对图像做一些常见的增广(翻转、亮度变化等),它也应该能“稳定”地检测并分类该目标;反之,如果增广后预测和原图预测差别很大,说明模型在这个目标上还不够“确定”,因此这个目标(或图像)可能信息量更高,更值得标注


2. 如何形成“参考预测(reference prediction)”与“增广预测(corresponding prediction)”?
  • 未标注图像:记为 $x_U$。
  • 增广后的图像:$x’_U = \mathcal{A}(x_U)$,其中 $\mathcal{A}$ 代表各种增广操作(如翻转)。

接着,用检测器 $\Theta$ 得到两种预测方式:

  1. 参考预测 ${b_k, s_k} = \mathcal{A}\bigl(\Theta(x_U; \theta)\bigr)$

    • 先对原图 $x_U$ 做预测,得到边界框和分类得分;
    • 然后把这些预测变换到“增广图”的坐标系(例如,对原图中预测到的边界框做“水平翻转”映射),并沿用原来的分类得分。
  2. 增广预测 ${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}$ 的形式,使得数值越大表示分布越相似。

    公式里可以分解出两部分:

    1. 权重因子
      $$\tfrac{1}{2}\bigl[\max(\varphi_n) + \max(\varphi’_n)\bigr]$$
    • 若检测器对该目标特别自信(无论是参考预测还是增广预测),就会提高这个乘子,对整体分类一致性赋予更大权重。
    1. $(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$ 太大
    说明模型对这个目标已经学得很好(位置吻合且分类自信),因此并不需要更多标注来提高对它的理解。

image.png

作者通过案例(上图)发现:真正对模型最“有帮助”的往往不是极端值,而是既不算特别稳定,又不算完全不稳定的“中间区域”。所以需要额外设计一个方法,去捕捉这些“中间值”而非简单地选“最小”或“最大”的一致性。


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. 小节
  1. 核心目标
    通过对比同一目标在「原图预测」和「增广图预测」两种条件下的结果是否一致,来衡量该目标对检测器而言是否还存在“学习空间”,从而挑选更有价值的样本。

  2. 分量拆解

    • 边界框一致性 $C^b_k$:直接用 IoU 衡量参考预测与增广预测的边界框重叠程度;
    • 分类一致性 $C^s_k$:用 $1-\mathrm{JS}$ 表示分类分布(概率向量)的相似度,并乘以最大置信度之和作为权重,突出高置信度预测的影响。
  3. 综合分数

    • 将两项一致性 $C^b_k$ 与 $C^s_k$ 相加得到单个目标的一致性 $m_k$。
    • $m_k$ 越大表示位置与分类都更稳定,$m_k$ 越小表示预测很不稳定。但两种极端情况都不一定是真正“信息量最高”的目标。
  4. 引入基准点 $\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) 来衡量两个类别分布之间的距离:

  1. 已标注池的类别分布

    • 把所有已标注图像中的真实标签(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)$. 这就成了已标注池整体的“类别分布向量”。
  2. 候选图像 $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)$.

  3. 计算 JS 散度

    • 记为 $\mathrm{JS}(\Delta_U(x_U),|,\Delta_L(Y_L))$。
    • 若某个候选图像的类别分布与当前已标注池差异越大,则散度越高;意味着它在当前欠缺的类别上可能具有更多目标,能让标注池整体分布变得更均衡。

3. 如何用 JS 散度来选样?

文中给出了一个简单的选择算法(Algorithm 1):

  1. 有了初步候选池 $X_I$(即第一阶段选出的样本集合),以及已标注池 $Y_L$ 的类别分布 $\Delta_L(Y_L)$。
  2. 初始化一个“最终选中集” $X_F={}$。
  3. 当前轮次预算范围内(例如可以选 $B/C$ 个样本),反复做以下操作:
    • 从 $X_I$ 中选出 能最大化 $\mathrm{JS}(\Delta_U(x_U),|,\Delta_L(Y_L))$ 的那张图像 $x_U$。
    • 将其加入 $X_F$,并从 $X_I$ 中移除。
    • 直至选满或 $X_I$ 为空。
  4. 输出 $X_F$ 作为第二阶段最终要标注的图像集合。

思想:每次都挑“与已标注池类别分布差异最大的”图像,将其加入标注池后,慢慢让整体分布向均衡方向推进。


4. 总结
  • 动机:单纯依赖第一阶段(一致性度量),可能选到的信息量高但类别分布偏斜的数据。
  • 做法:通过计算未标注图像的类别分布已标注池类别分布JS 散度,优先选“差异大的”样本来缩小分布偏差。
  • 结果:进一步平衡标注集的类别分布、提高模型整体检测性能。