160、TAL 中 topk 的消融实验:topk=5/10/13/20 对正负样本分配的精度影响

160、TAL 中 topk 的消融实验:topk=5/10/13/20 对正负样本分配的精度影响 160、TAL 中 topk 的消融实验:topk=5/10/13/20 对正负样本分配的精度影响去年年底调一个工业缺陷检测项目,模型在召回率上死活上不去,AP@0.5卡在82.3%不动了。当时我盯着TAL(Task Alignment Learning)的源码看了三天,最后发现是topk参数在作祟——默认的13对于小目标密集场景来说,正样本分配得太激进了。今天就把这个坑的完整实验记录翻出来,顺便把YOLOv11里TAL的topk消融实验做个系统性梳理。问题背景:为什么topk值得单独拿出来做消融TAL的核心逻辑是动态分配正负样本,它不像ATSS那样靠统计距离阈值,也不像SimOTA那样搞全局匹配。TAL用topk选出候选正样本,然后通过alignment metric(分类分数与IOU的加权乘积)来重新排序。这个topk直接决定了每个GT(Ground Truth)能“拉拢”多少个候选框。YOLOv11的默认topk=13,这个值是从YOLOv6继承下来的。但实际场景中,13这个数字并不普适。比如:小目标密集场景(像无人机视角的车辆检测),13个候选框里可能混进去大量背景大目标稀疏场景(比如遥感图像中的机场),13个候选框又可能不够用代码层面的修改:别在loss.py里硬编码YOLOv11的TAL实现藏在ultralytics/utils/loss.py的TaskAlignedAssi