[论文翻译]Sparse R-CNN: End-to-End Object Detection with Learnable Proposals

Sparse R-CNN:具有可学习提案的端到端目标检测

摘要

我们提出稀疏R-CNN,一个纯稀疏检测图像物体的方法。现有目标检测的工作严重依赖于密集候选对象,比如在 H × W H×W H×W大小的图像特征图的所有网格预定义 k k k个锚框。但在我们的方法中,一个固定稀疏的可学习目标提案集合,总长为 N N N,供给目标石鳖头来分类和定位。通过消除 H W k HWk HWk个(多达数十万)手动设计的候选对象到N个(如100)可学习提案,稀疏R-CNN彻底避免了所有与候选目标设计和多对一标签分配的工作。更重要的是,最终预测直接输出,并不需要NMS后处理。Sparse R-CNN在具有挑战性的COCO数据集上时,与成熟的检测器基准相当,证明了其准确率、运行时间,以及训练收敛性能。比如,使用ResNet-50 FPN模型,在标准 3 × 3× 3×训练计划中达到45.0 AP,运行时间22FPS。我们希望此工作能够激发人们重新思考目标检测中密集先验的习惯。

code available:https://github.com/PeizeSun/SparseR-CNN

1 引言

目标检测目的在于定位图像中一系列目标,并识别出它们的类别。密集先验总是检测器的成功基石。在传统计算机视觉中,滑窗范例,是一个分类器应用在密集图像网格中,引导了数十年的检测方法。现代主流one-stage检测器,在密集特征图网格中预定义了标记,比如锚框,如图1a,或参考点,再预测对象边框的相对缩放和偏移,以及相应类别。尽管two-stage管道适用于一系列稀疏的提案框,但它们的提案生成算法仍然建立在密集候选上,如图1b。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dk5TcjU6-1627291910111)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9bd57b2e-28eb-4fde-803d-203d078ef9e9/Untitled.png)]

图1 不同目标检测管线的比较。(a)在密集检测其中,枚举所有图像网格中的 H W k HWk HWk个目标候选,比如RetinaNet。(b)在密集-稀疏检测器,它们从密集 H W k HWk HWk个目标候选中选了一个 N N N的小候选集,然后用池化操作从对应区域中提取特征,如Faster R-CNN.。©我们提出的稀疏R-CNN,直接提供一组少量的 N N N个可学习提案。这里 N ≤ H W k N≤HWk NHWk

这些成熟的方法在概念上是直观的,并有灵活表现,同时训练和推理时间都很快。除了它们巨大的成功,重要的是它们密集先验检测器会遇到的一些限制:1)这些管道经常产生冗余和接近重复的结果,所以使NMS后处理称为一个不可或缺的一部分。2)训练阶段的多对一标签分配问题使得网络对启发式分配规则敏感。3)最终性能受尺寸、横纵比、锚框数量(或参考点密度)和提案生成算法的影响非常大。

尽管密集约定在目标检测器中广泛认可,但一个自然要问的问题是:设计一个稀疏检测器有可能么?最近,DETR建议将目标检测重新表述为直接和稀疏集预测问题,这样输入仅为100个可学习的目标查询。最终输出的预测集合不需要任何手动设计后处理。尽管它的框架简单奇妙,DETR需要每个目标查询来与整张图像内容交互。这种密集的属性不仅减缓了它的训练收敛性,同时阻碍它建立一个全局稀疏的目标检测管道。

我们相信稀疏属性应该包括两个方面:稀疏框、稀疏特征。稀疏框指少量起始框(比如100)足以检测一张图中所有对象。稀疏特征指每个框的特征不需要与整张图像的其他特征互动。基于这样的想法,DETR不是一个完全稀疏的方法,因为每个查询对象需要与整张图的密集特征互动。

文本中,我们提出Sparse R-CNN,一个完全稀疏的方法,不用在所有(密集)图像网格上枚举目标位置候选对象,也不用与全局(密集)图像特征进行对象查询交互。如图1c所示,目标候选由一组固定的可学习边界框给出,由 4-d 坐标表示。以COCO数据集为例,总共需要100个框和400个参数,而不是区域提案网络(RPN)那样,数十万候选框的预测一个。这些稀疏候选被当作提案框使用RoIPool或者RoIAligh来提取RoI的特征。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VTUU4u1z-1627291910114)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6ebf5deb-0fa3-46d3-9bd9-912ee7c98003/Untitled.png)]

图2 RetinaNet,Faster R-CNN,DETR和Sparse R-CNN在COCO val2017上的收敛曲线。Sparse R-CNN就训练效率和检测质量来说,已经达到可竞争的水平。

可学习提案框是图像中潜在目标位置的统计信息。然而,4-d坐标仅仅是一个粗略的目标表示,它缺少了大量的细节信息,比如位姿和形态。这里我们介绍另一个关键概念—proposal feature提案特征,这是一个高维(如256)潜向量。与粗略边框相比,期望用它编码丰富的实例特性。特别地,提案特征为其专属目标识别头产生一系列自定义参数。我们称此操作为动态实例交互头,因为它与最近的动态方案有些相似。与[30]共享的2个fc层相比,我们的头更加的灵活,并且在准确性方面具有显着领先优势。我们在实验中表明,以独特的提案特征而不是固定参数为条件的头部公式实际上是 Sparse R-CNN 成功的关键。提案框和提案特征都与整个网络中的其他参数一起随机初始化和优化。

Sparse R-CNN 最显着的特性是它一直以来的sparse-in sparse-out范式。初始输入是一组稀疏提案框和提案特征,以及一对一动态交互实例。该管道中存在的既不是密集候选,也不与全局(密集)特征交互。这个纯稀疏使得Sparse R-CNN成为R-CNN家族中一个新的分支。

Sparse R-CNN证明了其与成熟的检测器基准相当的准确率、运行时间,以及训练收敛性能、比如,使用ResNet-50 FPN在标准 3 × 3× 3×训练计划中达到了45.0 AP,运行时间22FPS。据我们所知,提出的稀疏R-CNN是第一项证明了相当稀疏的设计是可以的工作。我们希望该工作能够激励人们重新思考目标检测中密集先验的必要性,以及探索新一代目标检测器。

2 相关工作

Dense method。很多年来,滑动窗口范例在目标检测中非常受欢迎。受限于分类特征提取技术,几十年来性能趋于平稳,应用场景有限。深度卷积神经网络的发展,培养了通用目标检测,从而显著改善了性能。主流管道之一的是one-stage检测器,它一次性预测锚框的类别与位置,密集覆盖空间位置,尺度,还有横纵比,如OverFeat,YOLO,SSD和RetinaNet。最近,提出的无锚算法通过用参考点替换手工制作的锚盒使得管道更加简单。以上所有方法都基于密集候选对象,每个对象均直接分类回归。根据预定义的原则,将这些候选对象在训练时间内分配给GT对象框,例如,锚点是否与其对应的地面实况具有更高的交叉联合 (IoU) 阈值,或者参考点是否落在在其中一个对象框中。并且,在推理阶段需要NMS后处理来移除冗余预测。

Dense-to-sparse method。Two-stage检测器是另一种主流管道,并一直在主导近些年现代目标检测。该样式可以被看作是密集检测器的扩展。它首先从密集区域候选里获得一组稀疏前景提案框,然后从每个提案中提取位置,并预测类别。区域提案算法在第一阶段(two-stage的)中有着很重要的地位,比如R-CNN中的Selective Search,Faster R-CNN中的Region Proposal Networks(RPN)。与密集管道相似,它也需要NMS后处理和手动设计标签分配。几十万的候选中只有一小部分的前景提案,所以这些检测器被概括为dense-to-sparse methods。

最近,提出的DETR不需要任何手动设计部分就直接输出预测,达到了有前途的表现。DETR使用了一组稀疏目标查询,来与全局(密集)图像特征交互,这样看来,它也可以看作是dense-to-sparse公式。

Sparse method。稀疏目标检测有可能消除设计密集候选对象的工作,但通常落后于上述密集检测器的准确度。G-CNN可以被看作是这些算法的先导。它使用一个多尺度规则网络覆盖整张图作为开始,并迭代更新覆盖的框,分类物体。这种手工设计的常规先验显然是次优的,无法实现最佳性能。相反,我们Sparse R-CNN应用可学习提案,达到了更好的表现。同时,Deformable-DETR限制每个对象查询关注参考点周围的一小组关键采样点,而不是特征图中的所有点。我们希望稀疏方法可以作为可靠基准,帮助简化目标检测领域的未来研究。

3 Sparse R-CNN

Sparse R-CNN框架的关键思想是用一组少量的提案框(如100)来代替RPN中几十万候选。管道如图3所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K27ZR3G9-1627291910117)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b4cc2788-a645-4218-a6b0-df069ae758ea/Untitled.png)]

图3 Sparse R-CNN管道的整体。输入包含一张图,一组提案框和提案特征,后两者为可学习参数。骨干提取特征图,每一个提案框和提案特征进入专门动态头来产生目标特征,最终输出类别和位置。

Sparse R-CNN是一个简单、一体化网络,包括骨干网、一个动态实例交互头,和两个特定任务预测层。一共有3个输入,一张图、一组提案框和提案特征。后两者是可学习的,能与网络中其他参数一起优化,我们将在本章详细描述这些组件。

Backbone。采用基于ResNet结构的Feature Pyramid Network(FPN)特征金字塔,作为骨干网络从原图中产生多尺度特征图。我们构建 P 2 P2 P2- P 5 P5 P5层的金字塔,以 l l l表示金字塔层数, P l P_l Pl的分辨率比输入低 2 l 2^l 2l。所有金字塔层都有 C = 256 C=256 C=256通道。更多细节请看[22]。事实上,Sparse R-CNN有可能从更复杂的设计中受益,以进一步提高其性能,比如堆叠编码层和可变形卷积网络,这是最近一项工作Deformable-DETR中做的。然而,我们的设置向Faster R-CNN对齐,以显示我们方法的简单性和有效性。

Learnable proposal box。使用一组固定小数目的可学习提案框( N × 4 N×4 N×4作为区域提案,而不使用RPN的预测。这些提案框用4-d的参数(范围 ∈ [ 0 , 1 ] \in [0,1] [0,1])表示,分别是归一化的中心坐标,高,和宽。提案框的参数在训练时使用反向传播更新。由于可学习属性,我们在实验中发现初始化的影响很小,所以使得框架更加的灵活。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ok5ggE0i-1627291910120)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/53de26e7-4b30-4033-b33f-b908c0e11cbb/Untitled.png)]

图4 动态实例互动的伪代码,第k个提案特征产生对应第k个RoI的动态参数。bmm:批量矩阵乘法(batch matrix multiplication);linear:线性映射。

概念上,这些可学习提案框是训练集中潜在目标位置的统计,可以被看作不考虑输入下,图像中最优可能包含目标区域的初始猜想。然而,RPN产生的提案与当前图片强相关,并提供了粗略的目标位置。我们重新思考,觉得第一阶段的定位对于后续阶段细化框位置是非常奢侈的。相反,一个合理的统计能已经可以当作候选了。这样看来,Sparse R-CNN能被归类成一个从完全密集到密集-稀疏到完全稀疏的目标检测器范例的扩展。如图1。

Learnable proposal feature。尽管4-d提案框是一个简要、明确的描述目标的表达,但它只提供一个粗略的目标位置信息,损失了大量的细节信息,比如位姿和形态。这里,我们介绍另一个概念叫proposal feature ( N × d ) (N×d) (N×d),这是一个高维(e.g.256)隐向量,并且它用于编码丰富的实例特性。提案特征的数量与框相同,接下来我们会讨论如何使用它。

Dynamic instance interactive head。给 N N N个提案框,Sparse R-CNN首先使用RoIAlign操作来从每个框中提取特征。然后每个框特征将会被预测头产生最终预测。受动态算法的影响,我们提出了动态实例交互头。每个RoI特征输入到它自己专属的目标定位和分类头中,其中每个头都以特定的提案特征为条件。

图4说明了动态实例交互。在我们的设计中,提案特征和提案框是一一对应的。对于 N N N个提案框,需要采用 N N N个提案特征。每个RoI特征 f i ( S × S , C ) f_i(S×S,C) fi(S×S,C)将于对应的特征 p i ( C ) p_i(C) pi(C)互动来滤除无效bins,输出最终目标特征 ( C ) (C) (C)。对于轻量设计,我们使用两个连续的 1 × 1 1×1 1×1卷积+ReLU,来实现交互处理。两个卷积层的参数由对应提案特征产生。

只要效率的并行操作支持,交互头的实施细节并不重要。最终回归预测是由一个3层感知计算的,分类预测是由一个线性映射层实现的。

我们也采用了迭代结构和自注意模块来更好的改善性能。对于迭代模块,最新产生的目标框和目标特征将做为迭代处理中下一阶段的提案框和提案特征。由于稀疏特性和轻量动态头,它只引入了边缘计算开销。在动态实例交互之前,自注意力模块应用在目标特征组中找出目标之间的联系。我们注意到[15]也用了自注意模块。然而,它除了需要目标特征外,还需要几何属性和复杂的秩特征。我们的模型相对更加简单,只需要目标特征作为输入。

Set prediction loss。Sparse R-CNN将一组预测损失用在固定尺寸的分类和框坐标的预测上。基于集合的损失在预测和真实对象之间产生最佳二分匹配。匹配损失的计算定义如下:

L = λ c l s ⋅ L c l s + λ L 1 ⋅ L L 1 + λ g i o u ⋅ L g i o u L=\lambda_{cls}·L_{cls}+\lambda_{L1}·L_{L1}+\lambda_{giou}·L_{giou} L=λclsLcls+λL1LL1+λgiouLgiou

其中, L c l s L_{cls} Lcls是预测分类和GT类别标签的焦点损失[23], L L 1 L_{L1} LL1 L g i o u L_{giou} Lgiou分别是预测框与GT框的归一化中心坐标和高宽的L1损失和广义IoU损失。 λ c l s , λ L 1 \lambda_{cls},\lambda_{L1} λclsλL1 λ g i o u \lambda_{giou} λgiou是每个组件的相关系数。除了仅在matched pairs上执行之外,训练损失与匹配损失相同。最终损失是训练批次中被目标总数归一化后的所有对之和。

自从多对一匹配出现,R-CNN家族均一直被标签分配问题所困扰。这里,我们提供一种新可能,直接避开多对一匹配,并引入一对一匹配和基于集合的损失。这是一个探索端到端目标检测的新尝试。

4 实验

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vNBmBwGx-1627291910123)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/18a5e99b-1af8-4d4c-8d78-5b8c2dc2012e/Untitled.png)]

表1 不同目标检测在COCO 2017 val集上的比较。第一部分是Detectron2或其论文的结果。“*”指带有300个可学习提案框并随机剪裁训练样本增强方式的模型,与Deformable DETR相似。运行时间用NVIDIA Tesla V100 GPU测试。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lfDleVyM-1627291910124)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/0116036f-002e-4736-8246-b078b60b133c/Untitled.png)]

表2 不同目标检测在COCO 2017 test-dev集上的比较。第一部分展示了原始论文的结果。“TTA”表示test-time augmentation。遵守[47]配置。

Dataset。我们的实验在有挑战性的MS COCO基准上进行,使用了标准目标检测度量。所有模型均在COCO train2017上训练(约118k张图),在val2017上评估(5k张图)。

Training details。ResNet-50用作骨干网。优化器是带有0.0001权重衰减的AdamW。最小的batchsize为16,所有模型用8个GPU训练。默认训练计划为36个epochs,初始 l r = 2.5 × 1 0 − 5 lr=2.5×10^{-5} lr=2.5×105,在 e p o c h = 27 epoch=27 epoch=27 e p o c h = 33 epoch=33 epoch=33时, l r lr lr除以10。骨干网的初始化使用ImageNet的预训练权重,其他新加入的层使用Xavier方法初始化。数据增强包含随机水平尺度抖动缩放输入图像,这样最短边至少480,最多800像素,而最长边最多1333。遵循[3,49], λ c l s = 2 \lambda_{cls}=2 λcls=2 λ L 1 = 5 \lambda_{L1}=5 λL1=5 λ g i o u = 2 \lambda_{giou}=2 λgiou=2。提案框,提案特征,还有迭代数的默认数量为100,100,6。为了稳定训练,梯度在迭代框架的每个阶段都被阻塞在提案框中,除了初始框。

Inference details。Sparse R-CNN的推理流程非常简单。给一个输入图像,Sparse R-CNN直接预测100个与其分数相关的框。分数表示每个框包含目标的可能性。评估中,我们不带后处理直接用这100个框。

4.1 主要结果

我们提供两个版本的Sparse R-CNN,与其他不同检测器公平的比较如表1。第一项采用了不带随机裁剪增强操作的100个可学习提案框,用于与主流目标检测器作比较。e.g. Faster R-CNN和RetinaNet。第二项利用了带有随机裁剪增强操作的300个可学习框,用于与DETR系列模型作比较。

如表1所示,通过大量计算,Sparse R-CNN在成熟主流检测其中表现最好,比如RetinaNet和Faster R-CNN。令人惊讶的是,基于ResNet-50的Sparse R-CNN达到了42.8 AP,这已经能与基于ResNet-101的Faster R-CNN的准确率竞争。

我们注意到DETR和Deformable DETR通产使用更强的特征提取方法,比如堆叠的编码层和可变形卷积。Sparse R-CNN更强的实现被用来与这些检测器公平地比较。Sparse R-CNN表现出更高的准确率,即使使用简单的FPN作为特征提取方法。并且,Sparse R-CNN在小目标上与DETR比,达到了更好的检测性能(26.7 AP vs. 22.5 AP)。

Sparse R-CNN的训练收敛速度是DETR的10倍,如图2。从被提出,DETR一直都有收敛慢的问题,这促使了Deformable DETR的产生。与Deformable DETR相比。Sparse R-CNN在准确性上展示了更好的性能(45.0 AP vs. 43.8 AP)和更短的运行时间(22FPS vs. 19FPS),以及更短的训练计划(36 epochs vs. 50 epochs)。

Sparse R-CNN的推理速度与其他检测器差不多。我们发现带有100提案框的模型运行速度为22FPS,而带有300提案框的仅下降1FPS,为22FPS。多亏了轻量设计的动态实例交互头。

表2比较了Sparse R-CNN和其他方法在COCO test-dev集。使用ResNet-101为骨干网,Sparse R-CNN在没有花哨功能情况下达到了46.9 AP,在带有DCN情况下达到了48.9 AP。随着额外测试时间增加,Sparse R-CNN达到了51.5 AP,与SOTA方法平分秋色。

4.2 模块分析

在本章节,我们分析了Sparse R-CNN各个组件。所有的模型均基于ResNet50-FPN骨干,100可学习提案,3x训练计划,除非另外标注。

Learnable proposal bos。从Faster R-CNN开始,我们天真地使用一组稀疏可学习提案代替RPN,结果性能从40.2 AP(表1 行3)下降到18.5(表3)。我们发现并没有显著改进即使更多全连接层堆叠起来。

Iterative architecture。迭代更新框是一个直观的方法改进性能。然而,我们发现简单的串联结构并不能产生很大差别,如表4。我们分析原因是,与改善后定位目标边界的提案框相比,我们情况中的候选框非常粗略,这就很难优化。我们发现一个框的目标物体通常在整个迭代过程中都一致的。因此,前一阶段的物体特征可以重复使用来作为下一阶段的提示,比如,物体特征编码了丰富信息像物体姿势和位置。为此,我们拼接前一阶段的物体特征和现阶段的。重复使用特征这一小小的变化,导致了在原始串联结构上产生了巨大的收益—11.7 AP。最终,迭代框架带来13.7 AP 改善,如表3第二行所示。

Dynamic head。动态头以不同于上述迭代框架中的方式,使用前一阶段的目标特征。不是简单的拼接,而将前一阶段的目标特征先被自注意力模块处理,然后被当作提案特征来实施现阶段的实例交互。自注意模块用于找出一组目标特征中物体之间的联系。表5展现了自注意和动态实例交互的优势。最终,Sparse R-CNN达到了42.3 AP的准确率表现。

Initialization of proposal boxes。密集检测头总是严重依赖于目标候选的设计,然而,Sparse R-CNN的目标候选是可学习的,所以避免了所有人为设计锚框工作。但是,需要关心的是,提案框的初始化在Sparse R-CNN中是非常重要的一点。这里我们调研了不同初始化提案框方法的影响:

  • “Center”指所有提案框一开始都位于图像的中心,高度和宽度设置为图像大小的0.1。
  • “Image”是指所有提案框都被初始化为整个图像大小。
  • “Grid”表示提案框被初始化成图像中的规则网格,这恰好是G-VNN的最初框。
  • “Random”指提案框的中心、高、和宽使用高斯分布随机初始化。

从表6,我们展示了Sparse R-CNN的最终性能对于提案框的初始化是相对稳定的。

Number of proposals。提案框的数量很大程度影响密集检测器和稀疏检测器。原始Faster R-CNN使用300个提案。接着它将提案数增加到2000,并得到了更好的表现。我们也研究了Sparse R-CNN提案框数的影响,如图7。增加提案数从100到500,使得连续的性能提高,表示我们的框架容易使用在不同的情况下。然而,500提案框的训练时间更长,所以我们使用100和300作为主要配置。

Number of stages in iterative architecture。迭代架构是一个广泛使用的技术来改善目标检测性能的,尤其对于Sparse R-CNN。表8展示了迭代架构中不同阶段数的影响。没有迭代架构,性能只有21.7 AP。考虑到第一阶段的输入提案是可能对象位置的猜测,这个结果并不令人意外。增加到2阶段带来了14.5 AP的增长,达到了有竞争力的36.2 AP。逐渐增加阶段数目,性能在6阶段饱和。所以选择6阶段作为默认配置。

Dynamic head vs. Multi-head Attention。如Sec. 3部分所讨论,动态头使用提案特征来过滤RoI特征,并最终输出目标特征。我们发现多头注意力模块提供另一种实例交互的可能实施方法。我们在表9执行了比较实验,它的性能下降了6.6 AP。与线性多头注意力比较,我们的动态头更加的灵活,其参数取决于其特定的提议特征,并且更容易引入非线性容量。

Proposal feature vs. Object query。DETR提出的物体查询与提案特征有相似的设计。这里我们比较了DETR中的物体查询与我们的提案特征。如[3]中讨论,物体查询是一个学习位置编码,引导解码器与图像特征图和空间位置编码之和交互。仅使用图像特征图会导致严重的下滑。然而,我们提案特征可以看成一个特征滤波器,与位置不相关。比较如表10所示。如果空间位置编码被移除,DETR下降了7.8 AP。与此相反,位置编码并没有给Sparse R-CNN带来任何增长。

4.3 提案框行为

图5 展示了一个学习提案框的收敛模型。这些框随机分布在图像上,以覆盖所有区域。这保证了稀疏候选条件下的召回性能。并且,串联头的每一阶段逐渐精炼框位置,移除重复。这一结果是高准确性能。图5显示了Sparse R-CNN在罕见和人群场景中展示稳健表现。对于罕见场景的物体,重复框在几个阶段中被移除;人群场景需要更多阶段来细化,但最终每个目标被唯一精确检测到。

5 结论

我们展示了Sparse R-CNN,一个纯稀疏图像目标检测方法。一组固定稀疏可学习物体提案共给动态头分类和定位。最终预测不需NMS后处理直接输出。Sparse R-CNN证明了它与成熟检测器平分秋色的准确性,运行时间和训练收敛性能。我们希望此功能能够给大家带来重新思考密集先验的约定和探索新一代目标检测器的灵感。

你可能感兴趣的:(论文阅读,目标检测)