新型实时的端到端对象检测器
🏡作者主页:点击!
🤖编程探索专栏:点击!
⏰️创作时间:2024年11月28日17点20分
神秘男子影,
秘而不宣藏。
泣意深不见,
男子自持重,
子夜独自沉。
论文链接
点击开启你的论文编程之旅https://www.aspiringcode.com/content?id=17326139826120&uid=0cb547d5335f43f0a8139a809c717e65
引言
本文解读的论文是《DETRs Beat YOLOs on Real-time Object Detection》(CVPR 2023)。
概述
目标检测是一项基础的视觉任务,涉及识别和定位图像中的对象。现代目标检测器有两种典型架构:基于CNN和基于Transformer。在过去几年中,基于CNN的目标检测器进行了广泛的研究。这些检测器的架构已从最初的两阶段发展到单阶段,并出现了基于锚点和无锚点两种检测范式。这些研究在检测速度和精度方面都取得了显著进展。自从提出以来,基于Transformer的目标检测器(DETRs)因其消除了各种手工制作的组件(例如非最大抑制NMS)而受到学术界的广泛关注。这种架构极大地简化了目标检测流程,并实现了端到端的目标检测。
实时目标检测是一个重要的研究领域,具有广泛的应用范围,例如对象跟踪、视频监控、自动驾驶等。现有的实时检测器通常采用基于CNN的架构,在检测速度和精度之间取得了合理的折中。然而,这些实时检测器通常需要NMS进行后处理,这通常难以优化且不够稳健,导致检测器的推理速度延迟。最近,由于研究人员在加速训练收敛和减少优化难度方面的努力,基于Transformer的检测器取得了显著的性能。然而,DETRs的高计算成本问题尚未得到有效解决,这限制了DETRs的实际应用,并导致无法充分利用其优势。这意味着尽管目标检测流程简化了,但由于模型本身的高计算成本,难以实现实时目标检测。
为了实现实时目标检测,作者设计了一个高效的混合编码器来替代原始的变换器编码器。通过解耦多尺度特征的内部尺度交互和跨尺度融合,编码器可以有效地处理不同尺度的特征。此外,以前的工作表明,解码器的对象查询初始化方案对检测性能至关重要。为了进一步提高性能,作者提出了loU感知查询选择,在训练期间通过提供loU约束来向解码器提供更高质量的初始对象查询。此外,作者提出的检测器 RT-DETR 支持使用不同的解码器层灵活调整推理速度,而不需要重新训练,这得益于DETR架构中解码器的设计,并促进了实时检测。
上图显示了不同目标检测模型在 MS COCO 数据集上的平均精度 (AP) 与在 NVIDIA Tesla T4 GPU 上使用 TensorRT FP16 时的端到端延迟(以毫秒计)之间的关系。图中的曲线代表不同检测器的性能,其中 RT-DETR 用红色曲线表示。
从上图可以看出,RT-DETR 在低延迟(快速)和高平均精度(准确)方面表现优异,与其他实时目标检测器相比,RT-DETR 提供了最佳的速度和精度平衡。特别是当与 YOLO 系列的检测器 (YOLOv5, PP-YOLOE, YOLOv6-v3.0, YOLOv7, YOLOv8) 比较时,RT-DETR 在相似或更短的延迟下实现了更高的 AP 值。
在延迟较低的区域,RT-DETR 的曲线位于其他检测器的上方,这意味着在相同的速度条件下,RT-DETR 能够实现更高的检测精度。此外,即使在延迟增加的情况下(例如,使用更深的网络如 R101),RT-DETR 仍然能够保持较高的 AP 值,超过了其他检测器。
NMS分析
NMS(非极大值抑制)是在目标检测中广泛采用的后处理算法,用于消除检测器输出的重叠预测框。NMS需要两个超参数:分数阈值和 IoU(交并比)阈值。具体来说,分数低于分数阈值的预测框会被直接过滤掉,当两个预测框的 IoU 超过 IoU 阈值时,分数较低的框会被丢弃。这个过程将迭代执行,直到每个类别的所有框都被处理。因此,NMS 的执行时间主要取决于输入预测框的数量和两个超参数。
为了验证这一观点,作者使用YOLOv5(基于锚点)和YOLOv8(无锚点)进行实验。他们首先计算不同分数阈值下保留的预测框数量,并绘制成直方图,直观地反映了NMS对其超参数的敏感性。
上图展示了YOLOv5(基于锚点)和YOLOv8(无锚点)两种目标检测器在不同分数阈值下保留的预测框数量。分数阈值从0.001到0.25变化,每个阈值点上都显示了两个检测器的预测框数量。
从上图中可以看到,随着分数阈值的增加,两种检测器的预测框数量都在减少,但在每个阈值点上,YOLOv5始终产生比YOLOv8更多的预测框。在最低的分数阈值0.001处,YOLOv5产生了9281个预测框,而YOLOv8产生了3570个预测框;而在分数阈值为0.25时,YOLOv5产生了381个预测框,YOLOv8产生了1124个预测框。
这些数据清楚地说明了基于锚点的检测器(如YOLOv5)通常会产生比无锚点检测器(如YOLOv8)更多的预测框,这可能导致后处理阶段(特别是NMS)的计算负担更重。更多的预测框意味着NMS需要处理更多的数据,可能会导致更长的执行时间,这对于需要实时处理能力的应用来说是不利的。因此,这解释了为什么在实时目标检测中,无锚点检测器可能会比基于锚点的检测器更受欢迎,因为它们在后处理步骤中需要更少的计算资源。
上表展示了 IoU 阈值和分数阈值对模型准确性(AP)和 NMS 执行时间的影响。表中分成两个部分,左侧是在固定的分数阈值(0.001)下不同 IoU 阈值的影响,右侧是在固定的 IoU 阈值(0.7)下不同分数阈值的影响。从左侧的数据可以看出,随着 IoU 阈值从 0.5 增加到 0.8,模型的平均精度(AP)从 52.1% 微幅增加到 52.8%,而 NMS 的执行时间也从 2.24 毫秒增加到 2.46 毫秒。
这说明更高的 IoU 阈值虽然可以轻微提高准确度,但也会导致 NMS 执行时间的增长。从右侧的数据看,当分数阈值从 0.01 提高到 0.05 时,AP 从 52.9% 降低到 51.2%,而 NMS 的执行时间从 2.36 毫秒降低到 1.06 毫秒。这表明较高的分数阈值能显著减少 NMS 的执行时间,但也可能会牺牲一定的检测准确性。
综合这些数据,我们可以得出,调整 IoU 和分数阈值能够影响检测器的性能和效率。实际应用中可能需要在准确性和速度之间做出权衡,以便在实时性和检测质量之间找到最佳平衡点。
RT-DETR
模型概览
作者提出的RT-DETR包括一个主干网络(backbone)、一个混合编码器(hybrid encoder)和一个带有辅助预测头的变换器解码器(transformer decoder)。模型架构的概览如下面的图片所示。
具体来说,作者利用主干网络的最后三个阶段的输出特征 {S3,S4,S5}{S3,S4,S5} 作为编码器的输入。混合编码器通过内尺度交互(intra-scale interaction)和跨尺度融合(cross-scale fusion)将多尺度特征转换成一系列图像特征。随后,采用IoU感知查询选择(IoU-aware query selection)从编码器输出序列中选择一定数量的图像特征,作为解码器的初始对象查询。最后,带有辅助预测头的解码器迭代优化对象查询,生成边框和置信度分数。
高效混合编码器
高级特征是从包含图像中对象丰富语义信息的低级特征中提取出来的。直觉上,在连接的多尺度特征上执行特征交互是多余的。为了验证这一观点,作者重新思考了编码器结构,并设计了一系列具有不同编码器的变体,如下图所示。
这一系列变体通过将多尺度特征交互分解为内尺度交互和跨尺度融合的两步操作,逐渐提高了模型精度,同时显著降低了计算成本,详细指标参见下表。
我们首先移除DINO-R50中的多尺度变换器编码器作为基线A。接下来,插入不同形式的编码器,基于基线A生成一系列变体,具体如下:
- A → B: 变体B插入了一个单尺度变换器编码器,它使用一个变换器块层。每个尺度的特征共享编码器进行内尺度特征交互,然后连接输出的多尺度特征。
- B → C: 变体C基于B引入了跨尺度特征融合,并将连接的多尺度特征送入编码器进行特征交互。
- C → D: 变体D将内尺度交互和跨尺度融合的多尺度特征解耦。首先使用单尺度变换器编码器进行内尺度交互,然后使用类似PANet的结构进行跨尺度融合。
- D → E: 变体E在D的基础上进一步优化了内尺度交互和跨尺度融合的多尺度特征,采用了我们设计的高效混合编码器。
基于上述分析,作者重新思考了编码器的结构,并提出了一种新型的高效混合编码器。所提出的编码器由两个模块组成,即基于注意力的内尺度特征交互模块(AIFI)和基于CNN的跨尺度特征融合模块(CCFM)。
AIFI基于变体D进一步减少了计算冗余,它只在S5上执行内尺度交互。作者认为,将自注意力操作应用于具有更丰富语义概念的高级特征,可以捕捉图像中概念实体之间的联系,这有助于后续模块检测和识别图像中的对象。同时,由于缺乏语义概念,低级特征的内尺度交互是不必要的,存在与高级特征交互重复和混淆的风险。为了验证这一观点,作者仅在变体D中对S5执行内尺度交互。与原始变体D相比,DS5显著降低了延迟(快35%),但提高了准确度(AP高0.4%)。
CCFM也是基于变体D优化的,将由卷积层组成的几个融合块插入到融合路径中。融合块的作用是将相邻特征融合成新的特征,其结构如上图所示。融合块包含N个RepBlocks,两个路径的输出通过逐元素加法融合。我们可以将此过程表示如下:
式中,Attn代表多头自注意力,Reshape代表将特征的形状恢复为与S5相同,这是Flatten的逆操作。
IoU感知查询选择
DETR中的对象查询是一组可学习的嵌入,由解码器优化并由预测头映射到分类分数和边界框。然而,这些对象查询难以解释和优化,因为它们没有明确的物理含义。后续工作改进了对象查询的初始化,并将其扩展到内容查询和位置查询(锚点)。其中,提出了查询选择方案,它们共同的特点是利用分类分数从编码器中选择排名靠前的K个特征来初始化对象查询(或仅位置查询)。
然而,由于分类分数和位置置信度的分布不一致,一些预测框虽有高分类分数,但与真实框(GT)不接近,这导致选择了分类分数高但IoU分数低的框,而丢弃了分类分数低但IoU分数高的框。这降低了检测器的性能。
为了解决这个问题,作者提出了IoU感知查询选择,通过在训练期间对模型施加约束,使其对IoU分数高的特征产生高分类分数,对IoU分数低的特征产生低分类分数。因此,模型根据分类分数选择的排名靠前的K个编码器特征的预测框,既有高分类分数又有高IoU分数。作者重新制定了检测器的优化目标如下:
其中,y^y^ 和 yy 分别代表预测和真实值,y^={c^,b^}y^={c^,b^} 和 y={c,b}y={c,b},cc 和 bb 分别代表类别和边界框。作者将IoU分数引入分类分支的目标函数中(类似于VFL),以实现对正样本分类和定位的一致性约束。
实验
实验设置
作者在Microsoft COCO数据集上进行实验。在COCO train2017上训练,在COCO val2017上验证。作者使用标准的COCO AP评价指标,并且输入的图像是单一尺寸的。
作者使用在ImageNet上预训练的ResNet和HGNetv2系列作为主干网络,并采用PaddleClas提供的SSLD。AIFI由1层变换器层组成,CCMF中的融合块默认由3个RepBlocks构成。在IoU感知查询选择中,作者选择前300个编码器特征来初始化解码器的对象查询。数据增强包括随机的色彩扭曲、扩展、裁剪、翻转、调整大小操作。
实验结果
下表比较了作者提出的RT-DETR与其他实时和端到端目标检测器。作者提出的RT-DETR-L在COCO val2017数据集上达到了53.0%的AP和114FPS,而RT-DETR-X达到了54.8%的AP和74FPS,在速度和准确性上均优于同等规模的当前最先进的YOLO检测器。此外,作者提出的RT-DETR-R50达到了53.1%的AP和108FPS,而RT-DETR-R101达到了54.3%的AP和74FPS,在速度和准确性上均优于具有相同主干网络的最先进的端到端检测器。
与实时检测器相比,将缩放后的RT-DETR与YOLOv5、PP-YOLOE、YOLOv6、YOLOv7和YOLOv8进行了比较。与YOLOv5-L/PP-YOLOE-L/YOLOv7-L相比,RT-DETR-L在AP上显著提高了4.0%/1.6%/1.8%,FPS提高了111.1%/21.3%/107.3%,参数数量减少了30.4%/38.5%/11.1%。与YOLOv5-X/PP-YOLOE-X/YOLOv7-X相比,RT-DETR-X在AP上提高了4.1%/2.5%/1.9%,FPS提高了72.1%/23.3%/64.4%,参数数量减少了22.1%/31.6%/5.6%。与YOLOv6-L/YOLOv8-L相比,RT-DETR-L在AP上提高了0.2%/0.1%,在FPS上提高了15.2%/60.6%,参数数量减少了45.8%/25.6%。与YOLOv8-X相比,RT-DETR-X在AP上提高了0.9%,在FPS上提高了48.0%,在参数数量上减少了1.5%。
与端到端检测器相比,RT-DETR在性能上优于具有相同主干网络的最先进的端到端检测器。与DINO-Deformable-DETR-R50相比,RT-DETR-R50在AP上显著提高了2.2%(53.1%对比50.9%),在速度上提高了21倍(108FPS对比5FPS),并且在参数数量上减少了10.6%。与SMCA-DETR-R101相比,RT-DETR-R101在AP上显著提高了8.0%。
消融实验
混合编码器
为了验证前文对编码器分析的正确性,作者评估了前面一系列变体的指标,包括AP、参数数量和延迟。实验结果显示在下表中。
变体B在AP上提高了1.9%,延迟增加了54%。这证明了内尺度特征交互的重要性,但传统的变换器编码器在计算上是昂贵的。变体C在B的基础上在AP上提高了0.7%,延迟增加了20%。这表明跨尺度特征融合也是必要的。变体D在C的基础上在AP上提高了0.8%,但延迟减少了8%。这表明解耦内尺度交互和跨尺度融合可以在提高准确性的同时减少计算量。与变体D相比,DS5在延迟上减少了35%,但在AP上提高了0.4%。这表明低级特征的内尺度交互不是必需的。最后,具有混合编码器的变体E在D的基础上在AP上提高了1.5%。尽管参数数量增加了20%,但延迟减少了24%,使编码器更高效。
IoU 感知查询选择
对IoU感知查询选择进行消融研究的定量实验结果显示在下表中。查询选择是根据分类分数选择前300个编码器特征作为内容查询,这些被选择的特征对应的边界框被用作初始位置查询。
作者比较了在val2017上由两种查询选择选出的编码器特征,并计算了分类分数大于0.5和两者分数都大于0.5的比例,分别对应于“Propcls”和“Propboth”列。结果显示,IoU感知查询选择选出的编码器特征不仅增加了高分类分数的比例(0.82%对比0.35%),而且提供了更多同时具有高分类分数和高IoU分数的特征(0.67%对比0.30%)。作者还评估了在val2017上用两种查询选择训练的检测器的准确性,其中IoU感知查询选择在AP上实现了0.8%的提升(48.7%对比47.9%)。
解码器
下表显示了RT-DETR在不同解码器层数下的准确性和速度。当解码器层数为6时,检测器达到了最佳的53.1% AP。作者还分析了每个解码器层对推理速度的影响,并得出结论,每个解码器层大约消耗0.5毫秒。
此外,作者发现解码器相邻层之间的准确性差异随着解码器层索引的增加而逐渐减小。以6层解码器为例,使用5层进行推理只在准确性上损失0.1% AP(53.1%对比53.0%),同时将延迟减少了0.5毫秒(9.3毫秒对比8.8毫秒)。因此,RT-DETR支持在不需要为推理重新训练的情况下,通过使用不同的解码器层灵活调整推理速度,这有助于实时检测器的实际应用。
复现
我们首先对训练过程进行复现,数据集仍然使用COCO。
我们进入下面的文件:“rtdetr_pytorch/configs/dataset/coco_detection.yml”
找到下面的这个文件"RT-DETR-main/rtdetr_pytorch/tools/train.py"
在配置文件中填写参数。
之后运行train.py即可开始训练,训练过程如下。
训练好的模型会保存到output路径下。
我们使用COCO的验证集对模型进行推理测试,命令如下
torchrun --nproc_per_node=1 tools/infer.py -c configs/rtdetr/rtdetr_r50vd_6x_coco.yml -r output/rtdetr_r50vd_6x_coco_from_paddle.pth -f dataset/cocoal2017
测试结果如下图:
总结
本文介绍了一种新型的实时目标检测模型——实时检测Transformer(RT-DETR),它在速度和准确性方面都超越了现有的先进YOLO检测器。
RT-DETR采用了一个高效的混合编码器,通过解耦内部尺度交互和跨尺度融合来快速处理多尺度特征,显著提高了推理速度。同时提出了一种新的查询选择方法,通过显式优化不确定性,为解码器提供高质量的初始查询,从而提高了准确性。RT-DETR支持通过调整解码器层数来灵活调整速度,以适应不同的实时场景,无需重新训练。
尽管RT-DETR在速度和准确性上取得了显著进步,但在小目标检测上仍有改进空间。总的来说,RT-DETR通过其创新的编码器设计和查询选择策略,为实时目标检测领域提供了一种新的高性能解决方案。
成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"
"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"
神秘泣男子