CPNDet:Corner Proposal Network for Anchor-free, Two-stage Object Detection

CPNDet论文链接

一.背景

anchor-based方法将大量框密集分布在feature map上,在推理时,由于预设的anchor与目标差异大,召回率会偏低。而anchor-free不受anchor大小限制,在任意形状上会更加灵活,但是像CornerNet这种,先进行角点检测,将有效的角点枚举组合成大量候选预测框,容易带来大量的FP。而FCOS需要回归关键点到边界的距离,对于长宽大的物体也比较难以预测。

二.网络介绍

1.网络结构以及loss函数

Stage 1: Anchor-free Proposals with Corner Keypoints

假定每个目标都由两个关键点进行定位,先根据CornerNet输出一对左上右下的heatmap,选择top-k个左上角点以及top-k个右下角点。将有效的关键点组合成目标的候选框,关键点组合是否有效主要有两个判断:

  1. 左上右下关键点是否属于同一个类别

  2. 左上角点坐标比右上角点小

同时作者认为cornernet那种embedding向量组合不是保证能够学习到的,在未见过的场景和目标挨得比较近时都会造成性能下降。

Stage 2: Two-step Classification for Filtering Proposals

由于产生heatmap的feature map较大,在角点进行组合时,虽然极大提高了召回率但同时特提升了误检率,还加大了过滤的计算量。所以先进行二分类,过滤掉80%候选框,然后在对剩下的框进行多分类。

首先在feature map上选用7*7RoIAlign提取每个候选框的特征,在使用1个32*7*7输出二分类的分类score。

二分类loss采用focal loss变种。

N:正样本数量;

IoUm:第m个候选框和所有gt box的IOU;

p m:第m个候选区域的分类score;

τ:IOU阈值,一般选择0.7;

α :超参,为2,用来平滑loss函数。

第二步对剩下的框进行多分类,用一个256*7*7输出C维向量,进行C分类,C分类loss也采用focal loss变种。

M̂:上一步过滤后的候选框;

N̂:正样本框

IoU m,c:类别是c为第m个候选框和所有gt box的IOU;

qm,c:类别是c,第m个候选区域的分类score;

α,β:超参,为2,用来平滑loss函数

2.总的loss函数

Ldetcorner:角点定位和cornernet一样;

Loffsetcorner:角点偏移

Lprop:二分类fcoal loss

Lclass:多分类fcoal loss

3.推理阶段

第一个阶段先使用0.2阈值,过滤掉大部分框,在对剩下的框进行多分类。在进行soft Nms即可。

s1:角点的分类score(两个角点的平均)

s2:多分类的score

当两个中一个大于0.5时,才采用上述式子得出预测的类别score,在归一化为[0,1]之间。

三.实验结果

1.是否带二分类的实验结果对比

2.和各种检测框架的实验结果对比

3.速度和精度的对比

猜你喜欢

转载自blog.csdn.net/fanzonghao/article/details/109672089