Skip to content

Latest commit

 

History

History
77 lines (51 loc) · 3.67 KB

File metadata and controls

77 lines (51 loc) · 3.67 KB

阈值校准

English | 简体中文

calibrate 命令将人工审核候选样本转换成明确、分类别的 AUTO/REVIEW 策略。它解决固定置信度阈值无法回答的问题:自动写入标签的决策究竟有多少审核证据支持?

输入约定

默认 CSV 字段如下:

字段 含义
class_name 数据集类别名称
conf Teacher 在 [0, 1] 范围内的置信度
verdict 人工结论,例如 acceptreject

字段名称可以通过命令行修改。接受结论支持 accepttrueyestp1,拒绝结论支持 rejectfalsenofp0

审核样本应来自目标摄像头和实际业务域,不应再把同一份数据当成独立测试集来宣传模型效果。

阈值选择策略

每个类别只按置信度排序一次,再通过累计真阳性和假阳性,以 O(N log N) 时间复杂度生成全部阈值点。

对于阈值 t

precision(t) = 置信度 >= t 且审核通过的候选数 / 置信度 >= t 的全部候选数
recall(t)    = 置信度 >= t 且审核通过的候选数 / 全部审核通过候选数

对于 AUTO,工具还会计算观测精度的 Wilson 置信下限。与经验精度相比,它会惩罚小样本。例如在 95% 置信水平下,10/10 全部通过虽然经验精度为 100%,但精度下限仅约 72.25%;达到 100/100 时,下限才提高到约 96.30%

AUTO 阈值选择同时满足以下条件的最低阈值:

  • --auto-confidence-level 置信水平下,Wilson 精度下限不低于 --target-auto-precision
  • AUTO 区域至少包含 --min-auto-samples 条审核样本。

在满足精度约束的前提下选择最低阈值,可以最大化自动补标覆盖率。

REVIEW 阈值选择不高于 AUTO,且能够保留至少 --target-review-recall 正样本的最高阈值。在满足召回约束的前提下选择最高阈值,可以减少人工复核工作量。

如果样本无法支持目标,工具会返回 auto_target_not_metreview_target_not_metno_positive_samples,而不会为了输出数字强行提供不安全的回退阈值。

运行示例

python examples\create_calibration_fixture.py

yolo-label-recovery calibrate `
  examples\calibration\reviewed_candidates.csv `
  --output-dir examples\calibration\output `
  --target-auto-precision 0.95 `
  --auto-confidence-level 0.95 `
  --target-review-recall 0.90 `
  --min-auto-samples 20 `
  --redact-paths

输出内容:

  • calibration.json:策略、分类别结果和可直接使用的阈值覆盖参数;
  • threshold_curve.csv:全部类别、阈值对应的经验精度、Wilson 下限和召回数据;
  • calibration.html:自包含可视化证据报告。

使用边界

  • 置信度依赖 Teacher 和业务域;更换模型、摄像头、光照或标注规范后应重新校准。
  • Wilson 下限可以抑制小样本过度乐观,但无法修复有偏或不具代表性的审核样本。
  • 仅在复现旧版经验精度策略时使用 --auto-confidence-level 0
  • 审核样本应覆盖全部工况,不能只审核容易样本或高置信度样本。
  • 校准数据应与最终模型测试数据分离。
  • 高置信度 Teacher 预测仍然只是证据,不等于真实标签。

面试讲解

该设计将模型分数和业务风险分开。AUTO 采用带置信下限的精度约束,因为错误自动标签会静默污染训练数据;REVIEW 采用召回约束,因为它的主要成本是人工时间,而不是静默污染。必须按类别制定策略,因为吸烟、拖鞋等小目标与拖拉机等大目标的置信度校准特性并不相同。