跳转至内容

百度的 RT-DETR:一种基于 Vision Transformer 的实时对象检测器

概述

实时检测Transformer RT-DETR)由百度开发,是一种尖端的端到端对象检测器,在保持高精度的同时提供实时性能。它基于 DETR(NMS 框架)的思想,同时引入了基于 conv 的骨干和高效混合编码器,以获得实时速度。RT-DETR 通过解耦尺度内交互和跨尺度融合,高效处理多尺度特征。该模型适应性强,支持使用不同的解码器层灵活调整推理速度,无需重新训练。RT-DETR 在使用TensorRT 的CUDA 等加速后端上表现出色,优于许多其他实时对象检测器。



观看: 如何使用百度RT-DETR 进行对象检测、推理以及利用Ultralytics 进行基准测试 🚀

模型示例图片百度 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:COCO val2017 的AP 为 53.0%,T4GPU为 114 FPS
  • RT-DETR:COCO val2017 的AP 为 54.8%,T4GPU为 74 FPS

此外,百度于 2024 年 7 月发布了 RTDETRv2,它在原始架构的基础上进一步改进,并增强了性能指标。

使用示例

此示例提供了简单的 RT-DETR 训练和推理示例。有关这些和其他模式的完整文档,请参见PredictTrainValExport文档页面。

示例

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 Largertdetr-l.pt目标检测
RT-DETR Extra-Largertdetr-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 DetectionTransformer,实时检测Transformer)是一种基于视觉Transformer 架构的先进实时物体Transformer 。它通过高效的混合编码器解耦尺度内交互和跨尺度融合,从而高效处理多尺度特征。通过采用IoU查询选择技术,该模型可专注于最相关的物体,从而提高检测精度。RT-DETR 可通过调整解码器层实现推理速度的调整,无需重新训练,因此适用于各种实时对象检测场景。有关RT-DETR 功能的更多信息,请参阅RT-DETR Arxiv 论文

如何使用 Ultralytics 提供的预训练 RT-DETR 模型?

您可以利用Ultralytics Python API 使用预训练的PaddlePaddle RT-DETR 模型。例如,要加载在COCO val2017 上预先训练好的RT-DETR 模型,并在 T4GPU 上实现高 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查询选择而脱颖而出,在保持高准确度的同时大幅降低了计算成本。其无需重新训练即可通过使用不同的解码器层来调整推理速度的独特能力大大增加了灵活性。这使得它在需要在加速后端(如带有TensorRT 的CUDA )上实现实时性能的应用中特别有优势,超越了许多其他实时对象检测器。与传统的基于 CNN 的检测器相比,transformer 架构还能提供更好的全局上下文理解。

RT-DETR 如何支持针对不同实时应用的可调整的推理速度?

百度公司的 RT-DETR 允许通过使用不同的解码器层灵活调整推理速度,而无需重新训练。这种适应性对于在各种实时对象检测任务中扩展性能至关重要。无论您需要更快的处理速度以满足较低的精度需求,还是需要更慢但更准确的检测,RT-DETR 都可以进行定制以满足您的特定需求。此功能在跨具有不同计算能力的设备部署模型时尤其有价值。

我可以将RT-DETR模型与其他Ultralytics模式(如训练、验证和导出)一起使用吗?

是的,RT-DETR 模型与各种 Ultralytics 模式兼容,包括训练、验证、预测和导出。您可以参考相应的文档,详细了解如何使用这些模式:训练验证预测导出。这确保了开发和部署目标检测解决方案的完整工作流程。Ultralytics 框架在不同的模型架构之间提供一致的 API,从而可以轻松使用 RT-DETR 模型。



📅 2 年前创建 ✏️ 1 个月前更新
glenn-jocherRizwanMunawarleonnilLaughing-qMatthewNoyce

评论