AI缺陷识别:从实验室到车间的最后一公里

上个月我去一家轴承厂做技术交流,车间主任指着一条产线跟我说:这套视觉系统上线三个月,误报率压到千分之三,但漏检的那两个批次,差点让客户整条装配线停摆。他苦笑的表情我到现在还记得。AI缺陷识别这件事,学术界发论文是一回事,真正在车间里跑得稳,完全是另一码事。

先说个反直觉的结论:模型的准确率往往不是瓶颈,缺陷样本的可得性才是。你去跑一个公开数据集,F1-score刷到0.98,觉得挺好。但到了现场,对方告诉你缺陷类型有十七种,其中三种连老师傅都只是‘感觉不对’,你拿什么训练?

一、你以为的缺陷,不是你以为的缺陷

一、你以为的缺陷,不是你以为的缺陷
一、你以为的缺陷,不是你以为的缺陷

很多中级工程师容易陷入一个陷阱:一上来就调网络结构,换backbone,加注意力机制。我见过最夸张的团队,用EfficientNet在钢表面缺陷数据集上折腾了两个星期,把准确率从98.2%提到98.5%,兴高采烈去验收。结果对方拿出几个样品——划痕在斜光下才显现,某些压痕只在油污覆盖后边缘有微弱的灰度差——他们的模型直接傻眼。

问题出在哪?
缺陷定义本身模糊。国标GB/T 2828.1里对‘轻微不合格’的描述,到了具体工件上,验收人员的判断都有主观差异。你辛辛苦苦标的数据,可能跟产线上的真实分布是两个世界。

所以说,第一个要做的不是选模型,是跟质检员坐在同一张桌上,把缺陷图谱定义清楚。把他们拍板‘放行’和‘拦截’的瞬间记录下来——哪些特征是决策依据?是宽度?面积?对比度?还是深度?有时候你会惊讶地发现,老师傅看的其实是反光方向。

别急着训练。先做一轮数据勘查,你会少走很多弯路。

二、样本不均?别硬扛,换思路

都知道缺陷检测是极度不平衡的问题。好品几万个,缺陷几十个。最常见的手段是过采样,但强扭的瓜不甜——简单复制粘贴只会让模型死记硬背。这时候我通常建议从两个方向下手:

第一,合成缺陷。不是拿GAN瞎生成,而是基于物理机理的退化模拟。比如轴承滚珠表面,划痕是有方向性的,深度和宽度服从一定分布(可以参考ISO 8785关于表面缺陷的几何定义),你按这个规律去合成,模型学到的是‘划痕的物理本质’,而不是一堆噪声。我们当时给某汽车零部件厂做差速器齿轮齿面缺陷识别,就是用这种思路,把刮伤、压痕、磨削烧伤的合成样本加进训练集,漏检率直接降了40%

第二,异常检测方案。当缺陷样实在太少,干脆不把它们当分类问题。用PatchCore这类基于预训练特征的异常检测方法,只需要少量正常样本做参考,就能把‘和正常不一样’的区域框出来。注意,这里有个坑——正常样本的多样性必须覆盖光度变化、油污干扰、位置偏移,否则车间里随便变个环境光,误报能让你怀疑人生。

轴承表面缺陷显微镜照片与合成缺陷对比图
轴承表面缺陷显微镜照片与合成缺陷对比图

话说回来,合成数据也不是万能的。仿真和真实之间的domain gap,往往比想象中要大。线下测试98%的准确率,一上线就掉到90%,我遇到过不止一次。解决方案?用部分真实缺陷样本做微调,或者引入对抗域适应,但后者工程复杂度太高,一般项目不推荐。

三、部署那点事:你逃不掉的实时性

算法工程师喜欢谈模型大小、FLOPS,但车间真正问的是:产线节拍要一分钟检120件,你扛得住吗?

表面上看,一个YOLOv8s跑在RTX 3070上,单张图像推理只要几毫秒。可是加上预处理、吞吐队列、结果判定逻辑,实际延迟可能翻到200毫秒。更关键的是,产线上往往不是单张图像,是多工位、多相机、高分辨率抓拍。你一个工位装三台500万像素相机,每台每秒抓10帧,数据量就让你傻眼。

我踩过的坑:一开始用Python的multiprocessing做并行采集,结果GIL导致CPU瓶颈,帧率死活上不去。后来换成C++部署,直接用TensorRT的C++ API,再把图像解码放到单独的线程池里,才勉强满足90fps的总吞吐。说实话,很多时候性能瓶颈根本不是模型,而是图像解码和预处理。记得用NVJPEG做硬件解码,能省一大半CPU时间。

另外,别忽视PLC的交互逻辑。检测系统判定OK/NG后,要跟PLC握手,控制剔除气阀。这个通讯延迟通常有50-100ms,如果没算进节拍里,末了会发现整个产线还是跟不上。合理的做法是把检测任务拆成两段:先跑一个轻量级预筛,抓明显的缺陷;对可疑区域再做二次精细判别。这样既保证速度,又不牺牲精度。

工业产线AI视觉检测系统相机部署示意图
工业产线AI视觉检测系统相机部署示意图

顺便说一句,模型量化很香,但别盲目。INT8量化后精度掉0.5%以内很正常,可如果你的任务本身是‘小数点后两位的灰度差’,量化很可能把阈值抹平了。建议在量化前先做敏感性分析,看哪一层对量化最敏感,用混合精度甚至只在部分层做INT8。

四、维护与迭代:把AI当员工养

很多项目验收后,模型就跑着跑着不行了。原因?产线换了供应商,毛坯余量变了,刀具磨损周期不一样了,甚至是车间屋顶漏水导致光照不均。你训练时的数据分布早已漂移。

所以必须建立持续的数据反馈闭环。最简单的做法,每天把模型判错的样本自动归档,每周人工复核一次,然后把新样本并入训练集。但注意,不能光加数据不清洗——如果误报率太高,你要检查是不是混入了很多‘疑似但实际OK’的边界样本。这时可以用主动学习的思路:让模型自己挑出那些不确定性最高的样本请人标注,效率会高得多。

还有一个容易被忽视的点——模型版本管理。别指望导出一次模型就一劳永逸。很多时候你调了特征提取器,或者增加了新缺陷类型,但验证集陈旧,导致回归。建立一套包括标准测试集、影子部署、灰度发布的流程,虽然前期麻烦点,但后期能救你的命。

我见过一个企业,模型更新了七八版,每次都是直接替换,也不做A/B测试。结果某次更新后,把一种轻微磨痕全部放行,直到客户投诉才反应过来。教训就是:再急的迭代,也要留出回滚选项。

五、成本算账:别光盯着算法,算算总账

AI缺陷识别项目,便宜的几十万,贵的几千万。很多老板以为花的是软件钱,其实大头在硬件、打光、数据工程和后期维护。一套好的光学系统——同轴光、低角度环光、频闪控制——可能比GPU工作站还贵。所以别一上来就买顶尖的工业相机,先做光学实验,用一台手动变焦镜头和一个便宜的工业相机,把缺陷照得最清楚的光路确定下来,再定方案。这比后期迁就算法改打光要省力得多。

还有,别忘了人工智能只是工具,最终拍板还得是人。某些关键部件,比如航空发动机叶片,无论AI给出什么结论,都要人工复检一遍。这不是对AI不信任,而是责任链条必须完整。说句不好听的,AI出了漏检,你还能推到算法上,但产线上的终检员签了字,就得负责。

结语

AI缺陷识别落地,难的不是模型有多fancy,而是你能不能把每一个工程细节抠到位。从缺陷定义、样本采集、算法设计、部署优化到持续迭代,任何一环掉链子,整个系统就瘫痪。遇到问题别急着换网络,先去现场看一分钟,看看是不是打光角度偏了,或者是电磁阀的响应慢了——往往问题就是这么朴素。

最后那句老话,但永远是对的:AI不会取代质检员,但会用AI的工程师会。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:AI缺陷识别:从实验室到车间的最后一公里
文章链接:https://www.yqhljx.com/list_9/923.html