漏检与过杀:如何诚实地衡量一套视觉系统

每一份视觉方案都会给出一个准确率数字,而这个数字几乎总是没有意义。在良率为 98% 的产线上,一套完全不检测、直接放行每一个零件的系统也能得到 98% 的准确率。它什么都没检测出来。这个数字是真实的,但毫无意义。
早在有人把神经网络搬进工厂车间之前几十年,质量工程就已经解决了这个术语问题。真正重要的两个词是漏检和过杀,而它们对应的成本完全不同。
两类错误,以及为何它们并不对称
Escape
系统判定为合格,但零件实际有缺陷。这个缺陷会流出工厂。代价是保修索赔、客户投诉、停线通知,甚至召回。这种代价没有上限,而且往往几周之后才浮现,还会牵连到公司的信誉。
Overkill
系统判定为不合格,但零件本身是好的。你要报废或返工一个本可以出货的零件。代价就是这个零件加上处理成本,当场支付,而且完全发生在自家工厂之内。
两者都是错误,但不是同一种错误。刹车部件上的漏检和塑料卡扣上的过杀,两者的代价相差好几个数量级,而任何单一的准确率数字都会把这种差异彻底抹平。这正是这两个术语存在的全部意义。
这也是为什么检测工位的灵敏度设置是一项业务决策,而不是技术决策。调高灵敏度会用过杀换取更少的漏检,调低灵敏度则反过来。没有哪种设置能同时消除两者,正确的设定取决于两者各自给你带来多大成本,这应该由质量部门和财务部门共同商定,而不是由操作鼠标的人来决定。
用数字说明准确率为何具有误导性
以一条生产 10,000 件零件、实际缺陷率为 2% 的产线为例,即 200 件次品和 9,800 件良品。两套系统:
| System | Accuracy | Escapes | Overkill |
|---|---|---|---|
| 系统 A:全部放行 | 98.0% | 200 | 0 |
| B: catches 190 of 200 | 97.6% | 10 | 230 |
系统 A 的准确率分数更高,却毫无价值。系统 B 在头条数字上看起来更差,但正是你想要的那套系统,因为它把 190 起潜在的客户投诉转化成了 230 件报废零件。这笔交易是否划算,是一道可以实际计算的算术题:190 次漏检成本对比 230 次零件报废成本。准确率无法提出这个问题,更别说回答它。
值得索要的四个数字
如果你正在评估一套检测系统,以下是应当坚持索要的数据,而且这四项都应该来自你自己的零件,而不是产品数据表。
1. 在已知不良品集合上的漏检数量
拿一批你已知是次品的零件跑一遍系统,数一数系统放行了多少件。不是在混合样本上算一个百分比,而是在缺陷样本上算一个具体数量。这就是最终会出现在客户投诉里的那个数字。
2. 在已知良品集合上的过杀数量
拿一批你已知是良品的零件跑一遍系统,包括你自己的质检员都会争论不休的那些边缘样品,数一数假阳性的拒收数量。如果只用完美无瑕的样本测试,得出的数字在正式生产第一天就会崩溃。
3. 重复性,理想情况下是量具 R&R
把同一批零件再跑一遍。系统给出的结果一致吗?一个工位即使平均判定正确,但对同一零件的判定前后不一致,就无法用于决定处置方式。而重复性正是你的质量团队已经在对车间里其他每一台量具进行的测量。
4. 良率,按工位细分
在实际生产中的通过率,按产线或设备分组统计。如果某一个工位的通过率明显偏低,通常说明的是工艺问题或夹具问题,而不是模型的问题。
第三项特别值得强调,因为它是最常被忽略的一项。重复性与再现性分析对卡尺或三坐标测量机(CMM)来说是标准做法,自动化检测没有理由被排除在外。向供应商索要其视觉系统的量具 R&R 数据是一个合理的要求,而对方的回答能很好地说明他们此前是否曾在受监管的制造行业中部署过系统。

在正式上线之前测量,而不是之后
传统的做法是把检测系统直接投入生产,看它到底管不管用。这是一个代价高昂的实验,因为你要验证的失效模式,正是缺陷流到客户手中。
另一种做法是回测:收集一批带有已知真值的图像,离线对每一张图像运行完整的检测流程(recipe),在工位真正开始判定实际零件之前,先得到漏检和过杀的数量。在 OV80i 上,这项回测直接在相机本体上运行,并且完全用漏检和过杀这套术语来报告,而不是假阳性和假阴性,还附带一个可以点击查看具体是哪些图像出错的混淆矩阵。
有两个细节决定了一次回测是真的有帮助,还是只在自我安慰。第一,测试集必须包含边缘样品,因为一套全是明显合格品和明显不良品的测试集,得出的数字在实际生产中根本无法重现。第二,测试集必须保留下来,并在每次修改检测流程后重新跑一遍,否则你可能在优化一个数字的同时,悄悄破坏了另一个数字。测试集能够以文件形式在不同相机之间迁移,正是让这套做法在整个机队规模上可行的关键。
一份合格的方案应该是什么样子
一份有实际意义的检测工位规格书大致应该是这样的,注意它完全不包含准确率这个数字。
- 在双方约定的 N 件缺陷样品集合上,漏检数为零,其中包括双方共同确认的边缘样品。
- 过杀率低于双方约定的生产占比,因为正是这个数字决定了操作员是否会一直让这台工位保持开启。
- 在同一批零件上至少运行两次,并证明其重复性。
- 测试集要保留下来,与检测流程一起进行版本管理,并且在任何变更之后都要作为验收步骤重新运行。
第二点是人们最容易低估的。过杀不仅仅是一笔报废成本,它还是好的检测系统被绕过的根本机制:如果工位拒收了操作员肉眼就能看出没问题的零件,这个工位就会失去信誉,不出一个月,就会有人开始直接把零件放行过去。一套操作员信任、漏检略多一点的系统,往往会比一套操作员已经学会绕过的、更严格的系统表现得更好。
这一切都并非 AI 独有的问题。同样的道理也适用于基于规则的工具、人工质检员,或是一把通止规,这正是重点所在:学习型模型的出现,并不需要一套全新的术语体系,需要的只是沿用质量工程早已具备的术语体系。如果你想了解这些工位是如何搭建起来的更完整背景,可以参阅我们关于 机器视觉系统 的指南,其中涵盖了完整的图景;而关于 异常检测 的文章则涵盖了那种最需要拿捏好漏检与过杀平衡的方法。
Frequently Asked Questions
在质量检测中,漏检和过杀有什么区别?
漏检是指检测系统放行了一个实际有缺陷的零件,于是这个缺陷流出工厂,其代价会在之后以投诉、保修索赔或召回的形式出现。过杀是指检测系统拒收了一个实际良好的零件,于是你要报废或返工一个本可出货的零件,并当场在内部支付一笔较小的代价。两者都是错误,但代价的量级相差好几个数量级,这正是为什么把两者平均成单一准确率数字,对判断一个工位是否合格没有实际用处。
为什么准确率对视觉检测系统来说是一个不好的指标?
因为它完全由类别分布主导。在缺陷率为 2% 的产线上,一套完全不做检测、直接放行每个零件的系统也能拿到 98% 的准确率,却什么都没检测出来。准确率还会把漏检和过杀平均成一个数字,尽管两者的代价天差地别。你应该转而索要在已知不良品集合和已知良品集合上的漏检数量和过杀数量。
可以对 AI 视觉系统进行量具 R&R 分析吗?
可以,而且你应当这样做。重复性与再现性分析对车间里任何其他测量设备来说都是标准做法,自动化检测不应例外。实际操作上,就是把同一批零件反复跑几次,再比较各次判定结果是否一致。这是一个可以合理地问任何供应商的问题,而对方的回答能说明他们是否曾在受监管的制造行业中部署过系统。
机器视觉中的回测是什么?
回测是在一批带有已知真值的图像上,离线运行一整套完整的检测流程,在工位真正开始处理实际生产之前,就得出漏检和过杀的数量。它替代了那种代价高昂的做法,即直接在生产中去发现系统的真实表现,而那种做法所验证的失效模式正是缺陷流到客户手中。要使这个结果真正有意义,测试集必须包含边缘样品,并且应当在每次修改检测流程之后保留下来并重新运行。
如何确定检测工位的合适灵敏度?
应该按成本来决定,而不是按个人偏好。调高灵敏度会用过杀换取更少的漏检,调低则反过来,没有哪种设置能同时消除两者。先估算一次漏检的成本和报废一件良品的成本,然后选择总成本最低的那个点。这就把灵敏度设置变成了一项需要质量部门和财务部门共同参与的业务决策,而不是在终端上随手做出的技术选择。
如果零件很便宜,过杀为什么还重要?
因为过杀正是好的检测系统最终被人为关闭的原因。如果一个工位拒收了操作员肉眼就能明显看出没问题的零件,它就会在车间里失去信誉,不用多久就会有人绕过它,或者干脆直接放行零件。一套操作员信任、漏检略多一点的系统,往往会比一套操作员已经学会规避的更严格系统表现得更好。过杀既是一笔报废成本,也是一项采用风险。
在您的零件上体验 Overview AI
把您的零件或缺陷照片发给我们,视觉工程师会告诉您 Overview 能否检出,大多数系统几天内即可在产线上运行。