新闻详情

新闻详情

首页 / 资讯中心 / 详情

【CVPR-2024 】| RT-DETR 论文精读-Hybrid Encoder、Query 选择与消融实验

发布时间:2026/10/2 15:14:03来源:尧图网络
【CVPR-2024 】| RT-DETR 论文精读-Hybrid Encoder、Query 选择与消融实验
论文链接 DETRs Beat YOLOs on Real-time Object 点击跳转目录一. 为什么需要 RT-DETR二. RT-DETR 整体做了什么2.1 Efficient Hybrid Encoder2.2 Uncertainty-minimal Query Selection2.3 去掉 NMS三. Hybrid Encoder 怎么工作3.1 AIFI模块-为什么只在 P5 上做注意力3.2 CCFF-怎样融合不同尺度3.3 对照三段关键代码四. 实验结果与性能对比4.1 Hybrid Encoder 消融4.2 Query Selection 消融4.3 最终表现五. 总结与局限一. 为什么需要 RT-DETR对于目标检测模型我们要同时尽可能地追求些什么检测精度AP推理速度FPS 或延迟工程部署是否需要 NMS、TensorRT、特殊硬件目标检测模型有很多其中最主流的还是YOLO系列模型而基于端到端Transformer的检测器(DETR)也展现出强大的检测性能。作者观察到YOLO的非极大值抑制NMS 后处理带来了两个根本性问题拖慢推理速度NMS 是串行操作在检测框较多时耗时显著。引入不稳定性NMS 的阈值是超参数不同场景需要手动调整导致检测器的速度和精度存在不稳定性。虽然DETR模型可以避免NMS但是其计算成本还是太高无法满足实时性要求所以作者提出RT-DETR模型让 DETR 保留端到端检测的优点同时达到实时目标检测的速度和精度。接下来我们来研究论文是如何去创新和改造的二. RT-DETR 整体做了什么RT-DETR 的方法重点不是发明了一个全新 Transformer而是解决 DETR 的实时性问题。我们先根据RT-DETR这个模型的推理主链路来发现作者的改造思路。2.1 Efficient Hybrid EncoderHybrid Encoder 用 AIFI 处理最高层特征再用 CCFF 融合多尺度特征。具体原因和实现见第三节。2.2 Uncertainty-minimal Query SelectionDETR 需要从特征中选择一批查询框也就是 object queries。RT-DETR 推理时仍按编码器预测的分类分数选出分数最高的 300 个特征作为初始 query。区别在于训练阶段模型利用预测框与真实框的 IoU 监督分类分数使高分特征更可能同时具备较好的分类和定位质量。推理时没有真实框因此不会直接计算真实 IoU 来排序。因为 query 不是“分类候选”而是“检测假设”。分类高只说明它“像什么”IoU 低说明它“在哪里”完全不可靠。让一个位置错的假设成为 decoder 的重要 query会把 decoder 的有限注意力和容量引导到错误区域。2.3 去掉 NMSRT-DETR 的预测过程是端到端的不依赖传统 NMS。这不是简单地“删掉一个函数”而是模型训练、query 数量、decoder 输出和后处理一起设计的结果也就是每个查询直接输出一个目标类别 边界框。推理时RT-DETR 在训练中采用一对一匹配让预测 query 与真实目标建立分工推理阶段直接输出预测集合不执行传统的 NMS 重叠框删除。Query 之间的自注意力有助于信息交互但不能单独解释为什么模型不依赖 NMS也不能保证绝对没有重复预测。YOLO 输出大量候选框必须靠 NMS 去重YOLO 的基本思路是NMS 会增加后处理开销其耗时受候选框数量和阈值影响RT-DETR 端到端直接输出速度更稳定没有 NMS 超参数烦恼。这正是 RT-DETR 相对 YOLO 的最大优势。原始 DETR 为什么不够适合实时检测我们来看这个计算量巨大原始 DETR 对全部特征位置做全局自注意力计算复杂度为 O(N²)N 为特征位置总数导致推理速度慢。收敛速度慢DETR 需要较长的训练周期才能收敛训练成本高。小目标检测弱原始 DETR 在低层高分辨率特征上的利用不足对小目标检测效果不佳。RT-DETR 正是针对这些问题通过 Hybrid Encoder 和高效查询选择机制在保持端到端优势的同时大幅提升推理速度。这个三. Hybrid Encoder 怎么工作如我们前面所说Backbone 输出三层特征特征层下采样倍数特征尺寸主要作用P3880 × 80小目标P41640 × 40中等目标P53220 × 20大目标、全局语义为什么不能对三层都使用 TransformerTransformer 的自注意力需要让每个位置和其他位置交互。如果特征图有 N 个位置计算量大致和N 2 N^2N2三层特征总位置数80 × 80 40 × 40 20 × 20 6400 1600 400 8400如果对全部特征做全局注意力需要处理8400² ≈ 7056 万个位置关系。但最深层 P5 只有20 × 20 400 个位置400² 16 万个位置关系注意力关系数量大约减少441倍这是注意力位置关系数量的示意比值不是实测模型加速倍数。这就是它加速的根本原因之一。因此RT-DETR 的策略是高层特征使用 Transformer 建立全局关系低层特征使用卷积进行快速融合它不是完全放弃 Transformer而是只把 Transformer 用在最划算的位置。3.1 AIFI模块-为什么只在 P5 上做注意力正如前面所说Backbone提取多尺度特征后会交给Hybrid Encoder 来处理Hybrid Encoder 则由 由以下两部分组成而AIFI模块则是在里面负责“尺度内交互”也就是接收P5特征对P5内的每个位置生成 Query、Key、Value做多头自注意力(就是为了让P5的每个位置都融合了同一层其他所有位置的信息获得了全局上下文。举个通俗的例子A位置是狗头B位置是狗尾巴C位置是草地背景通过自注意力位置 A 会吸收 B 的信息从而知道“这里有一整只狗”同时对于位置B来说他也会吸收A的信息从而知道他自己是狗的一部分而位置 C 如果与狗无关注意力权重就低影响小。)再经过前馈网络 FFN输出增强后的 P5到CCFF。核心代码如下所示src_flattenproj_feats[enc_ind].flatten(2).permute(0,2,1)memoryself.encoder[i](src_flatten,pos_embedpos_embed)具体写成公式A t t e n t i o n ( Q , K , V ) s o f t m a x ( Q K T d ) V \mathrm{Attention}(Q, K, V) \mathrm{softmax}\left( \frac{Q K^T}{\sqrt{d}} \right) VAttention(Q,K,V)softmax(d​QKT​)Vps为什么只选 P5P5分辨率最低token 数最少20*20 400 token同时 P5 语义最强做全局建模收益最大。所以 RT-DETR 选择只在 P5 内部用自注意力做全局交流这就是 AIFI。3.2 CCFF-怎样融合不同尺度CCFF 可以理解为把不同分辨率的特征重新融合起来。它包含两个方向自顶向下把高层语义信息传给低层特征P5 → 上采样 → 与 P4 融合 P4 → 上采样 → 与 P3 融合自底向上把低层的精确位置信息传回高层P3 → 下采样 → 与 P4 融合 P4 → 下采样 → 与 P5 融合所以 CCFF 不是简单地把特征拼起来而是进行双向多尺度融合。psCCFF 主要由 卷积层 组成由多个 Fusion Block 堆叠而成每个 Block 负责融合相邻尺度的特征。3.3 对照三段关键代码根据前面的流程附上Hybrid Encoder核心代码Backbone 输出三个尺度的特征它们原本的通道数不同。input_proj 用 1×1 卷积将其统一到 hidden_dim256方便后续处理。proj_feats[self.input_proj[i](feat)fori,featinenumerate(feats)]AIFI只对选定尺度做 Transformer 编码默认 use_encoder_idx[2]因此三个输入尺度中只有索引 2 对应的最高层特征进入 Transformer。fori,enc_indinenumerate(self.use_encoder_idx):h,wproj_feats[enc_ind].shape[2:]src_flattenproj_feats[enc_ind].flatten(2).permute(0,2,1)memoryself.encoder[i](src_flatten,pos_embedpos_embed)proj_feats[enc_ind]memory.permute(0,2,1).reshape(-1,self.hidden_dim,h,w)CCFF先自顶向下再自底向上融合AIFI 处理的是单个尺度内部的信息CCFF 则负责让不同尺度交换信息。上采样后拼接、下采样后拼接分别对应代码中的 FPN 和 PAN 路径。# 自顶向下高层特征上采样与低层特征融合upsample_featF.interpolate(feat_high,scale_factor2.,modenearest)inner_outself.fpn_blocks[block_idx](torch.concat([upsample_feat,feat_low],dim1))# 自底向上低层特征下采样与高层特征融合downsample_featself.downsample_convs[block_idx](feat_low)outself.pan_blocks[block_idx](torch.concat([downsample_feat,feat_high],dim1))先对 S5 做尺度内注意力再通过卷积式双向融合把信息传给其他尺度。四. 实验结果与性能对比4.1 Hybrid Encoder 消融为什么只在高层特征上做注意力前面介绍了 RT-DETR 用 AIFI 和 CCFF 处理多尺度特征但“结构看起来更轻”不等于“实际更快”。作者通过逐步改变编码器结构比较检测精度 AP 和推理延迟验证哪些设计真正有效。编码器方案AP%延迟msA不使用多尺度 Transformer 编码器43.07.2B加入单尺度 Transformer 编码器44.911.1C进一步使用多尺度 Transformer 编码器45.613.3D将尺度内交互与跨尺度融合分开46.412.2D-S5仅在最高层特征 S5 上做注意力46.87.9E最终的 Efficient Hybrid Encoder47.99.3怎样读这张表A→BAP 提高 1.9但延迟也明显增加说明尺度内特征交互有用却有计算代价。C→DAP 提高 0.8、延迟从 13.3 ms 降到 12.2 ms支持“把尺度内交互与跨尺度融合分开”的设计。D→D-S5只在 S5 上做注意力后AP 从 46.4 提高到 46.8延迟从 12.2 ms 降到 7.9 ms约减少 35% 延迟。这说明在该实验设置下不必让所有尺度都承担注意力计算。最关键最终方案 E 取得更高的 47.9 AP但延迟为 9.3 ms并不是表中最快的方案它追求的是速度与精度的折中。4.2 Query Selection 消融选出的查询真的更好吗RT-DETR 需要从编码器输出中选出 300 个特征送入 Decoder 作为初始查询。问题在于分类分数高的特征其预测框不一定定位准确。作者比较普通查询选择Vanilla与其提出的 Uncertainty-minimal Query Selection并同时观察选中特征的质量和最终检测 AP。查询选择方法AP%分类分数 0.5 的比例%分类分数和 IoU 都 0.5 的比例%Vanilla47.90.350.30Uncertainty-minimal48.70.820.67采用新方法后论文报告的两项高质量特征比例均提高最终 AP 从 47.9 提高到 48.7即 0.8 AP。这为“改善初始查询质量有助于检测精度”提供了证据。4.3 最终表现RT-DETR 在 COCO 数据集上的表现如下模型参数量输入尺寸mAPFPS (T4 GPU)YOLOv8-X68M640×64053.950RT-DETR-R5042M640×64053.1108RT-DETR-R10176M640×64054.374数据来源RT-DETR 论文CVPR 2024。具体数值以论文为准。可以看到R50 比表中 YOLOv8-X 更快但 AP 低 0.8 个百分点。五. 总结与局限RT-DETR 的核心贡献可以概括为三点Hybrid Encoder用「注意力 卷积」的混合编码器在关键位置用 Transformer 建模全局关系在其他位置用卷积高效融合兼顾精度与速度。IoU-aware Query Selection让 decoder 的初始查询更可靠加速收敛并提升检测质量。端到端无 NMS通过精心设计的训练和推理流程彻底摆脱 NMS 后处理推理更稳定。值得思考的点为什么只对 P5 做自注意力因为 P5 分辨率最低、token 最少、语义最强性价比最高。CCFF 的双向融合自顶向下 自底向上如何平衡语义信息和空间细节这是多尺度特征融合的经典问题。如果换用更强的骨干网络如 Swin TransformerRT-DETR 的性能还能进一步提升吗RT-DETR 为实时目标检测提供了一个新的范式不是所有位置都需要全局注意力把算力花在刀刃上。这一思路对后续的检测器设计有很强的启发意义。见** 其它优质专栏推荐 《Java核心系列修炼内功无上心法)》:主要是JDK源码的核心讲解几乎每篇文章都过万字让你详细掌握每一个知识点 《springBoot 源码剥析核心系列》一些场景的Springboot源码剥析以及常用Springboot相关知识点解读欢迎加入狮子的社区『Lion-编程进阶之路』日常收录优质好文**更多文章可持续关注上方的博客2025咱们顶峰相
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

YOLOv8猫狗检测实战:4300张数据集训练调优与部署全解析 2026/10/2 16:07:15

YOLOv8猫狗检测实战:4300张数据集训练调优与部署全解析

1. 为什么我盯上了这个4300张的猫狗检测数据集做目标检测这行的朋友都有一个共识:模型结构可以复现,训练脚本可以照抄,唯独高质量、标注规范、场景覆盖到位的数据集,是真正卡脖子的资源。我前后经手过十几个宠物识别相关的项目&am…

阅读更多 →
Paperclip:Node.js+React+OpenClaw构建AI Agent轻量落地架构 2026/10/2 16:07:14

Paperclip:Node.js+React+OpenClaw构建AI Agent轻量落地架构

1. 项目概述:Paperclip 不是回形针,而是一个被严重误读的 AI 工程实践入口“Paperclip”这个词一出来,很多人第一反应是办公桌上那个弯弯绕绕的金属小物件——回形针。但在这个技术语境下,它根本不是物理实体,而是一个…

阅读更多 →
视觉原型驱动的小目标检测数据生成方法 2026/10/2 16:07:14

视觉原型驱动的小目标检测数据生成方法

1. 这不是又一个“数据增强”噱头,而是小目标检测领域正在发生的静默革命你有没有在做无人机航拍图像的小目标检测时,被这样的问题反复折磨过:标注一张图要花20分钟,而模型在测试集上一遇到遮挡、低分辨率、尺度突变就直接漏检&am…

阅读更多 →
AMD ROCm云实例部署Gemma4:15分钟落地实战与踩坑记录 2026/10/2 16:07:14

AMD ROCm云实例部署Gemma4:15分钟落地实战与踩坑记录

直奔主题:AMD ROCm 云实例跑 Gemma4,15 分钟到底是噱头还是真能落地? 先说结论:15 分钟这个数字,如果你指的是 从拿到一台裸的 AMD 云实例、到模型开始正常吐字 ,那是有可能做到的,但前提是你…

阅读更多 →
GPTs 提示词工程解析:「互联网+挑战杯大创竞赛导师」的五维角色配置设计 2026/10/2 16:07:14

GPTs 提示词工程解析:「互联网+挑战杯大创竞赛导师」的五维角色配置设计

提示工程 【免费下载链接】GPTs leaked prompts of GPTs 项目地址: https://gitcode.com/GitHub_Trending/gp/GPTs 点击查看 免费下载 本文以开源仓库 GitHub_Trending/gp/GPTs 中收录的泄露提示词 互联网挑战杯大创竞赛导师.md 为研究对象,逐段拆解这份…

阅读更多 →
云服务器代理商:Hermes Agent API集成指南 让 AI 助手连接你的所有业务|TaoToken 统一 Key 打通 OpenAI 与 CRM Webhook 2026/10/2 16:07:00

云服务器代理商:Hermes Agent API集成指南 让 AI 助手连接你的所有业务|TaoToken 统一 Key 打通 OpenAI 与 CRM Webhook

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉