Sparse R-CNN翻译文献
Sparse R-CNN:具有可学习建议的端到端对象检测
摘要
我们提出了Sparse R-CNN,一种用于图像目标检测的纯稀疏方法。现在存在的目标检测方法严重依赖于密集的候选物体,例如在尺寸为WH的图像特征图的所有网格上预先定义k个锚点。然而在我们的方法中,一组固定稀疏的可学习的目标建议,总长度为N,被提供给目标识别器去执行分类和定位。通过将HWk(多达数十万)手动设计的候选目标清除到N(例如100)个可学习的建议,Sparse R-CNN完全避免了与候选目标设计和多对一标签分配相关的工作。更重要的是,最终的预测结果不经过非极大值抑制处理直接输出。Sparse R-CNN在具有挑战性的COCO数据集上基于已经确定的检测器基准线标准,表现出准确、运行时间和训练收敛性能,例如在标准的3训练计划中使用ResNet-50特征提取网络模型实现44.5AP和22fps。我们希望我们的工作能启发对目标检测中密集密集先验框约定的重新思考。代码可在https://github.com/PeizeSun/SparseR-CNN获得。
1.介绍
目标检测旨在图片中定位一组目标并识别它们的种类。密集的先验框一直是检测成功的基石。在经典计算机视觉中,分类器依赖于稠密图像网格的滑动窗口范例是几十年来领先的检测方法。现代主流的一阶段检测方法在一个稠密的特征图网格上预确定了标记,例如锚点,如图1a所示,或参考点,并预测了目标边界框的相对缩放和偏移,以及相应的类别。尽管二阶段的途径在一组稀疏的建议框上工作,但是它们建议框的生成方法依然建立在密集的候选框上的,如图1b所示。这些成熟的方法在概念上是直观的,并提供强大性能、快速的训练和推理时间。除了巨大的成功以外,还需要注意的是,密集先验框检测器有一些局限性:1)这些途径经常产生冗余和近似重复的结果,因此让非极大值抑制后处理成为必要的组成部分。2)训练中的多对一标签分配问题让网络对启发式分配规则敏感。3)最终性能在很大程度上受尺寸、长宽比、锚点数量、参考点密度和建议生成算法的影响。
尽管密集的约定在目标检测中被广泛认同,但有一个自然的问题是:设计一个稀疏检测可能吗?最近,DETR建议将目标检测重新表述为一个直接和稀疏集合的预测问题,其输入仅为100个可学习的目标查询。最终的预测集直接输出无需任何手工设计的后处理。尽管框架简单而奇妙,但DETR要求每个目标查询都与全局图像背景相交互。这种密集特性不仅减缓了他的训练收敛速度,还阻碍了它建立一个用于目标检测的完全稀疏流程。
我们认为稀疏性应该表现在两个方面:稀疏的框和稀疏的特征。稀疏的框意味着少量的起始框(例如100个)足以预测图片中的所有目标。而稀疏特征表示每个框的特征不需要与整个图像上的所有其他特征进行交互。从这个角度来看,DETR不是一个纯粹的备用方法,因为每个目标查询必须与完整图像上的密集特征进行交互。
在本文中,我们提出一种纯稀疏的方法Sparse R-CNN,不需要在所有(密集)图像网格上枚举目标候选位置,也不需要与全局(密集)图像特征与目标查询交互。如图1c所示,候选目标由一组固定的少量可学习的边界框组成,用四维坐标表示。例如对于coco数据集,总共需要100个框和400个参数,而不是区域建议网络(RPN)中成千上万个候选项的预测值。这些稀疏的候选项被用作建议框,通过感兴趣区域池化和感兴趣区域对齐来提感兴趣区域(ROI)的特征。可学习的建议框是图像中潜在目标定位的统计。然而,四维坐标仅仅是物体的一个粗略表示,缺少很多信息细节比如姿势和形状。这里我们引入一个新的概念建议特征,它是一个高维(例如256)潜在向量。和粗略的边框相比,它有望编码丰富的实例特征。特别的是,建议特征为它专有的目标识别头产生一系列定制参数。我们称这个操作为动态实例交互头,因为它与最近的动态方案有相似之处。与共享的2全连接层相比,我们的头部更加灵活,在准确性方面占据显著领先地位。我们实验表明,以独特的建议特征而不是固定参数为条件的头公式实际上是Sparse R-CNN成功的关键。建议框和建议特征都是随机初始化,并与整个网络中的其他参数一起优化。
Sparse R-CNN最显著的特征是在任何时间的输入输出都是稀疏的。初始的输入是一组稀疏的建议框和建议特征,以及一对一动态实例交互。流程中即不存在密集候选,也不存在与全局(密集)特征的交互。这种纯粹的稀疏特性使得Sparse R-CNN成为R-CNN家族新的一员。
Sparse R-CNN在具有挑战性的COCO数据集上基于已经确定的检测器基准线标准,表现出准确、运行时间和训练收敛性能,例如在标准的3*训练计划中使用ResNet-50特征提取网络模型实现44.5AP和22fps。据我们所知所提出的Sparse R-CNN,是第一个证明相当稀疏的设计是合格的工作。我们希望我们的工作能够启发重新思考密集先验框在目标检测的必要性,探索下一代目标检测器。
2.相关工作
密集方法。滑动窗口模式在目标检测领域已经流行很多年了。受经典特征提取技术的限制,性能已经稳定了几十年,应用场景也有限。深度卷积神经网络(CNNs)的发展培养了实现性能显著提升的一般目标检测。一阶段检测是主流流程之一,它以单次方式直接预测密集覆盖空间位置、范围和长宽比的锚框的分类和定位,例如OverFeat、YOLO、SSD和RetinaNet。最近,无锚算法的提出,通过用参考点代替手工完成的锚框使得流程更加简单。所有上述方法都是建立在密集候选的基础上,并且每个候选都是直接分类和回归的。基于预定义的原则,在训练时间内将这些候选对象分配给目标真实边界框,例如,锚点是否与其对应的真实边界具有较高的交并比(IOU),或者参考点是否落在其中一个目标框中。除此之外,需要进行非极大值抑制后处理来去除推理时间内产生的冗余预测。
密集到稀疏方法。二阶段检测是另一种主流流程,多年来一直主导着现代目标检测。这种范式可以看作是密集探测器的延伸。该算法首先从密集的候选区域中获取一组稀疏的前景建议框,然后细化每个建议的位置并预测其具体分类。区域建议算法在二阶段方法的第一阶段起着重要作用,例如R-CNN中的选择性搜索和Faster R-CNN中的区域建议网络(RPN)。类似于密集过程,它也需要非极大值抑制后处理和手工制作的标签分类。从几十万个候选框中选中的只有几个前景建议,因此这些检测器可以被总结为密集到稀疏方法。
最近提出的DETR直接输出预测而不需要任何手工制作的组件,实现了非常有竞争力的性能。DETR利用一组稀疏的目标查询,来与全局(密集)图像特征交互,从这个角度,它可以被看作是另一种密集到稀疏的公式。
稀疏方法。稀疏目标检测有可能解决设计密集候选的努力,但在精准性上已经落后于上述检测器。G-CNN可以看做是这类算法的先驱。它从图像上的多尺度规则网格开始,迭代更新边框来覆盖目标并分类。这种手工设计的常规先验显然是不能达到最佳性能的次优。相反,我们的Sparse R-CNN应用了可学习的建议实现了更好的性能。同时,引入Deformable-DETR来限制每个目标查询来关注参考点周围的一小组关键采样点,而不是特征图中的所有点。我们希望稀疏方法能作为一个坚实的基础,并帮助简化目标检测集合的特征搜索。
3.Sparse R-CNN
Sparse R-CNN框架的中心思想是用一小组建议框(例如100)替代区域建议网络(RPN)中几十万个候选框。在这一节中,我们首先简要介绍所提出方法的总体结构,然后详细介绍每个组件。
3.1流程
Sparse R-CNN是一个简单统一的网络,由一个主干网络,一个动态实例交互头和两个特定任务预测层组成(图3)。总共有三个输入,一个图像,一组建议框和建议特征。后两者是可学习的,可以与网络中的其他参数一起优化。
3.2模块
主干。采用基于ResNet架构的特征金字塔网络(FPN)作为主干网络,从输入图像生成多尺度特征图。根据[22],我们构建了具有P2至P5等级的金字塔,其中l表示金字塔级别,Pl层的分辨率比输入低2^l。所有金字塔等级都有C=256个通道。详情请参考[22]。实际上,Sparse R-CNN有可能受益于更复杂的设计,以进一步提高其性能,例如最近的Deformable-DETR构造的堆叠编码层和可变形卷积网络。然而,我们将环境与Faster R-CNN匹配,来显示我们方法的简单性和有效性。
可学习的建议框。一小组固定可学习的建议框(N4)被用作区域建议,而不是区域建议网络(RPN)的预测。这些建议框由范围从0到1的四维参数表示,表示标准化的中心坐标、高度和宽度。建议框的参数将在训练期间通过反向传播算法更新。由于可学习的特性,我们在实验中发现初始化的影响很小,从而可以使框架更加灵活。
从概念上来说,这些可学习的建议框都是训练集中潜在目标位置的统计数据,可以被视为对图像中最有可能包含物体区域的初始猜测,而不管输入是什么。然而,来自RPN的建议与当前图像密切相关,并提供粗略的目标位置。我们重新思考一阶段定位存在于后阶段来完善框的位置是豪华的。相反,合理的统计数据已经可以成为合格的候选。由此看来,Sparse R-CNN可以被分为目标检测范式从完全密集到密集至稀疏到完全稀疏的拓展,如图1所示。
可学习的建议特征。尽管四维建议框是描述目标的一个简明而明确的表达,但是它只提供了目标的粗略定位并丢失了许多细节信息,例如目标姿态和形状。在这里我们引入一个被称为建议特征(Nd)的概念,它是一个高维(例如256)的潜在向量,并被期望编码丰富的实例特征。建议特征的数量和建议框的数量相等,接下来我们将讨论如何使用它。
动态实例交互头。给定N个建议框,Sparse R-CNN首先利用感兴趣区域对齐操作来提取每个框的特征。然后使用我们的预测头,每个框的特征被用来生成最终的预测。
图4展示了由动态算法驱动的预测头,被称为动态实例交互模块。每个感兴趣区域的特征被输入到单独的头中进行目标定位和分类,每个头根据具体的建议特征进行设置。在我们的设计中,建议特征和建议框是一对一的。对于N个建议框,使用N个建议特征。每个感兴趣区域特征fi(SSC)将于相应的建议特征pi(c)交互,过滤掉无效的箱子,并输出最终的目标特征(C)。最终的回归预测采用带有ReLU激活函数和隐藏维数C的3层感知,分类预测采用线性投影层。
对于轻量化设计,我们用ReLU激活函数进行连续的11卷积,以此实现交互过程。将每个建议特征和感兴趣区域特征进行卷积,以此得到更具有鉴别性的特征点。更多详情,请参考我们的代码。我们注意到,只要支持并行操作以提高效率,交互头的实现细节并不重要。
我们的建议特征可以被看作是一个注意力机制的实现,用于在大小为SS的感兴趣区域中关注哪些箱子。建议特征产生卷积的核参数,然后用生成的卷积对感兴趣区域特征进行处理,得到最终特征。这样,这些具有最多前景信息的箱子对最终目标的的位置和分类产生影响。
为了进一步提高性能,我们还采用了迭代结构。新生成的目标框和目标特征将作为迭代过程中下一阶段的建议框和建议特征。由于稀疏特性和轻动态头,它只带来了微不足道的计算开销。在动态头中嵌入自注意力模块来对目标之间的关系进行推理。我们注意到关系网络也使用了注意力模块。但它除了需要目标特征外,还需要几何属性和复杂等级特征。我们的模块要简单很多,只接收目标特征作为输入。
在DETR中提出的目标查询和建议特征具有类似的设计。然而,目标查询是可学习的位置编码。特征图在与目标查询交互时需要添加空间位置编码,否则会导致显著下降。我们提出的特征与位置无关,我们证明了我们的框架在没有位置编码的情况下也能工作得很好。我们在实验部分提供了进一步的比较。
集合预测损失。Sparse R-CNN将集合预测损失应用于固定大小分类和边框坐标的预测。基于集合的损失产生预测和真实目标之间的最佳双边匹配。匹配损失的定义如下:L = λcls· Lcls+ λL1· LL1+ λgiou· Lgiou(1)。这里Lcls是预测分类和真实类别标签的焦点损失函数,LL1和Lgiou是归一化中心坐标与预测框和真实框长和宽之间的L1损失和普遍交并比损失。Λcls、λL1和λgiou是各分量的系数。除了只在配对上执行,训练损失和匹配代价是一样的。最终的损失是按照训练批内的目标数量归一化的所有对的总和。R-CNN家族一直被标签分配问题困扰,因为多对一的匹配任然存在。这里我们提供了新的可能性,直接绕过多对一匹配,引入基于集损失的一对一匹配。这是探索端到端目标检测的一次尝试。
4.实验
数据集。我们的实验是在具有挑战性的MS COCO基准上使用目标检测的标准度量进行的。所有模型都是在COCO train2017分割图(约118k张图片)并使用val2017(约5k张图片)进行评估。
训练细节。除非另有说明,否则ResNet-50被用作主干网络。优化是权重衰减为0.0001的AdamW算法。最小批量是16张图片,所有模型都是用8个gpu训练的。默认训练计划为36次迭代,初试学习率为2.5*10^-5,在第27和33次迭代分别除以10。主干用ImageNet预先训练好的权重进行初始化,其他新添加的层用Xavier进行初始化。数据增强包括调整输入图像的随机水平、抖动规模,使短边至少为480像素,最多为800像素,长边最多为1333像素。根据[3,45],λcls= 2, λL1= 5, λgiou= 2。建议框、建议特征和迭代的默认数量分别是100、100和6。
推理细节。在Sparse R-CNN中推理过程非常简单。给定一个输入图像,Sparse R-CNN直接预测100与它们得分相关的边界框。分数表示框中包含一个物体的概率。为了评估,我们直接使用这100个框而没有任何后处理。
4.1主要结果
我们提供两个版本的Sparse R-CNN用于不同检测器的公平比较。第一种是采用100个可学习的建议框,不进行随机剪裁数据增强,用来和主流目标检测器作比较,例如Faster R-CNN和RetinaNet。第二个方法利用300个带有随机剪裁数据增强的可学习建议边框,用于与DETR系列模型相比较。
如表1所示,Sparse R-CNN的性能大大优于已有的主流检测方法,如RetinaNet和Faster R-CNN。令人惊讶的是,基于ResNet-50的Sparse R-CNN实现了42.3AP,这已经可以在精度上与使用ResNet-101的Faster R-CNN相竞争了。
我们注意到DETR和Deformable DETR通常采用较强的特征提取方法,如堆叠编码层和可变形卷积。Sparse R-CNN的增强实现,与这些检测器比较时更加公平。即使使用简单的FPN作为特征提取方法,Sparse R-CNN也具有较高的准确率。此外,Sparse R-CNN对小目标的检测性能优于DETR(26.9AP vs. 22.5AP)。
Sparse R-CNN的训练收敛速度比DETR快10倍,如图2所示。自从提出以来,DETR一直遭受收敛缓慢,这促使了Deformable DETR的提出。与Deformable DETR相比,Sparse R-CNN在准确性(44.5 AP vs. 43.8 AP)和更短的运行时间(22 FPS vs. 19 FPS)方面表现更好,训练时间也更短(36 epoch vs. 50 epoch)。
Sparse R-CNN的推理时间与其他检测器相当。我们注意到,带有100个建议模型的运行速度为23帧/秒,而300个建议的运行速度仅降至22帧/秒,这要归功于动态实例交互头的轻量化设计。
4.2模块分析
在这一节中,我们分析Sparse R-CNN中的每个组成。除非另有说明,否则所有的模型都是基于ResNet50-FPN主干,100个建议,3倍的训练计划。
可学习的建议框。从Faster R-CNN开始,我们天真地使用一组稀疏可学习的建议框替代了RPN。性能从40.2 AP(表1第3行)下降到18.5 AP(表2)。我们发现,即使堆叠了更多全连接层,也没有明显的改进。
迭代结构。迭代更新框是一种提高性能的直观想法。但是,我们发现简单的级联体系结构并没有太大的区别,如表3所示。我们分析了原因,与[2]中精炼到主要定位在目标周围的建议框相比,我们方案的候选更加粗糙,使得很难被优化。我们观察到,一个建议框的目标对象在整个迭代过程中通常是一致的。因此,可以前阶段的目标特征可以再次使用,对下一阶段起到重要的作用。目标特征编码了如目标姿态和位置的丰富信息。在原有的级联基础上,这一特征重复使用的微小改变使得AP大幅提高了11.7。最后,迭代结构带来了13.7的AP改进,如表2第二行所示。
动态头。动态头用不同的方式使用了前一阶段的目标特征,采用了前面讨论的迭代框架。不是简单的拼接,而是先用自注意力模块对前一阶段的目标特征进行处理,然后作为建议特征实现当前阶段的实例交互。自注意力模块被用在目标特征集,是为了对目标之间的关系进行推理。表4显示了自注意力和动态实例交互的优点。最后,Sparse R-CNN实现了42.3AP的准确率。
初始化建议框。密集检测器一直严重依赖于候选目标的设计,而Sparse R-CNN中的候选目标是可以学习的,因此避免了所有与手工设计锚点相关的努力。然而,有人会担心建议框的初始化在Sparse R-CNN中起着非常重要的作用。这里,我们研究了不同方法初始化建议框的效果:1.“中心”是指所有建议框在开始时都位于建议框的中心,长和宽都设置为图片大小的0.1倍。2.“图像”意味着所有建议框都初始化为整个图像的大小。3.“网格”是指建议框在图像中被初始化为常规网格,也就是G-CNN中的初始框。4.“随机”表示建议框的中心、长和宽都用高斯分布初始化。从表5我们能看出Sparse R-CNN的最终性能和建议框的初始化相比是相对稳定的。
建议的数量。建议的数量对密集和稀疏检测器都有很大的影响。初始的Faster R-CNN使用300个建议。后来它增加到2000,获得更好的性能。我们也在表6研究了建议数对Sparse R-CNN的影响。将建议数量从100个增加到500个会带来持续的改进,这表明我们的框架很容易在各种情况下使用。但是,500个建议需要更多的训练时间,所以我们选择100个和300个作为主要配置。
迭代结构中的阶段数。迭代架构是一种被广泛应用的提高目标检测性能的技术,特别是Sparse R-CNN。表7显示了迭代架构中阶段数的影响。在没有迭代架构的情况下,性能仅为21.7AP。考虑到第一阶段的输入建议是对可能目标位置的猜测,这一结果并不令人惊讶。增加到2个阶段会带来14.5AP的增益,最高可达36.2AP。随着阶段数的逐渐增加,6个阶段的表现趋于饱和。我们选择6个阶段作为默认配置。
动态头VS多头注意力。如第三节所讨论的,动态头利用建议特征过滤感兴趣区域特征,最终输出目标特征。我们发现多头注意力模块为实例交互提供了另一种实现的可能。我们在表8进行了对比实验,其性能落后了6.6AP。与线性多头注意力相比,我们的动态头更加灵活,其参数根据其特定的建议特征而定,并且可以很容易引入更多的非线性容量。
建议特征VS目标查询。这里我们对DTER提出的目标查询和我们提出的建议特征做了对比。如[3]中所讨论的,目标查询是学习位置编码,引导解码器与图像特征图和空间位置编码的综合进行交互。仅适用图像特征图将导致显著下降。然而,我们的建议特征可以看作是一个与位置无关的特征过滤器。比较结果显示,如果去掉空间位置编码,DETR下降了7.8AP。相反,位置编码不会给Sparse R-CNN带来任何收益。
4.3建议框行为
图5显示了一个融合模型的可学习建议框。这些框随机分布在图像上以覆盖整个图像区域。这保证了在稀疏候选的条件下的回归性能。除此之外,级联头的每一级逐渐细化框的位置并移除重复的。这带来了高精度的性能。图5还显示了Sparse R-CNN在稀少和密集场景都有很好的性能。对于稀少场景下的目标,其重复框在几个阶段内被移除。复杂场景需要更多的阶段来细化,但最终每个目标都会被精确和唯一地检测出来。
5.结论
本文提出了Sparse R-CNN,这是一种纯稀疏的图像目标检测的方法。一组固定稀疏的可学习目标建议被提供给动态头进行分类和定位。最终预测是直接输出的,没有非极大值抑制后处理。Sparse R-CNN算法在精度、运行时间和训练收敛性能等方面都可以和成熟的检测器相媲美。我们希望我们的工作能够启发对密集先验的传统进行反思,和探索下一代目标检测器。