异常检测:仅使用良品样本进行检测

检测项目停滞不前最常见的原因,与技术本身无关。而是没有人能够提供缺陷图像。故障每月发生一次,零件在报废时没有被拍照,质量团队也无法描述下一次的缺陷,因为他们还没有见过。
异常检测将问题反过来看。模型不再学习缺陷的样子,而是学习良品的样子,并标记任何偏离良品的情况。产品的描述正是如此:仅使用良品样本进行训练,模型学习零件的正常外观,并将任何偏差标记为潜在缺陷。
有监督和无监督,各用一句话说明
有监督模型学习的是有名称的类别之间的区别。您向它展示划痕,展示干净的表面,为两者打上标签,模型便学习到二者之间的边界。之后它就能告诉您发现的是哪种缺陷,因为您已经告诉了它名称。
无监督模型只学习正常状态的样子。它构建了良品的表征,并衡量每个新零件与该表征的偏离程度。它无法告诉您缺陷是划痕而不是污渍,因为从未有人给过它这些词汇。它只能告诉您这个区域不属于正常范围。
有监督模型给您名称
分类和分割返回一个类别:气孔、污染、缺料。当处理方式因缺陷而异时,例如一种需要返工而另一种需要报废,或者当您要将结果反馈到 Pareto 图以改进流程时,这一点就很重要。
无监督模型给您覆盖面
它能标记出任何人都未曾预料到的失效模式,因为它从一开始就没有清单可依。这正是它的全部价值所在,在缺陷种类确实是开放式的零件上,这一点尤为有力。
三种模型类型,以及如何选择
异常检测并非单一算法。在 OV80i 上,无监督模块提供三种选择,它们在灵敏度与速度之间、以及所需数据量之间做出权衡。产品对它们的描述十分明确:
灵敏度最高,至少需要 20 张图像
推理速度快,最擅长检测微小异常,输出逐像素结果,让您能准确看到哪个区域发生了偏差。当缺陷细微且能够获取二十个良品时,这是默认选择,而这通常不是一个苛刻的要求。
在有纹理表面上表现最佳,只需少量图像
推理速度中等,尤其擅长处理有纹理或有图案的物体,例如纺织品、编织材料、机加工表面、铸件。在每个良品外观都各不相同的表面上,应从这一模型开始尝试。
速度最快,所需图像极少
最适合检测简单物体的有无。它不是用于处理细微表面差异的工具,而是在高速产线上进行快速有无检测的方案,适用于答案是二选一的场景。
值得在图像数量上多停留一下。二十个良品,喝杯咖啡的功夫就够了,算不上一个数据采集项目。异常检测能够改变项目周期的原因,并不是因为它比经过训练的模型更准确,事实上往往并非如此。而是因为您所需要的数据,此刻就已经存在于产线上。

模型实际输出的内容
有监督模型返回一个类别和一个置信度。异常模型返回的结果则不同,理解其输出形式,正是避免灵敏度滑块成为争议焦点的关键。
| Output | 如何使用它 |
|---|---|
| 异常图 | 在相应区域上叠加的一张热力图,显示零件在何处发生了偏差。这正是操作员所查看的内容,也是这一工具能在车间站得住脚的原因:相机会向您显示具体位置,而不仅仅是宣布不合格。 |
| 异常分数 | 一个用于衡量零件整体异常程度的单一数字。作为趋势指标很有用:某个班次内数值缓慢攀升,说明的是工艺在漂移,而不是出现了不良品。 |
| 斑点统计 | 对偏差区域进行分组和测量,得出面积和位置信息。这正是构建可用判定规则的基础:并非任何偏差都算数,而是面积超过设定阈值的偏差才算数。 |
| 灵敏度和面积限制 | 这些参数是在训练完成后进行调整的,而不是固定写死在训练过程中,因此您可以根据实际生产情况调整触发点,而无需采集新数据或重新训练。 |
最小斑点面积过滤器是该模块中最重要的设置,也是最常被忽略不调的设置。任何真实表面在各处都会存在一点偏差。如果规则是只要有偏差就判定不合格,工位就会不断误判良品。如果规则是偏差区域大于设定面积才判定不合格,工位就能正常运行。设定这个数值需要与质量团队沟通,讨论多大的痕迹才真正算作不合格,而这本身也是一次值得进行的沟通。
何时选择异常检测是正确的决定
在以下四种情况下,它显然是更好的起点。
- 您没有缺陷图像,也无法人为制造出来。 这是最常见的情况,也是大多数检测系统始终无法建成的真实原因。
- 缺陷种类是开放式的。 污染、异物和外观损伤并非来自一份有限的清单。一个仅针对您已知的八种缺陷训练出来的模型,从本质上就注定会漏掉第九种。
- 表面具有纹理或图案。 在没有两个良品外观完全相同的情况下,通过外观来描述缺陷几乎是不可能的,但描述正常状态的边界却是可行的。
- 低产量或多品种混线。 如果某个零件编号每年只生产数百次,您将永远无法为它积累出带标签的缺陷数据集。而二十个良品样本,在第一批生产中就能获取。
反过来说也同样成立。当处理方式取决于具体是哪种缺陷时,当您需要缺陷名称用于工艺反馈而不仅仅是一个拒收信号时,或者当您已经拥有一份良好的标注数据集时,请使用有监督模型;在这些情况下,经过训练的模型通常既更准确,也更容易在能力研究中站得住脚。
这两者并非互斥。OV80i 上的一个配方可以对同一张图像运行多个模型,因此一种常见且明智的做法是:由有监督模型处理带名称类别的已知缺陷,同时让无监督模型与其并行运行,作为应对一切未曾预料情况的安全网。
需要提前规划应对的失效模式
异常检测有一个典型的弱点,与其在实践中发现它,不如提前把它讲清楚。模型是根据您提供的良品来定义正常状态的。如果您的二十个良品样本没有涵盖全部可接受的变化范围,那么超出该范围的一切都会被判定为异常。
在实际操作中,这意味着一个基于某一材料批次调试完成的工位,在材质稍有变化时会将下一批次判为异常。这并非模型的缺陷,而是一份准确的报告,说明零件外观确实发生了变化,而这正是您所要求的功能。解决方法是在良品集中纳入真实的变化范围:不同批次、不同班次,既包括公差带的中间值,也包括其可接受的边界值。
这也是为什么重新训练路径对异常检测比对有监督工作更为重要。当生产发生变化时,您需要把那些真正合格但被误判的零件重新纳入良品集。能否在生产历史中找到这些图像并将其添加到训练集中,且无需借助数据科学操作,这决定了一个工位能否运行一年,还是在第三个月就被停用。我们关于 机器视觉系统 介绍了这一点在更广泛的工位设计中所处的位置,而 照明指南 则介绍了另一半内容,因为异常模型对光照漂移的敏感程度甚至超过有监督模型:光照的变化看起来与异常零件完全一样。
Frequently Asked Questions
没有任何缺陷图像也能进行 AI 检测吗?
可以,使用无监督异常检测即可实现。该模型仅使用良品进行训练,学习正常外观,并标记出偏离该外观的区域。这是应对检测项目中最常见障碍的标准做法,也就是缺陷很少发生、且没有人拍摄过它。其代价在于,模型只能报告出现了异常,而无法说明具体是哪种缺陷。
异常检测需要多少良品样本?
这取决于模型类型。高灵敏度的逐像素模型至少需要二十张良品图像。而针对有纹理表面或简单有无检测的模型只需要少量图像。更重要的一点是,良品集应涵盖真实的可接受变化范围,包括不同材料批次和不同班次,因为模型是根据您提供的数据来定义正常状态的,任何您遗漏的合理变化都会被标记为异常。
有监督缺陷检测和无监督缺陷检测有什么区别?
有监督模型基于每种缺陷类别的标注样本进行训练,返回缺陷名称及置信度。无监督模型仅使用良品进行训练,返回偏差分数和热力图,而不会指出具体缺陷名称。当处理方式或工艺反馈取决于具体缺陷种类时,有监督模型更合适。当缺陷种类是开放式的,或者根本不存在缺陷图像时,无监督模型更合适。在同一张图像上同时运行这两种模型,是一种常见且明智的做法。
异常检测能在有纹理的表面上使用吗?
有纹理和有图案的表面是其最擅长的应用场景之一,并且有专门针对这类表面的模型类型。在编织纺织品、机加工表面或铸件上,没有两个良品外观完全相同,这使得通过外观描述缺陷变得非常困难。而描述正常外观的边界则可行得多,因此在这类表面上,无监督方法往往优于经过训练的缺陷模型。
为什么在更换材料后,我的异常模型会将良品标记为异常?
因为它正确地报告出这些零件与训练时使用的零件外观不同。模型是根据所提供的良品样本来定义正常状态的,因此外观略有不同的新材料批次就落在了这个定义之外。解决方法是在良品集中纳入真实的可接受变化范围,并建立一条简便的途径,在工艺发生合理变化时,将实际合格但被误判的生产图像重新纳入训练。
如何防止异常检测把所有产品都判为不合格?
应使用最小斑点面积过滤器,而不要仅依赖灵敏度滑块。任何真实表面在各处都会有轻微偏差,因此只要出现偏差就判定失败的规则,会不断误判良品。只有当偏差区域超过设定面积才判定失败的规则,才能表现得可预测。设定该面积需要与质量团队达成一致,讨论多大的痕迹才真正算作不合格,这本身就是一次有价值的沟通。
在您的零件上体验 Overview AI
把您的零件或缺陷照片发给我们,视觉工程师会告诉您 Overview 能否检出,大多数系统几天内即可在产线上运行。