One-to-Few Label Assignment for End-to-End Dense Detection阅读笔记
Abstract
一对一(o2o)标签分配对基于变换器的端到端检测起着关键作用,最近已经被引入到全卷积检测器中,用于端到端密集检测。然而,o2o可能因为正样本数量有限而降低特征学习效率。尽管最近的DETRs引入了额外的正样本来缓解这个问题,但解码器中的自注意力和交叉注意力计算限制了其在密集和全卷积检测器中的实际应用。在这项工作中,我们提出了一种简单而有效的一对少数(o2f)标签分配策略,用于端到端密集检测。除了为每个对象定义一个正锚点和多个负锚点之外,我们还定义了几个软锚点(soft anchor),同时充当正负样本。这些软锚点的正负权重在训练过程中动态调整,使它们在训练初期更多地贡献于“表示学习”,在后期更多地贡献于“重复预测移除”。以这种方式训练的检测器不仅可以学习强大的特征表示,还能进行端到端密集检测。在COCO和CrowdHuman数据集上的实验展示了o2f方案的有效性。代码可在以下链接获取:https://github.com/strongwolf/o2f。
Introduction
(仅记录一些我认为比较重要的句子)
-
During the evolution of object detectors, one important trend is to remove the hand-crafted components to achieve end-to-end detection.
-
One hand-crafted component in object detection is the design of training samples.
- However, the performance of anchor-based detectors is sensitive to the shape and size of anchor boxes. To mitigate this issue, anchor-free [19,48] and query-based [5,8,34,61] detectors have been proposed to replace anchor boxes by anchor points and learnable positional queries, respectively.
-
Another hand-crafted component is non-maximum suppression(NMS) to remove duplicated predictions.
- Since NMS has hyperparameters to tune and introduces additional cost, NMS-free end-to-end object detection is highly desired. (由于NMS需要调整超参数并带来额外的成本,因此非常希望实现无NMS的端到端对象检测。)
-
With a transformer architecture, DETR [5] achieves competitive end-to-end detection performance.
- However, o2o can impede the training efficiency due to the limited number of positive samples.
-
Recent studies [7, 17, 22] on DETR try to overcome this shortcoming of o2o scheme by introducing independent query groups to increase the number of positive samples. The independency between different query groups is ensured by the self-attention computed in the decoder, which is however infeasible for FCN-based detectors.(最近的研究[7, 17, 22]尝试通过引入独立的查询组来增加正样本数量,以克服DETR中一对一(o2o)方案的这一缺点。不同查询组之间的独立性由解码器中计算的自注意力来保证,但这对于基于FCN的检测器来说是不可行的。)
-
In this paper, we aim to develop an efficient FCN-based dense detector, which is NMS-free yet end-to-end trainable.
- 我们观察到,在一对一(o2o)方案中,将语义上类似于正样本的模糊锚点设为完全负样本是不合适的。相反,这些锚点可以在训练期间同时用于计算正损失和负损失,如果损失权重设计得当,不会影响端到端的能力。基于上述观察,我们提议为这些模糊锚点分配动态的软分类标签。如图1所示,与o2o不同,后者将模糊锚点(锚点B或C)设为完全负样本,我们将每个模糊锚点标记为部分正样本和部分负样本。正负标签的程度在训练过程中自适应调整,以保持“表示学习”和“重复预测移除”之间的良好平衡。特别是,在训练的早期阶段,我们开始以较大的正度数和较小的负度数,以便网络能更有效地学习特征表示能力,而在后期训练阶段,我们逐渐增加模糊锚点的负度数,以指导网络学习去除重复预测。我们将我们的方法命名为一对少数(o2f)标签分配,因为一个对象可以有几个软锚点。我们将o2f LA实例化到密集检测器FCOS中,我们在COCO [29]和CrowHuman [40]的实验表明,它实现了与带有NMS的检测器相当甚至更好的性能。
Related Work
在过去的十年里,随着深度学习技术[14, 32, 41, 49, 52, 55]的迅猛发展,对象检测领域取得了巨大进展。现代对象检测器大致可以分为两种类型:基于卷积神经网络(CNN)的检测器[1, 3, 21, 28, 31, 36-38, 48, 50]和基于变换器的检测器[5, 8, 30, 34, 53, 54, 61]。
2.1. 基于CNN的对象检测器
基于CNN的检测器可进一步划分为两阶段检测器和一阶段检测器。两阶段检测器[3, 38]在第一阶段生成区域提议,在第二阶段细化这些提议的位置并预测类别,而一阶段检测器[28, 31]直接在卷积特征图上预测密集锚点的类别和位置偏移。早期的检测器大多使用预定义的锚点作为训练样本。由于不同数据集的适宜设置不同,必须仔细调整锚点形状和大小的超参数。为了克服这一问题,提出了无锚点检测器[19, 48]以简化检测流程。FCOS [48]和CenterNet [10]用锚点替代锚框,并直接使用这些点来回归目标对象。CornerNet [20]首先预测对象关键点,然后使用关联嵌入将它们组合成边界框。
大多数基于CNN的检测器在训练过程中采用一对多(o2m)的标签分配方案。早期的检测器,如Faster RCNN [38]、SSD [31]和RetinaNet [28],使用IoU作为定义正负锚点的指标。FCOS限制正锚点必须在对象的某些尺度和范围内。最近的方法[11, 18, 23, 57, 59, 60]通常考虑网络预测的质量和分布,以更可靠地分配锚点的标签。然而,o2m标签分配需要一个后处理步骤,即非极大值抑制(NMS),以去除重复的预测。NMS引入了一个参数来折衷所有实例的精确度和召回率,但这对于拥挤场景尤其不理想。在本文中,我们的目标是去除基于CNN检测器中的手工NMS步骤,实现端到端的密集检测。
2.2. 基于Transformer的对象检测器
作为先驱的基于Transformer的检测器,DETR [5] 使用一套可学习的对象查询作为与图像特征互动的训练候选项。它通过使用一对一的二部匹配和全局注意力机制,实现了具有竞争力的端到端检测性能。然而,DETR在小物体上的性能较差,收敛速度慢。许多后续工作[8, 12, 35, 56]旨在改进特征图和对象查询之间的注意力建模机制,以提取更相关和精确的特征,提升小物体的检测性能。最近的研究[7, 17, 22]表明,正样本数量有限是导致DETR收敛缓慢的原因。因此,它们引入了几个额外的解码器来增加正样本数量。然而,这些方法都基于稀疏候选项,其计算成本在进行密集预测时可能难以承受。与这些方法不同,我们提出了一种软标签分配方案,引入更多的正样本,使得端到端密集检测器能够更容易地进行训练。
One-to-Few Soft Labeling
3.1. Ambiguous Anchors
-
o2o仅选择一个anchor作为正样本分配为positive sample,而o2m则选取多个anchor作为Positive sample。在o2o和o2m中,除了正样本之外的其余锚点都被定义为负样本。
-
图2中,红色为certain anchor,绿色为ambiguous anchors
-
Now we have divided the anchors into three groups: one certain positive anchor, a few ambiguous anchors, and the remaining multiple negative anchors.
-
第一个选项是将一对一(o2o)改为一对二,为每个实例增加一个正样本。第二个选项是为每个模糊锚点分配一个软标签t,其中0 ≤ t ≤ 1表示其正样本程度,因此1 − t是其负样本程度。我们定义正锚点和负锚点的分类损失分别为−log§和−log(1 − p),其中p是预测的分类得分。那么第二个选项的分类损失将是−t × log§ − (1 − t) × log(1 − p)。在COCO数据集上的检测结果如表1所示,我们可以看到,即使只增加一个正样本,一对二的标签分配方案也会显著降低性能。相比之下,为模糊锚点分配合适的软标签可以有效提高端到端性能。(软标签分配的细节将在后面的章节中讨论。)
- 上述结果表明,使一个模糊锚点同时具有正负属性可能是有效实现端到端密集检测的一个可行方案。因此,我们提出了一种一对少数(o2f)标签分配策略,它选择一个确定的锚点作为完全正样本,几个模糊锚点同时作为正负样本,其余锚点作为负样本。模糊锚点的正负程度在训练过程中动态调整,使得网络既能保持强大的特征表征能力,又能实现端到端检测能力。
3.2. Selection of Certain Positive Anchor
在我们的方法中,每个实例都将选定一个确定的正锚点。之前基于一对一(o2o)的检测器都使用一个预测感知的选择度量,考虑了分类和回归的成本来选择唯一的正样本。我们遵循这一原则,并将分类得分和IoU整合进确定锚点的选择度量中,其定义为:
S i , j = 1 [ i ∈ Ω j ] × p i , c j 1 − α × IoU ( b i , b j ) α , S_{i,j} = \mathbb{1}[i \in \Omega_j] \times p_{i,c_j}^{1-\alpha} \times \text{IoU}(b_i, b_j)^\alpha, Si,j=1[i∈Ωj]×pi,cj1−α×IoU(bi,bj)α,
其中 S_{i,j}
表示锚点i和实例j之间的匹配得分,c_j
是实例j的类别标签,p_{i,c_j}
是锚点i属于类别 c_j
的预测分类得分,b_i
是锚点i的预测边界框坐标,b_j
表示实例j的坐标,而 \alpha
控制分类和回归的重要程度。当锚点i的中心点在实例j的中心区域 \Omega_j
内时,空间指示器 1[i \in \Omega_j]
输出1;否则输出0。这种空间先验在基于o2o和o2m的方法中被普遍使用,因为观察到实例中心区域的锚点更有可能是正样本。
锚点可以根据度量 ( S_{i,j} ) 进行降序排序。之前的研究通常将正锚点选择问题构建为一个二分匹配问题,并使用匈牙利算法解决。为了简化,在本研究中,我们直接为每个实例选择得分最高的锚点作为确定的正锚点。
3.3. Label Assignment for Ambiguous Anchors
除了确定的正锚点之外,我们根据得分 S i , j S_{i,j} Si,j选择排名前K的锚点作为模糊锚点,因为它们与确定的正锚点有相似的语义上下文。为了减少重复预测的可能性,我们为这些模糊锚点分配动态软标签。假设我们训练网络N个周期,在第j个周期中,每个模糊锚点i的分类损失定义为:
l i j = − t i j × log ( p i ) − ( 1 − t i j ) × log ( 1 − p i ) l_i^j = -t_i^j \times \log(p_i) - (1 - t_i^j) \times \log(1 - p_i) lij=−tij×log(pi)−(1−tij)×log(1−pi)
除了确定的正锚点,我们基于得分 (S_{i,j}) 选择排名前K的锚点作为模糊锚点,因为它们与确定的正锚点有相似的语义环境。为了降低重复预测的可能性,我们为这些模糊锚点分配动态软标签。假设我们训练网络进行N个周期,每个模糊锚点i在第j个周期的分类损失定义为:
l i j = − t i j × log ( p i ) − ( 1 − t i j ) × log ( 1 − p i ) , l_i^j = -t_i^j \times \log(p_i) - (1 - t_i^j) \times \log(1 - p_i), lij=−tij×log(pi)−(1−tij)×log(1−pi), (随着epochs的增加, l i j l_i^j lij逐渐的就只等于 − ( 1 − t i j ) × log ( 1 − p i ) - (1 - t_i^j) \times \log(1 - p_i) −(1−tij)×log(1−pi))
其中 (p_i) 是锚点i的预测分类得分,(t_i^j) 和 (1 - t_i^j) 分别是该锚点在第j个周期的正负程度(即,损失权重)。(t_i^j) 的动态定义为:
t i j = p i max k p k × T j , t_i^j = \frac{p_i}{\max_k p_k} \times T_j, tij=maxkpkpi×Tj,
T j = T m i n − T m a x N − 1 × j + T m a x , T_j = \frac{T_{min} - T_{max}}{N - 1} \times j + T_{max}, Tj=N−1Tmin−Tmax×j+Tmax,
其中 (T_j) 是一个随时间变化的变量,它在第j个周期为所有样本分配相同的值,(T_{max}) 和 (T_{min}) 控制模糊锚点在第一个周期和最后一个周期的degree。我们将损失权重与分类得分呈正相关,考虑到预测得分较高的锚点应该更多地贡献于正信号。直接使用 ( p_i ) 作为权重会使得在难样本上的训练变得不稳定,因为这些样本的预测得分远小于简单样本的得分。因此,我们使用 ( p_i ) 与最大得分的比率来规范化不同样本的权重至同一尺度。动态调整 ( T_j ) 是很重要的,因为它在不同的训练阶段控制着“特征学习”与“重复预测移除”之间的平衡。
在训练的早期阶段,我们设置 (T_j) 相对较大,以引入更多的正监督信号以进行表示学习,从而使网络能够迅速收敛到一个稳健的特征表示空间。随着训练的进行,我们逐渐减少模糊锚点的正度,以便网络学会去除重复的预测。
3.4. Network Structure
我们将提出的一对少数(o2f)标签分配策略应用到FCOS上,这是一个典型的全卷积密集检测器。网络结构如图3所示。检测头由两个平行的卷积分支组成,每个特征金字塔网络(FPN)层的输出都连接一个分支。一个分支预测大小为 ( H × W × C H \times W \times C H×W×C) 的得分图,其中 (C) 是数据集中的类别数,(H) 和 (W) 分别是特征图的高度和宽度。另一个分支预测大小为 ( H × W × 4 H \times W \times 4 H×W×4) 的位置偏移图和大小为 ( H × W × 1 H \times W \times 1 H×W×1) 的中心度图。我们按照之前的工作将中心度图与分类得分图相乘,作为最终的分类-交并比联合得分。
"Centerness map"是FCOS(Fully Convolutional One-Stage Object Detector)中用于提高检测性能的一个概念。它是一个得分,用来表示一个位置相对于其目标边界框中心的偏离程度。这个得分用于在非极大抑制(NMS)过程中下调低质量边界框的权重,以抑制这些低质量的检测结果。"Centerness"得分是通过与边界框回归分支平行的一个分支(只有一层)来预测的,这个简单而有效的"centerness"分支能够显著提高检测性能,而计算时间的增加微不足道
对于每个实例,我们选择一个确定的正锚点和 (K) 个模糊锚点。其余的锚点被设置为负样本。分类分支的训练目标为每个实例定义如下:
L c l s = B C E ( p c , 1 ) + ∑ i ∈ A B C E ( p i , t i ) + ∑ i ∈ B F L ( p i , 0 ) L_{cls} = BCE(p_c, 1) + \sum_{i \in A} BCE(p_i, t_i) + \sum_{i \in B} FL(p_i, 0) Lcls=BCE(pc,1)+∑i∈ABCE(pi,ti)+∑i∈BFL(pi,0)
其中 (p_c) 是单个确定锚点的分类得分,(A) 和 (B) 分别代表模糊锚点和负锚点的集合。BCE表示二元交叉熵损失,FL表示焦点损失。回归损失定义为:
L r e g = ∑ i ∈ B G I o U ( b i , b g t ) L_{reg} = \sum_{i \in B} GIoU(b_i, b_{gt}) Lreg=∑i∈BGIoU(bi,bgt)
其中GIoU损失是基于广义交并比的位置损失,(b_i) 是锚点 (i) 的预测位置,(b_{gt}) 是与锚点 (i) 对应的GT对象的位置。请注意,我们对正锚点和模糊锚点都应用了回归损失。