156、DFL 的 bin 数量消融:8/16/32/64 个 bin 对定位精度的边际收益曲线 156、DFL 的 bin 数量消融:8/16/32/64 个 bin 对定位精度的边际收益曲线从一次线上事故说起去年秋天,我在给某自动驾驶客户做YOLOv11的定制优化时,遇到了一个诡异的定位漂移问题。模型在COCO上mAP 52.3%,但部署到他们的园区低速无人车上,对近距离行人的bbox定位总是偏左下方,尤其是当行人处于画面边缘时。我花了三天排查数据增强、锚点分配、甚至怀疑是TensorRT的量化误差,最后发现罪魁祸首是DFL的bin数量——我们当时为了省显存,把bin从默认的16砍到了8。这件事让我意识到,DFL的bin数量不是随便拍脑袋就能定的。它直接影响定位精度的上限,而且这个影响不是线性的——你从8加到16,收益巨大;从16加到32,收益开始缩水;从32加到64,可能就只剩心理安慰了。今天这篇笔记,我就把完整的消融实验过程和代码改造细节摊开来讲,顺便把当年踩过的坑也标出来。DFL 的 bin 到底在干什么先快速过一下DFL(Distribution Focal Loss)的直觉。YOLOv11的回归头不再直接预测四个边的偏移量,而是为每个边预测一个离散概率分布。比如对于左边界,我们预测它在[0, 16]这个区间内落在每个整数位置的概率——这就是16个bin。最终预测值通过softmax加权求和得到。bin数量决定了这个分布的“分辨率”。8个bin意味着每个bin覆盖2个像素的跨度(假设回归范围是0~15),16个bin就是1像素一个bin,32个bin就是0.5像素一个bin。理