Citation:: [1]
J. Han, Y. Ren, J. Ding, X. Pan, K. Yan, and G.-S. Xia, “Expanding Low-Density Latent Regions for Open-Set Object Detection.” arXiv, May 08, 2022. Accessed: Nov. 05, 2023. [Online]. Available:
Abstract
Modern object detectors have achieved impressive progress under the close-set setup. However, open-set object detection (OSOD) remains challenging since objects of unknown categories are often misclassified to existing known classes. In this work, we propose to identify unknown objects by separating high/low-density regions in the latent space, based on the consensus that unknown objects are usually distributed in low-density latent regions. As traditional threshold-based methods only maintain limited low-density regions, which cannot cover all unknown objects, we present a novel Open-set Detector (OpenDet) with expanded low-density regions. To this aim, we equip OpenDet with two learners, Contrastive Feature Learner (CFL) and Unknown Probability Learner (UPL). CFL performs instance-level contrastive learning to encourage compact features of known classes, leaving more low-density regions for unknown classes; UPL optimizes unknown probability based on the uncertainty of predictions, which further divides more low-density regions around the cluster of known classes. Thus, unknown objects in low-density regions can be easily identified with the learned unknown probability. Extensive experiments demonstrate that our method can significantly improve the OSOD performance, e.g., OpenDet reduces the Absolute Open-Set Errors by 25%-35% on six OSOD benchmarks. Code is available at: https://github.com/csuhan/opendet2. 在封闭集设置下,现代物体检测器取得了令人瞩目的进展。然而,开放集物体检测(OSOD)仍然具有挑战性,因为未知类别的物体经常会被错误地归类到现有的已知类别中。在这项工作中,我们基于未知物体通常分布在低密度潜在区域的共识,提议通过分离潜在空间中的高/低密度区域来识别未知物体。由于传统的基于阈值的方法只能保留有限的低密度区域,无法覆盖所有未知对象,因此我们提出了一种具有扩展低密度区域的新型开放集检测器(OpenDet)。为此,我们为 OpenDet 配备了两个学习器:对比特征学习器(CFL)和未知概率学习器(UPL)。CFL 执行实例级对比学习,鼓励压缩已知类别的特征,为未知类别留下更多低密度区域;UPL 根据预测的不确定性优化未知概率,进一步在已知类别群周围划分更多低密度区域。因此,低密度区域中的未知对象可以通过学习到的未知概率轻松识别。广泛的实验证明,我们的方法可以显著提高 OSOD 的性能,例如,OpenDet 在六个 OSOD 基准上将开放集绝对误差降低了 25%-35%。代码见:https://github.com/csuhan/opendet2。
Summary
推理过程
- 首先使用修改faster rcnn框架的RPN生成proposal,进入对比头CH进行特征降维处理
- 通过两个步骤来建造memory bank:
- 选择和ground truth区域的IoU大于阈值 T m T_m Tm的proposals,这样代表这些选择的proposal与真实边界框有较高的重叠,因此更有可能是目标对象,同时也代表包含更多相关的语义信息
- 选择 q q q个与所有类别记忆库中现有样本最不相似(即最小余弦相似度)的proposal,这样保证了在记忆库里样本的多样性,同时保证了难例学习,有助于提高模型的鲁棒性
- 通过优化IC Loss做到潜在特征空间的类内聚合与类间分离
- 通过优化CE Loss (交叉熵loss)确保闭集类别的检测准确性
- 用不确定性驱动的难例挖掘策略,使用一些高不确定性(有可能在潜在空间与真实未知物体重合)的proposals来优化UP Loss
- 使用前k个具有最大熵的例子
- 使用前k个最有最小的所有类最大预测概率的例子
- 因为UP Loss的计算是与CE Loss相悖的,因此优化前者的时候会影响到后者的收敛,从而导致闭集类别的检测准确率降低。因此给UP Loss加入一个权重因子 w ( ⋅ ) w(\cdot) w(⋅)来平衡它对于已知类别检测的影响。
- 该权重因子 w ( ⋅ ) w(\cdot) w(⋅)在 p c ∗ ∈ ( 0 , 1 / ( α + 1 ) ) p_{c^*}\in (0,1/(\alpha+1)) pc∗∈(0,1/(α+1))递增,在 ( 1 / ( α + 1 ) , 1 ) (1/(\alpha+1),1) (1/(α+1),1)递减。在默认的 α = 1 \alpha=1 α=1的情况下就代表着,已知类别的预测概率接近0.5的时候,不确定性大,因此可以给潜在的条件未知类别概率 p u ′ p_u' pu′更大的权重;在接近0和1的时候就代表不确定性小了,自然就不用把较大的权重给潜在条件未知概率。
- 因为我们不知道未知概率 p u p_u pu,因此建模一个基于真值概率 p c ∗ p_{c^*} pc∗的条件未知概率 p u ′ p_u' pu′,被表示为除了真实类logit的softmax概率。这意味着我们去优化它的损失的时候,其实就是在驱动模型将这些潜在未知类划分到除了真实类以外的类别去
- UP Loss可以学习到未知类别概率,通过优化UP Loss来将更多的低密度区域从已知类别区域划分出去
- 在最后的总损失的时候,我们还给IC Loss加入了一个在训练迭代过程中逐渐减小的一个权重 γ t \gamma_t γt,使得在训练初期更加注重IC Loss,而在后期逐渐增加UP Loss的影响。这也是为了更好的同时让CE Loss和UP Loss收敛
解决的问题
- 开集检测里经常讲未知类的物体错误的归类到已经存在的已知类
- 传统的基于阈值的方法只保留了有限的低密度区域,无法覆盖所有的未知对象
提出的方法
- 本文最大的亮点就做到了如何在只有闭集训练集的情况下,使得训练的模型具有对于开闭混合检测集拥有识别已知类和未知类的能力。本文的思路缘起于一个共识:未知类更容易出现在低密度的潜在特征空间区域。
- 本文使用的baseline是一个修改过的faster-rcnn:
- 本文给网络加了两个学习器:1)CFL(contrastive feature learner);2)UPL(unknown probability learner)。其中,前者实现了实例层面上的对比学习,从而鼓励了类内完整性和类间分离性(expands Ω K \Omega_{\mathcal{K}} ΩK by narrowing Ω U \Omega_{\mathcal{U}} ΩU)。后者通过预测的不确定性来学习每一个实例未知可能性,而在保证闭集检测准确性的同时,这些学习到的未知可能性就可以当作是区别 K \mathcal{K} K中的 U \mathcal{U} U的阈值。
具体实现
Preliminary 前提
- object detection dataset: D = { ( x , y ) , x ∈ X , y ∈ Y } D=\{(x,y),x\in X, y\in Y\} D={(x,y),x∈X,y∈Y}
- x x x is an input image
- y = { ( c i , b i ) } i = 1 N y=\{(c_i,\mathbf{b}_i)\}^N_{i=1} y={(ci,bi)}i=1N denotes a set of objects with corresponding class label c c c and bounding box b \mathbf{b} b
- known classes: C K = { 1 , ⋯ , K } C_{\mathcal{K}}=\{1,\cdots,K\} CK={
1,⋯,K}
- unknown classes: C U = K + 1 C_{\mathcal{U}}=K+1 CU=K+1, since it is impossible to list infinite unknown classes
- training set: D t r = C K D_{tr}=C_{\mathcal{K}} D