算法论文/目标检测2——RT-DETRv3: Real-time End-to-End Object Detection with Hierarchical Dense Positive

摘要

  RT-DETR 是第一款基于实时端到端变压器的对象检测器。它的效率来自框架设计和匈牙利匹配。然而,与 YOLO 系列等密集监控检测器相比,匈牙利匹配提供了更稀疏的视觉,导致模型训练不足,难以获得最佳结果。为了解决这些问题,我们提出了一种基于 RT-DETR 的分层密集正向监督方法,名为 RT-DETRv3。首先,我们构建了一个基于 CNN 的辅助分支,该分支提供密集的监督,与原始解码器协作以增强编码器的特征表示。其次,为了解决解码器训练不足的问题,我们提出了一种涉及自我注意扰动的新型学习策略。这种策略使跨多个查询组的正样本的标签分配多样化,从而丰富了正向 su 的视野。此外,我们还引入了一个共享权重的 de coder 分支,用于密集的积极监督,以确保与每个 ground truth 匹配的更多高质量查询。值得注意的是,上述所有模块都仅用于培训。我们进行了广泛的实验,以证明我们的方法在 COCO val2017 上的有效性。RT-DETRv3 的性能明显优于现有的实时探测器,包括 RT-DETR 系列和 YOLO 系列。例如,与 RT-DETR-R18/RT-DETRv2-R18 相比,RT-DETRv3-R18 实现了 48.1% 的 AP (+1.6%/+1.4%),同时保持相同的延迟。同时,它只需要一半的 epoch 即可获得可比的性能。此外,RT-DETRv3-R101 可以获得令人印象深刻的 54.6% 的 AP,优于 YOLOv10-X。代码将很快发布。

1 引言

  目标检测是计算机视觉中的一个重要基础问题,主要集中在获取目标在图像中的位置和类别信息。实时目标检测对性能要求更高,例如推理速度大于 30 FPS。它在自动驾驶、视频监控和对象跟踪等实际应用中具有巨大价值。近年来,实时目标检测因其高效的推理速度和卓越的检测精度而受到研究人员和行业专业人士的极大关注。其中,最受欢迎的是基于 CNN 的单级实时目标检测器,例如 YOLO 系列 ( [1,11–13,22,24,26])。他们都采用了一对多的标签分配策略,设计了一个高效的推理框架,并使用非极大值抑制 (NMS) 来过滤冗余的预测结果。尽管这种策略引入了额外的延迟,但他们在准确性和速度之间实现了权衡。

  DETR [2] 是第一个基于变压器的端到端对象检测算法。它采用集合预测,并通过匈牙利匹配策略进行优化,消除了对 NMS 后处理的需求,从而简化了对象检测过程。后续的 DETRs(如 DAB-DETR[16]、DINO[29] 和 DN-DETR[14] 等)进一步引入了迭代细化方案和去噪训练,有效地加快了模型的转换速度并提高了其性能。然而,其高计算复杂性极大地限制了其实际应用。

  RT-DETR [32] 是第一个基于实时端到端 transformer 的目标检测算法。它设计了一个高效的混合编码器和 IoU 感知查询选择模块,以及一个可扩展的解码器层,实现了比其他实时检测器更好的分辨率。然而,匈牙利匹配策略在训练期间提供了稀疏监督,导致编码器和解码器的训练不足,从而限制了该方法的最佳性能。RT-DETRv2 [19] 通过优化训练策略在不牺牲速度的情况下提高性能,进一步增强了 RT-DETR [32] 的灵活性和实用性,尽管需要更长的训练时间。为了有效解决目标检测中存在的稀疏监督问题,我们提出了一种分层密集正向监督方法,该方法通过在训练过程中引入多个辅助分支,有效地加速了模型收敛并提高了模型性能。我们的主要贡献如下:

  • 我们引入了基于 CNN 的一对多标签分配辅助头,它与原始检测分支协作进行优化,进一步增强了编码器的表示能力。
  • 我们提出了一种具有自我注意的学习策略,旨在通过在多个查询组中实现标签分配的多样化来加强对解码器的监督。此外,我们还引入了一个共享权重解码器分支,用于密集的正向感知,以确保更多高质量的查询与每个基本事实匹配。这些方法显著提高了模型的性能并加速了收敛,而不会增加推理延迟。
  • 在 COCO 数据集上进行的广泛实验彻底验证了我们提出的方法的有效性。如图 1 所示,RT DETRv3 的性能明显优于其他实时测试,包括 RT-DETR 系列和 YOLO 系列。例如,与 RT-DETR-R18 相比,RT-DETRv3-R18 实现了 48.1% 的 AP(+1.6%),同时主要保持相同的延迟。此外,RT-DETRv3 R50 的 AP 性能比 YOLOv9-C 高出 0.9%,延迟降低了 1.3ms。

2 相关工作

2.1 基于 CNN 的实时对象检测

  目前基于 CNN 的实时目标检测器主要是 YOLO 系列。YOLOv4 [1] 和 YOLOv5 [12] 优化了网络架构(例如,通过采用 CSP Net [25] 和 PAN [17]),同时还利用了 Mosaic 数据增强。YOLOv6 [13] 进一步优化了结构,包括 RepVGG [6] 主干、解耦头、SimSPPF 和更有效的训练策略(例如 SimOTA [7] 等)。YOLOv7 [24] 引入了 E-ELAN 注意力模块,以更好地集成不同层次的特征,并采用自适应锚点机制来改进小目标的检测。YOLOv8 [11] 提出了一个 C2f 模块,用于有效的特征提取和融合。YOLOv9 [26] 提出了一种新的 GELAN 架构,并设计了 PGI 来增强训练过程。PP YOLO系列[10,18]是基于百度提出的PaddlePaddle框架的实时目标检测方案。该系列算法在 YOLO 系列的基础上进行了优化和改进,旨在提高检测精度和速度,以满足实际应用场景的需求。

2.2 基于 Transformer 的实时对象检测

  RT-DETR [32] 是第一款实时端到端对象检测器。这种方法设计了一个高效的混合 en 编码器,它通过解耦 scale 内交互和跨 scale 融合来有效地处理多 scale 特征,并提出了 IoU 感知查询选择,通过向解码器提供更高质量的初始对象查询来进一步提高性能。其精度和速度优于同期的 YOLO 系列,受到了广泛关注。RT-DETRv2 [19] 进一步优化了训练策略,包括动态数据增强和优化采样算子,以便于部署,以进一步提高其模型性能。但是,由于它们一对一的稀疏监督,收敛速度和最终效果是有限的。因此,引入一对多标签分配策略可以进一步提高模型的性能

2.3 辅助训练策略

  Co-DETR [33] 提出了多个并行的一对多标签分配辅助头部训练策略(例如,ATSS [30] 和 Faster RCNN [20]),这很容易增强编码器在端到端结构中的学习能力。例如,ViT-CoMer [27] 与 Co-DETR [33] 的集成在 COCO 检测任务中实现了最先进的性能。DAC-DETR [9]、MS DETR[31] 和 GroupDETR[4] 主要通过在模型的解码器中加入一对多的监督信息来加速模型的收敛。上述方法通过在模型的不同位置添加额外的辅助分支来加速模型的收敛或提高模型的性能,但它们不是实时目标检测器。受这些启发,我们在 RT-DETR 的编码器和解码器中引入了多个一对多辅助密集监控模块 [32]。这些模块提高了收敛速度,并改善了RT-DETR的整体性能[32]。由于这些模块仅在训练阶段参与,因此不会影响 RT-DETR 的推理延迟 [32]

3 方法

3.1 整体架构

  RT-DETRv3 的整体结构如图 2 所示。我们保留了 RT DETR [32] 的整体框架(以黄色突出显示),并额外引入了我们提出的分层解耦密集监督方法(以绿色突出显示)。最初,输入图像通过 CNNbackbone(例如 ResNet[8])和称为高效混合编码器的特征融合模块进行处理,以获得多尺度特征 {C3、C4 和 C5}。然后,这些功能被并行馈送到基于 CNN 的一对多辅助分支和基于 transformer 的解码器分支。对于基于 CNN 的一对多辅助分支,我们直接采用现有的最先进的密集监督方法,如 PP-YOLOE [28],来协作监督编码器的表示学习。在基于 transformer 的解码器分支中,首先对多尺度特征进行展平和连接。然后,我们使用查询选择模块从中选择前 k 个特征以生成对象查询。在解码器中,我们构建了一个生成多组随机掩码的掩码生成器。这些掩码应用于 self-attention 模块,影响查询之间的相关性,从而区分肯定查询的分配。每组随机掩码都与相应的查询配对.如图 2 中 OQo2o−1,...,OQo2o−n 所示。此外,为了确保有更多高质量的查询匹配每个 ground truth,我们在解码器中加入了一对多标签分配分支。以下部分提供了这项工作中建议的模块的详细说明

3.2 RT-DETR 概述

  RT-DETR [32] 是一个实时检测框架,专为对象检测任务而设计。它集成了 DETR [3] 的端到端预测优势,同时优化了推理速度和检测准确性。为了实现实时性能,编码器模块重新配置了轻量级 CNN 主干,并采用了专为高效特征融合而设计的 Effi cient Hybrid Encoder 模块。RT-DETR [32] 提出了一个 Uncertainty minimal query selection 模块,选择高置信度特征作为对象查询,降低了查询优化的难度。随后,解码器的多层通过自注意力、交叉注意力和前馈网络 (FFN) 模块增强这些查询,预测结果由 MLP 层生成。在训练优化过程中,RT-DETR [32] 采用匈牙利匹配进行一对一分配。对于损失计算,它使用 L1 损失和 GIoU 损失来监督箱回归,使用可变焦点损失 (VFL) 来监督分类任务的学习。

3.3 基于 CNN 的一对多辅助分支

  为了缓解解码器的一对一集合匹配方案导致编码器输出中的稀疏监督问题,我们引入了一个具有一对多分配的辅助检测头,例如 PP-YOLOE [28]。这种策略可以有效地加强对编码器的监督,使其具有足够的表示能力来加速模型的收敛。具体来说,我们将编码器的输出特征{C3、C4、C5}直接集成到PP-YOLOE头中,对于一对多的匹配算法,我们按照PP YOLOE头的配置,在训练初期使用ATSS匹配算法,然后切换到TaskAlign匹配算法。对于分类和定位任务的学习,分别选择了 VFL 和分布式焦点损失 (DFL)。其中,VFL 使用 IoU 分数作为阳性样本的目标,这使得具有高 IoU 的阳性样本对损失的贡献相对较大。这也使得模型在训练期间更关注高质量样本,而不是低质量样本。具体来说,解码器头也使用 VFL 损失来确保任务定义的一致性。我们将 CNN辅助分支的总体损失表示为 Laux,相应的损失权重表示为 α。

3.4 基于 Transformer 的多群自注意力扰动分支

  解码器由一系列变压器模块组成,每个模块都包含一个自注意力、交叉注意力和 FFN(前馈网络)模块。最初,查询通过 self attention 模块相互交互,以增强或减少它们的特征表示。随后,每个查询都通过 cross-attention 模块从编码器的输出特征中检索信息来更新自身。最后,FFN 预测与每个查询对应的目标的类和边界框坐标。然而,在 RT-DETR 中采用一对一的集合匹配会导致超视觉信息稀疏,最终损害模型的性能。为了确保与同一目标关联的多个相关查询有机会参与正样本学习,我们提出了基于 Mask Self-Attention 的每个扰动模块的多个自我注意。该扰动模块的实施细节如图 2 所示。首先,我们通过查询选择模块生成多组对象查询,表示为 OQi(i=1...N,其中 N 是集合数)。相应地,我们使用掩码生成器为每组 OQi 生成一个随机扰动掩码 Mi。OQi 和 Mi 都被馈送到 Mask Self-Attention 模块中,从而产生扰动和融合特征。Mask Self-Attention 模块的详细实现如图 3 所示,首先线性投影 OQi 以获得 Qi、Ki 和 Vi。然后,将 Qi 和 Ki 相乘以计算注意力权重,再乘以 Mi 并通过 softmax 函数得到扰动的注意力权重。最后,将这个扰动的注意力权重乘以 Vi 得到融合结果 ̃ Vi 。该过程可以表示为:

  引入多组随机扰动使查询的功能多样化,允许与同一目标关联的多个相关查询有机会被分配为正样本查询,从而丰富监督信息。在训练期间,多组对象查询被连接起来并馈送到单个解码器分支中,从而实现参数共享并提高训练效率。损失计算和标签分配方案与 RT-DETR 保持一致。我们将第 i 个集合的损失表示为 Lossi o2o,N 个扰动集的总损失计算如下:

  相应的损失体重表示为 β。

3.5 基于 Transformer 的一对多密集监控分支

  为了最大限度地利用每个扰动分支的多组自我注意的好处,我们引入了一个额外的密集监督分支,其中在解码器中共享权重。这可确保更多高质量的查询匹配每个 ground truth。具体来说,我们使用查询选择模块来生成一个唯一的对象集合查询。在样本匹配阶段,通过将训练标签复制因子 m 来生成增强的目标集,默认值为 4。此增强集随后与查询的预测进行匹配。损失计算与原始检测损失保持一致,我们将 Lo2m 指定为该分支的损失函数,损失权重为 γ。

3.6 总体损失

  综上所述,我们提出的方法的总体损失函数如下:

  其中Laux负责编码器的密集监督,Lo2o在保留端到端预测特性的同时丰富了一对一的监督信息,Lo2m为解码器提供一对多的密集监督。默认情况下,损失权重 α、β 和 γ 设置为 1。

4 实验

4.1 数据集和评估指标

  我们选择了 MSCOCO2017[15] 对象检测数据集作为我们的评估基准。该数据集包括 115k 训练图像和 5k 测试图像。

  我们采用了与 RT-DETR[32] 方法中使用的相同的评估指标 AP。我们比较了 RT-DETRv3 与其他实时对象检测器在收敛效率、推理速度和有效性方面的性能,包括基于变压器和基于 CNN 的实时对象检测器。此外,我们对本文中提到的模块进行了消融研究。所有实验细节和结果都经过精心设计

4.2 实现细节

  我们将提议的分层密集监督分支集成到 RT-DETR[32] 框架中。基于 CNN 的密集监管辅助分支直接采用了 PP-YOLOE 头,其样本匹配策略、损失计算等配置均与 PP-YOLOE 一致[28]。我们重用了 RT-DETR[32] 解码器结构作为 mainbranch,并额外添加了三组参数共享的自注意力扰动分支。样本匹配方法与 main 分支一致,采用匈牙利匹配算法。我们还添加了一个 parameter-shared一对多匹配分支,其中每个 ground truth 默认匹配 4 个 ob ject 查询,总共设置 300 个对象查询。采用了 AdamW 优化器,集成了 0.0001 的权重衰减因子,确保所有其他训练配置都严格遵守 RT-DETR[32],包括数据增强和预训练。对于较小的背骨(R18,R34),我们使用了 a6x(72epochs) 训练计划,对于较大的脊椎(R50,R101),我们使用了 a6x(72epochs) 训练计划。我们使用4块NVIIDA A100 GPUs 训练我们提出的方法,批处理大小为 64.此外,按照 [32],在 T4GPU上使用 TensorRTFP16 测试了所有模型的延迟。我们观察到,与大多数采用较长训练epochs的检测器相比,RT-DETRv3只需要72epochs即可达到卓越的精度。

4.3 与基于 Transformer 的实时对象检测器的比较

  推理速度和算法性能。基于变压器架构的实时对象检测器主要以 RT-DETR 系列表示。表1展示了我们的方法和 RT-DETR系列之间的比较结果。我们的方法在各种主干中同时执行 RT-DETR[32] 和 RT-DETRv2[19]。具体来说,与 RT-DETR[32] 相比,使用 6xtrainingschedule,我们的方法显示 R18、R34、R50 和 R101 主干分别提高了 1.6%、1.0%、0.3% 和 0.3%。与 RT-DETRv2 相比[19],我们在 6x/10x 训练计划下评估了 R18 和 R34 骨干,其中我们的方法提高了 1.4%/0.8% 和 0.9%/0.2%。此外,由于辅助密集的监督分支提出了仅进行训练,因此我们的方法主要与RT-DETR[32]和RT-DETRv2[19]的推理速度相同。

  收敛速度。我们的方法通过结合基于 CNN 和 transformer 的一对多密集监督来构建 RT DETR[32] 框架,这不仅提高了模型性能,而且加快了收敛速度。我们进行了广泛的实验来评估我们方法的有效性。表 1 列出了 RT-DETRv3、RT-DETR [32] 和 RT-DETRv2 [19] 在不同训练计划中的比较分析。它清楚地表明,我们的方法在任何时间表的收敛速度方面都优于它们,并且只需要训练 epoch 的一半即可达到可比的绩效。

  过拟合分析。如图 4 所示,我们注意到,随着模型大小的增加,RT-DETRv3 往往会表现出过拟合。我们认为这可能是由于训练数据集的大小与模型大小不匹配。我们进行了几次实验,如 Table 3 所示,当我们添加额外的训练数据时,RT-DETRv3 的性能随着训练 epoch 的增加而不断提高,并且在相同 epoch 上它的表现优于没有额外数据的模型。

4.4 与基于 CNN 的实时对象检测器的比较

  推理速度和算法性能。我们将 RT DETRv3 的端到端速度和准确性与当前先进的基于 CNN 的实时物体检测方法进行了比较。我们根据模型的推理速度将模型分为小、中、大三小三。在类似的推理性能条件下,我们将 RT-DETRv3 与其他最先进的算法进行了比较,例如 YOLOv6-3.0 [13]、Gold YOLO[23]、YOLO-MS [5]、YOLOv8 [11]、YOLOv9 [26] 和 YOLOv10 [22]。如表 2 所示,对于小规模模型,RT-DETRv3-R18 方法的性能分别优于 YOLOv6-3.0-S、Gold-YOLO-S、YOLO-MS-S、YOLOv8 S、YOLOv9-S 和 YOLOv10-S4.4%、3.3%、2.5%、2.5%、2.0% 和 2.4%。对于中等比例模型,RT-DETRv3 的性能也优于 YOLOv6-3.0-M、Gold-YOLO-M、YOLO-MS-M、YOLOv8-M、YOLOv9-M 和 YOLOv10 M。对于大规模模型,我们的方法始终优于基于 CNN 的实时对象检测器。例如,我们的 RT-DETRv3-R101 可以达到 54.6 AP,优于 YOLOv10-X。但是,由于我们还没有针对轻量级部署优化 RT-DETRv3 技术的整体框架,因此 RT-DETRv3 的推理效率仍有进一步提升的空间。

  收敛速度。如表 2 所示,我们被发现我们的 RT-DETRv3 在实现卓越性能的同时,与基于 CNN 的实时检测相比,可以将训练纪元减少到 60% 甚至更少。

4.5 消融研究

  设置。我们使用 RT-DETR[32] 作为基线进行了消融实验,然后通过依次集成基于辅助 CNN 的一对多标签分配分支、基于辅助转换器的一对多标签分配分支和多组自我注意力扰动模块来验证我们提出的方法的影响。这些实验以 ResNet18 为主干,批次大小为 64,使用 4 个 NVIDIA A100 GPU,同时保持与 RT-DETR 一致的其他配置 [32]。

  组件的消融。我们进行了消融实验以评估本文中提出的模块。如表 4 所示,每个模块都显著提高了模型的性能。例如,通过将 O2M-Tmod ule 添加到 RT-DETR [32] 中,我们观察到性能比基础模型提高了 1.0%。当所有建议的模块都集成到 RT-DETR 中以进行算法优化时,模型的性能提高了 1.6%。

  自我注意扰动分支的数量。为了验证改变每个扰动分支的自我注意数量对 RT-DETRv3 性能的影响,我们使用 RT-DETRv3-R18 进行了消融实验,分支数为 2、3 和 4,同时保持所有其他配置不变。如表 5 所示,当分支数量设置为 3 时,模型在 AP 48.1 时实现了最佳性能。减少分支的数量会降低监督信号的丰富度,从而导致性能降低。相反,过度增加分支的数量会过度提高模型的学习难度,而不会产生显著的性能提升。

5 结论

  在本文中,我们提出了一种基于 transformer 的实时目标检测算法,名为 RT-DETRv3。该算法基于 RT-DETR 构建,结合了多倍密集阳性样品辅助监测模块。这些模块将一对多对象监督应用于 RT DETR 中编码器和解码器的特定功能,从而加速算法的收敛并提高其性能。请务必注意,这些模块仅用于培训。我们在 COCO 对象检测基准上验证了我们的算法的有效性,实验表明,与其他实时对象检测器相比,我们的算法取得了更好的结果。我们希望我们的工作可以激励研究人员和开发人员从事基于变压器的实时对象检测。

### RT-DETRv3 网络结构分析 RT-DETRv3 是一种基于 Transformer 的实时端到端目标检测算法,其核心在于通过引入分层密集正监督方法以及一系列创新性的训练策略,解决了传统 DETR 模型收敛慢和解码器训练不足的问题。以下是 RT-DETRv3 的主要网络结构特点: #### 1. **基于 CNN 的辅助分支** 为了增强编码器的特征表示能力,RT-DETRv3 引入了一个基于卷积神经网络 (CNN) 的辅助分支[^3]。这一分支提供了密集的监督信号,能够与原始解码器协同工作,从而提升整体性能。 ```python class AuxiliaryBranch(nn.Module): def __init__(self, in_channels, out_channels): super(AuxiliaryBranch, self).__init__() self.conv = nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1) self.bn = nn.BatchNorm2d(out_channels) def forward(self, x): return F.relu(self.bn(self.conv(x))) ``` 此部分的设计灵感来源于传统的 CNN 架构,例如 YOLO 系列中的 CSPNet 和 PAN 结构[^2],这些技术被用来优化特征提取效率并减少计算开销。 --- #### 2. **自注意力扰动学习策略** 为解决解码器训练不足的问题,RT-DETRv3 提出了一种名为 *self-att 扰动* 的新学习策略。这种策略通过对多个查询组中阳性样本的标签分配进行多样化处理,有效增加了阳例的数量,进而提高了模型的学习能力和泛化性能。 具体实现方式是在训练过程中动态调整注意力权重分布,确保更多的高质量查询可以与真实标注 (Ground Truth) 进行匹配。 --- #### 3. **共享权重解编码器分支** 除了上述改进外,RT-DETRv3 还引入了一个共享权重的解编码器分支,专门用于提供密集的正向监督信号。这一设计不仅简化了模型架构,还显著降低了参数量和推理时间,使其更适合实时应用需求。 ```python class SharedDecoderEncoder(nn.Module): def __init__(self, d_model, nhead, num_layers): super(SharedDecoderEncoder, self).__init__() decoder_layer = nn.TransformerDecoderLayer(d_model=d_model, nhead=nhead) self.decoder = nn.TransformerDecoder(decoder_layer, num_layers=num_layers) def forward(self, tgt, memory): return self.decoder(tgt=tgt, memory=memory) ``` 通过这种方式,RT-DETRv3 实现了高效的目标检测流程,在保持高精度的同时大幅缩短了推理延迟。 --- #### 4. **与其他模型的关系** 值得一提的是,RT-DETRv3 并未完全抛弃经典的 CNN 技术,而是将其与 Transformer 结合起来形成混合架构[^4]。例如,它采用了 YOLO 系列中的 RepNCSP 模块替代冗余的多尺度自注意力层,从而减少了不必要的计算负担。 此外,RT-DETRv3 还借鉴了 DETR 的一对一匹配策略,并在此基础上进行了优化,进一步提升了小目标检测的能力。 --- ### 总结 综上所述,RT-DETRv3 的网络结构主要包括以下几个关键组件:基于 CNN 的辅助分支、自注意力扰动学习策略、共享权重解编码器分支以及混合编码器设计。这些技术创新共同推动了实时目标检测领域的发展,使其在复杂场景下的表现更加出色。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值