136、DySample 动态上采样在 YOLOv11 中的实现:基于点采样的轻量级动态上采样器
136、DySample 动态上采样在 YOLOv11 中的实现:基于点采样的轻量级动态上采样器从一次诡异的mAP下降说起去年年底帮一个做工业缺陷检测的团队调YOLOv11,他们用了一个很重的上采样模块——CARAFE,结果在RTX 3060上推理速度直接掉了40%。更离谱的是,换回最原始的最近邻插值后,mAP反而涨了0.3个点。当时我就觉得,上采样这个环节被严重低估了。后来翻到DySample这篇论文,第一反应是“这不就是点采样吗”,但仔细看完代码实现,发现它把动态上采样的计算量压到了一个极其恐怖的程度——参数量只有CARAFE的1/20,速度几乎和最近邻插值持平。更关键的是,它在小目标检测上的表现居然比双线性插值好出一截。DySample的核心逻辑:别学权重,学采样点传统动态上采样(比如CARAFE)的思路是:对每个像素预测一个重组核,然后用这个核去加权周围像素。这相当于把上采样变成了一个轻量级的卷积操作,但问题是核预测本身就需要大量计算。DySample的思路完全反过来——我不预测权重,我预测采样点。具体来说,对于输出特征图上的每个像素,我直接预测它在输入特征图上的采样坐标,然后用双线性插值去取那个点的值。这样一来,整个上采样过程就变成了“坐标预测 + 网格采样”,而网格采样在PyTorch里是高度优化的(F.grid_sample)。这里有个关键细节:采样点不是随便预测的。DySample用了“动态偏移”机制——先对输入特征图做一次全局平均池化,得