5周 · 漏检率5%→0.3% · 一个电子厂的真实踩坑记录
先报数:一条SMT产线,回流焊后AOI检测工位,AI模型上线5周,漏检率从5%降到0.3%,误报率从12%压到1.5%,复判人员从3个人减到1个人。
数字看着光鲜,过程一点都不光鲜。模型第一周上线的时候,产线每隔3分钟响一次警报,质检员骂娘,工艺工程师要拔网线,车间主任直接打电话说"你们这AI还不如我原来的AOI"。
项目复盘的时候我们算了一笔账:算法本身大概只贡献了最终效果的三成。剩下七成,全靠拉着产线上最资深的质检员,在检测工位旁边坐了整整两周。
这篇文章不讲模型架构,不讲mAP,只讲AI视觉检测在工厂产线上到底怎么落地,以及为什么"人机协作流程设计"比算法选型重要得多。
01|第一周:模型上线,警报响成一片
项目背景不复杂。南方一家电子代工厂,主要做汽车电子PCBA,元件密度高,0402封装的电阻电容密密麻麻。原来用传统AOI,规则阈值卡得严,误报率长期在10%以上,每条线配3个质检员轮班复判。客户投诉漏检,厂方决定上AI。
我们选了YOLOv8n做主干,在客户历史数据上训练,8000张标注图,覆盖缺件、错件、虚焊、桥连、立碑、极性反6大类缺陷。实验室测试集mAP@0.5跑到94.2%,客户看了报告挺满意。
然后上线第一天就崩了。
不是模型崩了,是产线崩了。模型对每块PCB板输出20-30个"疑似缺陷",其中90%是误报:助焊剂残留被识别成桥连,丝印模糊被识别成缺件,焊盘光泽变化被识别成虚焊。质检员本来只需要复判AOI的报警,现在平白多了一堆AI的"疑似",工作量不减反增。
⚠️ 第一个坑
实验室mAP高不代表产线能用。训练数据是历史标注图,标注员只框了"明确的缺陷",但产线上的真实画面充满了大量模棱两可的灰度地带:可接受的轻微偏移、正常的焊锡光泽变化、不影响功能的微小瑕疵。模型在训练时没见过这些"非缺陷但看起来怪怪的"样本,上线后就把它们全当缺陷报了。
我们第一反应是调阈值。置信度阈值从0.25拉到0.5,误报降了一半,但漏检开始冒头。有些真实的虚焊置信度本身就不高,阈值一调高直接放过去了。阈值再拉回来,误报又涨。检出率和误报率,单靠调阈值没法同时满足。
02|质检员坐下来的第一天
调阈值调了三天没出路,项目组有点慌。客户那边已经放话"再给你们一周,不行就换回AOI"。
转机来自一个偶然。产线上有个做了12年质检的质检员,姓周,大家都叫他周工。周工复判有个习惯:看一眼屏幕,不放大,3秒钟判断良品不良品,准确率据说比AOI还高。我们拉他看模型报出来的误报,他翻了几十张,说了一句话:
"这些不是缺陷,你们的AI没见过'正常长什么样'。"
这句话点醒了我们。训练集只有"缺陷样本"和"少量标注为正常的样本",但产线上的"正常"远比我们想象的丰富:不同批次元件的色泽差异、回流焊温度曲线波动带来的焊锡光泽变化、助焊剂残留的各种形态。这些在资深质检员眼里"一看就知道没问题"的东西,模型从没系统地学过。
我们做了一个决定:请周工每天在检测工位旁边坐4小时,连续两周,专门给模型的每一次报警做"终审判决"。不是简单标"对"或"错",而是告诉他为什么错:这是助焊剂残留不是桥连,这是正常润湿不是少锡,这是丝印偏移不是缺件。
周工的判断通过一个简单的界面回传:模型每次输出结果,旁边加三个按钮——"确认缺陷""误报-正常波动""误报-其他原因"。点"误报-正常波动"时,选一个原因分类(焊锡光泽/助焊剂残留/元件色差/丝印偏移/光照变化)。这5个原因分类是周工自己定的,他说"你们分类分得太细没用,产线上就这几种情况"。
🌺 工程师视角
这一步是整个项目最关键的转折。很多AI视觉团队把精力全花在模型选型和调参上,觉得数据标注找几个兼职工就行了。但产线上的判断标准不是写在规格书里的,它藏在质检员的脑子里:什么程度的偏移可接受、什么形态的焊锡算正常润湿,这些是十几年产线经验沉淀下来的隐性知识。你不把他拉到工位旁边一帧一帧看,这些知识永远进不了模型。标注员标不出"这个虽然长得像缺陷但其实没问题",只有天天在产线上的人能。
03|置信度三档分流:不搞一刀切
周工陪线的第一周,我们收集了3000多条复判记录。分析后发现一个规律:模型的置信度分布和实际准确率之间有明显的对应关系,但不是简单的"高置信度=准确"。
具体来说,所有被模型标记为"疑似缺陷"的报警中,置信度0.85以上的结果准确率在98%以上,基本不用人看;置信度0.5以下的大部分是误报,但也混着少量真实缺陷,直接丢弃会漏检,全送人工复判量太大。问题集中在0.5到0.85这个区间,占报警总量的约40%,准确率只有60%左右。大量置信度极低(<0.3)的检测点直接判为良品,不产生报警。
我们据此设计了三档分流机制:
🟢 绿区(置信度 ≥ 0.85)
直接放行或直接判废,不经过人工。系统记录结果,留待事后抽检。
🟡 黄区(0.5 ≤ 置信度 < 0.85)
送人工复判。复判界面同时显示模型给出的缺陷类型、置信度、热力图(Grad-CAM),以及该位置的历史检测记录。复判员只需要确认"对"或"错",3秒一个。
🔴 红区(置信度 < 0.5)
不直接丢弃。系统自动截取该ROI的高清放大图,和同位置的历史良品图做并排对比,推送给复判员做"异常排查"。这部分量最小(约5%),但恰恰是漏检风险最高的区域。
分流机制的关键不是三档本身,而是每一档的处理方式都不一样。绿区靠模型,黄区靠人快速确认,红区靠人加历史数据深度比对。AI根据自己的确定程度,决定找人帮多少忙。
实施第一周,复判量直接砍掉60%。报警中超过一半落在绿区,根本不需要人看。质检员从"每块板都要看"变成"只看黄区和红区",3个人的活1个人就能干。
04|第二周到第五周:数据飞轮转起来
周工陪线两周后,我们积累了大约8000条带"终审判决"的复判记录。这些记录不是简单的"对/错"标签,而是带原因分类的:"误报-助焊剂残留""误报-元件色差""确认-虚焊"等等。
我们用这些数据做了两件事:
▸ 第一件事:补充"正常样本"训练
把周工标为"误报-正常波动"的图片加入训练集,标注为"正常"类别。这些图片是模型以前没见过的"看起来怪怪的但确实没问题"的样本。补了大约2000张这类图片重新训练后,误报率从12%降到4%左右,比之前调任何超参数都管用。
▸ 第二件事:按缺陷类型分别调阈值
周工的数据揭示了一个事实:不同缺陷类型的置信度分布完全不同。缺件和极性反很容易判,置信度普遍在0.9以上;虚焊最难,第一周用统一阈值0.5时,有将近18%的真实虚焊因置信度在0.5-0.55之间被卡掉。我们给每类缺陷设了独立的阈值:缺件0.8、桥连0.7、虚焊降到0.45。调整后虚焊的检出率从82%提到96%,整体误报率没有明显上涨。
第二周中旬,三档分流机制和首批补充样本训练同步上线。从第三周开始,我们把周工的"终审判决"流程固化成日常机制。复判员每次判断都要选原因,系统每天自动把新的"误报-正常波动"样本加入增量训练集,每周五晚上自动跑一次增量训练,周一早上部署新版本。第一次迭代后误报率又降了1个百分点,之后每周稳步下降,到第五周稳定在1.5%。
漏检率的变化更值得说。第一周漏检率5%,主要是低置信度的虚焊被阈值卡掉了。红区机制上线后,所有低置信度结果都有人工兜底,第二周漏检率就降到1.2%。后续通过补充虚焊样本和分类别调阈值,第五周降到0.3%。
📊 5周关键指标变化
05|复盘:算法只占三成
项目结束后内部复盘,把最终效果拆成几个来源:
▸ 模型和算法本身(约30%)
YOLOv8n的检测能力、增量训练机制、Grad-CAM热力图可视化。这些是基础,没有它们不行,只有它们也不够。
▸ 置信度分流流程(约30%)
三档分流加差异化处理策略。纯流程设计,不涉及算法创新,但它把"AI判完人再审"的串行模式变成"AI按确定程度分配人工资源"的并行模式。
▸ 质检员经验注入(约40%)
周工两周陪线产生的8000条带原因标注的复判数据,以及他定义的5类误报原因分类。这些数据直接补了模型的认知盲区,比任何数据增强策略都有效。
🌺 工程师视角
很多团队做AI视觉落地,把90%的精力花在模型上:选YOLO还是DETR,要不要加SAM做分割,backbone用ResNet还是EfficientNet。但在工厂产线上,这些决策对最终效果的影响往往不如"把资深质检员拉过来坐两周"大。原因很简单:模型解决的是"像不像"的问题,产线要的是"对不对"的判断。"像缺陷"和"是缺陷"之间的差距,就是质检员十几年的经验。你不把这个差距填上,mAP再高也没用。
质检员陪线不只是标注数据,他会在复判过程中随口说"这批元件颜色偏深,正常的""最近回流焊温度调过,焊锡光泽不一样",这些上下文信息是标注指南覆盖不了的。做产线AI,别老想着替代人,先想怎么把人的经验变成系统的一部分。
还有一个反直觉的发现。分流机制上线后,质检员对AI的接受度明显提高了。第一周大家都在骂"这玩意儿乱报",但绿区直接放行后,复判量大幅下降,质检员发现AI处理掉了大部分无聊的良品筛查,自己只需要看真正拿不准的。后来有新员工入职,还用AI的热力图来学习判断缺陷。
最后说一个细节。项目验收那天,周工过来看了一会儿系统运行,指着屏幕上一个黄区报警说:"这个桥连判得对,但旁边那个少锡它没报出来。"我们一查,那个少锡的置信度0.47,落在红区,系统已经推送给复判员了,只是还没处理。周工愣了一下,说了句:"行,比我快。"
📌 写在最后
AI视觉在工厂落地,最难的从来不是模型。模型可以买,可以换,可以微调。真正难的是三件事:让产线上最懂行的人愿意把脑子里的经验倒出来;设计一套人和AI各干各擅长的事的协作流程;在模型上线后持续用产线数据喂它、修它、让它越用越准。这三件事没有一件是算法问题,但它们决定了你的AI视觉项目是"实验室mAP 94%"还是"产线漏检率0.3%"。下次再有人跟你吹他们的模型多厉害,你就问一句:你们让质检员在工位旁边坐了几周?
🛠 本文落地要点速查
① 补充正常样本:训练集不能只有缺陷,"看起来怪但没问题"的样本同等重要
② 置信度分档:绿区自动放行/判废,黄区人工快速确认,红区人工深度排查
③ 分类别阈值:缺件/极性反阈值可高,虚焊/微裂纹阈值要低,别一刀切
④ 质检员陪线:至少2周,每条误报必须标原因分类,不能只标"对/错"
⑤ 周级迭代:复判数据自动入训练集,每周增量训练+部署,形成数据飞轮
开麦视觉 · AI 大模型 + 机器视觉
SMT视觉检测 · 工业AI落地 · 智能视频分析中台
#工业AI落地 #机器视觉 #SMT检测 #人机协作 #数据飞轮
夜雨聆风