feat(detect): 训练期的验证也约束预测框互不重叠
ultralytics 没有可用的开关:yolo26 是端到端模型,non_max_suppression 对它早退 (utils/nms.py 里 end2end 分支),只按置信度与 max_det 截断,传入的 iou 和 agnostic 都不参与 IoU 抑制;agnostic_nms 只作用于检测头 top-k(每个 anchor 取一个类别), 压不掉不同 anchor 产生的重叠框。 所以给 DetectionValidator.postprocess 包一层 filter_overlapping_outputs。训练期验证、 早停、best.pt 的选择都随之遵守这条约束,指标与最终推理一致。配置项 train.max_overlap (默认 0,负数关闭),由 detect.py 摘出后自行实现,不传给 ultralytics。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
eba533a5b2
commit
9439cbb56a
@@ -48,6 +48,13 @@ train:
|
||||
hsv_s: 0.3
|
||||
hsv_v: 0.3
|
||||
|
||||
# 真值里一处缺陷只有一个框、零重叠(实测 11211 张图、151 张多框图,重叠为 0),
|
||||
# 所以验证时也把预测约束成互不重叠:早停与 best.pt 的选择才和最终推理一致。
|
||||
# 负数=不约束。注意这不是 ultralytics 的参数,由 detect.py 自己实现。
|
||||
max_overlap: 0.0
|
||||
# 端到端头的 top-k 每个 anchor 只取一个类别,压掉同一处缺陷被两个类别各框一次
|
||||
agnostic_nms: true
|
||||
|
||||
plots: true # results.png / PR 曲线 / 混淆矩阵 / val_batch 预测图
|
||||
save_period: -1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user