3、工业场景下的评估指标:过杀率、漏杀率、直通率(FPY)、每百万元器件缺陷数(DPPM)
聊到工业视觉检测,很多人第一反应就是「准确率多少?」。说实话,准确率在工业现场就是个伪命题。你想想看,一条产线一天跑几十万件产品,99.9%的准确率听起来很高了对吧?但算下来一天可能误判几百个,产线负责人能把你骂到怀疑人生。
工业场景真正看的是四个核心指标:过杀率、漏杀率、直通率(FPY)和每百万元器件缺陷数(DPPM)。这四兄弟才是评估模型能不能上线的硬通货。
3.1 过杀率(Overkill Rate)
过杀率,说白了就是把好产品当成坏产品给踢掉了。我习惯叫它「冤假错案率」。
公式很简单:
过杀率 = 被误判为缺陷的良品数 / 实际良品总数 × 100%
举个例子。一条产线生产了10000个手机中框,实际良品9800个。检测模型把其中50个良品判成了缺陷。那么过杀率就是 50/9800 ≈ 0.51%。
嗯,这里要注意。过杀率每高0.1%,对大批量产线来说都是真金白银的损失。我遇到过一家做连接器的工厂,过杀率1.2%,一天多报废2000多个良品,一个月白白损失十几万。后来我们帮他们把过杀率压到0.3%以下,厂长当场拍板加单。
3.2 漏杀率(Miss Rate / Escape Rate)
漏杀率,这是所有质检工程师的噩梦。坏产品跑到了客户端,轻则退货赔款,重则丢客户丢市场。
公式:
漏杀率 = 被误判为良品的缺陷数 / 实际缺陷总数 × 100%
还是那个手机中框的例子。实际缺陷200个,模型漏掉了3个,漏杀率就是 3/200 = 1.5%。
我曾经在一个汽车零部件项目上吃过亏。客户要求漏杀率必须低于0.1%,我们模型在测试集上做到了0.08%,高高兴兴上线。结果一个月后客户投诉说有缺陷件流出了。复盘发现,产线光照变化导致模型在特定角度下失效,漏杀率实际飙到了0.5%。从那以后,我要求所有项目必须在产线实际环境下采集至少一周的数据做验证,而不是只信实验室数据。
3.3 直通率(First Pass Yield, FPY)
直通率,也叫一次通过率。它衡量的是「产品第一次经过检测就直接通过的比例」。注意,是第一次,不包含返修后重测的。
公式:
FPY = 一次通过检测的良品数 / 投入检测的总产品数 × 100%
FPY这个指标很有意思。它不只是评估模型,更是评估整个检测流程的效率。如果FPY太低,说明要么模型过杀严重,要么产线本身良率就有问题。
我习惯把FPY拆成两部分看:
- 产线良率:工艺本身能生产出多少良品
- 检测效率:模型误判导致多少良品被拦下
举个例子。一条产线实际良率98%,模型过杀率0.5%。那么FPY大概在97.5%左右。如果FPY突然掉到95%,别急着调模型,先查查是不是产线工艺出了问题。
| FPY范围 | 产线状态 | 建议动作 |
|---|---|---|
| > 98% | 优秀 | 维持,定期监控 |
| 95% ~ 98% | 正常 | 关注过杀率,微调阈值 |
| 90% ~ 95% | 需关注 | 排查模型和产线工艺 |
| < 90% | 异常 | 立即停线,全面排查 |
3.4 每百万元器件缺陷数(DPPM)
DPPM,全称Defect Parts Per Million。它衡量的是每百万个产品中,有多少个缺陷品被漏到了客户端。
公式:
DPPM = (客户端发现的缺陷数 / 出货总数) × 1,000,000
这个指标是客户用来考核供应商的。不同行业要求天差地别:
- 消费电子:一般要求 DPPM < 500
- 汽车电子:要求 DPPM < 50,甚至 < 10
- 航空航天:要求 DPPM ≈ 0,接近零缺陷
我记得有个做车载摄像头的项目,客户要求DPPM ≤ 20。我们模型漏杀率做到0.01%,算下来DPPM是100,差得远。后来把漏杀率压到0.002%才勉强达标。你想想看,0.01%和0.002%只差0.008个百分点,但在DPPM上就是80和20的区别。
3.5 四个指标的关系与权衡
这四个指标不是孤立的。它们互相牵制,像跷跷板一样。你压了漏杀率,过杀率可能就涨了。你调高FPY,DPPM可能就上去了。
我一般用下面这张图来跟客户解释权衡关系:
实际项目中,我一般按这个优先级来定指标:
- 先定漏杀率上限:根据客户要求或行业标准,这是红线
- 再优化过杀率:在满足漏杀率的前提下,尽量压低过杀率
- 监控FPY:FPY异常波动往往是产线或模型出问题的早期信号
- 追踪DPPM:这是最终的用户反馈,用来闭环改进模型
3.6 实战:如何用这四个指标评估模型
假设你训练了一个缺陷检测模型,在测试集上得到以下结果:
| 指标 | 测试集结果 | 产线要求 | 结论 |
|---|---|---|---|
| 过杀率 | 0.8% | ≤ 0.5% | 不达标 |
| 漏杀率 | 0.05% | ≤ 0.1% | 达标 |
| FPY | 96.5% | ≥ 97% | 不达标 |
| DPPM(推算) | 500 | ≤ 200 | 不达标 |
你看,漏杀率达标了,但过杀率超标导致FPY和DPPM都跟着出问题。这时候不能直接上线。我建议的做法是:
- 先检查过杀样本,看看是模型对某些正常纹理过于敏感,还是标注数据有问题
- 适当调整置信度阈值,在保证漏杀率不超0.1%的前提下,把过杀率压下去
- 重新评估FPY和DPPM,直到四个指标全部达标
嗯,最后说一句。这四个指标不是算出来就完事了。产线环境会变,光照会变,产品批次会变。我要求团队每周自动生成一份四指标报表,一旦某个指标连续三天偏离基线,立刻触发告警。别等到客户投诉了才去翻数据,那时候就晚了。