RT-DETR最新创新改进系列:4D辅助细化为检测颈部注入额外表达,融合后再增强,解码前再提纯,精度提升从特征质量开始!【细化特征,稳住精度】
本文为 RT-DETR 改进系列纯净发布稿,写法采用模块化技术博文形式:先讲痛点,再讲结构,再给配置、训练方式、实验表格和注意事项。全文仅保留技术正文,便于直接发布。
摘要
本文围绕 4D 辅助细化 展开。该版本属于 结构增强 方向,目标是在 RT-DETR 端到端检测框架中完成可复现、可对照、可训练的结构设计。相比只给模型文件,本文更关注为什么这样改、改在什么位置、如何训练、如何做消融,以及实验时应该重点观察哪些指标。
一、为什么要做这个改进
当数据集中存在遮挡、背景干扰或类别相似目标时,仅依靠一次融合后的特征直接进入解码器,可能出现语义不够稳定的问题。4D 版本在融合后加入辅助细化层,让解码前特征再经过一次非线性表达增强。
对于目标检测任务来说,结构改进不能只看单次训练的 mAP,还要看参数量、计算量、显存占用、FPS、收敛速度以及小目标表现。尤其是 RT-DETR 这类端到端检测器,解码器输入特征的质量会直接影响最终预测框和类别分数。
二、核心思想
4D 辅助细化的思路是先完成原有多尺度融合,再补充 RepC3 细化层。它并不破坏 RTDETRDecoder 的端到端检测逻辑,而是在解码前让融合特征获得额外的局部表达与通道重组能力。
可以把这篇文章的核心理解为一句话:细化特征,稳住精度。
| 对比维度 | 关注内容 | 实验观察点 |
|---|---|---|
| 精度 | mAP50、mAP50-95、召回率 | 是否稳定高于基线 |
| 速度 | FPS、单张推理耗时 | 是否适合实时检测 |
| 复杂度 | Params、GFLOPs、显存 | 是否增加部署压力 |
| 稳定性 | 多次训练波动 | 是否容易复现 |
三、网络结构变化
主要变化发生在 RT-DETR head/neck 的后段,在原融合路径后新增 auxiliary refinement 形式的 RepC3 层,再送入 RTDETRDecoder。
输入图像
|
Backbone 提取 P3/P4/P5 多尺度特征
|
Hybrid Encoder / Neck 特征融合
|
4D 辅助细化
|
RTDETRDecoder 端到端解码
|
输出预测框、类别和置信度
关键位置如下:
| 层号 | 位置 | 模块/结构 | 说明 |
|---|---|---|---|
| 3 | backbone | - |
# This variant ports the corresponding YOLO26 improvement into the RT-DETR neck/backbone while preserving RTDETRDecoder. |
| 36 | head/neck | RepC3 |
- [-1, 3, RepC3, [256]] # 16, fpn_blocks.0 |
| 42 | head/neck | RepC3 |
- [-1, 3, RepC3, [256]] # X3 (21), fpn_blocks.1 |
| 43 | head/neck | RepC3 |
- [-1, 1, RepC3, [256]] # auxiliary refinement |
| 47 | head/neck | RepC3 |
- [-1, 3, RepC3, [256]] # F4 (24), pan_blocks.0 |
| 51 | head/neck | RepC3 |
- [-1, 3, RepC3, [256]] # F5 (27), pan_blocks.1 |
| 53 | head/neck | RTDETRDecoder |
- [[21, 24, 27], 1, RTDETRDecoder, [nc]] # Detect(P3, P4, P5) |
四、YAML 配置片段
本文对应配置文件:ultralytics/cfg/models/rt-detr/rtdetr-l-4D.yaml。
001:
002: # Ultralytics RT-DETR-l hybrid object detection model with P3/8 - P5/32 outputs
003: # This variant ports the corresponding YOLO26 improvement into the RT-DETR neck/backbone while preserving RTDETRDecoder.
004:
005: # Parameters
...
034: - [7, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 14 input_proj.1
035: - [[-2, -1], 1, Concat, [1]]
036: - [-1, 3, RepC3, [256]] # 16, fpn_blocks.0
037: - [-1, 1, Conv, [256, 1, 1]] # 17, Y4, lateral_convs.1
038:
039: - [-1, 1, nn.Upsample, [None, 2, "nearest"]]
040: - [3, 1, Conv, [256, 1, 1, None, 1, 1, False]] # 19 input_proj.0
041: - [[-2, -1], 1, Concat, [1]] # cat backbone P3
042: - [-1, 3, RepC3, [256]] # X3 (21), fpn_blocks.1
043: - [-1, 1, RepC3, [256]] # auxiliary refinement
044:
045: - [-1, 1, Conv, [256, 3, 2]] # 22, downsample_convs.0
046: - [[-1, 17], 1, Concat, [1]] # cat Y4
047: - [-1, 3, RepC3, [256]] # F4 (24), pan_blocks.0
048:
049: - [-1, 1, Conv, [256, 3, 2]] # 25, downsample_convs.1
050: - [[-1, 12], 1, Concat, [1]] # cat Y5
051: - [-1, 3, RepC3, [256]] # F5 (27), pan_blocks.1
052:
053: - [[21, 24, 27], 1, RTDETRDecoder, [nc]] # Detect(P3, P4, P5)
与基线配置的差异摘录如下:
--- rtdetr-l.yaml
+++ current.yaml
@@ -8,7 +8,7 @@
-# RT-DETR-l backbone (base)
+# RT-DETR-l backbone (4D)
@@ -40,6 +40,7 @@
+ - [-1, 1, RepC3, [256]] # auxiliary refinement
五、训练方式
Python 训练入口如下:
from ultralytics import RTDETR
model = RTDETR("ultralytics/cfg/models/rt-detr/rtdetr-l-4D.yaml")
results = model.train(
data="coco128.yaml",
epochs=1000,
imgsz=640,
optimizer="MuSGD",
)
命令行训练方式如下:
yolo detect train model=ultralytics/cfg/models/rt-detr/rtdetr-l-4D.yaml data=coco128.yaml epochs=1000 imgsz=640 optimizer=MuSGD
如果训练自己的数据集,只需要把 data=coco128.yaml 改成自己的数据集配置文件即可。
六、实验记录模板
| 模型 | 配置文件 | Params | GFLOPs | mAP50 | mAP50-95 | FPS | 备注 |
|---|---|---|---|---|---|---|---|
| RT-DETR-l | rtdetr-l.yaml |
待测 | 待测 | 待测 | 待测 | 待测 | 基线 |
| RT-DETR + 4D 辅助细化 | rtdetr-l-4D.yaml |
待测 | 待测 | 待测 | 待测 | 待测 | 本文改进 |
建议再补充一张小目标统计表:
| 模型 | AP-small | AP-medium | AP-large | Recall | 误检变化 |
|---|---|---|---|---|---|
| 基线 | 待测 | 待测 | 待测 | 待测 | 待分析 |
| 改进 | 待测 | 待测 | 待测 | 待测 | 待分析 |
七、消融实验建议
| 编号 | 实验设置 | 目的 |
|---|---|---|
| A0 | 原始 rtdetr-l.yaml |
建立统一对照 |
| A1 | rtdetr-l-4D.yaml |
验证单模块收益 |
| A2 | 相同配置增加训练轮次 | 判断是否只是收敛速度变化 |
| A3 | 更换输入尺寸 | 观察小目标和速度变化 |
| A4 | 导出部署模型 | 检查推理端真实速度 |
八、注意事项
- 不建议一次叠加多个模块,否则无法判断收益来自哪里。
- 训练前先确认模型能正常构建和前向传播。
- 实验记录必须固定数据集划分、输入尺寸、训练轮次和增强策略。
- 如果出现通道不匹配,优先检查 YAML 中 RTDETRDecoder 的输入层索引。
- 如果 FPS 没有提升,需要进一步检查导出格式、推理后端和 batch 设置。
九、总结
4D 辅助细化 是 RT-DETR 改进系列中的第 3 篇。本文围绕 结构增强 展开,重点不是堆砌模块名称,而是把改进动机、结构位置、训练入口和消融方式讲清楚。后续只要保持同一套实验条件,就可以把该版本与更多模块进行公平对照。
关键词
RT-DETR,特征增强,目标检测,计算机视觉
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)