【RT-DETR涨点改进】14 尺度自适应位置编码:让RT-DETR不再“看不清”小目标

14 尺度自适应位置编码:让RT-DETR不再“看不清”小目标

开篇故事

上个月,我帮一个做智慧农业的团队调优他们的RT-DETR模型。他们的任务是检测农田里的害虫——最小的只有十几个像素。

训练了三天,模型在常规目标上mAP达到52%,但小目标(面积<32×32)的mAP只有可怜的11.3%。团队负责人一脸无奈:“模型就像近视眼,远处的虫子完全看不见。”

我检查了他们的配置文件,发现位置编码用的是PyTorch默认的nn.Embedding加正弦编码——这是Transformer的标配。

但当我画出位置编码在高分辨率特征图上的响应曲线时,问题暴露了:相邻像素的位置编码高度相关,产生了严重的“别名效应”。简单说,模型把位置相近的像素当成了同一个点,小目标的细节被位置信息的模糊性淹没了。

痛点拆解:为什么默认位置编码对小目标不友好?

常见误区:“位置编码只是给模型一个位置参考,用啥都一样”

这是最大的认知陷阱。很多同学觉得位置编码就是个“坐标指示器”,随便用都行。

但实际中,标准正弦位置编码在高分辨率特征图(如RT-DETR中使用的16倍下采样特征图,分辨率可达100×100以上)上,高频分量会与特征本身产生混叠。

看个反例代码:

# 常见的错误实