[OneNet]OneNet: Towards End-to-End One-Stage Object Detection笔记


paper: https://arxiv.org/pdf/2012.05780.pdf
code: https://github.com/PeizeSun/OneNet

1. Abstract

文中提出了一个观点,认为以往的one-stage无法去掉NMS实现端到端的主要原因在于正样本的选取。以往的Label assignment任务没有考虑分类的cost,只考虑了位置的cost,从而会得到很多冗余的boxes,造成了后处理中必须使用NMS。
在这里插入图片描述

如下图所示,RetinaNet选取正样本只考虑了box的IoU ,而FCOS只考虑了Point Assignment,本文作者提出的OneNet,将classification和location都考虑来选取正样本并计算cost,提出Minimum Cost Assignment方法实现One-to-One Label Assignment,对于每一个Ground Truth,只有一个正样本与之对应,从而获得最佳Match,消除NMS。
在这里插入图片描述

2. Contribution

① 网络是端到端的全卷积网络,没有ROI以及attention机制。
②正样本的选取基于对于location 和 classification的minimum cost。
③不用nms。

在这里插入图片描述

3. Label Assignment

在这里插入图片描述
根据网络是box assignment 还是 point distance来选取合适的L1或者GIOU权重。

再原来的基础上加入classification cost:
在这里插入图片描述

最后整合成公式3:

在这里插入图片描述

4. OneNet Network

在这里插入图片描述

4.1 Backbone

OneNet的Backbone采用ResNet + FPN的结构。
Backbone的输出是[H/4, W/4, C]。

4.2 Head

Backbone之后的特征经过2个并行的卷积层。分别为classification层和location层。classification输出K个类别,location层输出4个坐标。即分别为[H’, W’, K] 以及 [H’, W’, 4]。

4.3 inference

注意因为测试时的loss并不反传,因此按照coco-api的要求,maxDetection最大为100,因此网络输出的预测点取topK(eg.100),不用NMS。

4.4 Multi-head Training

在这里插入图片描述
上图是作者提出的一种可选的多头部的训练方式,称为级联的预测头。
简单理解为第一层的F0的特征图的通道从C变成2C,然后再过一个卷积网络生成C维的特征图F1,然后走2个分支,一个分支按照原来的网络结构,生成cls以及reg分支,进行location和classification的预测。另一个分支则会将F1作为第二个head的特征图输入,从而与原来的F0在channel上做一个cat的操作,也变为了2C的通道数,后面的操作与第一个head类似。
每个head中的cls和reg卷积层的权重分别与其他层的参数共享。
在inference 部分,采用的是Single-head Inference。

5. Experiments

下图对于正样本的可视化给出了一个信息,第一行是centernet,只用location cost,可以发现正样本这个点都在bbox的中心,但实际上效果并不是很好。而第二行是location + classification cost,可以发现这时候的正样本并不一定都在中心,一般落在物体的更具辨别性的区域,如:人体内部,斑马头部。这样的正样本有利于分类,同时对定位也较为友好(毕竟正样本点依然在物体框内部)。
在这里插入图片描述

5.1 Effect of image size

在这里插入图片描述

5.2 Ablation on Multi-head Training

在这里插入图片描述
在这里插入图片描述)

5.3 Comparison of CenterNet and OneNet

在这里插入图片描述)

5.4 Ablation on Label Assignment

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43823854/article/details/111368627
今日推荐