前言:
今天大家对“sparse算法”都比较注意,你们都需要知道一些“sparse算法”的相关文章。那么小编也在网上收集了一些对于“sparse算法””的相关文章,希望大家能喜欢,小伙伴们一起来学习一下吧!Sparse R-CNN: End-to-End Object Detection with Learnable Proposals
image-20210922063903372
摘要
我们提出了 Sparse R-CNN,这是一种用于图像中对象检测的纯稀疏方法。现有的对象检测工作严重依赖于密集的候选对象,例如在大小为 H × W 的图像特征图的所有网格上预定义的 k 个锚框。然而,在我们的方法中,向对象识别头提供一组固定的稀疏学习对象提议,总长度为 N,以执行分类和定位。通过将 HW k(多达数十万)个手工设计的候选对象消除到 N 个(例如 100 个)可学习的建议,Sparse R-CNN 完全避免了与候选对象设计和多对一标签分配相关的所有努力。更重要的是,最终预测是直接输出的,没有非最大抑制后处理。稀疏 R-CNN 在具有挑战性的 COCO 数据集上展示了与完善的检测器基线相当的准确性、运行时间和训练收敛性能,例如,在标准 3× 训练计划中实现 45.0 AP 并使用 ResNet-50 FPN 模型以 22 fps 运行。我们希望我们的工作能够激发重新思考对象检测器中密集先验的惯例。代码位于:。
image-20210922064659926
1、简介
对象检测旨在定位一组对象并在图像中识别它们的类别。 密集先验一直是探测器成功的基石。 在经典的计算机视觉中,将分类器应用于密集图像网格的滑动窗口范式几十年来一直是领先的检测方法 [8, 12, 48]。 现代主流的一级检测器在密集的特征图网格上预定义标记,例如图 1a 中所示的锚框 [29, 36] 或参考点 [45, 61],并预测边界的相对缩放和偏移 对象的盒子,以及相应的类别。 尽管两阶段管道在一组稀疏的提议框上工作,但它们的提议生成算法仍然建立在密集候选 [14, 37] 上,如图 1b 所示。
这些完善的方法在概念上是直观的,并提供强大的性能 [11, 30],以及快速的训练和推理时间 [53]。 除了它们的巨大成功之外,重要的是要注意密集先验检测器受到一些限制:1)这样的管道通常会产生冗余和接近重复的结果,从而使非最大抑制(NMS)[1, 51] 后处理一个 必要的组件。 2) 训练中的多对一标签分配问题 [2, 58, 60] 使网络对启发式分配规则敏感。 3)最终性能在很大程度上受锚框的大小、纵横比和数量[29、36]、参考点的密度[24、45、61]和提议生成算法[14、37]的影响。
尽管密集的约定在目标检测器中得到广泛认可,但一个自然而然的问题是:是否有可能设计一个稀疏检测器? 最近,DETR 提议将对象检测重新表述为直接和稀疏集预测问题 [3],其输入仅为 100 个学习对象查询 [47]。 最终的预测集直接输出,无需任何手工设计的后处理。 尽管其框架简单而出色,但 DETR 要求每个对象查询都与全局图像上下文进行交互。 这种密集的属性不仅减慢了它的训练收敛速度 [63],而且阻止了它为对象检测建立一个完全稀疏的管道 。
我们认为稀疏属性应该在两个方面:稀疏框和稀疏特征。 稀疏框意味着少量的起始框(例如 100 个)足以预测图像中的所有对象。 虽然稀疏特征表明每个框的特征不需要与整个图像上的所有其他特征进行交互。 从这个角度来看,DETR 不是纯粹的稀疏方法,因为每个对象查询都必须与完整图像上的密集特征进行交互 。
在本文中,我们提出了 Sparse R-CNN,一种纯粹的稀疏方法,没有在所有(密集)图像网格上枚举对象位置候选,也没有与全局(密集)图像特征交互的对象查询。 如图 1c 所示,候选对象由一组固定的可学习边界框(由 4-d 坐标表示)给出。 例如 COCO 数据集 [30],总共需要 100 个框和 400 个参数,而不是区域提议网络 (RPN) [37] 中数十万候选者的预测值。 这些稀疏候选被用作建议框,以通过 RoIPool [13] 或 RoIAlign [18] 提取感兴趣区域(RoI)的特征。
可学习的提议框是图像中潜在对象位置的统计信息。而 4 维坐标只是对象的粗略表示,缺乏很多信息细节,例如姿势和形状。在这里,我们引入了另一个称为提议特征的关键概念,它是一个高维(例如,256)潜在向量。与粗边界框相比,它有望编码丰富的实例特征。特别地,proposal 特征为其专属的物体识别头生成一系列自定义参数。我们将此操作称为动态实例交互头,因为它与最近的动态方案 [23, 44] 有相似之处。与 [37] 中共享的 2-fc 层相比,我们的头部更加灵活,并且在准确性方面具有显着领先优势。我们在实验中表明,以独特的提议特征而不是固定参数为条件的头部公式实际上是 Sparse R-CNN 成功的关键。提议框和提议特征都与整个网络中的其他参数一起随机初始化和优化。
我们的 Sparse R-CNN 中最显着的特性是它一直以来的稀疏输入稀疏范式。 初始输入是一组稀疏的提议框和提议特征,以及一对一的动态实例交互。 管道中既不存在密集候选 [29, 37] 也不与全局(密集)特征 [3] 交互。 这种纯粹的稀疏性使 Sparse R-CNN 成为 R-CNN 家族中的全新成员。
稀疏 R-CNN 在具有挑战性的 COCO 数据集 [30] 上证明了其准确性、运行时间和训练收敛性能与完善的检测器 [2, 37, 45] 相当,例如,在标准 3× 训练计划和运行中达到 45.0 AP 使用 ResNet-50 FPN 模型以 22 fps 的速度。 据我们所知,提议的 Sparse R-CNN 是第一个证明相当稀疏的设计是合格的。 我们希望我们的工作能够激发重新思考目标检测中密集先验的必要性并探索下一代目标检测器 。
2、相关工作
密集方法。 滑动窗口范式在对象检测中已经流行多年。受经典特征提取技术[8, 48]的限制,几十年来性能趋于平稳,应用场景有限。深度卷积神经网络 (CNN) 的发展 [19, 22, 25] 培养了通用对象检测,实现了性能的显着提高 [11, 30]。主流的pipeline之一是one-stage检测器,它以单次的方式直接预测密集覆盖空间位置、尺度和纵横比的anchor box的类别和位置,例如OverFeat [40]、YOLO [36]、SSD [31] 和 RetinaNet [29]。最近,提出了无锚算法 [21, 26, 45, 61, 24] 通过用参考点替换手工制作的锚框来使该管道更加简单。以上所有方法都建立在密集候选者上,每个候选者都被直接分类和回归。根据预定义的原则,在训练时间内将这些候选对象分配给地面实况对象框,例如,锚点是否与其对应的地面实况具有更高的交叉联合 (IoU) 阈值,或者参考点是否落在对象中的一个盒子。此外,需要 NMS 后处理 [1, 51] 以在推理期间去除冗余预测 。
密集到稀疏的方法。 两级检测器是另一个主流管道,多年来一直主导现代目标检测 [2, 6, 13, 14, 37]。 这种范式可以看作是密集检测器的扩展。 它首先从密集区域候选中获得一组稀疏的前景提议框,然后细化每个提议的位置并预测其特定类别。 区域提议算法在这些两阶段方法的第一阶段起着重要作用,例如 R-CNN 中的 Selective Search [46] 和 Faster R-CNN 中的 Region Proposal Networks (RPN) [37]。 与密集管道类似,它也需要 NMS 后处理和手工制作的标签分配。 从数十万候选中只有少数前景建议,因此这些检测器可以总结为密集到稀疏方法。
最近,DETR [3] 被提议直接输出预测,而无需任何手工制作的组件,实现了有希望的性能。 DETR 利用一组稀疏的对象查询,与全局(密集)图像特征进行交互,从这个角度来看,它可以被视为另一个密集到稀疏的公式。
稀疏方法。 稀疏对象检测有可能消除设计密集候选对象的工作,但通常会落后于上述密集检测器的准确性。 G-CNN [34] 可以被视为这组算法的先驱。 它从图像上的多尺度规则网格开始,并迭代更新框以覆盖和分类对象。 这种手工设计的常规先验显然是次优的,无法实现最佳性能。 相反,我们的 Sparse R-CNN 应用了可学习的建议并实现了更好的性能。 同时,Deformable-DETR [63] 被引入以限制每个对象查询关注参考点周围的一小组关键采样点,而不是特征图中的所有点。 我们希望稀疏方法可以作为可靠的基线,并有助于简化目标检测社区的未来研究。
3、Sparse R-CNN
Sparse R-CNN 框架的关键思想是用一小组提议框(例如 100)替换来自区域提议网络(RPN)的数十万候选。 管道如图 3 所示。
image-20210922093056119
Sparse R-CNN 是一个简单的、统一的网络,由一个主干网络、一个动态实例交互头部和两个特定任务的预测层组成。 总共有三个输入,一个图像,一组提案框和提案特征。 后两者是可学习的,可以与网络中的其他参数一起优化。 我们将详细描述本节中的每个组件。
Backbone 。 采用基于 ResNet 架构 [19, 28] 的特征金字塔网络 (FPN) 作为骨干网络,从输入图像生成多尺度特征图。 按照 [28],我们构建了 P2 到 P5 级别的金字塔,其中 l 表示金字塔级别,Pl 的分辨率比输入低 2l。 所有金字塔级别都有 C = 256 个通道。 更多细节请参考[28]。 实际上,Sparse R-CNN 有可能受益于更复杂的设计以进一步提高其性能,例如堆叠编码器层 [3] 和可变形卷积网络 [7],最近的工作 DeformableDETR [63] 就是在这些设计上构建的。 然而,我们将设置与 Faster R-CNN [37, 28] 对齐,以展示我们方法的简单性和有效性。
可学习的提案箱。 一组固定的可学习提议框 (N × 4) 被用作区域提议,而不是来自区域提议网络 (RPN) 的预测。 这些建议框由范围从 0 到 1 的 4-d 参数表示,表示标准化的中心坐标、高度和宽度。 建议框的参数将在训练过程中使用反向传播算法进行更新。 由于具有可学习性,我们在实验中发现初始化的影响很小,从而使框架更加灵活。
从概念上讲,这些学习到的提议框是训练集中潜在对象位置的统计数据,可以看作是最有可能包含图像中对象的区域的初始猜测,而不管输入如何。 而来自 RPN 的提议与当前图像密切相关,并提供粗略的对象位置。 我们重新考虑了第一阶段的定位是豪华的,在后期阶段可以细化盒子的位置。 相反,合理的统计数据可能已经是合格的候选人。 从这个角度来看,稀疏 R-CNN 可以归类为对象检测器范式的扩展,从完全密集 [29, 31, 35, 45] 到密集到稀疏 [2, 6, 14, 37] 到彻底稀疏,如图所示 在图 1 中。
可学习的提案功能。 尽管 4-d 提议框是描述对象的简短而明确的表达,但它提供了对象的粗略定位,并且丢失了许多信息细节,例如对象姿势和形状。 在这里,我们引入了另一个称为提议特征(N×d)的概念,它是一个高维(例如,256)潜在向量,并有望对丰富的实例特征进行编码。 提案特征的数量与框相同,接下来我们将讨论如何使用它。
动态实例交互头。 给定 N 个提议框,Sparse R-CNN 首先利用 RoIAlign 操作为每个框提取特征。 然后每个框特征将用于使用我们的预测头生成最终预测。 受动态算法 [23, 44] 的启发,我们提出了动态实例交互头。 每个 RoI 特征都被送入其自己的用于对象定位和分类的专用头部,其中每个头部都以特定的提议特征为条件。
image-20210922122625327
图 4 说明了动态实例交互。 在我们的设计中,提案特征和提案框是一一对应的。 对于 N 个提议框,采用了 N 个提议特征。 每个 RoI 特征 fi(S × S; C) 将与相应的提议特征 pi(C) 交互以过滤掉无效的 bin 并输出最终的对象特征 (C)。 对于轻型设计,我们进行了两次连续的 1 × 1 与 ReLU 激活函数卷积,以实现交互过程。 这两个卷积的参数由相应的proposal特征生成。
交互式头部的实现细节并不重要,只要支持并行操作以提高效率即可。 最终的回归预测由3层感知计算,分类预测由线性投影层计算。
我们还采用迭代结构 [2] 和 self-attention 模块 [47] 来进一步提高性能。 对于迭代结构,新生成的对象框和对象特征将作为迭代过程下一阶段的提议框和提议特征。 由于稀疏属性和轻动态头部,它引入了 只有边际的计算开销。 在动态实例交互之前,将自注意力模块应用于对象特征集以推理对象之间的关系。 我们注意到 [20] 还利用了自注意力模块。 然而,它除了需要对象特征外,还需要几何属性和复杂的秩特征。 我们的模块要简单得多,只需要对象特征作为输入。
设置预测损失。 Sparse R-CNN 在固定大小的分类和框坐标预测集上应用集预测损失 [3, 42, 56]。 基于集合的损失在预测和真实对象之间产生最佳二分匹配。 匹配成本定义如下:
这里 是预测分类和地面真实类别标签的焦点损失 [29], 和 分别是归一化中心坐标与预测框和地面真实框的高度和宽度之间的 L1 损失和广义 IoU 损失 [38]。 、 和 是每个分量的系数。 除了仅在匹配对上执行之外,训练损失与匹配成本相同。 最终损失是由训练批次内的对象数量归一化的所有对的总和 。
由于仍然存在多对一匹配,R-CNN 系列 [2, 60] 一直对标签分配问题感到困惑。 在这里,我们提供了新的可能性,直接绕过多对一匹配并引入基于集合的损失的一对一匹配。 这是探索端到端对象检测的尝试。
4、实验
数据集。 我们的实验是在具有挑战性的 MS COCO 基准 [30] 上进行的,使用对象检测的标准指标。 所有模型都在 COCO train2017 split(~118k 图像)上进行训练,并使用 val2017(5k 图像)进行评估。
培训详情。 除非另有说明,否则 ResNet-50 [19] 用作主干网络。 优化器是 AdamW [33],权重衰减为 0.0001。 小批量是 16 张图像,所有模型都使用 8 个 GPU 进行训练。 默认训练计划是 36 个 epoch,初始学习率设置为 ,分别在 epoch 27 和 33 除以 10。 主干用 ImageNet [9] 上的预训练权重初始化,其他新添加的层用 Xavier [15] 初始化。 数据增强包括调整输入图像大小的随机水平、尺度抖动,使得最短边至少为 480 像素,最多为 800 像素,而最长边最多为 1333。遵循 [3, 63],λ = 2,λ = 5,λ = 2. 提议框、提议特征和迭代的默认数量分别为 100、100 和 6。 为了稳定训练,除了初始提议框之外,在迭代架构的每个阶段的提议框处都阻塞了梯度。
推理细节。 Sparse R-CNN 中的推理过程非常简单。 给定输入图像,Sparse R-CNN 直接预测 100 个与其分数相关的边界框。 分数表示包含对象的框的概率。 对于评估,我们直接使用这 100 个盒子,没有任何后处理。
4.1 主要结果
我们提供了两个版本的 Sparse R-CNN 以与表 1 中的不同检测器进行公平比较。第一个版本采用 100 个可学习的建议框,没有随机裁剪数据增强,用于与主流目标检测器进行比较,例如 Faster R-CNN 和 RetinaNet [53]。 第二个利用 300 个具有随机作物数据增强的可学习建议框,并用于与 DETR 系列模型进行比较 [3, 63]。
image-20210922125621961
如表 1 所示,Sparse R-CNN 的性能大大优于成熟的主流检测器,例如 RetinaNet 和 Faster R-CNN。 出人意料的是,基于 ResNet-50 的 Sparse RCNN 达到了 42.8 AP,在准确率上已经与 ResNet-101 上的 Faster R-CNN 竞争。
我们注意到 DETR 和 Deformable DETR 通常采用更强的特征提取方法,例如堆叠编码器层和可变形卷积。 Sparse R-CNN 的更强实现用于与这些检测器进行更公平的比较。 即使使用简单的 FPN 作为特征提取方法,稀疏 R-CNN 也表现出更高的精度。 此外,与 DETR 相比,Sparse R-CNN 对小物体的检测性能要好得多(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)和更短的运行时间(22 FPS vs. 19 FPS)方面表现出更好的性能,训练时间更短(36 epochs vs. 50 epochs)。
Sparse R-CNN 的推理时间与其他检测器相当。 我们注意到具有 100 个建议的模型以 23 FPS 运行,而 300 个建议仅降低到 22 FPS,这要归功于动态实例交互头的轻量级设计。
image-20210922125638571
表 2 将 Sparse R-CNN 与 COCO 测试开发集中的其他方法进行了比较。 使用 ResNeXt-101 [55] 作为主干,Sparse R-CNN 在没有花里胡哨的情况下达到 46.9 AP,使用 DCN [7] 达到 48.9 AP。 通过额外的测试时间增强,Sparse R-CNN 达到 51.5 AP,与最先进的方法相当。
4.2 模块分析
在本节中,我们分析 Sparse RCNN 中的每个组件。 除非另有说明,否则所有模型均基于 ResNet50-FPN 主干、100 个提案、3 倍训练计划。
image-20210922125859089
可学习的提案箱。 从 Faster R-CNN 开始,我们天真地用一组稀疏的可学习提议框替换了 RPN。 性能从 40.2 AP(表 1 第 3 行)下降到 18.5(表 3)。 我们发现,即使堆叠了更多的全连接层,也没有明显的改进。
image-20210922125915053
**迭代架构。**迭代更新框是提高其性能的直观想法。然而,我们发现一个简单的级联架构并没有太大的区别,如表 4 所示。我们分析原因是与 [2] 中主要定位在对象周围的精炼提议框相比,我们案例中的候选框是更粗糙,使其难以优化。我们观察到一个提案框的目标对象在整个迭代过程中通常是一致的。因此,可以重用前一阶段的对象特征来为下一阶段发挥强大的提示作用,例如,对象特征编码了对象姿态和位置等丰富的信息。为此,我们将前一阶段的对象特征连接到当前阶段。特征重用的这种微小变化导致在原始级联架构的基础上增加了 11.7 个 AP。最后,迭代架构带来了 13.7 个 AP 的提升,如表 3 第二行所示。
image-20210922130218192
动态头。 动态头部以与上面讨论的迭代架构不同的方式使用前一阶段的对象特征。 上一阶段的对象特征不是简单的拼接,而是先由self-attention模块处理,然后作为proposal特征来实现当前阶段的实例交互。 selfattention 模块应用于对象特征集,用于推理对象之间的关系。 表 5 显示了自我注意和动态实例交互的好处。 最后,Sparse R-CNN 达到了 42.3 AP 的准确率 。
image-20210922130836912
**提案框的初始化。**密集检测器始终严重依赖于候选对象的设计,而稀疏 R-CNN 中的候选对象是可学习的,因此避免了与设计手工制作的锚点相关的所有工作。然而,人们可能会担心提案框的初始化在 Sparse RCNN 中起着关键作用。这里我们研究了不同的初始化proposal box方法的效果: • “中心”表示所有提案框都位于图像开始时的中心,高度和宽度设置为图像大小的0.1。 • “图像”表示所有提案框都初始化为整个图像大小。 • “网格”表示提议框在图像中被初始化为常规网格,这正是 GCNN [34] 中的初始框。 • “Random”表示提议框的中心、高度和宽度均使用高斯随机初始化 从表 6 中我们可以看出 Sparse R-CNN 的最终性能对提议框的初始化相对稳健。
image-20210922131124139
提案数量。 提议的数量在很大程度上影响密集和稀疏检测器。 原始 Faster R-CNN 使用 300 个提议 [37]。 后来它增加到 2000 [53] 并获得更好的性能。 我们还在表 7 中研究了提案数量对 Sparse R-CNN 的影响。将提案数量从 100 增加到 500 会导致持续改进,表明我们的框架 很容易在各种情况下使用。 而 500 个建议需要更多的训练时间,所以我们选择 100 和 300 作为主要配置。
image-20210922131143281
迭代架构中的阶段数。 迭代架构是一种广泛使用的技术,用于提高对象检测性能 [2, 3, 48],尤其是对于稀疏 RCNN。 表 8 显示了迭代架构中阶段数的影响。 没有迭代架构,性能只有21.7 AP。 考虑到第一阶段的输入建议是对可能的对象位置的猜测,这个结果并不奇怪。 增加到 2 级会带来 14.5 AP 的增益,最高可达有竞争力的 36.2 AP。 逐渐增加阶段数,性能在6个阶段饱和。 我们选择 6 个阶段作为默认配置。
动态头与多头注意力。 如第 3 节所述,动态头部使用提议特征来过滤 RoI 特征并最终输出对象特征。 我们发现多头注意力模块 [47] 为实例交互提供了另一种可能的实现。 我们进行了表9中的对比实验,其性能落后于6.6 AP。 与线性多头注意力相比,我们的动态头更加灵活,其参数取决于其特定的提议特征,并且可以轻松引入更多非线性容量。
提案特征与对象查询。 DETR [3] 中提出的对象查询与提案特征共享类似的设计。 在这里,我们对 DETR 中提出的对象查询 [3] 和我们的建议特征进行了比较。 如 [3] 中所讨论的,对象查询是学习位置编码,引导解码器与图像特征图和空间位置编码的总和进行交互。 仅使用图像特征图会导致显着下降。 然而,我们的提议特征可以看作是一个与位置无关的特征过滤器。 比较结果如表 10 所示,如果去除空间位置编码,DETR 下降了 7.8 个 AP。 相反,位置编码在 Sparse R-CNN 中没有任何收益 。
4.3 提案框行为
图 5 显示了收敛模型的学习提案框。这些框随机分布在图像上以覆盖整个图像区域。这保证了在稀疏候选条件下的召回性能。此外,级联头的每个阶段逐渐细化框位置并删除重复的位置。这导致高精度性能。图 5 还表明 Sparse RCNN 在稀有和人群中都表现出稳健的性能 场景。对于罕见情况下的对象,它的重复框在几个阶段内被删除。人群场景需要更多阶段来优化,但最终每个对象都被精确且唯一地检测到。
5 结论
我们提出了 Sparse R-CNN,这是一种用于图像中对象检测的纯稀疏方法。提供了一组固定的稀疏学习对象提议,以通过动态头执行分类和定位。最终预测直接输出,没有非最大抑制后过程。稀疏 R-CNN 展示了其与完善的检测器相当的准确性、运行时间和训练收敛性能。我们希望我们的工作能激发人们重新思考密集先验和探索下一个的惯例 对象检测器的生成。
致谢
这项工作得到了 HK No.27208720 普通研究基金的支持。
标签: #sparse算法