ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

YOLOv10 仓库中的 RT-DETR:基于 Vision Transformer 的实时端到端目标检测实战指南

YOLOv10 仓库中的 RT-DETR:基于 Vision Transformer 的实时端到端目标检测实战指南 YOLOv10 仓库中的 RT-DETR基于 Vision Transformer 的实时端到端目标检测实战指南【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10本指南系统讲解当前仓库yolov10 / Ultralytics 生态中集成的百度 RT-DETRReal-Time Detection Transformer从架构原理高效混合编码器、IoU-aware 查询选择、预训练模型指标到基于仓库源码的训练、推理、验证与导出全流程。读完本文你将掌握通过 Ultralytics Python API 和 CLI 加载rtdetr-l.pt/rtdetr-x.pt完成端到端目标检测实战的完整方法并理解其与 YOLO 系列在解码后处理上的本质差异。概述什么是 RT-DETRRT-DETRReal-Time Detection Transformer由百度开发是一种端到端end-to-end目标检测器在保持高精度的同时实现了实时推理性能。它利用 Vision TransformerViT的能力通过将尺度内特征交互intra-scale interaction与跨尺度特征融合cross-scale fusion解耦来高效处理多尺度特征。RT-DETR 具备很强的适应性可以使用不同的解码器层数灵活调整推理速度且无需重新训练在 CUDA TensorRT 等加速后端上表现优异。从仓库源码结构看RT-DETR 的实现被完整集成进 Ultralytics 框架模型接口位于 ultralytics/models/rtdetr/model.py对应的检测网络RTDETRDetectionModel定义于 ultralytics/nn/tasks.pyRTDETRDetectionModel类训练、推理、验证分别由RTDETRTrainer、RTDETRPredictor、RTDETRValidator承担。值得注意的是仓库中同时提供了基于 v8 风格 Backbone 的yolov8n-rtdetr.yaml配置见 ultralytics/cfg/models/v8/yolov8-rtdetr.yaml测试用例 tests/test_cli.py 即用它做端到端冒烟测试说明 RT-DETR 架构在本仓库内具有两种骨干载体。核心特性高效混合编码器Efficient Hybrid EncoderRT-DETR 采用解耦设计——仅对最高分辨率特征层使用基于 Vision Transformer 的 AIFI 层做尺度内交互其余尺度通过跨尺度特征融合模块CCFM融合。这种设计大幅降低计算成本使实时检测成为可能。IoU-aware 查询选择IoU-aware Query Selection与依赖分类置信度初始化查询的 DETR 变体不同RT-DETR 利用 IoU 感知的查询选择改进对象查询object queries初始化使模型更聚焦于场景中最相关的目标从而提升检测精度。可调节推理速度Adaptable Inference Speed通过使用不同数量的解码器层即可灵活调整推理速度无需重新训练方便在各类实时检测场景中做精度/速度权衡。架构级源码解析模型配置文件从 YAML 看网络结构仓库为 RT-DETR 提供了两种尺度规格的完整网络描述ultralytics/cfg/models/rt-detr/rtdetr-l.yamlnc: 80复合缩放常量l: [1.00, 1.00, 1024]depth/width/max_channelsultralytics/cfg/models/rt-detr/rtdetr-x.yamlnc: 80缩放常量x: [1.00, 1.00, 2048]以 rtdetr-l.yaml 为例其 Backbone 采用 HGNet 风格的HGStemHGBlock堆叠P2 至 P5 四层金字塔配合DWConv下采样Head 部分依次是 1×1Conv输入投影、AIFI自注意力层、nn.Upsample上采样与Concat拼接、RepC3重参数化块构成的 FPN/PAN 结构最后以RTDETRDecoder作为检测头接收 P3、P4、P5 三层特征。配置中的注释清楚标出了与 PaddlePaddle 原版对应的模块名如input_proj.2、lateral_convs.0、fpn_blocks.0、pan_blocks.0。AIFI尺度内特征交互AIFIAttention-based Intra-scale Feature Interaction定义在 ultralytics/nn/modules/transformer.pyAIFI类继承自TransformerEncoderLayer。从源码可以看到它只作用于最高分辨率特征层前向时将[B, C, H, W]展平为序列后做多头自注意力并构造 2D 正弦-余弦位置编码build_2d_sincos_position_embedding。这种只对最深特征做 Transformer、浅层走 CCFM的混合设计正是 RT-DETR 在速度与精度之间取得平衡的关键。RTDETRDecoder端到端解码器RTDETRDecoder实现在 ultralytics/nn/modules/head.pyRTDETRDecoder类其构造函数给出了核心超参数及默认值参数默认值含义hd256Transformer 隐藏维度nq300对象查询query数量ndp4可变形注意力采样点数nh8多头注意力头数ndl6解码器层数d_ffn1024前馈网络维度nd100去噪denoising训练查询数label_noise_ratio0.5标签噪声比例去噪训练box_noise_scale1.0框噪声缩放去噪训练该模块包含输入投影、可变形 Transformer 解码器DeformableTransformerDecoderLayer、去噪训练分支CDN group、编码器/解码器预测头enc_score_head/dec_bbox_head等与 query 位置预测query_pos_head。前向时它从三个尺度的特征投影得到序列化特征经 IoU-aware 查询选择获得初始查询与参考框再经多层解码器迭代优化后直接输出框与类别分数。预训练模型Ultralytics Python API 提供了不同规模的预训练 PaddlePaddle RT-DETR 权重官方文档给出的指标RT-DETR-LCOCO val2017 上 53.0% APT4 GPU 上 114 FPSRT-DETR-XCOCO val2017 上 54.8% APT4 GPU 上 74 FPS在代码中可通过模型名rtdetr-l.pt/rtdetr-x.pt直接加载首次使用会自动下载权重。模型接口 ultralytics/models/rtdetr/model.py 的RTDETR类支持.pt、.yaml、.yml三种格式任务固定为detect。使用示例以下示例与 docs/en/modes/index.md 等模式文档保持一致覆盖训练、推理、验证与导出。Python APIfrom ultralytics import RTDETR # 加载 COCO 预训练的 RT-DETR-l 模型 model RTDETR(rtdetr-l.pt) # 查看模型信息可选 model.info() # 在 COCO8 示例数据集上训练 100 个 epoch results model.train(datacoco8.yaml, epochs100, imgsz640) # 用 RT-DETR-l 对 bus.jpg 执行推理 results model(path/to/bus.jpg)COCO8 是一个仅含 8 张图片的迷你数据集配置见 ultralytics/cfg/datasets/coco8.yaml非常适合验证训练管线是否跑通。CLI 命令行# 加载 COCO 预训练的 RT-DETR-l 并训练 yolo train modelrtdetr-l.pt datacoco8.yaml epochs100 imgsz640 # 加载 COCO 预训练的 RT-DETR-l 并推理 yolo predict modelrtdetr-l.pt sourcepath/to/bus.jpg支持的 Task 与 Mode下表列出 RT-DETR 的模型类型、预训练权重、支持的任务以及可用的模式Train / Val / Predict / Export模型类型预训练权重支持任务推理验证训练导出RT-DETR Largertdetr-l.pt目标检测✅✅✅✅RT-DETR Extra-Largertdetr-x.pt目标检测✅✅✅✅各模式的完整文档参见 Predict、Train、Val、Export。训练、验证与推理的源码细节训练RTDETRTrainerRTDETRTrainerultralytics/models/rtdetr/train.py继承自DetectionTrainer与 YOLO 训练有以下关键差异损失组成get_validator中设置loss_names giou_loss, cls_loss, l1_loss即训练优化 GIOU 损失、分类损失与 L1 框回归损失三部分。方形输入build_dataset中强制rectFalse因为 RT-DETR 的推理要求方形640×640输入不支持矩形批量训练。数据增强差异RTDETRDataset.build_transformsultralytics/models/rtdetr/val.py在训练时使用v8_transforms(..., stretchTrue)即拉伸式scaleFill增强而非 letterbox。训练注意点类文档字符串明确提示——RT-DETR 使用的F.grid_sample不支持deterministicTrueAMP 混合精度训练可能导致 NaN 输出并引起二分图匹配错误。实际使用时如遇问题应关闭确定性模式或暂时使用 FP32。验证RTDETRValidatorRTDETRValidator同样位于 ultralytics/models/rtdetr/val.py。其postprocess与 YOLO 显著不同解码器固定输出300 个候选框因此验证阶段不做置信度阈值过滤源码注释明确说明only got 300 boxes here直接取每个框的最高分类分数并按置信度降序排序后再送入指标计算以保证 mAP 等内部指标统计正确。推理RTDETRPredictorRTDETRPredictorultralytics/models/rtdetr/predict.py继承了BasePredictor其postprocess逻辑体现了端到端检测器的特点模型输出直接拆分为 bbox前 4 维与分数其余维度无需 NMS 后处理——这正是 DETR 系模型end-to-end的含义对每个 query 取最高分类分数按conf阈值过滤并支持classes类别过滤pre_transform使用LetterBox(imgsz, autoFalse, scaleFillTrue)即强制拉伸填充到方形imgsz必须为 640。仓库测试 tests/test_python.py 中对rtdetr相关模型执行推理时也明确标注了imgsz640 # must be 640从测试侧印证了输入尺寸约束。端到端冒烟测试见 tests/test_cli.py 的test_rtdetr使用yolov8n-rtdetr.yaml在coco8.yaml上验证训练链路。引用与致谢如果在研究或开发中使用了百度 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} }同时感谢百度与 PaddlePaddle 团队为计算机视觉社区创建并持续维护 RT-DETR 这一基于 Vision Transformer 的实时目标检测器。延伸阅读想进一步深入模式用法可继续阅读 Predict 模式、Train 模式、Val 模式 与 Export 模式RT-DETR 在仓库内的全部源码入口集中在 ultralytics/models/rtdetr/ 目录。【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表