模型简介
模型特点
模型能力
使用案例
🚀 RT-DETR模型卡
RT-DETR是一种实时端到端目标检测模型,解决了现有目标检测框架在速度和准确性上的困境。它结合了DETR的优势,通过高效混合编码器和不确定性最小查询选择,在保持速度的同时提高了准确性,适用于多种实时目标检测场景。
🚀 快速开始
使用以下代码开始使用该模型:
import torch
import requests
from PIL import Image
from transformers import RTDetrForObjectDetection, RTDetrImageProcessor
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
image_processor = RTDetrImageProcessor.from_pretrained("PekingU/rtdetr_r50vd")
model = RTDetrForObjectDetection.from_pretrained("PekingU/rtdetr_r50vd")
inputs = image_processor(images=image, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
results = image_processor.post_process_object_detection(outputs, target_sizes=torch.tensor([image.size[::-1]]), threshold=0.3)
for result in results:
for score, label_id, box in zip(result["scores"], result["labels"], result["boxes"]):
score, label = score.item(), label_id.item()
box = [round(i, 2) for i in box.tolist()]
print(f"{model.config.id2label[label]}: {score:.2f} {box}")
此代码应输出:
sofa: 0.97 [0.14, 0.38, 640.13, 476.21]
cat: 0.96 [343.38, 24.28, 640.14, 371.5]
cat: 0.96 [13.23, 54.18, 318.98, 472.22]
remote: 0.95 [40.11, 73.44, 175.96, 118.48]
remote: 0.92 [333.73, 76.58, 369.97, 186.99]
✨ 主要特性
- 实时端到端检测:RT-DETR是首个实时端到端目标检测器,解决了YOLO系列中NMS对速度和准确性的负面影响,以及基于Transformer的检测器(DETRs)计算成本高的问题。
- 高效混合编码器:通过解耦尺度内交互和跨尺度融合,设计了高效混合编码器,可快速处理多尺度特征,提高检测速度。
- 不确定性最小查询选择:提出了不确定性最小查询选择方法,为解码器提供高质量的初始查询,从而提高检测准确性。
- 灵活的速度调整:支持通过调整解码器层数来灵活调整速度,以适应各种场景,无需重新训练。
- 高性能表现:在COCO数据集上,RT-DETR-R50 / R101达到了53.1% / 54.3%的平均精度(AP),在T4 GPU上达到了108 / 74 FPS,在速度和准确性上均优于先前先进的YOLO模型。
📦 安装指南
文档未提及安装步骤,跳过该章节。
💻 使用示例
基础用法
import torch
import requests
from PIL import Image
from transformers import RTDetrForObjectDetection, RTDetrImageProcessor
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
image_processor = RTDetrImageProcessor.from_pretrained("PekingU/rtdetr_r50vd")
model = RTDetrForObjectDetection.from_pretrained("PekingU/rtdetr_r50vd")
inputs = image_processor(images=image, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
results = image_processor.post_process_object_detection(outputs, target_sizes=torch.tensor([image.size[::-1]]), threshold=0.3)
for result in results:
for score, label_id, box in zip(result["scores"], result["labels"], result["boxes"]):
score, label = score.item(), label_id.item()
box = [round(i, 2) for i in box.tolist()]
print(f"{model.config.id2label[label]}: {score:.2f} {box}")
高级用法
文档未提及高级用法代码示例,跳过该部分。
📚 详细文档
模型详情
YOLO系列由于在速度和准确性之间进行了合理的权衡,已成为实时目标检测中最流行的框架。然而,我们观察到YOLO的速度和准确性受到非极大值抑制(NMS)的负面影响。最近,基于端到端Transformer的检测器(DETRs)提供了一种消除NMS的替代方案。然而,高计算成本限制了它们的实用性,并阻碍了它们充分发挥排除NMS的优势。
在本文中,我们提出了实时检测Transformer(RT-DETR),据我们所知,这是第一个解决上述困境的实时端到端目标检测器。我们分两步构建RT-DETR,借鉴了先进的DETR:首先,我们专注于在提高速度的同时保持准确性,然后在保持速度的同时提高准确性。具体来说,我们设计了一个高效的混合编码器,通过解耦尺度内交互和跨尺度融合来快速处理多尺度特征,以提高速度。然后,我们提出了不确定性最小查询选择方法,为解码器提供高质量的初始查询,从而提高准确性。此外,RT-DETR支持通过调整解码器层数来灵活调整速度,以适应各种场景,无需重新训练。
我们的RT-DETR-R50 / R101在COCO数据集上达到了53.1% / 54.3%的平均精度(AP),在T4 GPU上达到了108 / 74 FPS,在速度和准确性上均优于先前先进的YOLO模型。我们还开发了缩放版的RT-DETR,其性能优于较轻量级的YOLO检测器(S和M模型)。此外,RT-DETR-R50在准确性上比DINO-R50高2.2% AP,在FPS上约高21倍。在使用Objects365进行预训练后,RT-DETR-R50 / R101达到了55.3% / 56.2%的AP。项目页面:https URL。
模型来源
- HF文档:RT-DETR
- 代码仓库:https://github.com/lyuwenyu/RT-DETR
- 论文:https://arxiv.org/abs/2304.08069
- 演示:RT-DETR Tracking
训练详情
训练数据
RTDETR模型在COCO 2017目标检测数据集上进行训练,该数据集分别包含118k/5k张用于训练/验证的标注图像。
训练过程
我们在COCO和Objects365数据集上进行实验,其中RT-DETR在COCO train2017数据集上进行训练,并在COCO val2017数据集上进行验证。我们报告了标准的COCO指标,包括平均精度(AP,在0.50 - 0.95的均匀采样IoU阈值范围内平均,步长为0.05)、AP50、AP75,以及不同尺度下的AP:AP-s、AP-m、AP-l。
预处理
图像被调整为640x640像素,并使用image_mean=[0.485, 0.456, 0.406]
和image_std=[0.229, 0.224, 0.225]
进行重新缩放。
训练超参数
训练机制相关信息以图片形式展示:
评估
模型 | 训练轮数 | 参数数量(M) | 浮点运算数(GFLOPs) | 帧率(FPS_bs=1) | 平均精度(AP,验证集) | AP50(验证集) | AP75(验证集) | AP-s(验证集) | AP-m(验证集) | AP-l(验证集) |
---|---|---|---|---|---|---|---|---|---|---|
RT-DETR-R18 | 72 | 20 | 60.7 | 217 | 46.5 | 63.8 | 50.4 | 28.4 | 49.8 | 63.0 |
RT-DETR-R34 | 72 | 31 | 91.0 | 172 | 48.5 | 66.2 | 52.3 | 30.2 | 51.9 | 66.2 |
RT-DETR R50 | 72 | 42 | 136 | 108 | 53.1 | 71.3 | 57.7 | 34.8 | 58.0 | 70.0 |
RT-DETR R101 | 72 | 76 | 259 | 74 | 54.3 | 72.7 | 58.6 | 36.0 | 58.8 | 72.1 |
RT-DETR-R18(Objects 365预训练) | 60 | 20 | 61 | 217 | 49.2 | 66.6 | 53.5 | 33.2 | 52.3 | 64.8 |
RT-DETR-R50(Objects 365预训练) | 24 | 42 | 136 | 108 | 55.3 | 73.4 | 60.1 | 37.9 | 59.9 | 71.8 |
RT-DETR-R101(Objects 365预训练) | 24 | 76 | 259 | 74 | 56.2 | 74.6 | 61.3 | 38.3 | 60.5 | 73.5 |
模型架构和目标
RT-DETR概述:我们将骨干网络最后三个阶段的特征输入到编码器中。高效混合编码器通过基于注意力的尺度内特征交互(AIFI)和基于卷积神经网络的跨尺度特征融合(CCFF)将多尺度特征转换为图像特征序列。然后,不确定性最小查询选择选择固定数量的编码器特征作为解码器的初始对象查询。最后,带有辅助预测头的解码器迭代优化对象查询,以生成类别和边界框。
引用
BibTeX:
@misc{lv2023detrs,
title={DETRs Beat YOLOs on Real-time Object Detection},
author={Yian Zhao and Wenyu Lv and Shangliang Xu and Jinman Wei and Guanzhong Wang and Qingqing Dang and Yi Liu and Jie Chen},
year={2023},
eprint={2304.08069},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
模型卡作者
🔧 技术细节
文档未提及足够详细的技术实现细节(未超过50字),跳过该章节。
📄 许可证
本模型采用Apache-2.0许可证。











