137、DySample 的采样点数量和风格消融:LP 风格 vs PL 风格与 1/2/3 个采样点
137、DySample 的采样点数量和风格消融:LP 风格 vs PL 风格与 1/2/3 个采样点上周调一个工业缺陷检测模型,发现上采样层成了瓶颈。用 DySample 替换了双线性插值,AP 掉了 0.3 个点,当时差点把键盘摔了。后来排查发现是采样点数量设错了——默认的 4 个采样点在密集小目标场景下反而引入了噪声。这个坑让我重新审视了 DySample 的两个核心超参数:采样点数量和采样风格(LP vs PL)。先搞清楚 DySample 在干什么DySample 本质上是个动态上采样器,它不像传统方法那样固定插值核,而是根据特征图内容自适应地生成采样点。每个目标位置会生成一组采样偏移量,然后通过网格采样(grid_sample)从源特征图中取值。采样点数量决定了每个目标位置会从源图取多少个点来插值。LP 风格(Local Point)和 PL 风格(Point Local)的区别在于偏移量的生成方式——LP 先生成局部偏移再聚合,PL 先生成全局点再局部化。这个差异在代码里就几行,但效果天差地别。代码实现:两种风格和三种采样点配置先看核心模块。我直接在 YOLOv11 的nn/modules/conv.py里加了个DySample类,别放到单独文件里,YOLO 的 import 路径容易搞乱。