目标检测论文阅读:RepPoints v2算法笔记

标题:RepPoints v2: Verification Meets Regression for Object Detection
会议:NeurIPS2020
论文地址:https://dl.acm.org/doi/abs/10.5555/3495724.3496196
官方代码:https://github.com/Scalsol/RepPointsV2
作者单位:北京大学、微软亚洲研究院、之江实验室

文章目录

  • Abstract
  • 1 Introduction
  • 2 Related Works
  • 3 Verification Meets Regression for Object Detection
    • 3.1 A Brief Review of a Pure Regression Method: RepPoints
    • 3.2 Verification Tasks
      • 3.2.1 Corner Point Verification
      • 3.2.2 Within-box foreground verification
    • 3.3 A General Fusion Method
    • 3.4 RepPoints v2: Fusing Verification into RepPoints
    • 3.5 Extension to Other Detectors and Problems
  • 4 Experiments
    • 4.1 Implementation Details
    • 4.2 Ablation Study
    • 4.3 Comparison to State-of-the-art Methods
    • 4.4 Extension to Other Detectors and Applications
  • 5 Conclusion

Abstract

验证和回归是神经网络中两种常用的预测方法。每种方法都有自己的优点:验证可以更容易准确地推理,回归对连续的目标变量更加有效和适用。因此,仔细地将它们结合起来以利用它们的好处往往是有益的。在本文中,我们采用这一思想来改进SOTA的目标检测,特别是RepPoints。尽管RepPoints提供了高性能,但我们发现它严重依赖回归来进行目标定位,这给RepPoints带来了改进的空间。我们将验证任务引入到RepPoints的定位预测中,产生了RepPoints v2,在COCO目标检测基准上使用不同的主干和训练方法,比原始的RepPoints提供了约2.0 mAP的一致改进。RepPoints v2也通过单个模型在COCO test-dev上达到了52.1 mAP。此外,我们表明所提出的方法可以更普遍地提升其它目标检测框架以及实例分割等应用。

1 Introduction

神经网络预测的两种常用方法是验证和回归。虽然两者都可以驱使网络特征去拟合(fit)最终的任务目标,但两者的优势不同。对于目标定位问题,由于每个特征都与待验证目标在空间上对齐,因此验证可以更容易地推理。另一方面,回归往往更有效,它可以预测连续的目标变量,从而实现灵活的定位细化。
为了利用所有这些优点,早期的目标定位方法结合了验证和回归,首先通过验证几个锚框假设进行粗糙定位,然后通过回归框的偏移量来细化定位。这种结合方法被证明是有效的,并领导了当时SOTA的性能。然而,最近纯粹基于回归的方法,直接从每个特征图位置回归目标范围,可以表现出竞争力甚至更好,例如在比较具有代表性的回归方法RepPoints和RetinaNet时。
在这项工作中,我们检验了是否可以通过纳入验证方法学来增强纯粹基于回归的方法。我们观察到,当以某些方式使用时,验证被证明是有利的。在CornerNet中,特征图点被验证是否为边界框角点,与RetinaNet中验证锚框进行粗糙假设定位不同。这种验证的使用导致了明显更好的定位性能,如表1所示。这种差异可能是由于角点表示了真值目标框的精确空间范围,而锚框只给出了一个粗糙的假设。此外,角点验证中的每个特征都很好地对齐到对应点,而锚框验证中用于验证的中心特征距离边界区域很远。
在这里插入图片描述
为了提高基于回归的方法的性能,特别是RepPoints,我们寻求纳入有效且兼容的验证形式。然而,这两种方法处理的目标表示的粒度不同,即RepPoints中的整个目标和角点验证中的目标局部(角点),存在障碍。针对这一问题,我们提出在不影响中间表示的前提下,通过在主回归分支中仅在特征层和结果层添加辅助边路分支来建模验证任务。通过这些辅助边路分支,验证可以与回归融合,提供以下好处:通过多任务学习获得更好的特征,通过包含验证线索来增强特征,以及通过两种方法进行联合推理。这种融合简单、直观、通用,可以利用任何一种验证线索,并且不会破坏RepPoints算法的流程。
通过不同利用验证的技术,显著提高了RepPoints的定位和分类能力。最终得到的检测器RepPoints v2在COCO基准测试集上使用不同主干相对于原始RepPoints有约2.0 mAP的一致提升。使用单个ResNeXt-101-DCN模型在COCO目标检测test-dev集上也达到了52.1 mAP。
所提出的选择合适的验证任务并将其作为辅助分支引入回归框架的方法具有灵活性和通用性。它可以应用于RepPoints以外的目标检测框架,如FCOS。额外的角点和框内验证任务表明,在COCO test-dev上将原始的使用ResNet-50模型的FCOS检测器提高了1.3 mAP。该方法还可以应用于目标检测之外,如通过Dense RepPoints来实例分割,在COCO实例分割test-dev集上,使用ResNet-50模型,额外的轮廓和掩码验证任务将性能提高了1.3 mAP,达到38.9 mask mAP。

2 Related Works

基于验证的目标检测 早期基于深度学习目标检测方法采用多尺度滑动窗口机制来验证每个窗口是否为目标。基于角点/极值点的验证也被提出,4-d假设的验证被分解为验证2-d角点的子问题,使得假设空间被更完整地覆盖。这些方法通常包含一个亚像素偏移量分支(sub-pixel offset branch),通过回归来预测连续的角点坐标。然而,因此这主要处理了由于特征图相对于输入图像的分辨率较低而导致的量化误差,所以我们将这些方法视为基于我们的分类法则下的纯粹验证。
基于回归的目标检测 通过纯粹的回归实现目标检测可以追溯到YOLO和DenseBox ,在每个特征图位置回归4个框边界。虽然它们的简单性很吸引人,但由于回归目标的大位移、多个目标位于一个特征图bin中以及正负样本极度不平衡等问题,它们的精度往往有限。最近,通过特征金字塔网络(FPN)结构和focal loss来缓解这些问题后,基于回归的目标检测重新获得了关注,其性能与其它验证或混合方法相当甚至更好。我们的工作在这个方向上取得了进展,通过将验证方法应用到基于回归的检测器中,而不破坏其流程,并在很大程度上保持了原始检测器的便利性。我们的研究主要基于RepPoints检测器,但该方法一般也可以应用于其它基于回归的检测器。
混合方法。 大多数检测器是混合的,例如那些建立在锚或建议上的检测器。验证和回归方法相继被使用,提供了粗糙框定位的锚和建议首先被验证,然后通过回归进行细化以产生检测输出。回归目标通常处于相对较小的位移,可以很容易地推理。我们的工作展示了一种不同的混合方法,其中验证和回归步骤不是串行运行的,而大多数是并行运行,以更好地结合它们的优点。此外,本文利用更精确的角点验证任务来补充基于回归的方法。
多任务学习。 一些方法采用多任务学习,与基线相比观察到了普通的增益。Mask R-CNN中,在使用掩码标注进行训练时,观察box mAP的性能演变。类似地,Retinaface将关键点预测作为辅助任务,同样在主任务中观察性能增益。由于我们的工作旨在利用验证和回归的所有好处,因此我们提出的方法与多任务学习具有很高的相关性。然而,与这些方法不同的是,我们的贡献远远超出了多任务学习:我们提出了一个统一的通用框架,包含3种机制,以利用验证任务来协助回归方法。此外,我们的多任务学习不需要额外的标注。

3 Verification Meets Regression for Object Detection

3.1 A Brief Review of a Pure Regression Method: RepPoints

RepPoints采用纯粹的回归来实现目标定位。从特征图位置 p = ( x , y ) \bold{p}=(x,y) p=(x,y)开始,它用两个连续的步骤直接回归一组点 R ′ = { p i ′ = ( x i ′ , y i ′ ) } i = 1 n \mathcal{R}^\prime=\{\bold{p}_i^\prime=(x_i^\prime,y_i^\prime)\}_{i=1}^n R={pi=(xi,yi)}i=1n来表示目标的空间范围:
p i = p + Δ p i = p + g i ( F p ) ,      p i ′ = p i + Δ p i ′ = p i + g i ′ ( c o n c a t ( { F p i } i = 1 n ) ) (1) \bold{p}_i=\bold{p}+\Delta\bold{p}_i=\bold{p}+\bold{g}_i(F_{\bold{p}}),~~~~\bold{p}_i^\prime=\bold{p}_i+\Delta\bold{p}_i^\prime=\bold{p}_i+\bold{g}_i^\prime(\mathrm{concat}(\{F_{\bold{p}_i}\}_{i=1}^n))\tag{1} pi=p+Δpi=p+gi(Fp),    pi=pi+Δpi=pi+gi(concat({Fpi}i=1n))(1)其中, R = { p i = ( x i , y i ) } i = 1 n \mathcal{R}=\{\bold{p}_i=(x_i,y_i)\}_{i=1}^n R={pi=(xi,yi)}i=1n是中间的点集合表示; F p F_{\bold{p}} Fp表示位置 p \bold{p} p处的特征向量; g i \bold{g}_i gi g i ′ \bold{g}_i^\prime gi是由一个线性层实现的2-d回归函数。目标的边界框通过在点集合 R \mathcal{R} R R ′ \mathcal{R}^\prime R上应用一个转换函数 T \mathcal{T} T来获得,其中 T \mathcal{T} T被建模为min-max、partial min-max或者moment函数。
RepPoints中的直接回归使其成为一个无需锚的简单框架。虽然没有使用锚验证步骤,但它定位精度的性能并不比anchor-based检测器差,即RetinaNet,如表1所示。尽管如此,我们受回归和验证之间潜在的协同作用的启发,考虑以下问题:什么样的验证任务可以使基于回归的RepPoints受益?在不影响原始检测器的情况下,能否便利地将各种验证任务融合到RepPoints框架中?

3.2 Verification Tasks

我们首先讨论了一对可能有助于基于回归的定位方法的验证任务。

3.2.1 Corner Point Verification

两个角点,如左上角和右下角,可以确定边界框的空间范围,提供了一种通常由框的中心点和尺寸组成的4-d描述符号的替代。这在几种自底向上的目标检测方法中都有使用,总体上分类性能不如其它类型的检测器,但在目标定位方面明显更好,如表1所示。在后面的部分,我们展示了这个验证任务可以弥补基于回归的方法来获得更精确的目标定位。
角点验证通过将特征图中的每个点与一个分数相关联来进行操作,表示其作为角点的概率。预测一个额外的偏移量来产生连续的角点坐标,由于特征图相对于输入图像的分辨率较低,这些坐标最初是量化的,例如8×下采样。根据CornerNet的原始实现,在头部计算角点池化,使用focal loss来训练角点分数预测,使用smooth L1 loss来进行亚像素偏移量预测。在标签分配时,如果一个真值角点位于其特征bin中,则每个特征图点被标记为正,其它则被标记为负。在计算损失时,每个真值角点周围的负样本通过一个关于其到真值角点距离的逆高斯函数来被分配较低的权重。与CornerNet采用具有Hourglass结构的特殊主干结构和单层高分辨率特征图(原始图像4×降采样)不同,其它最近的目标检测器大多采用具有多层特征图的FPN主干结构。我们调整角点验证以使用多层特征图,例如RepPoints中的C3-C7设置。具体来说,所有的真值角点被分配到每个特征图层,这与基于FPN的目标检测中通常按照目标尺寸进行分配的做法相反。我们发现,尽管忽略了尺度标准化问题,这种方式分配的表现略好,可能是由于训练时每一层的正样本更多了。它也比在最高分辨率的单个特征图层,即C3,上进行训练,然后将预测的分数/偏移量copy/resize到其它层,表现得更好。

3.2.2 Within-box foreground verification

另一个可能有益于基于回归的目标检测器的验证任务是验证特征图点是否位于目标框内。这种框内前景验证任务在目标框内均匀地提供定位信息,而不是关注在框极值上的角点。因此,它在描述目标边界方面不如角点精确,但在给定粗糙定位尺度的情况下可能有利于目标检测器。FCOS中的中心性预测任务与我们的框内前景验证任务有一定的相似性,但它们是针对不同的作用设计的。FCOS的中心性旨在调整目标分数和加权回归损失,而框内验证旨在弥补主回归分支。
我们还通过使用非二值类别感知(non-binary category-aware)前景热图来区分不同的目标类别。具体来说,对于 C C C个目标类别,有一个 C C C-通道的输出,每个通道表示一个特征点在对应目标类别中的概率。与角点验证相同,每个真值目标被分配到FPN主干的每一层。
标准化的focal loss。 在训练时,原始的focal loss会让较大目标的贡献显著多于较小目标,导致小目标学习的前景分数较差。为了解决这个问题,提出了一个标准化的focal loss,它通过特征图中同一目标框内的正样本点总数对每个正样本特征图点进行标准化。对于负样本点,标准化的损失使用正样本点的个数作为分母。

3.3 A General Fusion Method

在本节中,我们结合这些验证形式来提高基于回归的方法的性能。一般来说,基于回归的方法以自顶向下的方式检测目标,所有的中间表示都对整个目标建模。由于这两个验证任务处理的都是目标局部,如角点或前景点,其目标表示的粒度不同,使得两种方法的融合变得复杂。
为了解决这个问题,我们提出通过辅助边路分支,以不影响其中间表示的方式与主回归分支融合来建模验证任务,如图1所示。融合只发生在特征层和结果层。有了这些辅助边路分支,检测器可以获得几个好处:
在这里插入图片描述
通过多任务学习获得更好的特征。 辅助验证任务在学习中提供了更丰富的监督,产生了更强的特征,提高了检测精度,如表4所示。注意,这种多任务学习不同于Mask R-CNN。在Mask R-CNN中,边界框目标检测得益于目标掩码预测任务,但是需要对目标掩码进行额外标注。相比之下,我们的额外辅助任务从只有目标边界框标注的情况下自动生成,可以应用于仅有边界框标注可用的场景。
特征增强来更好地回归。 验证输出包含有关角点位置和前景区域的强大线索,这将有利于回归任务。由于在每个FPN层上这些验证任务的预测输出与用于回归的特征图具有相同的分辨率,我们通过在原始特征图和验证输出经过一个1×1卷积层产生的嵌入特征图之间应用加法运算来直接将它们融合。嵌入的目的是将任一验证输出投射到与原始特征图相同的维度上,并且在特征图层间共享。注意,对于验证输出,在嵌入卷积层中输入一个与反向传播分离的副本,以避免影响该验证任务的学习。
通过两种方法进行联合推理。 特征级的融合隐式地帮助目标定位。我们还显式地以一种联合推理的方法利用角点预测的验证输出和基于回归的定位,利用了两者的优势。具体来说,通过角点验证,在一个小邻域内的亚像素角点定位通常比主回归分支更准确,但由于缺乏目标的全貌,在判断其是否为真实角点方面较差。相反,主回归分支对后者的定位效果更好,但在精确的亚像素定位方面较差。为了结合两者的优势,我们将主回归分支预测得到的边界框的一个角点 p t \bold{p}^t pt进行细化:
r e f i n e ( p t ) = a r g   m a x { q t ∣ ∣ ∣ q t − p t ∣ ∣ ≤ r } s ( q t ) (2) \mathrm{refine}(\bold{p}^t)=\underset{\left\{\bold{q}^t\big|||\bold{q}^t-\bold{p}^t||≤r\right\}}{\mathrm{arg~max}}s(\bold{q}^t)\tag{2} refine(pt)={qt ∣∣qtpt∣∣r}arg maxs(qt)(2)其中, t t t表示角点类型(左上或者右下); q t \bold{q}^t qt是由角点预测分支在特征图位置产生的亚像素角度; s ( q t ) s(\bold{q}^t) s(qt)是验证分数; r r r是邻域阈值,默认设置为1。不同于在训练中我们将真值角点分配到特征金字塔的多个层C3-C7,在联合推理中只使用C3的角点热图进行搜索。因此 r = 1 r=1 r=1对应一个8像素邻域。我们发现使用最高分辨率的热图比使用对应的热图层表现更好。我们推测其原因是由于更高的分辨率会产生更准确的角点预测结果,正好符合CornerNet中的观察结果。因此这种设计选择更适合结果级的(result-level)融合。注意,这种结果级的融合只针对角点验证任务而设计。
该融合方法灵活通用,可以使用任何一种验证线索,避免了与主分支中的中间表示交互,对验证目标的类型要求较低。它也不会打乱主分支的整体流程,在很大程度上保持了建立在主分支上的原始检测器的便利性。

3.4 RepPoints v2: Fusing Verification into RepPoints

在这里插入图片描述
RepPoints是纯粹基于回归的目标检测器。我们现在用不同形式的验证任务来弥补它,特别是针对角点和框内前景。在3.1节中,我们简要回顾了RepPoints的工作流程。通过两次连续的回归过程预测一组具有代表性的点来表示目标,然后使用转换函数将这些点转换为边界框。为了增加RepPoints与辅助验证任务的兼容性,我们首先对RepPoints做了一个小修改,使得预测点集合 R \mathcal{R} R的前两个点现在显式地表示左上角点和右下角点。我们称之为显式-角点(explicit-corners)变体。这些角点代替了原始RepPoints中使用的转换函数,使得边界框由这些角点定义,而不是由点集合上的min-max或momentum运算。有了角点,转换函数就变成了
T ( R ) = ( x 1 + x 2 2 , y 1 + y 2 2 , x 2 − x 1 , y 2 − y 1 ) (3) \mathcal{T}(\mathcal{R})=\left(\frac{x_1+x_2}{2},\frac{y_1+y_2}{2},x_2-x_1,y_2-y_1\right)\tag{3} T(R)=(2x1+x2,2y1+y2,x2x1,y2y1)(3)其中,4个数字分别表示 x x x中心、 y y y中心、宽度和高度。在RepPoints的这一显式-角点变体中,我们加入辅助边路分支进行验证。具体来说,我们将定位头第3个卷积层之后的特征图作为输入,以重用现有的头来节省计算量。如图2所示,在这个特征图上应用一个3×3的卷积层,随后是用于两个验证任务的两个小的子网络。角点子网络由一个角点池化层和一个1×1的卷积层组成,用于预测热图分数和亚像素偏移量。前景子网络是单个的1×1卷积层,用于预测前景分数热力图。在训练中,我们采用了多任务损失:
L = L R e p P o i n t s + λ 1 L c o r n e r + λ 2 L f o r e g r o u n d (4) L=L_{\mathrm{RepPoints}}+\lambda_1L_{\mathrm{corner}}+\lambda_2L_{\mathrm{foreground}}\tag{4} L=LRepPoints+λ1Lcorner+λ2Lforeground(4)其中,损失权重 λ 1 = 0.25 \lambda_1=0.25 λ1=0.25 λ 2 = 0.1 \lambda_2=0.1 λ2=0.1
将3.3节的通用融合方法定制到RepPoints,我们使用角点验证进行多任务学习、特征增强和联合推理。而前景验证只用于多任务学习和特征增强。得到的检测器命名为RepPoints v2。

3.5 Extension to Other Detectors and Problems

用于RepPoints的融合方法也可以改进其它检测器,如FCOS。由于FCOS具有与RepPoints相似的分类和定位头,因此RepPoints v2的融合可以直接应用于FCOS。具体来说,在第3个卷积层之后的特征图上应用角点和前景验证头。将验证输出图融合到主分支中,通过3.3节所述的联合推理得到最终的回归结果。
该融合方法还可以扩展到其它任务,如通过基于回归的方法Dense RepPoints来实例分割。由于有额外的目标掩码标注,因此可以使用更细粒度的验证格式,如目标轮廓验证和类别感知的语义分割。如表7所示,额外的验证方法为COCO test-dev集上的Dense RepPoints带来了1.3 mask AP增益。

4 Experiments

介绍了实验用的数据集。

4.1 Implementation Details

介绍了一些实现细节。

4.2 Ablation Study

在这里插入图片描述
显式-角点变体的有效性,具体的实验结论可以参照原文。
在这里插入图片描述
不同验证形式的影响,具体的实验结论可以参照原文。
在这里插入图片描述
不同融合类型的影响,具体的实验结论可以参照原文。
联合推理中超参数 r = 1 r=1 r=1时效果最佳,具体的实验结论可以参照原文。
介绍了一些复杂度分析和运行时间,具体的实验结论可以参照原文。
在这里插入图片描述
使用更强大的主干的效果,具体的实验结论可以参照原文。

4.3 Comparison to State-of-the-art Methods

在这里插入图片描述
和SOTA的对比实验,具体的实验结论可以参照原文。

4.4 Extension to Other Detectors and Applications

在这里插入图片描述
直接应用到FCOS上的效果,具体的实验结论可以参照原文。
在这里插入图片描述
在实例分割上的效果,具体的实验结论可以参照原文。

5 Conclusion

在本文中,我们提出了RepPoints v2,通过多种方式融合验证任务来增强原有的基于回归的RepPoints。为了增加与辅助验证任务的兼容性,提出了RepPoints的新的变体。得到的目标检测器在不同的主干和训练方式下表现出比原始RepPoints一致的改进。它在COCO test-dev上也达到了52.1 mAP。此外,这种方法可以很容易地迁移到其它检测器和实例分割领域,从而将基础的检测器/分割器的性能提高相当大的幅度。


http://www.niftyadmin.cn/n/152987.html

相关文章

Java知识复习(十九)Linux

一、linux查看文件用的命令是什么 Linux中命令cat、more、less均可用来查看文件内容cat是一次性显示整个文件的内容,还可以将多个文件连接起来显示,它常与重定向符号配合使用,适用于文件内容少的情况;more和less一般用于显示文件…

常见的限流

限流的主要用途 限流的主要用途是保护系统,防止因为高并发请求而导致系统崩溃、过载或响应变慢等问题。 通过限制单位时间内的请求量,可以有效地控制系统的负载,提高系统的稳定性和可靠性。 限流的另一个重要作用是保障服务质量&#xff0c…

工业互联网概述

工业互联网概述工业互联网的定义工业互联网的范畴工业互联网的基础云计算边缘计算工业互联网的关键技术工业互联网的安全工业互联网的应用案例云机器人资源管理优化工业互联网的定义 最早由通用电气于2012年提出,随后美国5家行业龙头企业(AT&T、思科…

暴涨1500w播放热门出圈,吸引1.19亿B站用户关注

- 导语B站作为一个年轻人聚集的内容社区,在一众脑洞大开的用户中自然容易流行起圈层独有的“梗”,玩梗造梗已经成为B站用户日常追捧的娱乐之一,那么“蹭梗”就是流量累积的良机。飞瓜数据(B站版)盘点近期B站热梗&#…

二叉树习题

文章目录1.单值二叉树2.相同的树3.对称二叉树3.二叉树的最大深度1.单值二叉树 bool isUnivalTree(struct TreeNode* root) {if(rootNULL)//判空 如果root为空指针那么也就是说比较结束了,所以返回true{return true;}if(root->left&&root->left->va…

洗地机什么牌子最好?洗地机测评排行榜

随着科技的进步,大家对生活品质的要求也越来越高了,空闲时候做家务,也想尽量法子解放自己的双手,让自己有更多的精力放在看书放松、个人提升上,所以很多高科技清洁家电也应运而生了。近年来大火的集吸、拖、洗、烘为一体洗地机就是很好的一个“懒人”清洁工具,能给做…

leetcode:删除有序数组中的重复项

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分…

Http协议端口状态码

一些常见的状态码为: 代码 说明 100 (继续) 请求者应当继续提出请求。 服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议&#xf…