论文阅读|CenterNet 2, Probabilistic two-stage detection概率二阶段目标检测

提出一种概率性两阶段目标检测方法CenterNet2,利用强一阶段检测器改进传统两阶段检测器中的RPN,优化整个检测流程的概率解释,实现了速度与精度的双重提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要

code:https://github.com/xingyizhou/CenterNet2

paper:https://arxiv.org/pdf/2103.07461v1.pdf

CenterNet2的代码分析:detection2学习|以CenterNet2训练流程分析

paper名为Probabilistic two-stage detection,原文主要贡献在于合理解释了一阶段、二阶段目标检测中的概率优化,指出网络优化是对预测得分(即可能是这个物体的概率)优化,希望最大化这个概率。一阶段是符合这一基本主线的,但是二阶段中的第一个阶段——生成proposals的RPN,的目标却只是想要最大化召回率而不是最大化潜在目标的得分(也即物体置信度,这个区域可能是物体的概率),这使得two-stage的优化不是最佳。于是作者基于概率解释提出二阶段的目标检测框架,使得检测器在整个阶段都符合概率解释,这样的检测器同时具有速度和精度的优点。

该工作的核心有两点:

第一是在第一阶段改用更强调概率优化而不是最大化召回率的stronger一阶段检测器来生成proposals,这样生成的proposals数量少,但是质量高,整体召回率实际上也比RPN高;由于这个阶段只需要做2分类,将该部分的head精简后的模型容量也够,即让两个分支共享卷积权重,从而减少推断时间。

第二是将一阶段的得分合并到第二阶段的得分作为最终得分。

基于这样的思想,作者采用了若干SOTA的一阶段检测器来替代原二阶段中的RPN,并结合了Faster R-CNN和Cascade R-CNN的第二阶段,然后做一些改动得到系列的概率解释的二阶段检测器,而其中Cascade R-CNN-CenterNet版本的表现最好,于是作者将此工作命名为CenterNet2。CenterNet2在COCO上达到单尺度56.4 mAP的性能,超出了目前已有的研究成果。而使用一个轻量的backbone,我们的检测器可以在COCO上达到49.2mAP、33FPS,比YOLOv4更强。

该工作的出现,使得一阶段和二阶段的工作可以相互转化,使得检测器能够同时具有一阶段检测器的速度和二阶段检测器的精度。

介绍

本文开发了一个两阶段目标检测的概率性解释。在标准两阶段检测器训练的基础上,提出一个简单的改进:对两个阶段联合概率目标的下界进行优化。通过概率性的处理,建议对两阶段检测器进行改进,具体的,第一阶段需要推断出校准的目标似然。目前两阶段检测器中的RPN是为了最大化proposal的召回而设计的,因此其不具备产生准确似然的能力。不过,功能完备的一阶段检测器却可以。

我们在SOTA一阶段检测器基础上,构造了一个概率性的两阶段检测器。在第一阶段,我们的模型使用一阶段检测器提取区域级别的特征并对其分类;在第二阶段使用Faster RCNN或者一个级联分类器。这两个阶段一起训练,最大化GT目标的对数似然。在推理时,我们的检测器使用最终的对数似然作为检测得分。

一个概率性的两阶段检测器,比起它的组成部分(一阶段检测器、二阶段检测器)更快、准确率更高。相比两阶段anchor-based检测器,我们的第一阶段更加准确,且允许检测器在ROI head上使用更少的proposal(256 vs 1K),这使得我们的检测器整体上更准确、更快。相比于一阶段检测器,我们的第一阶段使用了一个更精简的head设计,并只有一个输出类别用于密集图像级预测。由于类别个数急剧减少所带来的的加速,远远超出了由于增加第二阶段所带来的成本。我们第二阶段利用了多年来两阶段检测的进展,与一阶段baseline相比,检测准确率显著提升。它也能轻松扩展到大词汇量(类别)检测上。

在COCO、LVIS、Objects 365上的实验表明,我们的概率性两阶段框架能够使Cascade RCNN的mAP提升1-3个点,且速度有所提升。使用以标准ResNeXt-101-DCN为backbone的CenterNet作为第一阶段,可以在COCO上达到50.2mAP。使用强大的Res2Net-101-DCN-BiFPN作为backbone并进行自训练,可以在单尺度测试上达到56.4mAP,这个结果超出了目前所有的公开成果。使用小的DLA-BiFPN作为backbone并降低输入分辨率,使用Titan Xp显卡在COCO上可以达到49.2mAP、33FPS,这个结果优于YOLOv4模型 (43.5 mAP at 33 fps)。

所提出的基于概率性解释的两阶段检测器示意如图1所示:
在这里插入图片描述

2. 相关工作

一阶段检测器联合了预测输出类别和目标定位。一阶段检测器达到有竞争力的性能,主要依赖于其使用了比两阶段检测器更重量级的独立分类、回归分支。事实上,如果词汇量(如目标类别集)很大(如LVIS或者Objects365数据集),这些一阶段检测器将不再比同等级的两阶段检测器更快。而且,一阶段检测器仅使用了正例区域的局部特征进行回归和分类,这有时候会导致与目标不对齐。

我们的概率性两阶段框架保留了一阶段检测器的概率性解释,但是将概率分布分解为多个阶段,对准确率和速度都有改进。

两阶段检测器在很多设置中,仍然具备更高的准确率。目前,所有的两阶段检测器都使用了一个弱的RPN来最大化top 1K个proposals的召回,而且在测试阶段没有利用这些proposals得分。大量的proposals降低了系统速度,同时基于召回考虑的proposal 网络也没有像一阶段检测器那样直接提供一个清晰的概率解释。我们的框架解决了这个问题,并整合了一个强大的类别不可知单阶段目标检测器和一个分类阶段。我们的第一阶段使用更少但更高质量的区域,从而产生更快地推理、更高的准确率。

**其他检测器。**该系列的目标检测器是通过图像中关键点来定位目标的,如:CornerNet检测的是左上、右下角点,并使用嵌入特征对这些点进行分组;ExtremeNet检测四个极值点,并使用额外的中心点对其分组;CenterNet(不是Objects as Points)检测中心点并用于改进角点分组;Corner Proposal Net使用角点对分组形成region proposal;CenterNet(Objects as Points)检测中心点并回归边框的宽高。

DETR和Deformable DETR移除了检测器中的密集预测,取而代之的是使用Transformer直接预测一个边框集。

上述几种检测器(基于点的检测器、DETR类、传统anchor-based检测器)之间的主要区别在于网络结构。基于点的检测器使用全卷积网络,通常带有对称的下采样和上采样层,并产生一个单一的小输出步幅(如4)的feature map。DETR类的检测器使用transformer作为decoder。传统的一阶段、两阶段检测器通常需要使用增加了轻量级上采样层的分类网络,并且生成多尺度特征(FPN)。

3、先验知识

二阶段检测器的RPN对背景的定义非常保守,任何与GT的IOU大于等于30%的预测结果都会被认为是前景。这种标签定义更倾向于提高召回,而不是精确和准确的相似度估计。因此,很多不完整的目标却得到了一个很高的proposal得分。由于该阶段和第二阶段的目标不同,两阶段结合起来使得检测器失去了概率性解释。

4. 两阶段检测的概率解释

对于每幅图像,我们的目的是生成包含了K个检测的边框 b 1 , . . . , b K b_1, . . . , b_K b1,...,bK及其对应类别分布 s k ( c ) = P ( C k = c ) s_k(c) = P(C_k = c) sk(c)=P(Ck=c)的结果,类别c包括C类和背景。在本文工作中,保持原两阶段检测器中的边框回归不变,仅关注于类别分布。一个两阶段检测器将这种类别分布分为了两部分:第一阶段产生一个类别不可知的目标概率 P ( O k ) P(O_k) P(Ok),第二阶段产生具体类别的条件概率 $P(C_k|O_k) $ 。(在这里, O k = 1 O_k=1 Ok=1代表第一阶段检测出的正例,为0则代表背景。当第一阶段检测结果为负例时,其类别为背景的条件概率就对应的为1,即 P ( C k = b g ∣ O k = 0 ) = 1 P(C_k = bg|O_k = 0) = 1 P(Ck=bgOk=0)=1。在多阶段检测器中,分类是由多个级联阶段完成的,而两阶段检测器是由一个单一分类器来完成的。两个阶段模型的联合类别分布表示为:

P ( C k ) = ∑ o P ( C k ∣ O k = o ) P ( O k = o ) . ( 1 ) P\left(C_{k}\right)=\sum_{o} P\left(C_{k} \mid O_{k}=o\right) P\left(O_{k}=o\right) .(1) P(Ck)=oP(CkOk=o)P(Ok=o).(1)

训练目标:

我们训练检测器使用的是极大似然估计,对于标注的正例,最大化下式:

log ⁡ P ( C k ) = log ⁡ P ( C k ∣ O k = 1 ) + log ⁡ P ( O k = 1 ) . ( 2 ) \log P\left(C_{k}\right)=\log P\left(C_{k} \mid O_{k}=1\right)+\log P\left(O_{k}=1\right).(2) logP(Ck)=logP(CkOk=1)+logP(Ok=1).(2)

它将第一阶段和第二阶段的目标分别化为独立的极大似然目标。

对于背景类别,其极大似然目标函数没有分离:
log ⁡ P ( b g ) = log ⁡ ( P ( b g ∣ O k = 1 ) P ( O k = 1 ) + P ( O k = 0 ) ) \log P(b g)=\log \left(P\left(b g \mid O_{k}=1\right) P\left(O_{k}=1\right)+P\left(O_{k}=0\right)\right) logP(bg)=log(P(bgOk=1)P(Ok=1)+P(Ok=0))

该目标函数在计算损失和梯度时,对第一第二阶段的概率估计进行了绑定。精确的估计需要在第二阶段对第一阶段所有输出进行密集评估。与之相反,我们对目标函数推导了两个下限,并联合进行优化。第一个下限使用了杰森不等式:

log ⁡ ( α x 1 + ( 1 − α ) x 2 ) ≥ α l o g ( x 1 ) + ( 1 − α ) l o g ( x 2 ) , 其 中 α = P ( O k = 1 ) , x 1 = P ( b g ∣ O k = 1 ) , x 2 = 1. \log (αx_1 + (1 − α)x_2) ≥ α log(x_1) + (1 − α) log(x_2) , 其中α = P(O_k = 1),x_1 = P(bg|O_k = 1), x_2 = 1. log(αx1+(1α)x2)αlog(x1)+(1α)log(x2),α=P(Ok=1),x1=P(bgOk=1),x2=1.,应用到此即:
log ⁡ P ( b g ) ≥ P ( O k = 1 )   l o g ( P ( b g ∣ O k = 1 ) ) . ( 3 ) \log P(bg) ≥ P(O_k = 1)\ log (P(bg|O_k = 1)). (3) logP(bg)P(Ok=1) log(P(bgOk=1)).(3)
该下限针对第一阶段所有高分目标,最大化了第二阶段中背景的对数似然。It is tight for P(Ok = 1) → 0 or P(bg|Ok = 1) → 1, but can be arbitrarily loose for P(Ok = 1) > 0 and P(bg|Ok = 1) → 0.

第二个下限仅涉及到第一阶段的目标函数:
log ⁡ P ( b g ) ≥   l o g ( P ( O k = 0 ) ) . ( 4 ) \log P(bg) ≥\ log (P(O_k = 0)). (4) logP(bg) log(P(Ok=0)).(4)
其用到了P(bg|O_k = 1)P(O_k = 1) ≥ 0以及log函数的单调性。该下限收紧于P(bg|Ok = 1) → 0.达到极限时即为公式(3)和公式(4)之和。这个下限 ≤ log ⁡ 2 \le\log 2 log2,见附页所示。然而,在实践中,我们发现同时优化两个边界可以更好地工作。

有了下限公式(4)和正例目标公式(2),第一阶段的训练就简化为最大似然估计——在标注对象上使用正标签,在所有其他位置使用负标签。它就等价于训练一个二元一阶段检测器,或者一个带有严格负定义的、鼓励似然估计和非召回的RPN。

检测器设计:

我们的概率两阶段检测器和标准的两阶段检测器之间主要不同在于公式(1)类别无关概率 P ( O k ) P(O_k) P(Ok)的使用。在我们的概率公式中,分类得分是和类别无关检测得分 P ( O k ) P(O_k) P(Ok)相乘的。这就要求一个强大的一阶段检测器,不仅要最大化proposal的召回,也要对每个proposal预测一个可靠的目标概率。

一阶段、两阶段、概率两阶段检测器区别见图2:

在这里插入图片描述

在我们的实验中,使用了强大的一阶段检测器来估计该对数似然,下一节将描述之。

5、构造一个概率的两阶段检测器

概率两阶段检测器的组成主要部分是强大的第一阶段,其需要预测一个准确的目标概率用于整体预测,而不是仅仅考虑召回。本文在四种不同的一阶段检测器上进行了实验,对每一个都重点列出了设计要素。

RetinaNet和传统两阶段检测器中的RPN很像,但其有三个不同之处:更重量级的head设计(4层vsRPN的1层)、更严格的正负例定义、以及Focal Loss。这三个不同点均增加了RetinaNet产生校准的一阶段检测概率的能力。我们在第一阶段的设计中,对这三点全部采纳。另外,RetinaNet默认使用了两个独立的head分别进行边框回归和分类,而在我们的第一阶段设计中,我们发现使用一个单一的共享head进行两个任务也是足够的,因为仅判断目标是否属于背景非常简单且对网络能力的需求更少,这也加速了推理过程。

CenterNet通过定位目标中心点来找到目标,然后回归器边框的参数(宽和高)。原始的CenterNet在单尺度层面进行处理,而传统两阶段检测器使用了特征金字塔(FPN)。我们使用FPN对CenterNet进行升级,使之成为多尺度。具体得,我们使用RetinaNet类型的ResNet-FPN作为backbone,输出步幅为8到128(也即P3~P7)。我们对FPN所有层级应用了4层的分类分支和回归分支,来生成检测heatmap和边框回归map。在训练时,我们在固定范围内根据目标尺寸将GT中心点分配给特定的FPN层级。受GFL启发,我们将中心点的3×3邻域中也产生高质量(回归loss<0.2)边框的位置也作为正例。我们使用边界距离来表示边界框,并使用gIOU loss作为边框回归的损失函数。这种基于CenterNet设计的概率两阶段检测器命名为CenterNet*。

ATSS为每个对象使用自适应IoU阈值对一级检测器的分类可能性建模,并使用中心度校准分数。在概率两阶段检测baseline中,我们使用原始的ATSS,并对于每个proposal将其中心度和前景分类得分相乘。我们再次融合了分类和回归head,以稍微加速。

GFL使用回归之类来指导目标似然训练。在一个概率两阶段检测baseline中,为了保持一致性,我们移除了基于积分的回归并仅使用基于距离的回归并再次任何两个head。

以上几种一阶段结构都推断出了,然后都和第二阶段结合起来推断。第二阶段选用了两种设计:Faster RCNN和Cascade RCNN。

超参:

两阶段检测器通常使用FPN的P2P6层级(输出步幅为464),而大多一阶段检测器使用FPN的P3P7层级(输出步幅为8128)。为了兼容两者,我们使用P3~P7。我们增大了正例IOU阈值,对Faster RCNN从0.5调整为0.6(对于CascadeRCNN调整为0.6,0.7,0.8),以补偿第二阶段IOU分布的改变。我们在概率二阶段检测器中使用最多256个proposal,而在基于RPN的模型中则默认使用1K个proposal。我们在概率两阶段检测器中同样增大了NMS阈值,从0.5调整到0.7,因为我们的proposal数量更少。这些超参的改变对于概率检测器很有必要,但我们实验发现它们对于基于RPN的检测器却没有提高。

代码的实现是基于detectron2的,并在模型设置方面遵循了其标准。具体得,我们使用SGD优化器对网络迭代90K,基础学习率方法两阶段检测器为0.02、一阶段检测器为0.01,并在60K和80K迭代次数时缩小10倍。使用了多尺度训练,短边范围为[640, 800],长边最高1333。在训练阶段,我们设置一阶段检测器的损失权重为0.5,因为其学习率为0.01(相比两阶段0.02的学习率小一倍,所以损失也不能更新太多)。在测试阶段,我们设置短边固定800,长边最长1333。

我们对概率两阶段检测器实例化了四个不同的backbone。我们使用默认的ResNet50模型进行大多消融及对比实验;使用ResNeXt-32x8d-101-DCN和SOTA方法进行比拼性能;使用轻量的DLA设计实时模型;使用一些最新的技术设计一个超大backbone来获取高精度。

6、结果

在这里插入图片描述

如表1所示,解释性二阶段检测器的精度高于其对应的一阶段和二阶段版本,并且令人惊讶的是其速度还比对应一阶段的更快,这凸显了使用共享head的优势。

实时模型。 表2 与其他的实时模型做了对比。

在这里插入图片描述

State-of-the-art比较。 表3显示了与其他SoTA模型的比较,

在这里插入图片描述

6.1 消融实验

将原始RPN版本Faster R-CNN改到RetinaNet为一阶段的Faster R-CNN时,各部分带来精度收益如表4:

在这里插入图片描述

同样的,对Cascade R-CNN做和上面一样修改时的精度变化如表5:

在这里插入图片描述

Cascade R-CNN和CenterNet2分别使用不同数量Proposals时的精度和速度变化如表6:
在这里插入图片描述

6.2 大词汇量检测

这里的大词汇量指的是数据集的类别数量很大,如LVIS和Objects365。表7和表8分别是在这两个数据集上的表现。随着类别数量的增加,共享head带来的速度收益就更加明显,相比而言,CenterNet2在类别数量激增后速度下降小些。

在这里插入图片描述

在这里插入图片描述

7、结论

我们设计了一个两阶段目标检测的概率性解释,这种解释激发了我们使用一个强一阶段检测器来学校目标似然估计,而不是像RPN那样最大化召回。这些似然随后和第二阶段的分类得分结合,为最终的检测产生原则性概率得分。这种组合的概率两阶段检测器比起其组成部分(一阶段检测器、两阶段检测器)更快、更好。我们的工作为集成一阶段、两阶段检测器以达到速度和精度齐飞铺平了道路。

参考

参考博客:https://blog.youkuaiyun.com/oYeZhou/article/details/114883663

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值