ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

从传统机器视觉到AI智能图检:工业表面缺陷检测落地复盘

从传统机器视觉到AI智能图检:工业表面缺陷检测落地复盘

做视觉质检项目这几年,最直接的一个感受是:算法榜单上的指标漂亮,跟产线上能稳定运行是两码事。这次把JBoltAI智能图检接到鲁威制造的检测工位上,完整走了一遍从需求梳理、方案设计、数据采集、模型迭代到现场调试的过程,收获不少,也踩了几个只有工厂现场才会遇到的坑。整理成这篇复盘,给正在评估或者已经准备上AI图检的同行一个参考。

1. 为什么鲁威制造的质检线上,传统视觉方案一直没有跑通

先交代一下背景。鲁威制造做的产品表面质量要求很高,之前靠人工目检。人工看的问题是稳定性和一致性很难保证,同样一个缺陷,不同的人判断不一样,同一个人早班和晚班的状态也不一样。更现实的问题是招人困难,年轻人不太愿意长期做这种需要高度集中注意力的重复劳动。

鲁威制造之前上过传统的机器视觉方案。传统方案的思路是先定位,再通过灰度阈值、边缘检测、模板匹配这些方法提取特征,最后用规则去判定缺陷。这类方案也不是不能用,问题在于它对光照、角度、产品状态这些条件太敏感,只要有批次差异就很容易误判。车间环境不是实验室,光源老化、工件摆放微偏、粉尘干扰这些情况非常常见,传统视觉隔三岔五就要重新调节参数,维护成本很高。

真正让传统视觉崩溃的场景,是产品表面那些没有固定形态的缺陷。划痕有深有浅、有长有短,有些纹理本身就和缺陷长得非常像。你要靠灰度阈值去区分,阈值设松一点,纹理被当缺陷,过杀严重;阈值收紧一点,浅划痕又漏过去了。传统视觉在这个问题上没有解,因为它本质上是在用固定的规则去套千变万化的图像。

这就是AI图检能发挥作用的地方。深度学习模型不是靠人工设计规则去识别缺陷,而是通过大量标注样本自动学习缺陷的形态特征。它更接近人工目检的思维方式,而且比人工更稳定,不会疲劳,不受情绪影响。JBoltAI智能图检上这个项目之前,我和鲁威制造的产线负责人先聊了一天,核心就是把检测项、节拍时间、现有不良率这些基础数据摸清楚。

判断一个工厂适不适合上AI图检,先看产品是否多次出现“形态不固定”的缺陷,再看产线是否具备稳定的图像采集条件。这两条不满足,算法再强也落不了地。

2. JBoltAI图检的落地架构:相机、光源、工控机与判定逻辑的配合方式

整个图检系统不是一套单独运行的算法,而是硬件选型、软件逻辑和产线流程配合的结果,我分开讲。

2.1 硬件层:成像质量决定了算法的上限

JBoltAI这套图检,首先解决的是采集端的问题。鲁威制造的检测位是流水线上的固定工位,产品经过一个传送带,到达检测区域后停留约4秒。实际实施时我们用了两个工业相机,一个负责俯视打光下的面阵成像,一个负责侧视角度的补拍。这样做的原因很简单:单一视角可能漏掉一些只会在特定角度下才能看到的表面缺陷。

光源选择上是背光加同轴光的组合。背光用来强化轮廓特征,同轴光用来均匀照亮表面,减少金属材质带来的反光干扰。光源亮度不是越大越好,我们现场做了标定,让灰度分布尽量集中在中间区域,避免高光和过暗同时存在。成像不稳定的话,后面数据增强做得再好也无济于事。

工控机放在检测工位旁边,配了一块推理加速卡。这里有一个容易被低估的问题:GBoltAI推理时确定用GPU算,但实际瓶颈往往在图像传输和解码,而不光是推理本身。相机传输用的GigE协议,带宽需要根据分辨率和需要的帧率算清楚。我们最终选了2K分辨率相机,单张图像约5MB,按4秒处理周期,数据量不算大,但图像解码仍然要用CPU多线程来处理,避免等待时间拖慢整套流程。

2.2 软件层:从图像预处理到缺陷判定的完整链路

JBoltAI的软件链路分五个环节,我按处理顺序列一下:

  1. 图像采集:相机触发模式改为硬件触发,由传感器信号控制采集,保证每次拍摄的位置和角度一致。
  2. 预处理:灰度化、去噪、几何校正,把两张相机图像拼成一张统一视角的检测图。这一步要确保后续网络输入数据的一致性。
  3. 目标检测:用一个检测网络在前面做定位,把工件区域从背景中切出来,排除传送带边缘、夹具等干扰。
  4. 缺陷分类与分割:在工件区域内对缺陷做像素级分割,判断缺陷类型、面积和位置。
  5. 判定输出:根据预设的缺陷阈值和业务规则输出OK或NG,NG结果通过IO信号传给PLC,触发报警或剔废装置。

这套链路里,前两步是很容易被忽视但很关键的部分。如果预处理不稳定,模型输入分布和训练时不一致,推理效果就会明显下滑。JBoltAI允许把预处理参数按产品型号保存,每次换型以后自动加载对应配置,这为多品种混线的场景保留了余地。

2.3 与产线集成:图检不是孤立设备,而是一个数据节点

JBoltAI不能只做一个独立检测箱,它需要和产线的MES、PLC联动。鲁威制造原先的产线反馈机制是纸质的,QC在旁边记录不良品原因。我们上线后做了简单的接口,每张检测过的图片、判定结果和缺陷类型都会写入本地数据库,同时通过工业协议把汇总结果推送一部分到产线看板。

这个动作的意义在于,质量数据真正实时化了。原来发生批量不良可能要隔一个班次才发现,现在只要连续出现多个NG,看板立刻就能反映出来。管理层不用等到月底盘点报告才知道上个月质量波动出现在哪个时间段,这种“肉眼可见的实时反馈”对鲁威制造的内部推动也很有帮助,大家能直观看到系统在工作。

3. 缺陷样本和标注策略:真正决定模型上限的不是网络结构

有不少人关心模型选型,但以我的经验,样本质量的影响远大于网络结构的选择。市场上主流的目标检测和分割模型已经足够成熟,对工业场景常见的缺陷检测问题,差别并不大。真正花时间、决定上限的,是数据和标注。

3.1 鲁威制造的缺陷分类怎么定出来的

现场跟着质检老师傅走了半天,我让老师傅把实际产线上出现过的缺陷类型做一个分类,最终归纳成6类:划痕、凹坑、毛刺、脏污、异色、变形。有人觉得分类越快越好,其实不是,缺陷类型划分必须满足两个条件:

第一,类型之间有明确的视觉边界。划痕和凹坑如果混着标,模型学出来的特征也是混乱的。第二,能对应到具体的生产归因。比如毛刺可能对应刀具磨损,凹坑可能对应来料夹渣,这样后续质量追溯才能用得上。

一些样本同时包含多种缺陷,我们要求标注时按主缺陷标,并在备注里记录次缺陷。一开始我们用“只标主缺陷、不额外标次缺陷”的简化策略,后来发现模型更容易学会漏掉次缺陷,因为训练数据里没有次缺陷的监督信息。改成“所有缺陷全部标出”之后,漏检率出现了明显下降。

3.2 数据平衡与增强,小样本问题的应对方式

AI训练通常需要大样本,但在工业项目里,有价值的缺陷样本往往很少。鲁威制造前两周只积累了不到1000张带缺陷图片。直接拿这个量去训练,大概率出现过拟合。

数据增强是解决办法之一。JBoltAI自带的增强策略包括随机旋转、翻转、亮度变化、裁剪、透视变换。但增强不是越多越好,关键的约束是不能改变缺陷的本质形态。比如划痕如果做了强烈的透视变换,形态就变形了,模型可能会学会错误特征。我们在保证产品朝向一致的前提下,重点增强光照方向和亮度变化,模拟产线不同时段的打光差异,这对稳定性提升很大。

现实中最有效的方法还是从产线上持续抓数据。系统上线初期不要追求检测准确率立刻达标,先跑7到15天做数据积累,跑得越久,样本覆盖的多样化场景越充分。鲁威制造上线第1周,我们每天都会找出误报和漏报较多的图片,合并进训练集,再触发一次增量训练。两周以后,模型表现才有了可看的提升。

有一个经验值得强调:千万不要只收集缺陷样本而忽略良品样本。良品图片同样要参与训练,很多误报其实是模型没有见过“足够多”的良品形态。良品样本越多,模型对正常纹理的拟合越好,过杀率降下来就是水到渠成的事。

4. 阈值调优与误报压制:从算法指标到产线指标的换算逻辑

AI图检的难点不在模型结构,在于如何把模型输出换算成产线上的可执行判定。模型输出的是置信度分数和缺陷掩膜,而产线需要的是一个明确的OK/NG信号。这里的核心就是阈值怎么定。

4.1 过杀与漏检:一对绕不开的矛盾

任何检测系统都会面临过杀和漏检的矛盾。过杀是系统把良品当成不良品,浪费的是产能成本;漏检是系统把不良品放走,影响的是客户端的质量声誉。两者不是一个维度的事,产线负责人的关注点很明确:漏检几乎零容忍,过杀可以被容忍,但要在一定比例内。

鲁威制造一开始的预期是漏检率低于千分之一,过杀率低于百分之三。这个指标听起来严格,但实际计算下来并不离谱,关键取决于原有不良率和检测节拍。我们做过一个简单测算:

  • 原有不良率约1.2%
  • 10000件产品中约有120件真正的不良品
  • 在漏检率千分之一的前提下,系统必须能识别出其中119件
  • 而良品有9880件,过杀率3%意味着约296件良品会被误判

这么算下来,产线每天的误杀量在可以承受的范围之内,但前提是把阈值卡在漏检率满足要求的水平。实际操作中我们优先保证漏检指标,同时一边调阈值一边记录每天的过杀数量,找到可接受的均衡点。

4.2 用置信度双阈值代替单阈值判定

JBoltAI的默认机制是置信度高于判定阈值才判NG,低于识别阈值则判OK。这个单阈值方案在少量样本上看起来够用,但上线一跑就发现问题了:置信度中等区间的样本非常多,单阈值会让模型在边界附近的预测极不稳定,同一张图可能有时NG有时OK。

我们改用置信度双阈值方案。置信度高于高阈值直接判NG,低于低阈值直接判OK,处于中间区间的样本进入人工复核队列,由系统自动留存图片并推送到待复检列表。这套机制的好处是既保证了高置信度样本的自动判定效率,又给了边界样本一条人工介入的路径,不用盲目调阈值去硬切边界。

可以这样理解:单阈值是一条线,把人都往两边赶,但总有一部分人站在线上,怎么判都别扭;双阈值是一片灰色地带,灰色地带里的人先保留,由人来管。实际操作中,人工复核队列初期每天大概200到400张,随着样本积累和模型迭代,逐渐缩窄到几十张。

4.3 阈值要跟着数据分布动,不应只调一次

鲁威制造的产品会有批次性差异,不同批次的纹理和表面状态不完全一致,固定阈值一开始是合理的,但一段时间后会开始出现批量性误报。我们在系统中做了每日指标统计,核心看三个数:误报率、漏检率、复核占比。只要复核占比连续几天上升,就会去检查是不是数据分布发生了变化。

阈值调整不是一个贬义词,但只要频繁调整阈值就值得警惕。如果阈值本身需要经常动,说明模型的特征提取还不够稳定,此时真正要做的是收集新样本去更新模型,而不是一直做大改动。JBoltAI支持热更新模型,不中断产线的情况下替换推理模型,这个能力很好用,但也要谨慎用,推上去之前一定先在本地跑一遍验证集。

5. 部署阶段的三个大坑:光照波动、产品换型、小样本新缺陷

训练跑通只是第一步,真正决定项目能不能长期稳定运行的,是现场部署的细节。鲁威制造这个项目其实趟了不少坑,我挑三个最有代表性的记录下来。

5.1 光照波动:同一个光源,不同时段表现完全不一样

第一天上线就出现了奇怪现象:上午检测稳定,下午过杀率突然飙升。排查了很久,才发现是车间自然光变化导致的。车间虽然室内,但是窗户透进来的自然光会在特定时间段影响相机成像,图像的亮度和对比度发生了偏移。模型对于这种偏移比较敏感,就容易把阴影误判为暗色脏污。

解决办法是安装了遮光帘,把外部自然光隔离开,同时调整了光源的照射区域,让产品所在区域的亮度不再受外部环境干扰。另一个措施是增加了动态灰度校准,每隔一段时间会自动采集一张参照图,计算灰度分布偏移量,对输入图像做校正后再送入模型。

这个坑给我们的教训是,视觉AI项目在实验室里测试得再好,也得考虑到真实车间的环境变化。有时候问题的根源特别简单,但排查起来可能要折腾一整天。

5.2 产品换型:模型按型号隔离,而不是混着一起练

鲁威制造有几种不同规格的产品,外形接近但有细微差异,一开始我们把所有型号的数据混在一起训练,认为这样可以让模型学习到更通用的特征。实际效果不理想,混训时模型整体准确率尚可,但每个型号的表现波动很大,某一型号的过杀率偏高,另一型号的漏检率又上去了。

主要原因在于,不同型号的形状、纹理、反光特性有差异,混合训练时模型会尝试拟合所有分布,结果每一种都拟合得不够精准。最终的调整思路是按型号分别建立检测配置,每个型号有独立的推理模型和预处理参数,PBoltAI内部支持多模板管理,可以配置当换型时自动加载对应的模型。

换个角度想,每个型号相当于一个独立的专家,专而精比万金油可靠得多。代价是需要为每个型号单独标注样本、单独训练,但这一点成本换来了稳定性的提升,非常划算。

5.3 新缺陷在没有预报的情况下突然出现

上线两周后,产线突然连续出现一种此前从未见过的缺陷形态,检测效果明显下降。原有标注数据里完全没有这种类型的样本,模型只能硬着头皮去推理,结果是时而识别到一些,时而大面积漏掉。

处理方式分两步走。第一步,紧急情况下先用较低阈值把所有可疑样本都拦截下来,把漏检风险压到极低水平,哪怕过杀数据高一些也可以接受。第二步,立刻收集这种新缺陷的样本并追加标注,快速触发增量训练。新模型验证通过后再切换到在线正常检测,这时我们才逐步把阈值调回到合理位置。

这类情况其实无法完全避免。所以系统必须要有持续学习的数据循环机制,算法团队定期去把误报率、复检队列反馈的数据捞出来看,发现问题就快速更新,而不是指望模型一劳永逸。

6. 两个月运行数据复盘:AI图检在制造业落地的性价比边界

说完踩坑,说点实际的。鲁威制造这套JBoltAI智能图检已经稳定运行两个月,我拉出一个简单的对比。

项目上线前上线后
检测方式人工目检自动检测复核
检测节拍约11秒/件,靠人状态波动4秒/件,稳定
漏检情况未做全量统计,供应商反馈时有发生抽样验证约0.05%
过杀率不适用初期3.8%,两周后降至1.9%
质量数据实时性次日汇总实时推送
人工投入2人倒班持续目检1人负责复核,高峰期2人

鲁威制造对这套系统的评价是:质量数据变成了可分析的生产资料。过去质量信息只能靠纸质记录,现在系统里积累了详细图像数据,返修时可以直接调出历史图,供应商那边也有了处理差异。

不过我也得说清楚边界。AI图检不是“机器替人”最显性的环节,它替代的是重复性目检动作,但仍然需要人在旁边维护、复核、处理异常。如果你上AI图检是为了完全省掉检测人员,那这种预期基本都会落空。更合理的目标是通过AI把人工精力从重复作业中解放出来,让人去处理更复杂的问题,比如数据分析和质量改善。

另外一个边界在于成本。AI图检项目包含硬件、软件、数据服务、调试和后续迭代,这些投入不是一次性结束的。过低预算的AI图检只是一个包装出来的普通图像软件,长期维护跟不上,最后效果会大打折扣。过高的预算也需要谨慎评估,工业质检项目的ROI要在真实的不良率、节拍、人工成本基础上认真算,如果产品本身不良率极低,检测需求又很简单,传统视觉也许就是一个更经济的选择。

以我个人的实际经验,上AI图检之前最值得先做的一件事,是拿一周的真实产线数据跑一个最小可行方案。用少量样本让模型先跑起来,看看在复杂的现场光照下,缺陷能不能清晰成像、模型能不能稳定输出结果。这一步验证成本不高,但可以提前暴露问题,比签完合同再踩坑不知道要省多少事。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进