论文地址:https://arxiv.org/abs/2304.08069

代码地址:https://github.com/PaddlePaddle/PaddleDetection

最近,基于端到端的 Transformer 检测器(DETRs)取得了显著的性能。然而,DETRs 的高计算成本问题尚未得到有效解决,这限制了它们的实际应用,并阻碍了其充分利用无后处理的优势,如非最大抑制(NMS)。在本文中,我们首先分析了现代实时目标检测器中 NMS 对推理速度的影响,并建立了一个端到端速度基准。为了避免 NMS 引起的推理延迟,我们提出了一种实时检测 Transformer(RT-DETR),据我们所知,这是第一个实时端到端目标检测器。具体而言,我们设计了一个高效的混合编码器,通过解耦内尺度交互和跨尺度融合来高效处理多尺度特征,并提出了IoU感知的查询选择来改善物体查询的初始化。此外,我们提出的检测器通过使用不同的解码器层实现了推理速度的灵活调节,而无需重新训练,这有助于实时目标检测器的实际应用。我们的 RT-DETR-L 在 COCO val2017上实现了 53.0% 的AP和114FPS的速度(在T4 GPU上),而 RT-DETR-X 实现了 54.8% 的AP和74FPS的速度,在速度和准确性上均超过了同等规模的所有YOLO检测器。此外,我们的 RT-DETR-R50 实现了53.1%的AP和108FPS的速度,准确性优于 DINO-Deformable-DETR-R50 约 2.2% AP,帧率约为其21倍。源代码和预训练模型将在PaddleDetection上提供。

1. 介绍

目标检测是一项基本的视觉任务,涉及在图像中识别和定位对象。现代目标检测器有两种典型的架构:基于卷积神经网络(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的目标检测器(DETRs)[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),在NVIDIA Tesla T4 GPU上达到114 FPS的速度,而RT-DETR-X实现了54.8%的AP和74 FPS,无论是在速度还是准确性上都优于所有同尺度的YOLO检测器。因此,我们的RT-DETR成为实时目标检测的新的最先进技术,如图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)。

本论文的主要贡献总结如下:

我们提出了第一个实时端到端目标检测器,不仅在准确性和速度方面优于当前最先进的实时检测器,而且不需要后处理,因此推理速度不会延迟并保持稳定;我们详细分析了NMS对实时检测器的影响,并从后处理的角度得出了关于基于CNN的实时检测器的结论;我们提出的IoU-aware查询选择在模型中展现出卓越的性能改进,为改进目标查询的初始化方案提供了新的思路;我们的工作为端到端检测器的实时实现提供了可行的解决方案,所提出的检测器可以通过使用不同的解码器层进行灵活调整模型大小和推理速度,无需重新训练。

2. 相关工作

2.1. 实时目标检测器

经过多年的持续发展,YOLO系列已成为实时目标检测器的代名词,包括了YOLO系列的有[25, 1, 32, 22, 13, 10, 7, 36, 14, 33, 11]。这些检测器可以大致分为两类:基于锚点的方法[25, 1, 32, 10, 33]和无锚点的方法[7, 36, 14, 11]。从这些检测器的性能来看,锚点不再是制约YOLO发展的主要因素。然而,上述的检测器产生了大量冗余的边界框,需要在后处理阶段使用NMS来过滤它们。不幸的是,这导致了性能瓶颈,并且NMS的超参数对检测器的准确性和速度有显著影响。我们认为这与实时目标检测器的设计理念不兼容。

2.2. 端到端目标检测器

端到端目标检测器 [4, 29, 34, 43, 23, 35, 20, 16, 40] 以其简化的流程而闻名。Carion等人 [4] 首次提出了基于Transformer的端到端目标检测器DETR(DEtection TRansformer)。由于其独特的特点,DETR引起了广泛的关注。特别地,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的组件,但我们的目标不仅是进一步提高模型的性能,还要创建一个实时的端到端目标检测器。

2.3. 多尺度特征用于目标检测

现代目标检测器已经展示了利用多尺度特征提高性能的重要性,特别是对于小物体而言。FPN [18] 引入了一个特征金字塔网络,将相邻尺度的特征融合在一起。随后的研究 [21, 8, 30, 10, 14, 33, 11] 对这一结构进行了扩展和增强,并广泛应用于实时目标检测器中。朱等人 [43] 首次将多尺度特征引入DETR,并提升了性能和收敛速度,但这也导致了DETR的计算成本显著增加。虽然可变形注意机制在一定程度上缓解了计算成本,但多尺度特征的引入仍然会产生较高的计算负担。为了解决这个问题,一些研究尝试设计计算效率较高的DETR。Efficient DETR [37] 通过使用密集先验初始化对象查询,减少了编码器和解码器层数。Sparse DETR [27] 选择性地更新预计将被解码器引用的编码器标记,从而减少计算开销。Lite DETR [15] 通过交替更新低层特征的方式,提高了编码器的效率。尽管这些研究减少了DETR的计算成本,但它们的目标并不是将DETR作为实时检测器推广。

3. 端到端检测器的推理速度。

3.1. 非极大值抑制的分析。

NMS(非极大值抑制)是目标检测中广泛采用的后处理算法,用于消除检测器输出的重叠预测框。NMS需要两个超参数:分数阈值和IoU阈值。具体而言,分数低于分数阈值的预测框会被直接过滤掉,而当两个预测框的IoU超过IoU阈值时,分数较低的框将被丢弃。这个过程是迭代进行的,直到处理完每个类别的所有框为止。因此,NMS的执行时间主要取决于输入预测框的数量和两个超参数。

为了验证这一观点,我们利用YOLOv5(基于锚点)[10]和YOLOv8(无锚点)[11]进行实验。我们首先统计在相同输入图像下,通过不同的分数阈值对输出框进行过滤后剩余的预测框数量。我们从0.001到0.25之间随机选择一些分数作为阈值,统计两个检测器的剩余预测框并绘制成直方图,直观地反映了NMS对其超参数的敏感性,如图2所示。

此外,我们以YOLOv8为例,评估了该模型在COCO val2017数据集上的准确率,并在不同的NMS超参数下测试了NMS操作的执行时间。需要注意的是,我们在实验中采用的NMS后处理操作是指TensorRT efficientNMSPlugin,其中包含多个CUDA内核,包括EfficientNMSFilter、RadixSort、EfficientNMS等,我们只报告EfficientNMS内核的执行时间。我们在T4 GPU上进行速度测试,上述实验中的输入图像和预处理保持一致。我们使用的超参数及相应结果如表1所示。

3.2. 端到端速度基准测试

为了公平比较各种实时检测器的端到端推理速度,我们建立了一个端到端速度测试基准。考虑到NMS的执行时间可能受到输入图像的影响,有必要选择一个基准数据集并计算多个图像的平均执行时间。该基准采用COCO val2017作为默认数据集,为需要后处理的实时检测器添加了TensorRT的NMS后处理插件。具体而言,我们根据基准数据集上相应准确度的超参数测试检测器的平均推理时间,排除IO和内存复制操作。我们利用此基准在T4 GPU上测试基于锚点的检测器YOLOv5 [10]和YOLOv7 [33],以及基于无锚点的检测器PP-YOLOE [36]、YOLOv6 [14]和YOLOv8 [11]的端到端速度。测试结果如表2所示。根据结果,我们得出结论:对于需要NMS后处理的实时检测器,基于无锚点的检测器在等效准确度下表现优于基于锚点的检测器,因为前者的后处理时间明显少于后者,在先前的研究中被忽略了。这种现象的原因是基于锚点的检测器产生的预测框比基于无锚点的检测器多(在我们的测试检测器中多了三倍)。

表2:主要结果。实时检测器和我们的RT-DETR共享640的输入尺寸,端到端检测器使用(800, 1333)的输入尺寸。端到端的速度结果是在T4 GPU上使用TensorRT FP16和官方预训练模型,并按照第3节提出的方法进行的。(注意:我们没有测试DETR的速度,除了为了进行比较测试DINO-Deformable-DETR,因为它们不是实时检测器。)

4. 实时 DETR

4.1. 模型概述

RT-DETR模型架构图显示了主干网络的最后三个阶段{S3,S4,S5}作为编码器的输入。高效的混合编码器通过内部尺度特征交互(AIFI)和跨尺度特征融合模块(CCFM)将多尺度特征转化为图像特征序列。采用IoU感知的查询选择方法,选择固定数量的图像特征作为解码器的初始对象查询。最后,解码器通过辅助预测头迭代优化对象查询,生成边界框和置信度分数

RT-DETR模型由主干网络(backbone)、混合编码器(hybrid encoder)和带有辅助预测头的Transformer解码器组成。模型的整体架构概述如图3所示。具体来说,我们利用主干网络最后三个阶段的输出特征{S3,S4,S5}作为编码器的输入。混合编码器通过内部尺度交互和跨尺度融合(在第4.2节中描述)将多尺度特征转换为图像特征序列。随后,采用IoU感知的查询选择机制,从编码器的输出序列中选择固定数量的图像特征作为解码器的初始对象查询(在第4.3节中描述)。最后,带有辅助预测头的解码器迭代优化对象查询,生成边界框和置信度分数。

4.2. 高效混合编码器

计算瓶颈分析。为了加快训练收敛速度并改善性能,Zhu等人 [43] 建议引入多尺度特征并提出了可变形注意力机制来减少计算量。然而,尽管注意力机制的改进减少了计算开销,但输入序列的大幅增加仍导致编码器成为计算瓶颈,阻碍了DETR的实时实现。正如[17]中报告的那样,编码器占据了GFLOPs的49%,但仅贡献了Deformable-DETR [43]中11%的AP。为了克服这一障碍,我们分析了多尺度变换器编码器中存在的计算冗余,并设计了一系列变种来证明同时进行内部尺度和跨尺度特征交互在计算上效率低下。

图5:具有不同类型编码器的变体集合。QS表示查询选择,SSE表示单尺度编码器,MSE表示多尺度编码器,CSF表示跨尺度融合。

从低级特征中提取出高级特征,这些特征包含了图像中物体的丰富语义信息。直观上讲,在连接多尺度特征上进行特征交互是多余的。为了验证这一观点,我们重新思考了编码器的结构,并设计了一系列具有不同编码器的变种,如图5所示。这些变种逐步提高了模型的准确性,同时通过将多尺度特征交互分解为内部尺度交互和跨尺度融合的两步操作,显著降低了计算成本(详细指标参见表3)。我们首先将DINO-R50 [40]中的多尺度变换器编码器作为基准A进行移除。然后,插入不同形式的编码器,基于基准A产生一系列变种,具体如下所述:

A → B:变体B插入了一个单尺度的Transformer编码器,它使用了一个Transformer块的层。每个尺度的特征共享编码器,进行内部尺度的特征交互,然后将输出的多尺度特征进行连接。B → C:变体C在B的基础上引入了基于尺度的特征融合,将连接的多尺度特征输入编码器进行特征交互。C → D:变体D将多尺度特征的内部尺度交互和跨尺度融合解耦。首先,使用单尺度的Transformer编码器进行内部尺度交互,然后利用类似于PANet [21]的结构进行跨尺度融合。D → E:变体E在D的基础上进一步优化多尺度特征的内部尺度交互和跨尺度融合,采用了我们设计的高效混合编码器(详细信息见下文)。

基于以上分析,我们重新思考了编码器的结构,并提出了一种新颖的高效混合编码器。如图3所示,提出的编码器由两个模块组成,即基于注意力的内部尺度特征交互(AIFI)模块和基于卷积神经网络的跨尺度特征融合模块(CCFM)。AIFI基于变种D进一步减少了计算冗余,仅在S5上执行内部尺度交互。我们认为,将自注意操作应用于具有更丰富语义概念的高级特征可以捕捉图像中概念实体之间的关联,从而有助于后续模块对图像中的物体进行检测和识别。同时,由于低级特征缺乏语义概念并且可能会与高级特征的交互产生重复和混淆,因此对低级特征进行内部尺度交互是不必要的。为了验证这一观点,在变种D中,我们只对S5执行内部尺度交互,并在表3中报告了实验结果,参见DS5行。与基准变种D相比,DS5显著降低了延迟(加快了35%),同时提高了准确性(AP高出0.4%)。这个结论对于实时检测器的设计至关重要。CCFM也是基于变种D进行了优化,将由卷积层组成的多个融合块插入到融合路径中。融合块的作用是将相邻的特征融合成一个新的特征,其结构如图4所示。融合块包含N个重复块(RepBlocks),并通过逐元素相加将两个路径的输出进行融合。我们可以将这个过程表示为:

其中,Attn表示多头自注意力,Reshape表示将特征的形状恢复为与S5相同,它是Flatten的逆操作。

4.3. IoU感知的查询选择

在DETR中,对象查询是一组可学习的嵌入向量,由解码器进行优化,并通过预测头将其映射到分类分数和边界框。然而,这些对象查询很难解释和优化,因为它们没有明确的物理意义。随后的研究[35, 20, 43, 37, 40]改进了对象查询的初始化,并将其扩展为内容查询和位置查询(锚点)。其中,[43, 37, 40]都提出了查询选择方案,它们的共同之处是利用分类分数从编码器中选择排名靠前的K个特征来初始化对象查询(或仅初始化位置查询[40])。然而,由于分类分数和位置置信度的分布不一致,一些预测框具有较高的分类分数,但与GT框不接近,导致选择了具有高分类分数但IoU分数较低的框,而具有低分类分数但IoU分数较高的框被舍弃。这影响了检测器的性能。为了解决这个问题,我们提出了IoU感知的查询选择方法,在训练过程中限制模型在高IoU分数的特征上产生高分类分数,在低IoU分数的特征上产生低分类分数。因此,由模型根据分类分数选择的编码器中排名靠前的K个特征对应的预测框既具有高分类分数又具有高IoU分数。我们将检测器的优化目标重新表述如下: 其中,yˆ和y分别表示预测和真实值,

y

ˆ

yˆ = {

ˆ

c

ˆc

ˆc,

ˆ

b

ˆb

ˆb}和y = {c, b},c和b分别表示类别和边界框。我们将IoU分数引入到分类分支的目标函数中(类似于VFL [41]),以实现对正样本的分类和定位的一致性约束。

有效性分析。为了分析所提出的IoU感知的查询选择方法的有效性,我们在val2017数据集上可视化了查询选择所选编码器特征的分类分数和IoU分数,如图6所示。具体而言,我们首先根据分类分数选择了前K个(在我们的实验中,K = 300)编码器特征,然后可视化具有大于0.5分类分数的散点图。红色和蓝色点分别表示应用基本查询选择和IoU感知查询选择进行训练的模型计算得到的结果。点越接近图像右上角,相应特征的质量越高,即分类标签和边界框更有可能描述图像中的真实对象。根据可视化结果,我们发现最明显的特征是大量蓝色点集中在图像的右上方,而红色点集中在右下方。这表明使用IoU感知的查询选择进行训练的模型可以产生更多高质量的编码器特征。

此外,我们对这两种类型的点的分布特征进行了定量分析。图中的蓝色点比红色点多出138%,即具有分类分数小于或等于0.5的红色点更多,可以视为低质量特征。然后,我们分析了具有大于0.5分类分数的特征的IoU分数,并发现具有大于0.5 IoU分数的蓝色点比红色点多出120%。定量结果进一步证明了IoU感知的查询选择可以为对象查询提供更多具有准确分类(高分类分数)和精确位置(高IoU分数)的编码器特征,从而提高了检测器的准确性。详细的定量结果在第5.4节中呈现。

4.4. 缩放的 RT-DETR

为了提供可扩展的RT-DETR版本,我们将ResNet [12]骨干网络替换为HGNetv2。我们使用深度乘子和宽度乘子同时对骨干网络和混合编码器进行缩放。因此,我们得到了两个具有不同参数数量和FPS的RT-DETR版本。对于我们的混合编码器,我们通过调整CCFM中RepBlocks的数量和编码器的嵌入维度来控制深度乘子和宽度乘子。值得注意的是,我们提出的不同规模的RT-DETR保持了一个相同的解码器,这有助于使用高精度的大型DETR模型对轻量级检测器进行蒸馏。这将是一个有待探索的未来方向。

5. 实验

5.1. 设置

数据集:我们在Microsoft COCO数据集上进行了大量实验,以验证所提出的检测器。在消融研究中,我们在COCO train2017上进行训练,并在COCO val2017数据集上进行验证。我们使用标准的COCO AP指标,使用单尺度图像作为输入。

实现细节:我们使用ResNet [12]和HGNetv2系列在ImageNet [28]上进行预训练的模型作为我们的骨干网络,这些模型来自于PaddleClas2 [5]。AIFI包括1个Transformer层,CCMF中的融合块默认由3个RepBlocks组成。在IoU-aware query selection中,我们选择前300个编码器特征来初始化解码器的物体查询。解码器的训练策略和超参数几乎遵循DINO [40]的设置。我们使用AdamW优化器进行训练,基本学习率为0.0001,权重衰减为0.0001,全局梯度剪裁范数为0.0001,线性预热步数为2000。骨干网络的学习率设置遵循[4]的方式。我们还使用指数移动平均(EMA),衰减率为0.9999。如果不特别指定,1×配置意味着总共训练12个epoch。最终报告的结果使用6×配置。数据增强包括随机的{颜色扭曲、扩展、裁剪、翻转、调整大小}操作,参考了[36]的设置。

5.2. 与SOTA的比较

表2将我们提出的RT-DETR与其他实时端到端目标检测器进行了比较。我们提出的RT-DETR-L实现了53.0%的AP和114帧/秒,而RT-DETR-X实现了54.8%的AP和74帧/秒,在速度和准确性方面都优于同等规模的YOLO检测器。此外,我们提出的RT-DETR-R50实现了53.1%的AP和108帧/秒,而RT-DETR-R101实现了54.3%的AP和74帧/秒,在速度和准确性方面都优于同等主干网络的最先进端到端检测器。

与实时检测器相比。为了公平比较,在端到端设置中(速度测试方法参见第3.2节),我们将缩放的RT-DETR的速度和准确性与当前的实时检测器进行比较。在表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,增加了111.1% / 21.3% / 107.3%的FPS,并减少了30.4% / 38.5% / 11.1%的参数数量。与YOLOv5-X / PP-YOLOE-X / YOLOv7-X相比,RT-DETR-X提高了4.1% / 2.5% / 1.9%的准确性,增加了72.1% / 23.3% / 64.4%的FPS,并减少了22.1% / 31.6% / 5.6%的参数数量。与YOLOv6-L / YOLOv8-L相比,RT-DETR-L在准确性上提高了0.2% / 0.1%的AP,速度提高了15.2% / 60.6%,参数数量减少了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对比50.9% AP),速度提高了21倍(108 FPS对比5 FPS),并减少了10.6%的参数数量。与SMCA-DETR-R101 [6]相比,RT-DETR-R101显著提高了8.0%的AP准确性。

5.3. 关于混合编码器的消融研究

表3:将多尺度特征融合拆分为内尺度交互和跨尺度融合的两步操作的分析实验结果。

为了验证我们关于编码器的分析的正确性以及提出的混合编码器的有效性,我们评估了在T4 GPU上设计的一组变体的指标,包括AP、参数数量和延迟。实验结果如表3所示。

B变体相比A变体提高了1.9%的AP,同时参数数量增加了3%,延迟增加了54%。这证明了尺度内特征交互的重要性,但原始的Transformer编码器的计算代价很高。

C变体相比B变体提高了0.7%的AP,参数数量保持不变,但延迟增加了20%。这表明跨尺度特征融合也是必要的。

D变体相比C变体提高了0.8%的AP,参数数量增加了9%,但延迟减少了8%。这表明解耦尺度内交互和跨尺度融合可以在提高准确性的同时减少计算量。

与原始的D变体相比,DS5减少了35%的延迟,同时提高了0.4%的AP。这证明了较低级别特征的尺度内交互是不必要的。

最后,我们提出的混合编码器所配备的E变体相比D变体提高了1.5%的AP。尽管参数数量增加了20%,但延迟减少了24%,使编码器在计算上更高效。

5.4. 关于IoU感知的查询选择的消融研究

我们对IoU感知的查询选择进行了割除研究,并在4中展示了定量实验结果。我们采用的查询选择根据分类得分选择前K个(K = 300)编码器特征作为内容查询,并将对应的边界框作为初始位置查询。我们比较了两种查询选择在val2017上选择的编码器特征,并计算了分类得分大于0.5和同时得分大于0.5的比例,分别对应于“Propcls”和“Propboth”列。结果表明,通过IoU感知的查询选择所选择的编码器特征不仅增加了高分类得分的比例(0.82%对比0.35%),而且提供了更多具有高分类得分和高IoU得分的特征(0.67%对比0.30%)。我们还在val2017上评估了使用两种类型的查询选择训练的检测器的准确性,其中IoU感知的查询选择实现了0.8%的AP改进(48.7% AP对比47.9% AP)。

表4:IoU感知查询选择消融研究结果。Propcls和Propboth分别表示分类得分大于0.5和两个得分都大于0.5的比例。

5.5. 关于解码器的消融研究

表5:解码器的消融研究结果。ID表示解码器层的索引,AP表示不同解码器层所获得的模型准确性。Detk表示具有k个解码器层的检测器。结果基于使用6×调度设置的RT-DETR-R50报告。

表5显示了RT-DETR在不同解码器层数下的准确性和速度。当解码器层数为6时,检测器实现了最佳的53.1% AP准确性。我们还分析了每个解码器层对推理速度的影响,并得出结论每个解码器层的消耗约为0.5毫秒。此外,我们发现解码器相邻层之间的准确性差异随着解码器层索引的增加逐渐减小。以6层解码器为例,仅使用5层进行推理在准确性上仅损失0.1% AP(53.1% AP对比53.0% AP),同时将延迟降低了0.5毫秒(9.3毫秒对比8.8毫秒)。因此,RT-DETR通过使用不同的解码器层支持推理速度的灵活调整,无需重新训练推理,从而便于实时检测器的实际应用。

结论

据我们所知,本文提出了RT-DETR,这是第一个实时端到端检测器。我们首先对NMS进行了详细分析,并建立了一个端到端速度基准来验证当前实时检测器的推理速度被NMS延迟的事实。从NMS的分析中,我们还得出结论,相较于具有相同准确性的基于锚点的检测器,基于无锚点的检测器表现更好。为了避免NMS引起的延迟,我们设计了一个实时端到端检测器,包括两个关键的改进组件:能够高效处理多尺度特征的混合编码器和提高物体查询初始化的IoU感知查询选择。大量实验证明,与其他实时检测器和类似规模的端到端检测器相比,RT-DETR在速度和准确性方面均实现了最先进的性能。此外,我们提出的检测器通过使用不同的解码器层支持灵活调整推理速度,无需重新训练,这有助于实时目标检测器的实际应用。我们希望这项工作能够得到实际应用,并为研究人员提供启发。

训练

# Ultralytics YOLO , AGPL-3.0 license

# RT-DETR-l object detection model with P3-P5 outputs. For details see https://docs.ultralytics.com/models/rtdetr

# Parameters

nc: 80 # number of classes

scales: # model compound scaling constants, i.e. 'model=yolov8n-cls.yaml' will call yolov8-cls.yaml with scale 'n'

# [depth, width, max_channels]

l: [1.00, 1.00, 1024]

backbone:

# [from, repeats, module, args]

- [-1, 1, HGStem, [32, 48]] # 0-P2/4

- [-1, 6, HGBlock, [48, 128, 3]] # stage 1

- [-1, 1, DWConv, [128, 3, 2, 1, False]] # 2-P3/8

- [-1, 6, HGBlock, [96, 512, 3]] # stage 2

- [-1, 1, DWConv, [512, 3, 2, 1, False]] # 4-P3/16

- [-1, 6, HGBlock, [192, 1024, 5, True, False]] # cm, c2, k, light, shortcut

- [-1, 6, HGBlock, [192, 1024, 5, True, True]]

- [-1, 6, HGBlock, [192, 1024, 5, True, True]] # stage 3

- [-1, 1, DWConv, [1024, 3, 2, 1, False]] # 8-P4/32

- [-1, 6, HGBlock, [384, 2048, 5, True, False]] # stage 4

head:

- [-1, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 10 input_proj.2

- [-1, 1, AIFI, [1024, 8]]

- [-1, 1, Conv, [256, 1, 1]] # 12, Y5, lateral_convs.0

- [-1, 1, nn.Upsample, [None, 2, 'nearest']]

- [7, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 14 input_proj.1

- [[-2, -1], 1, Concat, [1]]

- [-1, 3, RepC3, [256]] # 16, fpn_blocks.0

- [-1, 1, Conv, [256, 1, 1]] # 17, Y4, lateral_convs.1

- [-1, 1, nn.Upsample, [None, 2, 'nearest']]

- [3, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 19 input_proj.0

- [[-2, -1], 1, Concat, [1]] # cat backbone P4

- [-1, 3, RepC3, [256]] # X3 (21), fpn_blocks.1

- [-1, 1, Conv, [256, 3, 2]] # 22, downsample_convs.0

- [[-1, 17], 1, Concat, [1]] # cat Y4

- [-1, 3, RepC3, [256]] # F4 (24), pan_blocks.0

- [-1, 1, Conv, [256, 3, 2]] # 25, downsample_convs.1

- [[-1, 12], 1, Concat, [1]] # cat Y5

- [-1, 3, RepC3, [256]] # F5 (27), pan_blocks.1

- [[21, 24, 27], 1, RTDETRDecoder, [nc]] # Detect(P3, P4, P5)

目前 YOLOv8 项目也集成了 RT-DETR 的代码,用户可以使用YOLOv8 项目随意训练验证和推理模型。需要注意的是,当使用 RT-DETR 训练时,请确保你的pytorch 版本和我下面给的一致。

pytorch version: 2.0.0 + cu117

from ultralytics import RTDETR

if __name__ == '__main__':

model = RTDETR("rtdetr-l.pt")

# model = RTDETR("rtdetr-l.yaml")

model.train(data="GlobalWheat2020.yaml",

epochs=50,

batch=16,

imgsz=640,

cache=True,

name="RT-DETR") # train

# model.predict("path/to/image.jpg") # predict

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: