论文笔记之两阶段anchor-free目标检测器:CornerProposal Network for Anchor-free,Two-stage Object Detection

提出一种基于anchor-free的两阶段的目标检测的方法:首先通过寻找潜在的角点以及关键点组合(corner keypoints)找到大量的object proposals,然后通过单独的分类阶段给每个proposals分配一个类别标签。

ECCV2020接收

论文地址:https://arxiv.org/abs/2007.13816

1. 摘要

本文提出了一种新颖的Anchor-free两阶段框架Corner Proposal Network(CPN),该框架首先通过查找潜在的角点关键点组合来提取多个目标proposal,然后通过独立的分类阶段为每个proposal分配一个类别标签。它可以集成到端到端网络中。它具有检测各种规模的物体的能力,并且还消除了大量的错误的proposal造成的影响。 在MS-COCO数据集上,CPN的AP达到49.2%,此外,在26.2 / 43.3FPS时AP达到41.6%/ 39.7%。

anchor-free还是anchor-based(proposal extraction)

核心意见是,检测方法的recall由其定位不同几何形状的目标(尤其是形状特殊的目标)的能力决定,而anchor-free方法(特别是基于定位目标边界的方法)可能更好,因为anchor-free方法具有更好的定位目标灵活性,这主要是由于anchor的设计性质(例如,anchor-based方法为了减少anchor的数量并提高效率,仅考虑常见的目标大小和形状),因此anchor-based检测算法是可能对形状特殊的物体效果并不好。

一阶段还是两阶段

anchor-free存在一个问题,缺少语义信息会导致大量的误报,所以为了缓解这个问题需要使用两阶段方法来滤除误报。

2. 本文方法

2.1 总体结构

在这里插入图片描述

  • 首先利用CornerNet的关键点检测方法,但不是将关键点与关键点特征嵌入进行分组,而是将所有有效的corner组合作为潜在目标进行枚举。这导致了很多proposal,其中大多数是误报。
  • 然后,训练一个分类器,以根据相应的区域特征从不正确配对的关键点中区分出真实目标。分类有两个步骤,第一个是二进制分类器,它过滤掉大部分proposal(即与目标不对应的proposal),第二个具有更强的功能,可以对存在的目标进行多类分类并重新排序分类分数。

2.2 第一个阶段

第一阶段是anchor-free proposal提取过程,假设每个目标都由两个关键点定位(左上角和右下角)。 遵循CornerNet ,计算两个热图(即左上热图和右下热图,热图上的每个值表示corner关键点出现在相应位置的概率)。 计算完热图后,将从所有热图中提取固定数量的关键点(左上角和右上角)。 每个corner关键点都配有一个class label。

接下来,每对有效的关键点将定义一个目标proposal。在这里,有效的意思是两个关键点属于同一类(即,从相同类的左上角热图和右下角热图中提取),并且左上角的x,y坐标分别小于右下角的x,y坐标。 这会导致每个图像上出现大量误报(错误配对的角关键点),因此第二阶段对这些proposal进行区分和分类。

2.3 第二个阶段

针对大量的误报以及过滤掉它们的计算成的问题,第二阶段设计了一种有效的两步分类方法,该方法首先使用轻量级二进制分类器删除80%的proposal,然后应用细分类器确定每个剩下的proposal的分类标签和置信度分数。

令M为由左上和右下关键点生成的目标proposal总数。 按照CenterNet 将K设置为70,这导致每个图像上平均有2500个目标proposal。

第一步

训练二进制分类器,以确定每个proposal是否是一个物体。 为此,首先采用核大小为7×7的RoIAlign来提取特征图上每个proposal的特征。 然后跟随一个32×7×7的卷积层以获得每个proposal的分类分数。 这个二进制分类器的损失函数为:
在这里插入图片描述

其中N表示正样本的数量,pm表示第m个proposal的物体性得分,pm∈[0,1],IoUm表示第m个proposal与所有GT box之间的最大IoU值。τ是IoU阈值,本文设置为0.7,这是为了提取正例以避免训练数据不平衡。α= 2是使损失函数平滑的超参数。

第二步

第二步是为每个剩下的proposal分配一个类别标签。此步骤非常重要,因为与角点相关联的类别标签并不总是可靠的。 尽管依靠角点类来过滤无效的角点对,但由于缺乏ROI区域中信息,它们之间的共识可能不正确,因此需要一个功能更强大的分类器,其中包含ROI特征以给出最终结果。

为此,训练另一个有C个输出的分类器,其中C是数据集中的类数。该分类器也是基于第一步中提取的RoIAlign特征构建的,但是从类别特征图中提取特征以保留更多信息,并且对每个剩下的proposal使用256×7×7的卷积获得C维向量,建立C路分类器。考虑类标签的类似损失函数:
在这里插入图片描述
其中,Mˆ和Nˆ分别表示剩余的proposal数和其中的正样本数。 IoUm,c表示第m个proposal和属于第c类的所有GT box之间的最大IoU值,IoU阈值τ保持不变。qm,c 表示第c类的分类得分。β的作用与α相似,在本文中也将其设为2。

为两个分类器设计了一种新的focal loss变体,这主要是为了解决训练过程中正proposal和负proposal之间的重大失衡。

3. 推理阶段

在推理阶段,

  • 第一步,使用相对较低的阈值(本文为0.2),以使更多proposal可以保留。

  • 第二步,对于每个剩余的proposal,为其分配最多2个类别标签,对应于corner关键点和proposal的主导类别(两个类别可能是相同的,如果不同,则该proposal将成为两个可能具有不同分数的proposal)。

  • 对于每个候选类,将 s 1 s_1 s1表示为角点分类得分(两个角点的平均值,在(0,1)范围内),将 s 2 s_2 s2表示为区域分类得分(proposal类标签的概率,由多类分类器预测, 也在(0,1)的范围内)。 假设两个分数均对最终分数有所贡献,并且如果其中一个分数大于0.5,则应产生正向作用。 因此,将分数按 s c = ( s 1 + 0.5 ) ∗ ( s 2 + 0.5 ) s_c =(s_1 + 0.5)*(s_2 + 0.5) sc=s1+0.5s2+0.5计算,然后应用归一化将该分数重新缩放为[0,1]。

  • 最后,将100个得分最高的proposal保留下来进行评估。

在表4中,我们将显示两个分类器提供互补信息并提高检测精度。

4. 实验

4.1 SOTA对比

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

4.2 消融实验

(1)第二阶段,两个分类器效果最好。
在这里插入图片描述

(2)与corenrnet和centernet相比,本文误报最少
在这里插入图片描述
(3)使用不同方式(关联嵌入和二进制分类)确定proposal的有效性的检测性能(%)
在这里插入图片描述
(4)推理速度对比,本文达到了速度和精度很好的折中
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/haha0825/article/details/108562597