2. 评估指标体系:从准确率到 mAP
做缺陷检测,最怕什么?
不是模型跑不动,而是你根本不知道它到底好不好。
我见过不少团队,模型在测试集上准确率 99%,一上线就崩。为什么?因为指标选错了。今天我们就把这套评估体系彻底讲透。你想想看,如果连模型好坏都说不清楚,怎么跟老板汇报?怎么跟客户交付?
2.1 从混淆矩阵说起
所有指标,都源于一个 2×2 的表格。我习惯叫它「四格表」。
| 真实情况 \ 预测结果 | 预测为正例 (缺陷) | 预测为负例 (正常) |
|---|---|---|
| 实际为正例 (有缺陷) | TP (True Positive) 正确检出缺陷 |
FN (False Negative) 漏检了缺陷 |
| 实际为负例 (正常) | FP (False Positive) 误检了正常品 |
TN (True Negative) 正确放过正常品 |
2.2 核心指标逐个拆解
准确率 (Accuracy)
公式很简单:(TP + TN) / (TP + TN + FP + FN)。
但我要泼盆冷水:准确率在缺陷检测里基本没用。为什么?因为缺陷样本通常只占 1% 甚至更少。你就算把所有产品都判为正常,准确率也有 99%。这能说明模型好吗?显然不能。
精确率 (Precision) 与召回率 (Recall)
这两个才是缺陷检测的基石。
- 精确率 = TP / (TP + FP) —— 你检出的缺陷里,有多少是真的缺陷?说白了就是「检出质量」。
- 召回率 = TP / (TP + FN) —— 真实的缺陷里,你找出了多少?说白了就是「检出能力」。
我在项目中遇到过这样的场景:客户要求召回率必须 99.9% 以上,但精确率可以放宽。因为对他们来说,宁可多误检几个正常品(大不了人工复判),也绝不能漏掉一个缺陷。嗯,这就是典型的「召回率优先」策略。
F1-score
精确率和召回率往往此消彼长。F1-score 就是它们的调和平均:2 × (P × R) / (P + R)。
我个人习惯用 F1 做模型选型的「第一眼指标」。如果两个模型 F1 差不多,再去看具体的 P 和 R 哪个更符合业务需求。
2.3 曲线与面积:更全面的视角
PR 曲线 (Precision-Recall Curve)
固定一个阈值算 P 和 R 太片面了。PR 曲线把阈值从 0 到 1 走一遍,画出 P 随 R 变化的轨迹。
ROC 曲线 (Receiver Operating Characteristic)
横轴是 FPR(假正率 = FP / (FP + TN)),纵轴是 TPR(召回率)。
ROC 曲线在医学诊断、信用评分等领域很常用。但在缺陷检测里,我一般只把它当辅助参考。为什么?因为正常品数量巨大,FPR 会被稀释得很小,曲线看起来总是很漂亮,但实际误检数可能高得吓人。
AP 与 mAP
AP (Average Precision) 就是 PR 曲线下的面积。一个数字,概括了模型在不同阈值下的综合表现。
mAP (mean Average Precision) 是多个类别 AP 的平均值。如果你检测划痕、脏污、气泡三种缺陷,mAP 就是三个 AP 的平均。
| 指标 | 适用场景 | 我的建议 |
|---|---|---|
| 准确率 | 正负样本均衡 | 缺陷检测慎用 |
| 精确率/召回率 | 所有缺陷检测 | 必看,结合业务定权重 |
| F1-score | 模型选型对比 | 第一眼指标 |
| PR 曲线 + AP | 样本不平衡 | 最推荐,能看清全貌 |
| ROC 曲线 | 样本平衡或医学诊断 | 辅助参考,别单独用 |
| mAP | 多类别缺陷检测 | 最终汇报用,简洁有力 |
2.4 知识体系总览
下面这张图,把整个评估体系串起来了。我建议你保存下来,每次做评估时对照着看。
2.5 避坑指南与实战建议
给你三个实战建议:
- 先定业务目标,再选指标。客户能接受误检还是漏检?这决定了你优化 P 还是 R。
- 别只看一个数字。mAP 高不代表模型好用。把每个类别的 AP 列出来,看看短板在哪。
- 阈值别用默认的 0.5。我习惯在 PR 曲线上找一个「业务可接受的点」。比如召回率必须 99%,那就看对应的精确率是多少,能不能接受。