本文为CenterNet作者发表的,论文提出anchor-free/two-stage指标检测算法CPN,应用关键点提取候选框再应用两阶段分类器进行预测。论文整体思路很简略,但CPN的准确率和推理速度都很不错,比本来的关键点算法更快,源码也会公开,到时能够一试

起源:晓飞的算法工程笔记 公众号

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

  • 论文地址:http://arxiv.org/abs/2007.13816
  • 论文代码:http://github.com/Duankaiwen/CPNDet

Introduction


  目前,amchor-based指标检测办法和anchor-free指标检测办法都涌现了大量的优良检测计划。论文认为,对于形态特异的指标,anchor-free指标检测形式比拟占优,但acnhor-free办法通常会呈现大量的误检,如图1所示,须要一个独立的分类器来晋升检测的准确率。为此,论文提出CPNDet(Corner Proposal Network),联合了anchor-free和two-stage的检测范式。先基于CornerNet进行角点检测,将无效的角点枚举组合成大量候选预测框。因为候选框蕴含大量负样本,先训练一个二值分类器过滤大部分的候选预测框,再应用多类别分类器进行标签预测。

Anchor-based or Anchor-free? One-stage or Two-stage?


  这里论文次要探讨anchor-based vs anchor-free以及one-stage vs two-stage的问题。

Anchor-based or Anchor-free?

  Anchor-based办法将大量的anchor平铺在特色图上,而后预测每个anchor是否蕴含物体以及标签。通常,anchor是与图片特定的地位关联,大小也是绝对固定的,bbox回归可能轻微地扭转其几何形态。Anchor-free办法则不受预设的anchor限度,间接定位指标的关键点,而后再预测其形态和标签。所以,论文认为anchor-free办法在任意形态指标的定位上更灵便,召回率也更高。

  论文也对anchor-based办法和anchor-free办法在不同大小以及不同比例的指标上的进行召回率比照,后果如上表所示。能够看出anchor-free办法通常有较高的召回率,特地是在长宽比拟大的物体上,anchor-based办法因为预设的anchor与指标差别大,召回率偏低。其次,FCOS尽管也是anchor-free办法,但其最初须要预测关键点到边界的间隔,这在这种场合下也难以预测。

One-stage or Two stage?

  尽管anchor-free办法解决了寻找指标候选框的束缚,但因为不足指标的外部信息,难以很好地建设关键点与指标之间的分割,会给检测的准确率带来较大的影响,而关键点和指标之间的分割的建设通常须要丰盛的语义信息。

  论文将高召回率CornerNet和CenterNet作为试验指标,后果如上表所示。骨干网络的增强可能带来准确率的晋升,但依然有很多的误检。如果去掉无指标的误检($AP_{refined}$)以及纠正标签的谬误辨认($AP_{correct}$)后,准确率可能显著地晋升了。上述的试验阐明,为了建设关键点与指标间的分割,须要借用two-stage的范式,提取候选框的信息来过滤误检局部。

The Framework of Corner Proposal Network


  基于下面的剖析,论文联合acnhor-free办法和two-stage范式提出了Corner-Proposal-Network(CPN),残缺的构造如图2所示。首先应用anchor-free办法提取关键点,遍历关键点组合成候选框,最初应用两个分类器别离对候选框进行误检过滤以及标签预测。

Stage 1: Anchor-free Proposals with Corner Keypoints

  第一阶段为anchor-free候选框提取过程,假设每个指标都由两个关键点进行定位,先依据CornerNet输入两组角点的热图,抉择top-k个左上角点以及top-k个右下角点。将无效的关键点组合成指标的候选框,关键点组合是否无效次要有两个判断:

  1. 关键点是否属于同一个类别
  2. 左上角点必须在右上角点的左上地位

  只管论文基于CornerNet提取候选框,但后处理有较大差别。CornerNet应用embedding向量来组合关键点,论文认为embedding向量并不能保障是可学习的,而论文采纳独立的分类器进行解决,可能应用残缺的两头特色来晋升准确率。

Stage 2: Two-step Classification for Filtering Proposals

  基于anchor-free办法提取候选框尽管召回率很高,但会带来大量的误检,论文采纳two-step分类办法进行过滤和校对。首先采纳轻量的二值分类器过滤80%的候选框,而后应用多分类器预测残余候选框的类别。
  第一步训练二值分类器来决定候选框是否为指标,采纳$7\times 7$的RoIAlign提取每个候选框的在box特色图上的特色,而后应用1个$32\times 7\times 7$的卷积层来输入每个预测框的分类置信度,损失函数为:

  $M$为总候选框数,$N$为正样本数,$p_m$为$m$候选框为指标的概率,$\tau$为IoU阈值,设为0.7。
  第二步用于给残余的候选框预测类别,因为不足指标的外部信息的,关键点的类别通常不太精确,所以须要弱小的分类器来依据ROI特色进行预测。首先应用$7\times 7$的ROIAlign提取每个候选框在category特色图上的特色,而后应用$C$个$256\times 7\times 7$的卷积层输入$C$维向量,$C$为类别数量,损失函数为:

  $\hat{M}$和$\hat{N}$为过滤后的候选框数量和正样本数量,$q_{m,c}$为$m$候选框的$c$类别置信度,其余的参数与第一步相似。

The Inference Process

  推理过程跟训练过程根本一样,因为训练过程蕴含很多低质量的预测框,$p_m$和$q_{m,c}$的值是偏差零的,所以推理阶段第一步应用绝对低的阈值(0.2)进行过滤,大概保留20%的候选框。在第二步,每个候选框有两个标签,别离为角点预测的标签$s_1$和第二阶段分类器预测的标签$s_2$,当其中一个标签分数大于0.5时才将候选框输入,分数计算为$s_c=(s_1+0.5)(s_2+0.5)$,再归一化到$[0,1]$。

Experiments


  与SOTA检测算法进行比照,初始的输出分辨率为$511\times 511$。

  推理阶段的两个分类器对性能的影响,B-Classifier为二值分类器,M-Classifier为多标签分类器。

  绝对于其它keypoint-based办法,CPN误检更低。

  二值分类器与CornerNet的embedding向量的性能比照。

  推理速度比照。

CONCLUSION


  论文提出anchor-free/two-stage指标检测算法CPN,应用关键点提取候选框再应用两阶段分类器进行预测。论文整体思路很简略,但CPN的准确率和推理速度都很不错,比本来的关键点算法更快,论文的细节也值得斟酌。



如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】