去年年底,苏州一家电子代工厂的品质主管找到我,说他们快被焊锡缺陷退货搞疯了。
事情是这样的:他们给一家家电品牌代工控制器板,8条SMT线一天产出3000多片PCBA。出厂前有两道质检——第一道是AOI(自动光学检测),第二道是人工复判。但AOI报的缺陷里面大约有六到七成是假报,人工复判既要筛假报又要找AOI漏掉的,作业员盯着屏幕看一天,眼都花了。结果去年第四季度,客户退货里焊锡类缺陷占了将近一半。
我们花了一个多月在产线上做调研、打样、部署,最后用边缘AI网关+高分辨率工业相机的方案接在AOI后面做二次智能复判。这篇文章记录整个过程,不吹效果多好,就讲做了什么、遇到了什么麻烦。
一、现场摸底:问题不在AOI,在复判环节
去工厂蹲了两天,我画了一张产线质检流程图,才搞清楚真正堵在哪。
回流焊后的PCBA先过AOI。AOI这玩意儿说好用也好用,说坑也坑——它按像素比对的规则做检测,稍微有点偏差就报警。一片板子200多个焊点,AOI能报出30-40个"疑似缺陷",但实际真有问题的不超过5个。然后这30-40个疑似点全部要人工在显微镜下复判。
几个现实问题:
- 复判速度慢:一个熟练作业员每小时复判约15-20片板子。8条线日产3000片,意味着需要3-4个作业员全天候做复判
- 疲劳导致漏检:第1小时和连续看了4小时后的判断准确率差距很大。下午时段漏检率尤其高
- 标准不统一:IPC-610标准有三级验收标准,但什么算"可接受"什么算"缺陷",不同作业员判断有差异
- AOI参数不敢调松:调松了假报减少但漏检风险增大,品质部不敢冒险
所以问题的关键不是换更好的AOI,而是怎么把人工复判这个瓶颈用AI替代掉——让AI做一轮初筛,人只确认AI认为"可疑"的少数焊点。
二、方案设计:边缘AI做二次智能复判
我们设计的方案,本质上是在AOI和人工之间加了一道AI智能复判层。
硬件架构
- 相机:在AOI出口加装一台高分辨率工业相机(5000万像素),配环形LED光源。AOI报缺陷后,传送带短暂停在相机下方,拍一张PCBA局部高清图
- 边缘AI网关:现场部署一台边缘AI网关(带NPU加速),跑焊点缺陷检测模型
- 操作终端:放一台23寸工业触控屏在复判工位,显示AI标记的缺陷位置和类型
工作流程是:
- AOI检出疑似缺陷,触发拍照信号
- 高分辨率相机拍摄局部焊点图像
- 边缘AI网关运行模型推理,判断该焊点是"真缺陷"还是"假报"
- 如果AI判断为真缺陷:标记位置、分类(虚焊/连锡/少锡/立碑/锡珠),推送到操作终端
- 如果AI判断为假报:直接放行,不打扰作业员
- 作业员只需确认AI标出的真缺陷,决定返修还是报废
这样作业员的注意力从"从30个点里找出3个真缺陷"变成了"确认3个AI标出的点"。效率差距是数量级的。
模型选型
焊点检测是个典型的细粒度分类问题——缺陷和正常焊点差异可能只有几个像素。我们试了几条路:
- 尝试一:直接拿YOLOv8做目标检测——缺陷太小(最小的立碑可能只有0.3mm),漏检率很高
- 尝试二:用裁剪后的焊点子图(patch)做二分类——效果好一些,但对齐精度要求高,AOI坐标偏移几个像素就裁歪了
- 最终方案:在AOI报的ROI区域内,用分割模型(轻量级UNet变体)做焊点区域提取,然后用分类网络判断缺陷类型。这样对坐标偏移的容忍度提高了不少
踩坑记录:第一次试YOLOv8的时候,模型把PCB板上的字符丝印(电阻值标记"102""104"之类)误识别为缺陷——因为字符边缘也有类似焊锡的明暗变化。后来在训练数据里加了更多负样本(正常焊点+字符区域),才把这个误报压下去。
模型最终选型:
- 分割阶段:轻量UNet(MobileNetV3 backbone),输入224x224,参数量约2.5M
- 分类阶段:EfficientNet-B0,输入224x224,输出6类(正常/虚焊/连锡/少锡/立碑/锡珠)
- 推理速度:在边缘AI网关(NPU加速)上,单焊点推理约15-20ms,一片板子200个焊点总共约3-4秒
三、实施过程:最花时间的是数据准备
第一阶段:数据采集和标注(3周)
这个阶段花的时间超出预期。我们以为AOI已经有历史数据,直接拿来用就行。结果发现AOI只保存了"报缺陷的焊点图像",没有保存"正常焊点图像"。而且AOI的图像分辨率低,细节不够。
解决方案是:在产线上连续跑了2周,每片板子挑10个AOI报的焊点+10个正常的焊点,用高分辨率相机逐一拍摄。两周时间拍了约12000张焊点子图:
- 正常焊点:约6000张
- 虚焊(冷焊):约1500张
- 连锡(桥接):约1200张
- 少锡(锡量不足):约1200张
- 立碑(曼哈顿现象):约800张
- 锡珠(溅锡):约700张
- 其他(孔洞、锡尖等):约600张
标注找了3个人,用LabelImg花了大概一周时间。每张图标注焊点区域和缺陷类型。
踩坑:不同类型的焊点数量严重不均衡——立碑和锡珠样本太少,模型在这两类上表现很差。后来用了数据增强(旋转、亮度变化、加噪声)把少样本类别扩到每种2000张以上,才勉强能看。
第二阶段:模型训练和调优(2周)
训练过程其实没太多好讲的,标准流程。几个关键点值得一提:
- 数据增强很有用:特别是亮度和对比度的随机变化——因为产线上不同班次的光线条件有差异,下午的阳光会从窗户照进来影响打光效果
- 误报控制:我们把"假报"(把正常焊点判为缺陷)的权重调高了,宁可漏报不可误报。因为误报会让作业员失去信任,漏报可以由下一步的抽检弥补
- 类别阈值可调:不同缺陷类型的置信度阈值分开设置。立碑(曼哈顿现象)后果严重,阈值设到0.7;锡珠虽然不好看但不影响功能,阈值设到0.5
训练后的模型指标(在验证集上):
- 总体准确率:约94%
- 虚焊检出率:约95%
- 连锡检出率:约93%
- 少锡检出率:约88%
- 立碑检出率:约96%
- 锡珠检出率:约85%
- 误报率(正常判为缺陷):约6%
第三阶段:产线联调和试运行(2周)
模型下产线,第一个问题就来了——传送带停不准。AOI发出拍照信号到相机触发拍照之间,传送带会多走1-2毫米,导致拍到的ROI和训练时的区域有偏移。
解决办法:在相机视野里加了一个Mark点定位,每次拍照先找Mark点校正坐标偏移。说起来简单,调这个定位逻辑花了两三天。
第二个问题是推理速度不够。一片板子200个焊点,用分割+分类两个模型走完一轮要4-5秒,但产线节拍要求每片板子停留在质检位不超过6秒(包括拍照和推理)。只剩1-2秒的缓冲。后来把模型放到边缘AI网关的NPU上跑,推理时间从30-40ms/焊点降到了15-20ms/焊点,才勉强够用。
教训:实验室环境下的推理时间和产线上的真实推理时间完全是两回事。数据加载、预处理、后处理的时间加起来可能比模型推理本身还长。做边缘端部署一定要测端到端延迟,不要只看模型推理速度。
第三个问题是回焊炉的温度波动。有一天气温骤降,回焊炉的温区控温有点飘,导致一批板子出现了轻微的冷焊现象——锡膏没有完全熔化,焊点表面发暗。这个现象在训练数据里几乎没有,模型表现很差。后来补充了一批冷焊的样本重新训练,才算覆盖到这个场景。
四、实际效果
AI初筛后,作业员只需要确认AI标出的真缺陷点,每片板子的复判时间从3-5分钟降到约1分钟。原来3-4个作业员做的事,2个人就能完成。
AOI+AI二级检测的整体检出率。AI能捡回一部分AOI误判为正常的"假阴性"——主要是AOI参数设得宽松时漏掉的轻微虚焊和少锡。
系统上线后的第一个季度,客户反馈的焊锡类缺陷数量下降明显。品质主管说这是最近三年退货控制成绩较好的一次。
当然也有没达预期的地方:
- 少锡检测一直是弱项——锡量多少算"少"本身就很难量化,不同批次的锡膏印刷厚度有差异,模型容易把略少的正常板判为缺陷。这个我们在用更精确的锡膏厚度检测仪数据做辅助,但还没有完全解决
- 换线后的迁移成本——每次产线换板(不同PCBA型号),模型需要重新标定一些参数,大概花半天到一天时间。对快换线(每天换2-3次)的产线来说,这个成本偏高了
五、个人思考
这个项目做完,我对AI视觉在电子制造质检的应用有了几点新的认识。
第一,AOI+AI不是替代关系,是互补。AOI擅长规则检测(焊盘位置对不对、有没有漏贴元件),AI擅长模式识别(焊点质量好不好、缺陷类型判断)。两个结合起来效果比单独用哪个都好。而且AI这道关卡能帮AOI"松一松"参数——不用担心漏检增多,后面的AI能兜底。
第二,数据是最大的门槛,不是模型。整个项目最花时间的是建数据集。12000张焊点子图,每张要标注焊点区域+缺陷类型。而且产线上的环境变化(气温、光照、焊膏批次)都会导致数据分布偏移,需要持续收集新数据做增量训练。做AI质检,其实做的是数据工程。
第三,边缘部署的坑比想象的深。从模型训练到产线跑通,硬件方面的坑占了一半——传送带定位不准、相机触发延迟、NPU驱动兼容性、散热……模型本身反而没出太大问题。
第四,电子代工厂的利润率,决定了方案的成本天花板。一条SMT线一天的产值不算高,品质改善的收益可观但不会太夸张。所以方案成本必须控制在合理范围内。边缘AI网关+工业相机的总硬件成本大致在几万元级别,电子厂可以接受。如果换工业级工控机+更高端相机,成本翻倍,客户大概率不会买单。
六、给你的建议
如果你也在考虑在SMT产线上做AI视觉质检:
- 先别想着替代AOI——在AOI后面加一道AI复判,投入小、风险低、见效快
- 数据准备期至少预留3周——不要低估采集和标注的工作量。特别是少样本缺陷类型(如立碑、锡珠),要想好怎么补数据
- 边缘端推理一定要测端到端延迟——从相机触发到推理结果返回,每一步都要算进去
- 留好人工确认环节——AI做初筛,人做最终确认。这样既有效率提升又有安全边界
- 考虑换线成本——如果产线每天换多次板型,评估标定时间是不是能接受。针对快换线场景,可以考虑做"预标定"——提前为常用的板型保存好参数,换线时一键切换