最近,基于端到端Transformer的检测器(DETRs)已经取得了显著的性能。然而,DETRs的高计算成本问题尚未得到有效解决,限制了它们的实际应用,并阻止它们充分利用无后处理的优点,例如非最大值抑制(NMS)。本文首先分析了现代实时目标检测器中NMS对推理速度的影响,并建立了一个端到端速度基准。为避免NMS引起的推理延迟,我们提出了Real-Time DEtection TRansformer(RT-DETR),这是我们所知道的第一个实时端到端物体检测器。具体来说,我们设计了一个高效的混合编码器,通过解耦内部尺度交互和跨尺度融合来高效处理多尺度特征,并提出了IoU感知的查询选择来改善物体查询的初始化。此外,我们提出的检测器支持通过使用不同的解码器层来灵活调整推理速度,无需重新训练,这有助于实时目标检测器的实际应用。我们的RT-DETR-L在COCO val2017上达到了53.0%的AP和在T4 GPU上达到了114 FPS,RT-DETR-X达到了54.8%的AP和74 FPS,在速度和准确性方面都优于相同规模的所有YOLO检测器。此外,我们的RT-DETR-R50在准确性方面比DINO-Deformable-DETR-R50提高了2.2%的AP,在FPS方面约高出21倍。源代码和预训练模型将在PaddleDetection上提供。
目标检测是一项基本的视觉任务,涉及在图像中识别和定位物体。现代目标检测器有两种典型的架构:基于CNN和基于Transformer。过去几年,对基于CNN的目标检测器进行了广泛研究。这些检测器的架构从最初的两阶段[9,26,3]发展到单阶段[19,31,1,10,22,13,36,14,7,33,11],并出现了两种检测范例:基于锚点[19,22,13,10,33]和基于无锚点[31,7,36,14,11]的检测器。这些研究在检测速度和准确性方面都取得了重大进展。基于Transformer的目标检测器(DETR)[4,29,34,43,23,35,20,16,40]自提出以来,由于消除了各种手工制作的组件,如非最大值抑制(NMS),受到了学术界广泛关注。这种架构极大地简化了目标检测的流程,并实现了端到端的目标检测。
实时目标检测是一个重要的研究领域,具有广泛的应用,如目标跟踪[39,42]、视频监控[24]、自动驾驶[2,38]等。现有的实时检测器通常采用基于CNN的架构,可以在检测速度和准确性之间实现合理的权衡。然而,这些实时检测器通常需要后处理的NMS,这通常很难优化并且不足够稳健,导致检测器推理速度的延迟。最近,由于研究人员在加速训练收敛和降低优化难度方面的努力,基于Transformer的检测器已经取得了显著的性能。然而,DETR的高计算成本问题尚未得到有效解决,这限制了DETR的实际应用,并导致无法充分利用其优点。这意味着虽然目标检测流程被简化了,但由于模型本身的高计算成本,实时目标检测很难实现。以上问题自然地启发我们考虑是否可以将DETR扩展到实时场景,充分利用端到端检测器来避免实时检测器上由NMS引起的延迟。
为了实现上述目标,我们重新思考了DETR并对其关键组件进行了详细的分析和实验,以减少不必要的计算冗余。具体而言,我们发现,虽然引入多尺度特征有助于加速训练收敛和提高性能[43],但它也导致输入到编码器的序列长度显著增加。因此,由于高计算成本,Transformer编码器成为模型的计算瓶颈。为了实现实时目标检测,我们设计了一个高效的混合编码器来替换原始的Transformer编码器。通过解耦多尺度特征的内尺度交互和跨尺度融合,编码器可以高效地处理不同尺度的特征。此外,之前的工作[35,20]表明,解码器的目标查询初始化方案对检测性能至关重要。为了进一步提高性能,我们提出了IoU感知的查询选择,通过在训练期间提供IoU约束条件,为解码器提供更高质量的初始目标查询。此外,我们提出的检测器支持使用不同的解码器层灵活调整推理速度,无需重新训练,这得益于DETR架构中解码器的设计,有助于实时检测器的实际应用。
本文提出了Real Time Detection TRansformer (RT-DETR),据我们所知,这是第一个实时端到端目标检测器。RT-DETR不仅在准确性和速度方面优于当前最先进的实时检测器,而且不需要后处理,因此检测器的推理速度不会延迟并保持稳定,充分利用了端到端检测流程的优势。我们提出的RT-DETR-L在COCO val2017上实现了53.0%的AP和114 FPS的速度,而RT-DETR-X实现了54.8%的AP和74 FPS的速度,在速度和准确性方面均优于同等规模的所有YOLO检测器。因此,我们的RT-DETR成为实时目标检测的新的SOTA,如图1所示。此外,我们提出的RT-DETR-R50实现了53.1%的AP和108 FPS的速度,而RT-DETR-R101实现了54.3%的AP和74 FPS的速度。其中,RT-DETR-R50在准确性方面优于DINO-Deformable-DETR-R50 2.2%的AP (53.1% AP vs 50.9% AP),在FPS方面大约快了21倍(108 FPS vs 5 FPS)。
本文的主要贡献总结如下:(i)我们提出了第一个实时端到端目标检测器,不仅在准确性和速度方面优于当前最先进的实时检测器,而且不需要后处理,因此它的推理速度不会延迟并保持稳定;(ii)我们详细分析了NMS对实时检测器的影响,并从后处理的角度得出了关于基于CNN的实时检测器的结论;(iii)我们提出的IoU感知的查询选择在我们的模型中显示出优秀的性能改进,为改进目标查询的初始化方案提供了新思路;(iv)我们的工作为端到端检测器的实时实现提供了可行的解决方案,所提出的检测器可以通过使用不同的解码器层灵活调整模型大小和推理速度,无需重新训练。
经过多年的持续发展,YOLO系列[25、1、32、22、13、10、7、36、14、33、11]已经成为实时目标检测器的代名词,可以大致分为两类:基于锚点的[25、1、32、10、33]和无锚点的[7、36、14、11]。从这些检测器的性能来看,锚点不再是限制YOLO发展的主要因素。然而,上述检测器产生了大量冗余的边界框,需要在后处理阶段利用NMS进行过滤。不幸的是,这导致了性能瓶颈,而NMS的超参数对检测器的准确性和速度有重要影响。我们认为这与实时目标检测器的设计理念不相容。
端到端目标检测器[4、29、34、43、23、35、20、16、40]以其简化的流程而闻名。Carion等人[4]首先提出了基于Transformer的端到端目标检测器DETR(DEtection TRansformer)。由于其独特的特点,它引起了广泛的关注。特别是,DETR消除了传统检测流程中手动设计的锚点和NMS组件。相反,它采用二分图匹配并直接预测一对一的对象集。通过采用这种策略,DETR简化了检测流程并减轻了NMS导致的性能瓶颈。尽管DETR具有明显的优点,但它存在两个主要问题:训练收敛速度慢和难以优化的查询。许多DETR变体已被提出来解决这些问题。具体而言,Deformable-DETR [43]通过增强注意机制的效率来加速多尺度特征的训练收敛。Conditional DETR [23]和Anchor DETR [35]降低了查询的优化难度。DAB-DETR [20]引入了4D参考点,并逐层迭代地优化预测框。DN-DETR [16]通过引入查询去噪来加速训练收敛。DINO [40]在以前的工作基础上进行了改进,并实现了最先进的结果。尽管我们不断改进DETR的组件,但我们的目标不仅是进一步提高模型的性能,而且是创建一个实时的端到端目标检测器。
现代目标检测器已经证明了利用多尺度特征来提高性能的重要性,特别是对于小物体。FPN [18]引入了一个特征金字塔网络,它融合了相邻尺度的特征。随后的工作[21、8、30、10、14、33、11]扩展和增强了这个结构,并被广泛应用于实时目标检测器中。Zhu等人[43]首次将多尺度特征引入到DETR中,并提高了性能和收敛速度,但这也导致DETR的计算成本显著增加。虽然可变形注意机制在一定程度上缓解了计算成本,但多尺度特征的融合仍会导致高计算负担。为了解决这个问题,一些工作尝试设计计算效率高的DETR。Efficient DETR [37]通过使用密集先验来初始化对象查询,从而减少编码器和解码器层数。Sparse DETR [27]有选择性地更新编码器标记,以减少解码器的计算开销。Lite DETR [15]通过交错方式降低低层特征的更新频率,增强了编码器的效率。尽管这些研究已经降低了DETR的计算成本,但这些工作的目标并不是将DETR推广为实时检测器。
NMS是目标检测中广泛采用的后处理算法,用于消除检测器输出的重叠预测框。NMS需要两个超参数:分数阈值和IoU阈值。特别地,分数低于分数阈值的预测框会被直接过滤掉,每当两个预测框的IoU超过IoU阈值时,具有较低分数的框将被丢弃。这个过程是迭代进行的,直到所有类别的框都被处理完。因此,NMS的执行时间主要取决于输入预测框的数量和两个超参数。
为了验证这个观点,我们利用YOLOv5(基于锚点)[10]和YOLOv8(无锚点)[11]进行实验。我们首先统计在相同输入图像下,不同分数阈值过滤输出框后剩余的预测框数量。我们从0.001到0.25中采样一些分数作为阈值,计数两个检测器的剩余预测框并将它们绘制成直方图,直观地反映NMS对其超参数的敏感性,如图2所示。
此外,我们以YOLOv8为例,在不同的NMS超参数下评估模型在COCO val2017上的精度和NMS操作的执行时间。需要注意的是,我们在实验中采用的NMS后处理操作是指TensorRT efficientNMSPlugin,它涉及多个CUDA核函数,包括EfficientNMSFilter、RadixSort、EfficientNMS等,我们只报告EfficientNMS核函数的执行时间。我们在T4 GPU上测试速度,上述实验中的输入图像和预处理保持一致。我们使用的超参数及相应的结果如表1所示。
为了实现对各种实时检测器端到端推理速度的公平比较,我们建立了一个端到端速度测试基准。考虑到NMS的执行时间可能会受到输入图像的影响,因此需要选择一个基准数据集,并计算多个图像的平均执行时间。基准采用COCO val2017作为默认数据集,为需要后处理的实时检测器添加TensorRT的NMS后处理插件。具体来说,我们根据基准数据集上相应精度的超参数测试检测器的平均推理时间,并排除IO和内存复制操作。我们利用这个基准测试在T4 GPU上测试了基于锚点的检测器YOLOv5 [10]和YOLOv7 [33],以及基于无锚点的检测器PP-YOLOE [36]、YOLOv6 [14]和YOLOv8 [11]的端到端速度。测试结果如表2所示。根据结果,我们得出结论:对于需要NMS后处理的实时检测器,基于无锚点的检测器在等效精度下优于基于锚点的检测器,因为前者的后处理时间明显少于后者,这在以前的工作中被忽略了。这种现象的原因是,基于锚点的检测器产生的预测框比基于无锚点的检测器多(在我们测试的检测器中多了三倍)。
所提出的RT-DETR由一个骨干网络、一个混合编码器和一个带有辅助预测头的变换器解码器组成。模型架构的概述如图3所示。具体而言,我们利用骨干网络的最后三个阶段的输出特征 {S3,S4,S5} 作为编码器的输入。混合编码器通过内部尺度交互和跨尺度融合(在第4.2节中描述)将多尺度特征转换为图像特征序列。随后,采用IoU感知的查询选择从编码器输出序列中选择固定数量的图像特征,作为解码器的初始对象查询(在第4.3节中描述)。最后,带有辅助预测头的解码器迭代地优化对象查询以生成框和置信度分数。
计算瓶颈分析。为了加速训练收敛和提高性能,朱等人[43]建议引入多尺度特征,并提出了可变形注意机制来减少计算量。然而,尽管注意机制的改进减少了计算开销,但输入序列长度的急剧增加仍使编码器成为计算瓶颈,阻碍了DETR的实时实现。如[17]中所报告的那样,编码器占Deformable-DETR[43]的49%的GFLOPs,但只贡献了11%的AP。为了克服这个障碍,我们分析了多尺度变换器编码器中存在的计算冗余,并设计了一组变体来证明内部尺度和跨尺度特征的同时交互在计算上效率低下。
高级特征从包含图像中对象丰富语义信息的低级特征中提取出来。直觉上,在连接多尺度特征之前进行特征交互是冗余的。为了验证这个观点,我们重新思考了编码器结构,并设计了一系列具有不同编码器的变体,如图5所示。这组变体逐步提高了模型的准确性,同时通过将多尺度特征交互解耦为内部尺度交互和跨尺度融合的两个步骤操作(详细指标参见表3),显著减少了计算成本。首先,我们将DINO-R50 [40]中的多尺度变换器编码器作为基线A。接下来,插入不同形式的编码器,基于基线A生成一系列变体,如下所述:
• A → B: 变体B插入了一个单尺度变换器编码器,该编码器使用一个变换器块层。每个尺度的特征共享编码器进行内部尺度特征交互,然后将输出的多尺度特征进行级联。
• B → C: 变体C在B的基础上引入了跨尺度特征融合,将级联的多尺度特征馈送到编码器中进行特征交互。
• C → D: 变体D解耦了多尺度特征的内部尺度交互和跨尺度融合。首先,使用单尺度变换器编码器进行内部尺度交互,然后使用类似于PANet的结构 [21] 进行跨尺度融合。
• D → E: 变体E在D的基础上进一步优化了多尺度特征的内部尺度交互和跨尺度融合,采用我们设计的高效混合编码器(详见下文)。
混合设计。基于上述分析,我们重新思考了编码器的结构,并提出了一种新型的高效混合编码器。如图3所示,所提出的编码器由两个模块组成,注意力内部尺度特征交互(AIFI)模块和基于CNN的跨尺度特征融合模块(CCFM)。AIFI基于变体D进一步减少了计算冗余,只在S5上执行内部尺度交互。我们认为,将自注意操作应用于具有更丰富语义概念的高层特征可以捕捉图像中概念实体之间的联系,从而有助于后续模块对图像中的对象进行检测和识别。同时,由于低层特征缺乏语义概念并可能与高层特征交互重复或混淆,因此其内部尺度交互是不必要的。为了验证这个观点,在变体D中我们只对S5执行内部尺度交互,实验结果见表3,第DS5行。与原始变体D相比,DS5显著降低了延迟(快35%),但提高了准确性(0.4% AP更高)。这个结论对于实时检测器的设计非常重要。基于变体D,CCFM也进行了优化,将由卷积层组成的几个融合块插入到融合路径中。融合块的作用是将相邻特征融合成一个新特征,其结构如图4所示。融合块包含N个重复块,两个路径的输出通过逐元素相加进行融合。我们可以将这个过程表述为:
DETR中的对象查询是一组可学习的嵌入,由解码器优化,并通过预测头映射到分类分数和边界框。然而,这些对象查询很难解释和优化,因为它们没有明确的物理含义。随后的工作[35,20,43,37,40]改进了对象查询的初始化,并将其扩展为内容查询和位置查询(锚点)。其中,[43,37,40]都提出了查询选择方案,它们共同点是利用分类分数从编码器中选择前K个特征来初始化对象查询(或仅初始化位置查询[40])。然而,由于分类分数和位置置信度的不一致分布,一些预测框具有高分类分数但与GT框不接近,导致选择具有高分类分数但IoU得分低的框,而丢弃具有低分类分数但IoU得分高的框。这会影响检测器的性能。为了解决这个问题,我们提出了IoU感知的查询选择,通过在训练过程中限制模型在高IoU得分的特征上产生高分类分数,在低IoU得分的特征上产生低分类分数。因此,由模型根据分类分数选择的前K个编码器特征对应的预测框既具有高分类分数又具有高IoU分数。我们将检测器的优化目标重新表述如下:
效果分析。为了分析所提出的IoU感知查询选择的效果,我们在val2017数据集上可视化了由查询选择选择的编码器特征的分类分数和IoU分数,如图6所示。具体来说,我们首先根据分类分数选择前K个(在我们的实验中K = 300)编码器特征,然后可视化分类分数大于0.5的散点图。红点和蓝点分别来自于应用基准查询选择和IoU感知查询选择进行训练的模型。图中距离图像右上角越近,对应特征的质量越高,即分类标签和边界框更有可能描述图像中的真实对象。根据可视化结果,我们发现最显著的特征是大量蓝点集中在图像的右上角,而红点则集中在右下角。这表明使用IoU感知查询选择训练的模型可以产生更高质量的编码器特征。
此外,我们还定量分析了两种点的分布特征。图中蓝点比红点多138%,即分类分数小于或等于0.5的低质量特征更多地对应红点。我们还分析了分类分数大于0.5的特征的IoU分数,发现IoU分数大于0.5的蓝点比红点多120%。定量结果进一步证明了IoU感知查询选择可以为对象查询提供更准确的分类(高分类分数)和精确的位置信息(高IoU分数),从而提高检测器的准确性。详细的定量结果在第5.4节中给出。
为了提供可扩展的RT-DETR版本,我们将ResNet [12]主干替换为HGNetv2。我们使用深度乘数和宽度乘数同时缩放主干和混合编码器。因此,我们得到两个具有不同参数数目和FPS的RT-DETR版本。对于我们的混合编码器,我们通过调整CCFM中RepBlocks的数量和编码器的嵌入维度来控制深度乘数和宽度乘数。值得注意的是,我们提出的不同规模的RT-DETR保持了同质化的解码器,这有助于使用高精度大型DETR模型对轻量级检测器进行蒸馏。这将是一个可探索的未来方向。
数据集。我们在Microsoft COCO数据集上进行了大量实验,以验证所提出的检测器。对于消融研究,我们在COCO train2017数据集上进行训练,并在COCO val2017数据集上进行验证。我们使用单尺度图像作为输入,使用标准的COCO AP指标进行评估。
实现细节。我们使用来自PaddleClas [5]的ImageNet [28]预训练的ResNet [12]和HGNetv2系列作为我们的主干。AIFI包括1个Transformer层,CCMF中的融合块默认由3个RepBlocks组成。在IoU感知查询选择中,我们选择前300个编码器特征来初始化解码器的对象查询。解码器的训练策略和超参数几乎遵循DINO [40]。我们使用AdamW优化器进行训练,base learning rate为0.0001,weight decay为0.0001,global gradient clip norm为0.0001,linear warmup steps为2000。主干设置的学习率遵循[4]。我们还使用指数移动平均(EMA),ema decay为0.9999。1×配置表示总时期为12,如果未指定,所有消融实验均使用1×。最终报告的结果使用6×配置。数据增强包括随机的{颜色扭曲,扩展,裁剪,翻转,调整大小}操作,遵循[36]。
表2比较了提出的RT-DETR与其他实时和端到端目标检测器。我们提出的RT-DETR-L实现了53.0%的AP和114 FPS,而RT-DETR-X实现了54.8%的AP和74 FPS,在速度和准确性方面都优于同等规模的所有YOLO检测器。此外,我们提出的RT-DETR-R50实现了53.1%的AP和108 FPS,而RT-DETR-R101实现了54.3%的AP和74 FPS,速度和准确性方面都优于同等主干的最先进端到端检测器。
与实时检测器的比较。为了公平比较,我们在端到端设置中比较缩放后的RT-DETR的速度和准确性(速度测试方法请参见第3.2节)。我们在表2中将缩放后的RT-DETR与YOLOv5 [10]、PP-YOLOE [36]、YOLOv6v3.0(以下简称YOLOv6)[14]、YOLOv7 [33]和YOLOv8 [11]进行比较。与YOLOv5-L/PP-YOLOE-L/YOLOv7-L相比,RT-DETR-L的准确性显著提高了4.0%/1.6%/1.8% AP,FPS增加了111.1%/21.3%/107.3%,参数数量减少了30.4%/38.5%/11.1%。与YOLOv5-X/PP-YOLOE-X/YOLOv7-X相比,RT-DETR-X的准确性提高了4.1%/2.5%/1.9% AP,FPS增加了72.1%/23.3%/64.4%,参数数量减少了22.1%/31.6%/5.6%。与YOLOv6-L/YOLOv8-L相比,RT-DETR-L在准确性上提高了0.2%/0.1% AP,在速度上增加了15.2%/60.6% FPS,在参数数量上减少了45.8%/25.6%。与YOLOv8-X相比,RT-DETR-X在准确性上提高了0.9% AP,在速度上增加了48.0% FPS,在参数数量上减少了1.5%。
与端到端检测器的比较。表2显示,RT-DETR在所有具有相同主干的端到端检测器中实现了最先进的性能。与DINO-Deformable-DETR-R50 [40]相比,RT-DETR-R50的准确性提高了2.2% AP(53.1% AP vs. 50.9% AP),速度提高了21倍(108 FPS vs. 5 FPS),并减少了10.6%的参数数量。与SMCA-DETR-R101 [6]相比,RT-DETR-R101的准确性提高了8.0% AP。