Commit Graph
2 Commits
Author SHA1 Message Date
Shaun ZhouandClaude Opus 5 36fff984b7 refactor(detect): 可视化产出改为按类别分目录,与 generate_boxes 一致
原先按 split 和结果类型(ok/missed/extra/none)分目录,层级太深。改成
<类别>/<图名>.png,与 runs/boxes_shap 的结构一致。类别取真值里框最多的那个;
负样本没有真值框,按文件名前缀归类(<类别>_<序号> 是 prepare_label_studio 的命名),
认不出来放 background/。

split 与结果类型仍记在 index.csv 的列里,排序筛选即可。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 15:06:13 +08:00
Shaun ZhouandClaude Opus 5 788bc36ab8 feat(detect): 全量推理可视化,预测框与真值框画在一起
scripts/visualize_detections.py:在整个数据集上推理,绿=真值、蓝=命中的预测、
红=没对上真值的预测,按结果类型分目录(ok / missed / extra / none),再配一份
index.csv(逐图的真值数、预测数、命中数、最高置信度)与 summary.json(逐类 TP/FP/FN)。
--only errors 只输出有问题的图。

匹配逻辑放在 engine/detection.py:按置信度贪心、IoU 阈值、类别需一致,与 mAP 的规则
一致,所以图上看到的漏检误检和指标算的是同一回事。same_class=False 可以单看定位准不准
——定位对但分类错,和完全没找到是两种问题。

train 与 val 分开放:训练集的图模型见过,那部分结果不能当泛化能力看。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 21:47:02 +08:00