专栏名称: 小白学视觉
本公众号主要介绍机器视觉基础知识和新闻,以及在学习机器视觉时遇到的各种纠结和坑的心路历程。
目录
相关文章推荐
中核集团  ·  新春走基层 | 在核岛上蹁跹起舞的他们 ·  21 小时前  
杭州本地宝  ·  杭州元宵节免费汤圆领取地点汇总! ·  昨天  
杭州本地宝  ·  杭州能待一整天的15个室内场馆 ·  昨天  
余杭发布  ·  速看!余杭开学时间来了! ·  2 天前  
余杭时报  ·  最新“白名单”!涉及杭州多家房屋中介 ·  3 天前  
51好读  ›  专栏  ›  小白学视觉

TPAMI 2024 | 用于目标检测的CenterNet++

小白学视觉  · 公众号  ·  · 2025-01-01 10:05

正文

点击下方“ 计算机书童 ”卡片,每天获取顶刊论文解读

点击加入论 文投稿、写作、阅读分享交流群
完整版论文 中文解读PDF请加入知识星球获取

CenterNet++ for Object Detection

题目:用于目标检测的CenterNet++

作者:Kaiwen Duan; Song Bai; Lingxi Xie; Honggang Qi; Qingming Huang; Qi Tian
源码:https://github.com/Duankaiwen/PyCenterNet

摘要

本文介绍了一种新的自底向上的对象检测方法,名为CenterNet++。与主流的自顶向下方法相比,我们证明了自底向上的方法在性能上具有竞争力,并且具有更高的召回率。CenterNet++通过关键点三元组(左上角、右下角和中心点)来检测每个对象。我们首先根据设计的线索对角点进行分组,并基于中心关键点确认对象位置。角关键点允许方法检测各种规模和形状的对象,而中心关键点减少了大量误报提议引入的混淆。我们的方法是一种无锚点检测器,因为它不需要定义显式的锚框。我们将我们的方法适配到具有不同结构的骨干网络,包括“沙漏”型网络和“金字塔”型网络,分别在单分辨率和多分辨率特征图上检测对象。在MS-COCO数据集上,使用Res2Net-101和Swin-Transformer的CenterNet分别达到了53.7%和57.1%的平均精度(APs),超越了所有现有的自底向上检测器,并达到了最先进的性能。我们还设计了一个实时CenterNet模型,实现了准确性和速度之间的良好折中,以30.5帧每秒(FPS)的速度达到了43.6%的AP。

关键词

  • 无锚点(Anchor-free)
  • 自底向上(Bottom-up)
  • 深度学习(Deep learning)
  • 对象检测(Object detection)

I. 引言

目前,有两种主要类型的对象检测方法:自底向上方法[12]、[30]、[31]、[69]和自顶向下方法[9]、[10]、[38]、[46]。许多研究人员认为,自底向上方法耗时且引入了更多的误报,而自顶向下方法由于在实践中的有效性,已逐渐成为主流方法。自顶向下方法通过将每个对象建模为一个先验点或预定义的锚框,并预测到边界框的相应偏移量。自顶向下方法能够感知整体对象,这简化了生成边界框的后处理步骤。然而,它们通常在感知具有特殊形状的对象(例如,具有大宽高比的对象)时存在困难。图1(a)显示了自顶向下方法未能覆盖“火车”对象的一个案例。我们在第三节中对此问题进行了更详细的分析。

另一方面,我们发现自底向上方法在定位任意几何形状的对象方面可能更好,因此具有更高的召回率。然而,传统的自底向上方法通常会产生许多误报,这导致无法准确表示对象。例如,CornerNet[30],作为一种代表性的自底向上方法,使用一对角关键点来建模每个对象,并实现了最先进的对象检测精度。尽管如此,CornerNet的性能仍然受到其相对薄弱的全局信息确定能力的制约;也就是说,由于每个对象是根据一对角关键点构建的,算法在没有意识到哪些关键点对应该组合成对象的情况下敏感地检测对象的边界。因此,如图1(b)所示,CornerNet经常生成错误的边界框,其中大部分可以很容易地通过一些补充信息(例如,宽高比)过滤掉。
受自底向上方法分析的驱动,我们的假设是如果提高它们感知对象全局信息的能力,自底向上方法与自顶向下方法具有竞争力。在本文中,我们提出了一个低成本但有效的解决方案,名为CenterNet,这是一种强大的自底向上对象检测方法,它根据三元组关键点(左上角和右下角以及中心)检测每个对象。CenterNet探索了一个提议的中心部分,即接近一个框的几何中心的区域,与常规方法相比,它多出了一个关键点。我们假设如果预测的边界框与真实框具有较高的交并比(IoU),那么预测边界框中心区域的中心关键点为同一类别的概率很高,反之亦然。因此,在推理过程中,当根据角关键点对生成提议后,我们通过验证提议的中心区域内是否有属于同一类别的中心关键点来确定该提议确实是一个对象。这一概念在图1(c)中展示。
我们为适应不同结构的网络设计了两个框架。第一个框架是为“沙漏”型网络开发的,这类网络在单一分辨率的特征图上检测对象。沙漏网络在执行关键点估计任务时非常流行,我们应用这种类型的网络来更好地预测角和中心关键点。我们还设计了我们的框架以适应“金字塔”型网络,这类网络在多分辨率特征图上检测对象。这种方法有两个主要优点:更强的泛化能力,因为大多数网络都有“金字塔”型结构,例如ResNet及其变体;以及更高的检测精度,因为不同尺度的对象在不同的感受野中被检测。尽管金字塔结构已在自顶向下方法中得到广泛应用,但据我们所知,这是第一次在自底向上方法中使用。
我们在MS-COCO数据集[37]上评估了所提出的CenterNet,这是最流行的大规模对象检测基准数据集之一。CenterNet,使用Res2Net-101[18]和Swin-Transformer[39],分别达到了53.7和57.1的平均精度(APs),大幅度超越了所有现有的自底向上检测器。我们还设计了一个实时CenterNet,在30.5帧每秒(FPS)的速度下达到了43.6的AP,实现了准确性和速度之间的良好折中。CenterNet高效且性能接近现有的自顶向下方法的最先进水平。
本文的初步版本发表在[13]中。在这个扩展版本中,我们在以下方面改进了工作。(i)原始的CenterNet仅使用沙漏网络[43]作为骨干网络,在其中所有对象仅在单一分辨率的特征图上被检测。我们将CenterNet的思想扩展到具有金字塔结构的网络,从而允许CenterNet在多分辨率特征图上检测对象。为此,我们提出了检测关键点(包括角和中心关键点)和分组关键点的新方法。(ii)在这个版本中,由于CenterNet的新设计,我们研究了更多具有金字塔结构的骨干网络,包括ResNet[25]、ResNext[61]和Res2Net[18]。此外,我们甚至报告了使用Transformer[39]作为骨干网络的检测结果。实验结果表明,引入金字塔结构显著提高了检测精度,这使得网络可以使用更丰富的感受野来检测对象。(iii)我们展示了一个实时CenterNet,与流行的检测器相比,它实现了更好的准确性/速度折中。
这项工作的主要贡献可以总结如下:
  • 我们提出了一种名为CenterNet的强大自底向上对象检测方法。CenterNet将每个对象检测为三元组关键点,因此可以定位任意几何形状的对象,并感知对象的全局信息。
  • 我们设计了两个框架以适应不同结构的网络,这提高了我们方法的泛化能力。因此,我们的方法基本上适用于所有网络。
  • CenterNet在自底向上方法中实现了最先进的检测精度,并与现有的自顶向下方法的最先进性能紧密匹配。
  • 通过适当降低结构复杂性,CenterNet实现了准确性和速度之间的令人满意的折中。因此,我们证明了自底向上方法与自顶向下方法是必要的,并且具有竞争力。

III. 我们的方法

A. 顶下方法的一个缺点

我们注意到,对象检测方法主要分为两大类:顶下方法和底上方法。基于上述部分的讨论,我们认为底上方法在定位任意几何形状的对象方面具有更好的潜力,因此可能实现更高的召回率。大多数顶下方法都是基于锚点的,这些方法非常依赖经验(例如,为了提高效率,只考虑具有常见尺寸和纵横比的锚点);此外,它们的形状和位置相对固定,尽管随后的边界框回归过程可能会稍微改变它们的状态。因此,检测器倾向于错过形状奇特的对象。图1(a)显示了一个典型的例子,即错过了检测“火车”对象。我们还提供了定量研究,如表I所示。三种代表性方法和我们的工作都在MS-COCO验证数据集上进行了评估。表I显示,顶下方法比底上方法获得显著更低的召回率,特别是对于形状奇特的对象,例如,尺寸大于300^2像素或纵横比大于5:1的对象。这个结果并不令人惊讶,因为,一方面,对于Faster R-CNN[48],一个典型的基于锚点的顶下方法,没有预定义的锚点可以匹配这些对象。另一方面,FCOS[56],一个典型的无锚点顶下方法,难以准确回归边界和提议之间的长距离。由于底上方法通常检测对象的各个部分并将它们组合成对象,这个问题有所减少。此外,我们报告了所提出的CenterNet的结果,证明CenterNet具有底上方法的优势,灵活地定位对象,特别是那些形状奇特的对象。

尽管底上方法有较高的召回率,但它们经常产生许多误报。以CornerNet[30]为例,它产生了两个热图用于检测角点:一个用于检测左上角点的热图和一个用于检测右下角点的热图。这些热图表示不同类别的关键点位置,并用于为每个关键点分配置信度分数。此外,CornerNet预测每个角点的嵌入和一组偏移量(如图2所示)。这些嵌入用于确定两个角点是否来自同一对象。偏移量用于将角点从热图重新映射到输入图像。为了生成对象边界框,根据它们的分数选择热图中的前k个左上角和右下角,然后计算一对角点的嵌入向量之间的距离,以确定配对的角点是否属于同一对象。如果距离小于指定的阈值,则生成对象边界框。边界框被赋予一个置信度分数,等于角点对的平均分数。

在表II中,我们提供了CornerNet性能的更深入分析。我们基于MS-COCO验证数据集计算了CornerNet的平均误报发现率(AF1),定义为错误边界框的比例。定量结果表明,即使在低IoU阈值下,错误边界框也占边界框总数的很大一部分,例如,CornerNet在IoU为0.05时获得32.7%的AF分数。这一结果表明,平均每100个对象边界框中有32.7个与真实值的IoU低于0.05。还有更多的小错误边界框,AF分数为60.3%。这种结果的一个可能原因是CornerNet无法搜索边界框内的区域。为了允许CornerNet感知边界框内的视觉模式,一个潜在的解决方案是将CornerNet适应为一个两阶段检测器,使用RoI池化[21]来感知边界框内的视觉模式。然而,这些范式在计算上很昂贵。

在本文中,我们提出了一个高效的替代方案,称为CenterNet,用于探索每个边界框内的视觉模式。为了检测一个对象,我们的方法使用三元组而不是成对的关键点。因此,我们的方法专注于中心信息,同时保持最小的计算成本,并继承了RoI池化的功能。此外,我们为在单分辨率特征图和多分辨率特征图中检测对象设计了两个框架。前者应用于关键点估计网络,以提高检测角点和中心关键点的性能。后者在目标检测任务中更受欢迎,因为它具有更好的通用性并且获得更丰富的检测感知场。两个框架的设计略有不同,我们将在下一子节中提供详细说明。

B. 将对象检测视为关键点三元组

  1. 单分辨率检测框架:受到姿态估计的启发,我们应用通常用于姿态估计的网络来更好地检测角点和中心关键点,其中大多数在单分辨率特征图中检测关键点,例如沙漏网络[43]。整体网络架构如图2所示。我们通过一个中心关键点和一对角点来表示每个对象。具体来说,我们在CornerNet的基础上嵌入一个中心关键点的热图,并预测中心关键点的偏移量。然后,我们使用CornerNet[30]中应用的方法来生成前k个边界框。为了有效地识别错误的边界框,我们使用检测到的中心关键点和以下程序:(1) 根据它们的分数选择前k个中心关键点。(2) 使用相应的偏移量将这些中心关键点重新映射到输入图像。(3) 为每个边界框定义一个中心区域,并验证中心区域是否包含中心关键点。注意,检查的中心关键点的类别标签应与边界框的类别标签相同。(4) 如果在中心区域检测到中心关键点,我们保留边界框。边界框的分数被替换为三点的平均分数,即左上角、右下角和中心关键点的分数。如果在中心区域没有检测到中心关键点,则删除边界框。
  2. 多分辨率检测框架:整体网络架构如图3所示。网络从提取基于输入图像的特征的主干(例如,ResNet[25],ResNeXt[61])开始。我们选择主干的C3-C5特征图作为输入到特征金字塔网络(FPN)。然后,FPN输出P3-P7特征图作为最终预测层。在每个预测层中,我们使用热图和回归来预测关键点。在基于热图的预测方法中,我们使用三个轻量级二进制热图来预测角点和中心关键点。热图的分辨率与预测层的分辨率相同,因此,我们预测每个关键点的额外偏移量,以学习将关键点从热图重新映射到输入图像。在基于回归的预测方法中,为了解耦左上角和右下角,我们沿着几何中心将真实框分成四个子真实框,并选择左上角和右下角子真实框来监督回归过程。以左上角框的回归为例,我们选择一些在左上角子真实框内的特征点,每个选定的特征点用于预测两个向量,这些向量指向左上角和中心关键点。此外,我们为每个选定的特征点分配一个类别标签来监督分类过程。我们应用常见的无锚点检测方法来训练网络预测子边界框(例如FCOS[56]和RepPoints[8])。此外,我们强调子边界框的回归精度高于完整边界框的精度,因为表I显示像FCOS[56]这样的无锚点方法在长距离回归上精度较低,而我们的子边界框有效地将回归距离减半。

在推理过程中,回归的向量作为线索,用于识别相应热图中最近的键点,以细化键点的位置。这种方法成功减少了由热图引入的误报角点。接下来,每个有效的键点对用于定义一个边界框。这里,有效表示两个键点属于同一类别(即,相应类别的左上角和右下角子边界框),并且左上角点的x和y坐标小于右下角点的坐标。最后,我们为每个边界框定义一个中心区域,并验证中心区域是否包含预测的中心关键点。如果且仅当在中心区域检测到两个中心关键点时,才保留边界框,否则删除边界框。边界框的分数被替换为点的平均分数,即左上角、右下角和中心关键点的分数。
  1. 中心区域定义:边界框中的中心区域大小会影响检测结果。例如,中心区域较小会导致对小边界框的召回率降低,而中心区域较大则会导致对大边界框的精确度降低。因此,我们提出了一个基于边界框大小自适应调整的尺度感知中心区域。令 分别表示边界框左上角的坐标, 表示右下角的坐标。定义中心区域 ,令 分别表示中心区域左上角的坐标, 表示右下角的坐标。然后, 应满足以下关系:
其中 为奇数,决定中心区域 的尺度。在本文中,对于小于等于150尺度的边界框, 被设为3;对于大于150尺度的边界框, 被设为5。图4展示了 时的中心区域。我们可以使用上述公式确定尺度感知的中心区域,并验证中心区域是否包含中心关键点。

C. 丰富中心和角点信息

中心关键点和角点都与对象有严格的几何关系,但包含的对象视觉模式有限。我们以全监督的方式训练网络,以学习这些几何关系和有限的视觉特征来定位关键点。如果为中心关键点和角点引入更多的视觉模式,它们可以被更好地检测。
中心池化(Center Pooling) :对象的几何中心并不总是传达可识别的视觉模式(例如,人头包含强烈的视觉模式,但中心关键点通常位于人体中部)。为了解决这个问题,我们提出了中心池化来捕获更丰富和更可识别的视觉模式。图5(a)展示了中心池化的原理。中心池化的详细过程如下:主干网络输出一个特征图,为了确定特征图中的一个像素是否是中心关键点,我们需要找到水平和垂直方向上的最大值并将这两个值相加。中心池化有助于提高中心关键点的检测。
级联角池化(Cascade Corner Pooling) :角点经常位于对象外部,缺乏局部外观特征。CornerNet[30]使用角池化来解决这个问题。角池化的原理如图5(b)所示。角池化的目的是在边界上找到最大值以确定角点。然而,这种方法使角点对边缘敏感。为了解决这个问题,角点从对象的中心区域提取特征。级联角池化的原理在图5(c)中提出。级联角池化沿着边界寻找边界上的最大值,然后在最大边界值的位置内部的框中搜索内部最大值;然后,两个最大值相加。级联角池化允许角点获得对象的边界信息和视觉模式。

中心池化和级联角池化可以通过在不同方向应用角池化[30]来实现。图6(a)展示了中心池化模块的结构。为了确定特定方向上的最大值,例如水平方向,我们只需要顺序连接左右池化。图6(b)展示了级联顶部角池化模块的结构,其中白色矩形表示3×3卷积后跟批量归一化。

D. 训练和推理

训练 :我们在8个Tesla V100 (32 GB) GPU上训练CenterNet。对于单分辨率检测框架,我们的基线是CornerNet[30]。接下来,我们使用堆叠的沙漏网络(Hourglass)[43],层数分别为52和104,后者有两个沙漏模块,而前者只有一个。在[30]中对沙漏架构所做的所有修改都保留了。当我们使用Hourglass作为主干时,网络从头开始训练。此外,为了展示该框架可以推广到其他网络架构,我们研究了另一种主干,名为HRNet[54],[55],在特征提取过程中保持高分辨率表示。输入图像的分辨率是511×511,从而产生128×128的热图。我们使用[30]中呈现的数据增强策略来训练一个健壮的模型。Adam[26]用于优化训练损失:
其中 分别表示用于训练网络检测角点和中心关键点的焦点损失。 是角点的“拉”损失,用于最小化属于同一对象的嵌入向量之间的距离。 是角点的“推”损失,用于最大化属于不同对象的嵌入向量之间的距离。 损失[21],用于训练网络预测角点和中心关键点的偏移量。 分别表示相应损失的权重,分别设为0.1、0.1和1。






请到「今天看啥」查看全文