OneNet: Towards End-to-End One-Stage Object Detection速读
OneNet: Towards End-to-End One-Stage Object Detection
[arXiv][https://arxiv.org/abs/2012.05780v1]
[github][https://github.com/PeizeSun/OneNet]
Abstract
端到端的one-stage目标检测的一直是落后与其它目标检测方法的。本文发现,label assignment中的样本和GT(Ground-Truth)之间缺乏classification cost是one-stage检测器去除NMS并达到端到端检测的主要障碍。现有的one-stage目标检测器只通过location cost作为标签,例如box IoU或者点的距离。因为没有classification cost,单独的location cost导致在推理过程中出现了高置信度的冗余box,这让NMS成为必要的后处理过程。
为了设计一个端到端的one-stage目标检测器,我们提出了Minimum Cost Assignment,cost由样本和GT之间的classification cost和location cost相加而成。对于每一个目标的GT,只有那个最小代价的样本被分配为正样本,其他所有的样本都是负样本。为了评估方法的有效性,我们设计了一个非常简单的one-stage检测器,称为OneNet。我们的实验结果显示,使用Minimum Cost Assignment进行训练时,OneNet能够避免产生多余的box,并且达成了端到端的检测。在COCO数据集上,OneNet对于大小为512的图像数据取得了35.0AP/80FPS和37.7AP/50FPS的成绩。我们希望OneNet能成为端到端one-stage目标检测的有效baseline。
Introduction
近十年来,目标检测中的正样本被分配为那些和GT的交并比大于某个阈值的候选框,我们把这些基于box的label assignment方法称为"Box Assignment"。
尽管候选框方法主导了目标检测领域很多年,但是这些方法的性能很容易受到目标大小、长宽比、anchor box的数量等因素的影响。为了消除候选框方法中的手工设计以及复杂的计算。anchor free的方法渐渐崛起。这种方法直接将特征图中的网格点视为候选目标,并预测网格所指对象的边界。anchor free方法的label assignment被简化为box中心点的距离。我们称这种基于点的距离的label assignment方式为"Point Assignment"。
不管是Box Assignment还是Point Assignment都是多对一的label assignment,对于同一个GT,有多个正样本与之对应。这样检测性能对于超参数非常敏感。粗略的说,多对一的label assignment产生了冗余和重复的结果,因此必须进行NMS这样的后处理。
直觉告诉我们应该将那些使用多对一标签的one-stage检测器替换成一对一的标签,对于整个特征图,一个GT只有一个正样本,其它的样本全部分配为负样本。然而,这个办法导致了非常差的检测性能,检测器仍然输出多个冗余且具有高置信度的box。
我们发现,label assignment中的样本和GT之间缺乏classification cost是one-stage检测器去除NMS并达到端到端检测的主要障碍。通过分析现有的one-stage目标检测器,不难发现它们在分配标签时只考虑了location cost,例如box IoU或者点的距离。然而,要构建一个更好的端到端检测器,应该在分配标签时同时考虑location cost和classification cost。我们的实验证明了没有classification cost的label assignment方法会导致产生冗余的高置信度box。
为了设计一个端到端的one-stage目标检测器,我们提出了Minimum Cost Assignment。cost代价由样本和GT之间的classification cost和location cost相加而成。为了评估方法的有效性,我们设计了一个非常简单的one-stage检测器,称为OneNet。我们的实验结果显示,使用Minimum Cost Assignment进行训练时,OneNet避免了产生多余的box。
Lable Assignment
Minimum Cost Assignment的提出,是为了解决端到端的one-stage目标检测任务中的label assignment问题。
Matching Cost
之前的目标检测方法通过与GT的box IoU或者点的距离来分配样本。我们把这两种方式组合到一起,可以定义为:
\[C_{loc} = \lambda_{iou} \cdot C_{iou} + \lambda_{L1} \cdot C_{L1} \]其中,\(C_{L1}\)和\(C_{iou}\)表示L1 loss和IoU loss。\(\lambda_{L1}\)和\(\lambda_{iou}\)是系数。在Box Assignment中\(\lambda_{L1}=0\),在Point Assignment中\(\lambda_{iou} = 0\)。
对于端到端one-stage目标检测,我们提出将classification cost加入到Matching cost中,cost变成了样本和GT之间的classification cost和location cost相加而成,定义如下:
\[C = \lambda_{cls} \cdot C_{cls} + C_{loc} \]其中,\(C_{cls}\)是目标的预测类别与GT类别的classification loss,\(C_{loc}\)的定义如公式(1)所示。
Minimum Cost Assignment
Minimum Cost Assignment是一个非常直接的方法:对于每个GT,只有那个在所有样本中cost最小的样本才被分配为正样本;除此之外都分配为负样本。其中没有手工的启发式规则或者复杂的双向匹配。Algorithm 1展示了Minimum Cost Assignment的例子,其中使用交叉熵损失作为classification cost,L1 loss作为location cost。
######################
# Algorithm 1
######################
# For simplicity, # cross entropy loss as classification cost
# L1 loss as location cost
# Input:
# class_pred, box_pred: network output(HxWxK, HxWx4)
# gt_label, gt_box: ground-truth (N, Nx4)
# Output:
# src_ind: index of positive sample in HW sequence(N)
# tgt_ind: index of corresponding ground-truth (N)
# flattened class: HWxK
output_class = class_pred.view(-1, K)
# flattened box: HWx4
output_box = box_pred.view(-1, 4)
# classification cost: HWxN
cost_class = -torch.log(output_class[:, gt_label])
# location cost: HWxN
cost_loc = torch.cdist(out_box, gt_bbox, p=1)
# cost matrix: HWxN
cost_mat = cost_class + cost_loc
# index of positive sample: N
_, src_ind = torch.min(cost_mat, dim=0)
# index of ground-truth: N
tgt_ind = torch.arange(N)
在密集检测器中,classification loss是Focal Loss,location cost包括L1 loss和generalized IoU(GIoU)loss。最终,cost被定义为:
\[C = \lambda_{cls} \cdot C_{cls} + \lambda_{L1} \cdot C_{L1} + \lambda_{giou} \cdot C_{giou} \]OneNet
OneNet是一个简单的全卷积one-stage检测器,没有任何诸如NMS的后处理,它的pipeline如图所示:
Training:label assignment方法为Minimum Cost Assignment,训练损失类似matching cost,由Focal Loss,L1 loss和GIoU loss组成。
Inference:最终直接输出top-k(例如top 100)个高分排序的box。没有任何像NMS或者max-pooling计算的后处理。
Experiments
Visualization of Positive Sample
我们可视化了在CenterNet和OneNet中的正样本,如Figure 5所示,其中的最主要区别是CenterNet使用location cost作为label assignment,OneNet使用minimum cost assignment。
对于CenterNet,正样本位于的网格点非常靠近GT box的中心,这种assignment有利于box的回归,但不是正负样本分类有利选择。
对于OneNet,我们可以看到正样本位于目标上更加具有判别性的区域、例如,在人的身体上,斑马的头上。这种选择更有利于分类。同时,这也并不会破坏box的回归,因为正样本还是处于目标GT box之内。
在Tabel 1中,我们可以看到,classification cost是去除NMS的关键。没有classification cost,NMS对于性能的提高有惊人的优势。然而,加入classification cost可以消除NMS的必要性。
更多实验细节请查看原文
Discussion
我们提出了一个初步的讨论:为什么Minimun Cost Assignment策略可以成功的消除冗余结果并且避免进行NMS?
我们指出,对于之前的目标检测方法,在label assignment和网络的优化目标之间存在这misalignment。通俗地说,目标检测器的优化目标应该是classification cost和localization cost之和。然而,在一对一的Box Assign和Point Assign中,正样本只从最小的location cost中选择,例如,box IoU或者点的距离。在这种情况下,选择的正样本能最小化box的回归损失,但不能最小化分类损失,特别是对于一些有着非常规形状和姿态的目标来说更加明显。换句话说,也许存在另外一些潜在的正样本能够对最小化total cost有贡献,但是被强行当作负样本处理了。结果就是,网络被训练成了次优状态:真正的正样本和选择的正样本都被分为了高分样本。在推理阶段,这就导致预测了冗余的正结果。
与之相反的是,一对一Minimun Cost Assignment确保被选择的正样本有着最低的total cost(classification 和 regression),并且没有其他的样本有更低的cost。因此,网络的训练变得更加有效,最终优化到令人满意的状态——每个目标只有一个预测结果。
End
本文作者在之后发表了另外一篇名为[What Makes for End-to-End Object Detection?][https://arxiv.org/abs/2012.05780v2]的文章,在该文章中详细分析了minimum cost assignment的理论可行性。