170、标签分配改进全景总结:四大分配器源码级对比与最佳配置推荐

📅 2026/7/10 13:12:24 👁️ 阅读次数 📝 编程学习
170、标签分配改进全景总结:四大分配器源码级对比与最佳配置推荐

170、标签分配改进全景总结:四大分配器源码级对比与最佳配置推荐

从一次深夜调试说起

凌晨两点,我盯着tensorboard上那条死活不涨的mAP曲线,差点把咖啡泼到键盘上。YOLOv11的baseline跑了三天,AP@50:95卡在52.3%纹丝不动。换backbone、调学习率、加数据增强,能试的都试了。最后鬼使神差地翻了一下标签分配器的代码——好家伙,默认的TaskAlignedAssigner在v11里居然还沿用着v8的静态top-k策略,正负样本比例早就失衡了。

那次之后我花了整整两周,把YOLOv11里能换的分配器全撸了一遍。今天这篇笔记,就是那两周踩坑的完整记录。四个分配器:TaskAlignedAssigner、SimOTA、ATSS、以及我自己魔改的DynamicAlignAssigner,从源码实现到消融实验,全部摊开讲。

一、TaskAlignedAssigner:YOLO系的默认选择,但别无脑用

YOLOv11的官方实现里,标签分配走的是TaskAlignedAssigner。核心逻辑一句话:同时考虑分类分数和IOU,选top-k个anchor作为正样本。

# ultralytics/utils/loss.py 里摘出来的核心逻辑,我加了注释c