资讯动态

SMT焊点AI视觉检测实战:直通率从99.2%到99.99%的完整复盘

发布时间:2026/10/14 14:10:08 来源:尧图企业网站定制
焊点质量这块干过SMT产线的人心里都有数——想靠人工目检守住品质,基本是拿老师的眼睛去赌产量。一块PCBA上几百上千个焊点靠AOI和人工复判撑着漏检和误报这对老冤家从来就没消停过。我所在的团队前两年做了一个AI视觉检测项目前后折腾了小半年把产线焊点检测的直通率从原来的99.2%左右一路干到了99.99%整个过程踩了不少坑也攒了不少一手经验。今天就把这个项目的选型逻辑、数据工程、训练部署、以及最终冲高直通率的过程完整梳理一遍给正在上AI视觉检测或者准备改造SMT产线的朋友做个参考。1. 先搞清楚问题SMT焊点缺陷检测为什么这么难1.1 焊点质量几乎决定了PCBA的最终命运焊点这个中间层看着不起眼但它既是电气连接点又是机械固定点。IPC-A-610标准里面把焊点的验收等级分成了三类可实际产线上遇到的问题远比标准图示复杂。常见的缺陷就够写一大页虚焊、桥连、少锡、多锡、立碑、偏移、锡珠、气孔、拉尖、裂纹。这些缺陷有的肉眼一眼就能看到比如桥连两脚之间搭了锡桥短路风险极高有的却藏得很深比如枕头效应Head-in-Pillow表面看圆润饱满实际上焊料和元件引脚之间根本没有形成金属间化合物电性能完全不通。更要命的是焊点失效往往不是单点故障而是隐性的可靠性问题。虚焊的板子在功能测试时可能通过但用到现场后热胀冷缩几次就彻底断路了。所以焊点检测的目的不只是拦下当下的不良品更是为了卡住产品的长期可靠性。这也是为什么SMT产线对焊点检测的要求从来不敢放松的原因。1.2 传统AOI算法的天花板在哪里传统AOI自动光学检测在国内SMT产线早就普及了它的逻辑核心是图像比对和特征提取。具体来说就是先对标准板建立模板再用灰阶对比、边缘检测、几何尺寸测量这些手段去判断焊点是否符合预设规则。这套路好理解但它的瓶颈也特别明显。第一阈值参数都是人工调的。产线工程师需要针对不同板卡、不同元件、不同焊盘形状去调亮度、对比度、公差范围一套参数调完换另一个料号又得重来。而且参数的设置很大程度上依赖个人经验老师傅和新人调出来的效果可能差一大截。第二规则检测对形态灵活的缺陷无能为力。传统AOI擅长识别“标准的偏移”或者“明显的缺件”但遇到形态千变万化的虚焊、爬锡不良、润湿角异常这些缺陷时输入光路稍微复杂一点相机成像角度一变误报就哗哗地来。现场最典型的场景是同样一块板AOI报了100个疑似点人工复判下来真正有缺陷的不到20个剩下80个都是误报。复判工位堆积成山产线节拍被拖慢这时候工程师往往只能调大阈值结果缺陷又漏出去了。1.3 漏检与误报的跷跷板效应传统视觉检测有个绕不过去的死结——漏检率和误报率是跷跷板关系。阈值定得严格误报飙升复判工作量爆炸阈值定得宽松漏检增加不良品流到后段到了功能测试或者客户手里才发现那代价就完全不可控了。我们项目启动前做过一次摸底当时产线的直通率是99.2%左右听起来已经不低了但换算下来每千块板有8块需要返修或报废。按产线日均产能来算每个月因为焊点缺陷造成的损失相当可观。更让人头疼的是人工复判工位的压力AOI误报率长期在20%到30%徘徊这意味着每天有大量良品被当成可疑品拉去复判虽然最终大部分都能放行但人力成本和流转时间就在这个环节白白消耗掉了。我当时和团队说得很直接传统AOI这套路已经走到头了想要同时压低漏检和误报只能换检测的逻辑内核让系统自己去学什么是“好焊点”、什么是“坏焊点”这就是AI视觉检测切入的核心逻辑。2. AI视觉检测方案怎么选框架、相机、光源的取舍2.1 先想清楚检测任务定义是分类、检测还是分割AI视觉检测第一步不是急着找模型而是先把任务定义清楚。焊点检测在实际场景里可以拆成三种问题形态。第一种是图像分类适合单焊点独立成像的场景。比如AOI设备本身已经通过编程把每个焊点裁剪成了单独的小图那模型只需要判断这张图是正常还是缺陷即可。结构简单准确率高部署也最省事。第二种是目标检测适合在PCB整图或者局部图中直接框出缺陷位置。产线上改造成本低不用依赖原本AOI的坐标映射关系模型自己就能输出缺陷的坐标框和类别。但整图检测对模型算力要求更高小缺陷在整图中占比小容易被漏掉一般需要做切片推理。第三种是语义分割能精确到像素级判断焊点的边缘和轮廓。比如要准确评估爬锡高度、润湿角这些精细指标时分割模型更有优势。但缺点是标注成本高、推理速度慢产线节拍吃紧的时候不太好落地。我们当时的判断是产线上已有的AOI设备提供焊点坐标映射按坐标裁剪单焊点图像用分类模型跑一轮初筛是性价比最高的路径。但考虑到后续要平滑升级我们架构上做了扩展同一套视觉服务里同时预留了检测接口方便后面做整板漏扫。2.2 硬件的关键选择相机与光源决定数据的上限模型再强也救不了糊掉的图像这句话在项目里被反复验证过。焊点检测对图像质量的要求非常苛刻因为很多缺陷的差异是细微的灰度变化和三维形态特征。相机方面我们最终选的是五百万像素的面阵工业相机搭配望远镜头。为什么不用更高像素因为单焊点裁剪图的尺寸有限五百万像素在配合适当光学放大倍数的情况下已经能覆盖0201这种小封装元件的焊点细节。再高像素意味着更大的数据量和更慢的传输速度对产线节拍反而不利。如果是检BGA焊球或者QFN底部焊点那得考虑X-Ray或者3D结构光但那是另一个量级的话题。光源是更关键的变量。焊点表面是金属反光特性复杂单一角度光照很难拍出特征稳定的图像。我们测试过同轴光、环形光、穹顶光、低角度条纹光等多种方案最终产线定的是多通道组合照明——同轴光负责消除阴影干扰低角度环形光负责突出焊点边缘和润湿形态再通过频闪控制器切换通道分别采集不同光照下的图像序列。这个做法让后端的AI模型能同时吃到“平坦信息”和“轮廓信息”对虚焊、多锡这类缺陷的识别率提升特别明显。2.3 软件框架与推理引擎的选型笔记任务定了、图像源稳定了接下来才是算法框架的选择。我们对比了三条路线一是全栈自研基于PyTorch训练再通过TensorRT或者ONNX Runtime部署。灵活性最高什么问题都能自己控制但对团队技术要求最全工期也最长。二是购买商业机器视觉软件比如VisionMaster、Halcon这类它们也带深度学习模块。上手快技术支持完善但费用高而且深度学习部分的定制化空间比较窄。三是开源框架为主、少量自研为辅训练用PyTorch部署用TensorRT加速再针对产线需求做一些数据预处理和后处理优化。我们最终走的是这条路。理由很简单团队有Python和C的底子核心缺陷库需要自己积累而且后续要扩展到产线多个工位、多产品型号开源的迭代效率明显更高。模型架构我们用的是轻量化分类网络加注意力机制的组合具体主干选了EfficientNet-B0量化版输入分辨率压缩到256x256。单张推理时间在NVIDIA Jetson Orin上能做到10毫秒以内完全满足产线节拍需求。提示工业场景选模型不能只看公开数据集上的精度。要优先考虑推理速度、显存占用、算子兼容性这三个落地硬指标。跑不动的高精度模型只是一张漂亮的成绩单。3. 数据是项目的根基采集、标注、增强的实战细节3.1 数据采集不能“有一张算一张”要有规划也要有筛选AI视觉检测项目里有一句老生常谈模型的上限由数据决定。但很多人忽略的是数据不是越多越好而是越有代表性越好。我们最初拿了一批生产现场的历史图片直接扔给团队做标注结果训练出来的模型上线就被产线老师傅diss了——很多上报的缺陷其实是误判因为历史图片里混入了大量旧AOI参数设置不当造成的伪缺陷图。后来我们把采集流程重新梳理了一遍覆盖多个料号和产线设备避免模型过拟合到单一设备的光照特征。对每张缺陷图做了二次“人工陪审”让质检工程师确认这是真缺陷还是疑似缺陷。留出专门的连续批次图按时间顺序采集用于验证模型的稳定性避免模型只认识某段时间内的工艺状态。另一点容易被忽视的是要刻意采集“边界样本”。比如刚好要跨过验收标准的锡量、刚刚连上但电阻异常的桥连边缘形态。这些样本在常规产线里出现频率低但恰恰是对模型稳健性考验最大的部分。我们专门和产线沟通在试产阶段人为制造了一批工艺偏移样本让焊膏印刷厚度、回流焊温度曲线做阶梯式变化把缺陷的“渐变形态”拍下来这套数据的价值远高于常规批量采集。3.2 标注标准是项目里的“宪法”一定要白纸黑字定下来标注质量直接影响模型性能而标注质量的核心是标准统一。我们开了三次专项会拉上工艺工程师、质检工程师、算法工程师三方坐在一起定标注规范。重点解决三个问题缺陷的类别定义是否覆盖产线实际状况例如虚焊分成完全虚焊和疑似虚焊两级多锡细分为少锡、多锡、锡珠三类。裁图边界如何确定焊点区域裁得太大背景干扰太多裁得太小关键特征会被截掉。最后统一原则是焊盘全额加两侧部分走线纳入图像。多个缺陷同时出现时如何标注例如既有桥连又有锡珠规范要求标注主要缺陷类别但要在备注字段写清次要缺陷。标注工具我们用的是X-AnyLabeling支持自定义标签和多人协同。过程管理上做了二级审核制一批图先由初级标注员标注再由高级标注员抽检30%不一致的部分打回重标同时统计标注员间的差异度作为质量指标。这套流程跑下来标注一致性能稳定在96%以上。3.3 数据增强和数据不平衡问题要用心处理焊点缺陷天然存在严重的类别不平衡问题——正常样本占比超过95%各类缺陷占比差异极大。比如少锡和桥连相对常见而枕头效应可能一整周都碰不到几个。直接拿来训练模型大概率会对稀有缺陷“视而不见”。我们的处理手段分三层第一层是传统数据增强随机旋转、水平翻转、亮度扰动、对比度扰动、高斯噪声。这对提升模型对光照变化的鲁棒性很有帮助。第二层是针对性增强对稀有缺陷样本做mixup、cutout以及形态学变换模拟。这里有个细节——量不要过猛过度增强会让模型学到扭曲的伪特征反而影响真实场景的泛化。第三层是损失函数层面的处理采用带分类权重的Focal Loss让模型训练时主动聚焦难分类的稀有缺陷。这样比单纯靠过采样更稳定。整个数据集的最终构成大约是正常样6万张、各类缺陷样1.2万张训练集、验证集、测试集按7:2:1划分。划分策略是按照批次划分而不是随机划分避免同一块板上不同焊点图片出现在训练集和测试集之间产生数据泄漏导致指标虚高。4. 模型训练与产线部署从实验到量产的跨越4.1 训练流程和关键参数的调整心得训练这块我们踩过的最大一个坑是抱着“训练精度高就等于好用”的思路走了好几天弯路。后来才想明白焊点检测的评估必须双指标并行漏检率要看误报率也要看单看哪个都会出事。训练的具体配置供参考优化器用AdamW初始学习率1e-3配合Cosine退火调度Batch Size设64轮次大概是60轮。EfficientNet-B0的输入层用256x256预处理除了常规标准化之外还叠加了一组从采集环节学到的光照归一化参数——这是针对我们自己的多通道光源定制的效果比直接用ImageNet的均值方差好不少。关键的是评估策略。我们设置了两个硬性指标漏检率假阴性率要小于等于0.01%即一万个真实缺陷里最多漏一个。误报率假阳性率要小于等于1%即一百个正常焊点里最多误报一个。这两个指标对着看才有意义。只压漏检率模型可以靠“见谁都报缺陷”实现但误报率会炸掉只压误报率模型可以靠“见谁都放过”糊弄你但产线就遭殃了。训练过程中我们每训练完一个epoch就在验证集上计算这两个指标并画成曲线对比。模型在中后期经常出现漏检率还没达标、误报率已经反弹的情况这时候不是简单加训就能解决的。我们的处理策略是针对误报的集中形态做数据筛查看是否某种特定背景纹理被模型误当成缺陷特征然后用负样本挖掘的方式补充难例让模型重新平衡。4.2 部署架构边缘算力与节拍的平衡模型训练完只是第一步真正的考验在产线部署。SMT产线的检测工位一般是要嵌入到流水线节拍里的节拍时间可能只有几十秒加上图像采集、通信、PLC交互整个视觉检测的耗时必须压到秒级以内才能真正跑进产线。我们的部署架构是NVIDIA Jetson Orin NX 16G版本跑TensorRT加速后的INT8量化模型。之所以选这个配置是看中和原有工控机相比它的体积、功耗和算力之间更平衡而且支持多路视频流并行推理。推理管线设计成了三级流水线图像采集与预处理占一个线程模型推理占一个线程结果后处理与PLC通信占一个线程。这样通过流水线掩蔽延迟单板焊点检测全流程耗时实测稳定在1.8秒左右其中模型推理部分大约占0.9秒。产线节拍当时是42秒一块板余量非常充足。4.3 与产线系统集成的细节别小看PLC通信和MES对接算法部署完成后还要打通产线自动化系统。我们这里走了两个方向一是直接接入原AOI设备已有的结果输出链二是新增一个判级工位对AOI复判结果做二次确认。PLC通信方面用了Modbus TCP协议视觉系统检测完成后把结果寄存器写回PLC由PLC控制分拣机构。这里必须处理几个异常场景视觉系统离线、超时未响应、检测结果缓存溢出、通信重连失败。如果这些场景不处理好产线会直接停线工程师半夜被电话叫醒的体验相信在现场待过的人都懂。MES对接上我们设计了一份简单的JSON结果上报包含了料号、批次、序列号、检测结果、缺陷类别、缺陷坐标。MES收到后归档到质量追溯库。这样如果后续客户投诉某个批次出现焊点不良定位到具体板卡和焊点位置只需要几秒钟再也不用靠人工翻照片翻到怀疑人生了。5. 直通率做到99.99%数据背后到底优化了什么5.1 先搭建评估体系再谈优化直通率是结果指标但不把过程指标看明白就盲目优化很容易白忙活。我们在上线前先搭了一套评估体系拆成三个过程指标检出真实缺陷数、误报缺陷数、漏检缺陷数。上线首日的数据干净利落地说明了问题。AI模型上线后检出真实缺陷数从原AOI的每天815个提升到了842个误报数从每天2020个骤降到156个降幅超过92%。漏检的情况在首周只出现了2例均是超小体积锡珠在二值化时被判为噪声干扰的情况属于覆盖面盲区。这个过程指标拆解特别重要。如果只盯着直通率看到它从99.2%涨到99.85%容易觉得“够了”但真正的问题往往藏在这些“足够了”的错觉底下。我们给自己定的任务是继续优化目标直接锚定99.99%。5.2 误报治理从模型层面到产线流程层面的双重收敛误报是影响直通率最大的拦路虎。AI模型的误报跟传统AOI误报的原因不一样它不是参数阈值问题而是模型把某些正常形态误判成了缺陷形态。我们分析了上线后60多个高频率误报样本发现最集中的三类误报来自焊盘边缘的丝印字符与焊点重叠模型误认为是锡珠。相邻焊点的反光叠影恰好形成类似桥连的形态。板面残胶或指纹造成的纹理异常被模型误判为拉尖或异物。前两类问题通过加入更多正常样本和针对性负样本补充模型很快学到了区分能力。第三类问题不好单纯靠加样本解决因为指纹和残胶形态千奇百怪模型永远学不完。最后我们在产线流程里加了防呆措施——上板工位增加静电手套佩戴检查和来料清洁抽检。这种“软硬结合”的思路比纯粹烧训练资源要聪明得多。具体到模型手段这个阶段我们冻结了主干层只微调分类头用新增的1.2万张负样本做了四轮增量训练。每轮增量训练后都在验证集上重新测试确保新样本的引入不会洗掉原有能力。这里要用到增量学习的经验不能把新旧数据混在一起从头开始训否则产线工艺稍微调整旧知识很容易被冲掉。5.3 漏检治理针对“最会躲”的缺陷做专项攻坚漏检比误报更危险因为你不知道它什么时候就漏掉了一个真缺陷。上线首周的2例漏检让我们特别警觉因为一旦漏检成为习惯AI检测相对于传统AOI的核心优势就荡然无存了。我们针对漏检样本做了回放分析。结果显示漏检清一色是小体积锡珠缺陷位置集中在高密度引脚区域。原因是推理时为了控制耗时我们把单焊点裁图裁到了合适大小但高密度引脚区域相邻焊点离得太近裁图边界吃掉了部分锡珠形态。解决方法是引入两阶段检测策略第一阶段用高灵敏度分类模型扫一遍所有焊点输出可疑点集合第二阶段对可疑点集合做单焊点放大分析用高分辨率模型精确判断。第一阶段的召回率调到99.99%级别宁可多报不可漏报第二阶段则严控误报率细抠每一个可疑点。这个方案上线后效果很明显后7天的连续统计里漏检数直接降到了0。每天新增的可疑点复判工作量只有原来的三分之一左右因为第二阶段把误差消掉了大半。5.4 持续迭代产线工艺变了模型也要跟着变很多项目上线后一两个月就进入“吃老本”状态但我们的经验是AI视觉检测是一个持续迭代的活。SMT产线的工艺窗口不是恒定的钢网张数的变化、锡膏品牌换批次、回流焊升温区老化都会让焊点图像特征发生漂移。如果模型不跟着迭代过两三个月精度必然会掉。我们的做法是建立监控告警机制每天自动统计误报率、漏检率的环比变化一旦出现连续三天某指标恶化超过2个百分点就触发数据回流和增量训练流程。这个机制在项目交付后一直稳定运行着也帮我们提前预警了一次锡膏批次更换导致的少锡缺陷图像特征偏移问题。6. 复盘这个项目里最容易翻车的几个环节6.1 产品质量评审过关但产线实际节拍跑不动模型在实验室里的推理速度是面子工程一上产线各种因素叠加速度就现出原形。我们第一版TensorRT量化模型在开发板上跑得飞快但实际部署到产线后因为图像采集卡驱动占用CPU资源、多路视频流并发调度不当第一轮实测延时直接超了预算50%。后来逐个排查发现是图像采集线程用了同步等待模式而推理线程又用了同步推理两个同步加起来延迟直接翻倍。改成生产消费模式的异步流水线之后延时才压下来。6.2 标注标准不统一的锅最终都是模型精度来背前面强调过标注标准这里再补一个让我记忆深刻的细节。初期有两位标注员对虚焊的理解不一致一位把轻微的润湿不足标为虚焊另一位认为只要元件本体不翘起就不算虚焊。这个偏差导致第一批训练数据里虚焊标签严重不干净模型怎么调虚焊召回率都上不到90%。后来把标乱的数据全部筛查出来重标模型指标直接拉升了5个百分点。这个教训说明数据质量管控是项目里性价比最高的投资。宁可多花一周时间把标注标准彻底磨清楚也不要后期花三周去洗数据。6.3 别把直通率提升全记在AI功劳簿上99.99%的直通率不是单靠模型一个变量实现的。项目执行期间产线配合我们优化了焊膏印刷参数更换了钢网清洗频率复判工位的操作规范也做了调整。这些工艺改进对直通率有一部分贡献只是没有AI检测那么直观。所以在项目汇报里我们把AI模型的贡献和工艺改善的贡献分开量化避免被贴上“都是AI的功劳”标签后陷入不被信任的困境。个人层面我最大的体会是AI视觉检测的成功不只是算法工程师的单打独斗而是工艺、质检、软件、设备多角色拧成一股绳才做出来的。模型能力能撑多高是上限但我见到的更多项目输在流程机制上——数据没规划、标准没对齐、软件和PLC联调没排期硬生生把一手好牌打成了烂局。现在这套系统已经在产线上稳定跑了很长时间直通率始终贴在99.99%这个水平线上。如果你们也在准备上AI视觉检测我的建议很简单先别急着买设备、选框架先把产线上的历史缺陷数据盘清楚把要解决的问题用漏检率、误报率、节拍、复判工作量这些指标定准。指标定准了后面每一步才走得踏实。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑