百度的 RT-DETR:一种基于 Vision Transformer 的实时对象检测器
概述
由百度开发的实时检测 Transformer (RT-DETR) 是一种先进的端到端对象检测器,可在保持高精度的同时提供实时性能。它基于 DETR(无 NMS 框架)的思想,同时引入了基于 conv 的骨干网络和一个高效的混合编码器以获得实时速度。RT-DETR 通过解耦尺度内交互和跨尺度融合来高效地处理多尺度特征。该模型具有高度的适应性,支持使用不同的解码器层灵活调整推理速度,而无需重新训练。RT-DETR 在 CUDA 与 TensorRT 等加速后端上表现出色,优于许多其他实时对象检测器。
观看: 实时检测 Transformer (RT-DETR)
百度 RT-DETR 概述。 RT-DETR 模型架构图显示了骨干网络的最后三个阶段 {S3, S4, S5} 作为编码器的输入。高效的混合编码器通过尺度内特征交互 (AIFI) 和跨尺度特征融合模块 (CCFM) 将多尺度特征转换为图像特征序列。采用 IoU 感知查询选择来选择固定数量的图像特征,以用作解码器的初始对象查询。最后,带有辅助预测头的解码器迭代地优化对象查询以生成框和置信度分数(来源)。
主要功能
- 高效混合编码器: 百度公司的 RT-DETR 采用了一种高效的混合编码器,通过解耦尺度内交互和跨尺度融合来处理多尺度特征。这种独特的基于 Vision Transformers 的设计降低了计算成本,并实现了实时的目标检测。
- IoU感知查询选择: 百度公司的 RT-DETR 通过利用 IoU 感知查询选择来改进对象查询初始化。这使得模型能够专注于场景中最相关的对象,从而提高检测精度。
- 可调整的推理速度: Baidu 的 RT-DETR 支持通过使用不同的解码器层灵活调整推理速度,而无需重新训练。这种适应性有助于在各种实时对象检测场景中的实际应用。
- 无 NMS 框架: 基于 DETR,RT-DETR 无需非极大值抑制后处理,从而简化了检测流程并可能提高了效率。
- 无Anchor检测: 作为一个无anchor检测器,RT-DETR 简化了检测过程,并可能提高在不同数据集上的泛化能力。
预训练模型
Ultralytics Python API 提供了具有不同规模的预训练 PaddlePaddle RT-DETR 模型:
- RT-DETR-L:在 COCO val2017 上达到 53.0% AP,在 T4 GPU 上达到 114 FPS
- RT-DETR-X:在 COCO val2017 上达到 54.8% AP,在 T4 GPU 上达到 74 FPS
此外,百度于 2024 年 7 月发布了 RTDETRv2,它在原始架构的基础上进一步改进,并增强了性能指标。
使用示例
此示例提供了简单的 RT-DETR 训练和推理示例。有关这些和其他模式的完整文档,请参见Predict、Train、Val和Export文档页面。
示例
from ultralytics import RTDETR
# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("rtdetr-l.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the RT-DETR-l model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
# Load a COCO-pretrained RT-DETR-l model and train it on the COCO8 example dataset for 100 epochs
yolo train model=rtdetr-l.pt data=coco8.yaml epochs=100 imgsz=640
# Load a COCO-pretrained RT-DETR-l model and run inference on the 'bus.jpg' image
yolo predict model=rtdetr-l.pt source=path/to/bus.jpg
支持的任务和模式
此表显示了模型类型、特定的预训练权重、每个模型支持的任务以及各种支持的模式(训练、验证、预测、导出),以✅表情符号表示。
模型类型 | 预训练权重 | 支持的任务 | 推理 | 验证 | 训练 | 导出 |
---|---|---|---|---|---|---|
RT-DETR Large | rtdetr-l.pt | 目标检测 | ✅ | ✅ | ✅ | ✅ |
RT-DETR Extra-Large | rtdetr-x.pt | 目标检测 | ✅ | ✅ | ✅ | ✅ |
理想用例
RT-DETR 特别适用于需要高精度和实时性能的应用:
- 自动驾驶:用于自动驾驶系统中的可靠环境感知,其中速度和准确性都至关重要。了解更多关于自动驾驶汽车中的人工智能。
- 高级机器人技术: 使机器人能够在动态环境中执行需要精确物体识别和交互的复杂任务。 探索人工智能在机器人技术中的作用。
- 医学影像:适用于医疗保健领域,在该领域中,物体检测的精度对于诊断至关重要。探索医疗保健领域的人工智能。
- 监控系统:适用于需要高检测精度进行实时监控的安全应用。了解安全警报系统。
- 卫星图像分析:适用于需要详细分析高分辨率图像且全局上下文理解非常重要的应用。阅读有关卫星图像中的计算机视觉的信息。
引用与致谢
如果您在研究或开发工作中使用百度的 RT-DETR,请引用原始论文:
@misc{lv2023detrs,
title={DETRs Beat YOLOs on Real-time Object Detection},
author={Wenyu Lv and Shangliang Xu and Yian Zhao and Guanzhong Wang and Jinman Wei and Cheng Cui and Yuning Du and Qingqing Dang and Yi Liu},
year={2023},
eprint={2304.08069},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
对于 RTDETRv2,您可以引用 2024 年的论文:
@misc{lv2024rtdetrv2,
title={RTDETRv2: All-in-One Detection Transformer Beats YOLO and DINO},
author={Wenyu Lv and Yian Zhao and Qinyao Chang and Kui Huang and Guanzhong Wang and Yi Liu},
year={2024},
eprint={2407.17140},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
我们要感谢百度和 PaddlePaddle 团队创建并维护了这一宝贵资源,为 计算机视觉 社区做出了贡献。 非常感谢他们通过开发基于 Vision Transformers 的实时目标检测器 RT-DETR 对该领域做出的贡献。
常见问题
什么是百度公司的 RT-DETR 模型?它是如何工作的?
百度的 RT-DETR(Real-Time Detection Transformer)是一种基于 Vision Transformer 架构构建的先进的实时对象检测器。它通过其高效的混合编码器解耦尺度内交互和跨尺度融合,从而高效地处理多尺度特征。通过采用 IoU 感知查询选择,该模型专注于最相关的对象,从而提高检测精度。其可适应的推理速度通过调整解码器层而无需重新训练来实现,使得 RT-DETR 适用于各种实时对象检测场景。在RT-DETR Arxiv 论文中了解更多关于 RT-DETR 特性的信息。
如何使用 Ultralytics 提供的预训练 RT-DETR 模型?
您可以利用 Ultralytics python API 来使用预训练的 PaddlePaddle RT-DETR 模型。例如,要在 T4 GPU 上加载在 COCO val2017 上预训练的 RT-DETR-l 模型并实现高 FPS,您可以利用以下示例:
示例
from ultralytics import RTDETR
# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("rtdetr-l.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the RT-DETR-l model on the 'bus.jpg' image
results = model("path/to/bus.jpg")
# Load a COCO-pretrained RT-DETR-l model and train it on the COCO8 example dataset for 100 epochs
yolo train model=rtdetr-l.pt data=coco8.yaml epochs=100 imgsz=640
# Load a COCO-pretrained RT-DETR-l model and run inference on the 'bus.jpg' image
yolo predict model=rtdetr-l.pt source=path/to/bus.jpg
与其他实时对象检测器相比,为什么我应该选择百度的 RT-DETR?
百度的 RT-DETR 因其高效的混合编码器和 IoU 感知查询选择而脱颖而出,这大大降低了计算成本,同时保持了高精度。它通过使用不同的解码器层而无需重新训练来调整推理速度的独特能力增加了显著的灵活性。这使得它对于需要在 CUDA 与 TensorRT 等加速后端上实现实时性能的应用特别有利,优于许多其他实时对象检测器。与传统的基于 CNN 的检测器相比,Transformer 架构还提供了更好的全局上下文理解。
RT-DETR 如何支持针对不同实时应用的可调整的推理速度?
百度公司的 RT-DETR 允许通过使用不同的解码器层灵活调整推理速度,而无需重新训练。这种适应性对于在各种实时对象检测任务中扩展性能至关重要。无论您需要更快的处理速度以满足较低的精度需求,还是需要更慢但更准确的检测,RT-DETR 都可以进行定制以满足您的特定需求。此功能在跨具有不同计算能力的设备部署模型时尤其有价值。
我可以将RT-DETR模型与其他Ultralytics模式(如训练、验证和导出)一起使用吗?
是的,RT-DETR 模型与各种 Ultralytics 模式兼容,包括训练、验证、预测和导出。您可以参考相应的文档,详细了解如何使用这些模式:训练、验证、预测 和 导出。这确保了开发和部署目标检测解决方案的完整工作流程。Ultralytics 框架在不同的模型架构之间提供一致的 API,从而可以轻松使用 RT-DETR 模型。