旷视研究院 · 2021年12月29日

Label Assignment 的前世今生

Label Assignment 定义

Label/Target Assignment 顾名思义,提供网络正负样本让网络进行学习,“传授”网络正确与错误的概念,使网络对相应的输入输出正确期望的目标(如类别、目标位置等等)。Label Assignment 直接决定了网络是否能正确执行任务。如在目标检测任务中,以下图为例,我们希望网络能输出人的目标检测框,此时假设网络输出三个检测框,分别是绿色、蓝色和红色。显然我们需要告诉网络绿色是最合适的框,而不是包裹不完全的蓝色框或者位置偏移的红色框。“告诉”这一动作其实就是 Label Assignment 的任务。
image.png
图:一个对行人目标检测任务中,绿色是网络最理想的输出框,应尽量减少蓝色和红色检测框等情况的发生。

然而,在实际的目标检测任务中,每张图可能有多个 GTBox,网络的输出通常也是稠密的,Label Assignment 的过程会更为复杂,甚至可以说是检测网络训练的最核心的问题之一。如何科学地建立 N 个 GTBox 与 M 个网络预测值(包含分类、Box 回归等)的对应关系,来保证网络预测值拿到合理正负样本的 Label 去计算 Loss,从而用来高效的训练检测网络,这便是我们今天要讨论的问题。

Label Assignment 发展过程

Label Assignment 的背景知识

image.png
图:RetinaNet PPL, 在测试过程中,Anchor 和网络预测叠加生成最后的检测框。

首先我们以检测器 RetinaNet 为例。网络包括 Backbone、Neck 和 Head三部分,BackBone 提取特征;Neck 进行不同尺度的特征融合;Head 最终实现回归和分类的任务。在训练的过程中,假设网络的输出有M=WxHxA 个预测框以及相应得分。如下图所示,黄色以及红色框是人工标注的GT,黑色虚线分割出来的可以看作每一个待分配的样本(在某些复杂情况下,每个黑色虚框存在多个待分配的样本)。那么如何合理地分配样本,例如,将图中6个蓝绿框都用来学习推车这个目标还是选择部分,其他的黑色虚框生成的相同蓝绿框这类先验 Anchor 又怎么分配。如何将人工标注框合理分配,这个过程就是我们今天要讨论的 Label Assginment。
image.png
图:黄框、红框为人工标注框,黑色虚框为待分配的样本。每个黑色虚框会产生类似于图中蓝绿框的先验 Anchor 框,蓝绿色为预设的正样本。

常用的 Label Assignment 是 MaxIoUAssign,具体流程是:

  1. 首先,对于 GTBox(N个)和 Anchor(M个),两两计算彼此的 IoU,构成一个 Matching Matrix。
  2. 通过 IoU 的阈值来进行判定正负样本。当 IoU 介于 0.4 和 0.5 之间为 Ignore 区间,当 IoU 大于 0.5 的时候为正样本区间,其他的情况为负样本区间。

然而,当一个 Anchor 满足与多个 GT 的 IoU 满足阈值时,MaxIoUAssign 选择 IoU 最大的对应 GT 与之匹配。这类暴力简单的匹配方式往往会引入歧义性,例如,当一个适中目标和一个极小目标的几何中心重合,那么该中心位置处的 Anchor 匹配适中目标的可能性更大,这就可能导致了极小目标没有相应的 Anchor 与之匹配,模型就不会学习到极小目标。若测试集中存在较多的极小目标,这就可能严重影响模型的 Recall。因此选择合适的 Label  Assign 可以有效地提高模型的 Recall。

动态匹配方式 – ATSS

上文我们说到,Label Assignment 的选取会影响到检测器的最终的性能  Recall。然而,例如 MaxIoUAssign 通过固定的阈值强行设置正负样本,那么为了保证每个 GT 都被模型学习以保证 Recall,也就是每个 GT 都要被匹配到。这就必须铺设更多的 Anchor 来保证 Recall, 但是稠密的 Anchor 又会导致 NMS 前候选框的数量较多,从而导致后处理的时间明显的增加。针对于这个问题,ATSS 提出了利用 IoU 的均值和方差自适应地决定阈值,对 GT 进行更合理的分配,减少 Recall 指标对于 Anchor 数量的依赖。
image.png
图:Adaptive Training Sample Selection流程

image.png
动态匹配方式- OTA

ATSS 过程中,对于相同的一张图片, GTBox 和 Anchor 不会发生改变,这就意味着在 Label Assignment 过程中, 正负样本的分布不会随着网络的学习过程而发生变化。换句话说,ATSS 本质上仍然是静态的,相同的 GT 不会随着训练的进行而赋给不同的 Anchor。那么如何让 ATSS 这类方法“动”起来?很直接的一个想法就是让 Anchor 联合网络预测值做 Assignment。另外,我们知道 Object Detection 是一个 Multi-Task 任务(分类+回归),然而仅仅依靠位置先验,也就是只考虑框回归的角度直接给出 Assign 结果,感觉并不是最好的。那么如何度量Anchor执行分类任务时的质量好坏呢?很简单,假设某个 GTbox 的正 Anchor 候选集大小为 k,若我们需要选择分类质量最好的那个 Anchor 作为正样本,可以计算每个 Anchor 与该 GTbox 的分类 Loss,然后选择 Loss 最小的(网络当前最容易学的)。这种方式将 Loss 作为 Anchor 质量的度量,从特征层面处理 Label Assignment 问题。

也就是说,我们可以利用 Loss 作为度量某个 Anchor 作为某个 GT 正样本的好坏。另外,为了考虑分类和回归两个任务的综合性能,Loss 可以是分类 Loss 和回归 Loss 的加权求和。讲到这里,其实一个动态的 Assign 方法已经形成,之前我们都是取 IoU 的最大进行 Assign (像 Faster RCNN、 RetinaNet 中的 MaxIoUAssign ),现在可以是 IoU+max (0,( T-loss ))的形式,其中T是一个超参自己设置;或者像ATSS中求一个 IoU + max(0,( T-loss ))的均值方差然后求和取阈值卡出相应的 Anchor。

因此,方法其实有很多,但本质上可以把问题归纳成两步:(1)如何度量 Anchor 的好坏,(2)如何将 Anchor 分配给 GT/GT 分配给 Anchor 使网络最大化地学习。这类方式的代表主要有 FreeAnchor/ Auto-assign/PAA/DETR/OTA 等。我们以旷视出品的 OTA 为例做进一步说明。

OTA 全称为 Optimal Transport Algorithm ,这个方法是为了解决上述过程的第二步。OTA 有两个版本,原版 OTA 以及 YOLOX 中使用的 simOTA。

原版 OTA 分为两个步骤:

  1. 对每个 GTbox 建立 Positive Anchor Bag:论文把 FPN 所有 Pixel都放入了 Bag 中(在之后 Cost 计算中加上 GTbox 与 Anchor 的中心距离 Cost 以引入 Center Prior) 
  2. 在 Bag 内利用 Quality Score 筛选最终正样本:这里首先把 Label Assignment 看成是一个最优传输( OT,Optimal Transport)问题,我们的 N 个 GTbox 看成是 N 个 Supplier,Positive Anchor Bag 中的 M 个 Anchor 是 M 个 Demander,那么如何将每个 Supplier( GTbox )与 M 个 Demander( Anchor )建立联系?总共分为三步:
  • 首先我们需要定义每个 Demander 与 Supplier 的 Pairwise Cost,这里可以使用分类 Loss + 回归 Loss + 中心距离 Loss(引入中心先验),Cost 越小越好(或者说 Cost 越小 Quality 越高);
  • 有了 Demander 与 Supplier 的 Pairwise Cost Matrix 之后,然后我们计算 Anchor 和 GT 的 IoU 矩阵,对每个 GT 取 topK 的 IoU 之和估计每个 GT 需要的正样本数;
  • 最后我们就可以调用 Sinkhorn-Knopp 迭代求解,得到最终 GTbox 与 Anchor 的匹配关系。

下文给出了 OTA 的伪代码以及效果图。从下图框出的红色虚线框可以发现, OTA 的正样本点往往都在目标本身上,而 ATSS 和 PAA 都存在一定的偏心,从人的直觉来看这都会扰乱模型。特别是像图中这类拥挤的场景。另外 OTA 相比 ATSS 保留了 MaxIoU 的思想,即每个 GT 至少有一个正样本。而 ATSS 在 Anchor 设置过大,GT 过小的时候,是可能存在一个 GT 没有任何 Anchor 被赋予的,因此 OTA 保证了 GT 一定被学习,同时还保证了正样本的质量,二者进一步保证了  的最大化。YOLOX 中的simOTA 是 OTA 的简化版,(1)首先 simOTA 不再把所有 Pixel 都当作 Positive Bag 用于迭代遍历,而是根据距离和判断 Pixel 是否在 GT 框内来选择 positive bag,减少了候选的 Anchor,加快训练速度;(2)另外 simOTA 其实不再执着于 OT 问题的完整求解,而是直接利用 IoU 动态确定 k 后,利用 k 选取 Pairwise Cost Matrix 中 topK 小个的 Anchor 作为正样本。当有 Anchor 被多个 GT 选择时,选择 Cost 最小对应的 GT 进行分配即可。
image.png
图:OTA 算法以及 OTA 算法正样本赋值效果与其他方法的比较

综上这类方法根据网络学习的难易程度( Loss )来分配标签,通过动态的分配方法来获得最终的网络学习的目标。综上所叙述, 我们介绍了传统检测中的 Dense 预测方式以及其对应的 Label Assignment,在 Transformer 中如何进行 Label / Anchor Assginment 是接下来的重点 。

Efficient  DETR

在基于 Transformer 的 DETR/Deformable DETR 检测器训练过程中,此时通过匈牙利匹配的方式来最优化网络学习的 Cost,此时构成 Sparse 的匹配方式,匈牙利匹配方式和 OTA 最优化路径属于同一个操作路线。从另外一个角度来看, IoU( Anchor, GTbox ) 可以通过阈值进行 Label Assignment,高质量的 Anchor 对于检测器能够提升检测器的性能。

对于 RetinaNet 检测器来说,Anchor 包含了物体的先验信息,Anchor 的选择会影响到最终的检测器的性能,在 DETR/Deformable DETR,通过网络自适应学习 Object Queries 来获得最终的 Proposals。如下图所示,对于的 HxWx3 的图片会产生 HxWx3 的 Feature,通过 CrossAttention 和 100x256 的 Object Queries 进行相关操作,此时网络将会参数 100 个预测值。此时我们假定 Object Queries 包含物体的先验信息。
image.png
在所提出的 Efficient DETR 中,我们通过网络获得先验的 Object Query 的相关信息,从而加速 Decoder 的收敛过程,进而提高检测器的性能。此时算法流程如下图所示。
image.png
图:所提出来的Efficient DETR 的流程

image.png
相比于 DETR/Deformable DETR 从随机的 Object Queries 获得最终的 Embedding, 所提出来 Efficient DETR 可以充分的挖掘正样本对于检测器,因此我们这种做法可以高效的训练 Head,在更少的 Decode 的情况下,获得超越原始 DETR 的性能。
image.png
最后,所提出来的 Efficient DETR 相对于原始的 DETR 在相同的 Backbone 上有 3.1 的 AP 的涨点,说明了在 Transformer 中通过先验的 Anchor 设计能够有效的提升 DETR 的性能。

总结

  1. Label Assignment 是当前检测训练过程中,可以有效地映射 GTBox 和 Anchor 之间的匹配,从而获得更高召回率的检测模型。
  2. 在 DETR/Deformable DETR 等 Transformer 的结构中,通过动态网络选择 Anchor 来即进行框的预测以及分类,从而提高 Transformer 中的性能提升。
  3. 更多关于 Label Assignment 相关视频在 CV Master 视频结构化训练营

参考文献

  1. Ren S, He K, Girshick R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[J]. IEEE transactions on pattern analysis and machine intelligence, 2016, 39(6): 1137-1149.
  2. Zhang S, Chi C, Yao Y, et al. Bridging the gap between Anchor-based and Anchor-free detection via adaptive training sample selection[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020: 9759-9768.
  3. Ge Z, Liu S, Li Z, et al. OTA: Optimal Transport Assignment for Object Detection[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 303-312.
  4. Yao Z, Ai J, Li B, et al. Efficient DETR: Improving End-to-End Object Detector with Dense Prior[J]. arXiv preprint arXiv:2104.01318, 2021.
首发:旷视研究院
作者:R

专栏文章推荐

欢迎关注旷视研究院极术社区专栏,定期更新最新旷视研究院成果
加入旷视:career@megvii.com
推荐阅读
关注数
7696
内容数
164
专注旷视研究院学术论文解读推送,涵盖计算机视觉,文字识别等
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息