
做工业视觉这些年我越发觉得AOI这个词被说滥了。很多工厂管理者一听AOI就以为是台机器盯着产品坏品自动跳出来再一听AI AOI又觉得只要接个带神经网络的相机所有漏检都能清零。这两种理解都错得离谱。AOI全称自动光学检测本质是把人眼检测变成机器检测从PCB、SMT到面板、电池、汽车零部件到处都在用AI AOI则不是换相机而是在传统规则算法之上叠加一套能自己学习缺陷特征的系统让检测从“按固定规则打分”变成“从数据里总结规律”。这篇文章我会从传统AOI的规则算法讲起拆解为什么它在复杂场景下越来越吃力然后聊AI AOI的完整落地链路——成像、数据、训练、部署、维护——顺便分享这几年在产线上踩过的坑。想评估AI检测升级或者已经在调AI AOI的工程师应该能从这里找到几条能直接用的经验。1. 传统AOI规则算法解决不了的难题1.1 传统AOI的工作逻辑传统AOI并不是一台“智能机器”它本质是一套光电测量系统。光源、镜头、相机负责把产品拍成高对比度图像后面的算法则负责做判定。判定逻辑通常是一条线性链图像预处理、图像分割、特征提取、规则判断。预处理阶段常用灰度化、滤波、对比度拉伸目的是让缺陷和背景分开。分割阶段通过阈值分割把图像变成黑白二值图缺陷作为连通区域被提取出来。然后计算连通区域的面积、周长、长宽比、圆度、灰度均值、边缘梯度最后跟预设公差做比对。比如检测PCB焊点少锡可以通过低角度光让焊点高度在图像上表现为灰度差异低于阈值就判少锡检测异物往往是识别某个尺寸超过设定值的连通区域。这套逻辑在背景干净、缺陷形态固定的场景里很管用。但它的核心假设是“缺陷一定在灰度或形状上跟背景可区分”一旦这个假设不成立后面做得再多也是空中楼阁。1.2 规则判定的三道坎第一道坎是缺陷形态不可穷举。划痕有长有短、有深有浅、有直线有弯折压伤可能是一个点也可能是一片异物可能是纤维、金属屑、油污。传统算法只能覆盖你预先定义过的形态遇到新缺陷就得重新采集特征、重新调参。产线上一旦出现一种从没调过的缺陷它就等于盲人。第二道坎是背景纹理复杂。高密度PCB基板、太阳能电池的绒面、金属拉丝表面的各种纹理在某个光照角度下背景的灰度和缺陷的灰度分布会大面积重叠。你找不到一个阈值能同时把背景压下去、把缺陷留下来。强行设置只能得到“按了葫芦起了瓢”的结果。第三道坎是误报与漏检的跷跷板。为了不漏掉缺陷只能把判定条件放宽结果是正常产品大量被误杀过检率飙升为了降低误杀又把条件收紧结果缺陷悄悄滑过去。产线直通率被这种矛盾折腾得很难看最终只能靠大量人工复判来兜底。1.3 参数调出来的系统为什么脆弱传统AOI的参数多到让人头疼光源亮度、曝光时间、阈值、滤波窗口、面积公差、灰度容忍度、形态学算子。如果是一个多缺陷检测项目参数之间还会互相干扰。你以为调好了A类缺陷的阈值B类缺陷误报又起来了。我印象很深的一次是在某金属工件检测项目里。设备运行了两个月突然某天开始疯狂误报明明看起来和之前差不多算法就是认为工件上全是“缺陷”。排查到最后发现是光源老化导致图像整体灰度漂移原本定在128的阈值放到今天已经完全失效。重新标定光源后误报才下去。这种对光照、对焦、材料批次变化极其敏感的问题是规则算法的通病。因为它把所有判断都寄托在一两个显式特征上特征是稳定的判定才稳定特征一变整个系统就跟着崩。这不是调试不够努力而是方法论的天花板。2. AI AOI深度学习改变了检测的哪个环节2.1 换思路从“人定规则”到“数据总结规律”深度学习改变的不是“看得更清楚”而是“怎么判断”。传统算法是人先定义规则再让机器执行规则AI AOI是你给机器看几千上万张图让它自己总结出“什么样的区域像缺陷”。用生活的话说传统算法是让老师傅根据经验写一本检查手册遇到没写过的现象就翻不到答案AI是让新员工直接跟着老师傅看一个月的样品然后他自然知道哪一种影子叫划痕、哪一种叫脏污。他总结出来的规律不一定能用语言描述但面对新样品时往往比翻手册更稳。这个过程中卷积神经网络学习到了多层特征。底层学到的是边缘、纹理、颜色梯度高层学到的是局部形状、空间关系、上下文信息。所以它不是拿单一阈值做一刀切而是综合大量特征做概率判断。这就是为什么它在复杂背景下通常比规则算法更鲁棒。2.2 四种建模路线怎么选实际项目里AI AOI主要走四条技术路线建模路线输出内容适用场景典型局限图像分类整张图是“OK/NG”判断简单脏污、方向单一缺陷无法定位缺陷位置无法联动剔除目标检测缺陷的矩形框和类别缺件、偏移、错料、异物对细长划痕、边缘贴合缺陷不够精细分割像素级缺陷区域划痕、针孔、微小异物标注成本高数据量要求大异常检测偏离正常分布的评分缺陷很少、新缺陷未知误报率高需要工艺监控配合产线上用得最多的组合是“目标检测分割”。目标检测负责快速找位置和类别分割负责对细长缺陷做精细轮廓判断。分类虽然最简单但产线上很少单独用因为AOI不仅要知道“有没有问题”还要知道“问题在哪”否则剔除机构不知道怎么动作。异常检测是很多团队的进阶方向。它的优势是可以不依赖大量缺陷样本适合抓取“从来没见过”的新缺陷。但代价是误报率偏高更适合作为传统逻辑之外的预警通道而不是唯一的判定手段。2.3 AI AOI不是简单的模型替换很多团队以为AI AOI就是把识别模块从“规则算法”换成“神经网络模型”其他一切照旧。这是最大的误解。传统AOI和AI AOI在数据流、调试流程、维护方式上完全不同。传统AOI的核心资产是参数表AI AOI的核心资产是标注数据和模型版本。传统算法上线后只要不打光、产品不变基本可以一直跑AI模型则需要不断用新数据去验证、更新否则随着产线状态漂移性能会慢慢退化。也就是说AI AOI上线不是项目结束而是项目开始。你需要一套数据采集、标注、训练、评估、发布、监控的闭环机制。没有这套闭环AI AOI很快会变成一个“曾经好用”的摆设。3. 从AOI到AI AOI的落地实操完整实施链路3.1 成像与硬件改造先解决看得清成像系统是整个AI AOI的地基。虽然深度学习对光照变化的容忍度更高但“拍都拍不到”的信息算法再强也找不出来。先说相机分辨率。检测精度决定传感器要求计算公式很简单水平方向像素数 视野宽度 / 最小检测特征尺寸。为了保证稳定我一般会留2到3倍余量。比如视野是100mm要检0.05mm的微伤最低需要2000像素实际我会选5000像素以上的相机让特征在图像里至少占3到5个像素而不是刚好一个点。再说光源。很多传统AOI项目里光源是针对某个缺陷专门调的。升级AI AOI时不需要照搬原来的光路反而建议重新做一次光学验证。最有效的做法是采用多角度、多色光组合让不同缺陷在不同光区呈现不同形态。如果一个光区能把异物打亮另一个光区能把划痕打出来模型学起来会轻松很多。计算平台也要提前规划。产线节拍如果是2秒一件一件拍4张图那么单张图推理预算是500毫秒以内。用独立GPU推理一般能跑到这个水平如果用CPU做推理则要考虑模型裁剪或量化加速。千万不能等模型训练完才发现部署环境跑不动那就白干了。3.2 数据收集与标注决定模型上限数据质量是AI AOI的最高优先级。算法工程师花三个月调模型不如产线多收集两周长尾缺陷样本有效。关于样本量我给出的经验是常见缺陷每类至少300到500个实例正常品至少1000张。如果做分割模型样本量还要再往上走。不同缺陷差异很大缺陷类型最少实例数常见误区缺件、元件偏移100到200只拍一个固定位置忽略不同位置的光影差异划痕300到1000只覆盖横向划痕漏掉竖向和斜向脏污、异物300到500没有覆盖不同反光程度的材质微小空洞500以上直接整图训练没有用ROI裁剪放大标注规则越早标准化越好。我建议项目一开始就召集工艺、品质和算法三拨人共同定义“什么算缺陷”“边界怎么画”。划痕是画线框还是画区域一块压伤面积超过多少算缺陷异物按颜色区分还是按材质区分这些问题不定清楚标注员和后期的模型评估都会陷入无休止的争论。数据增广是我建议要做的但必须有度。旋转、镜像、亮度扰动、随机裁剪是安全的增广直接把缺陷形状拉伸变形或者人为叠加夸张的噪声反而会让模型学到不真实的特征实际产线一跑就露馅。增广只能模拟真实物理变化不能凭空创造缺陷形态。3.3 训练验证与阈值调优训练数据的划分要格外小心。千万不能按图片随机切分训练集和验证集因为同一批次的产品图像高度相似模型在这个批次上已经“背”过了。正确做法是按产品批次或按时间段划分用前三周的批次训练用后一周的批次验证。这样才能真实反映模型面对新样品的泛化能力。评价指标方面学术界常用准确率但产线上我更关注两个指标漏检率和误杀率。漏检率是被模型放过的缺陷占实际缺陷总数的比例误杀率是被模型误判成缺陷的正常品占正常品总数的比例。这两个指标与模型置信度阈值直接相关阈值调到0.5模型比较敏感漏检率低但正常品容易被误杀阈值调到0.8模型只报非常确定的缺陷误杀率下降但漏检率会升高。实际调优时我会画一条阈值曲线让工艺人员一起选点。如果行业对漏检是零容忍那就选低压阈值然后靠二次判定压误杀如果误杀对产能影响更大就选高压阈值再靠人工复判兜住风险。训练完成不是直接上线。我习惯先做一轮离线的历史图像回放把模型输出的结果和当年的复判记录做比对确认性能达到预期才进入现场部署环节。3.4 部署到产线的四个关键步骤部署阶段最大的风险不是算法而是工程。第一步是影子运行。模型不直接参与剔除只在后台对每一帧图像做推理结果和现场人工复判同时记录。运行一到两周积累数百上千条不一致样本再做一次人工评估确认模型是真的能打。第二步是旁路报警。模型开始输出报警但不控制机构。产线员工看到报警后先人工确认是不是真缺陷把结果反馈给系统。这一步能继续积累真实的确认数据。第三步是自动判定。模型输出直接联动剔除机构但保留人工复判工位。同时设置安全网如果连续多片高置信度报NG或者推理模块异常自动切换到保守模式或者停机报警。第四步是上线后监控。模型上线后不要撒手不管至少每周统计一次漏检率、误杀率、模型报警占比。一旦指标异常就要回溯原因是光照漂移、产品换型还是模型没有见过的缺陷。4. 现场问题排查与优化实录4.1 常见问题速查表AI AOI在产线上踩的坑我基本都见过一轮。整理成速查表方便排查时对照现象可能原因排查步骤解决方向漏检缺陷缺陷样本不足、光照变化、标注边界不准统计错误样本对比灰度分布回看标注补充长尾样本重新校准光源优化标注误杀率高置信度阈值过低、背景纹理被误判查看误报样本的特征聚类调阈值、增加ROI屏蔽、加二次判定单图推理慢模型过大、推理环境未优化测量单帧耗时分布模型裁剪、量化、换更高算力平台运行一段时间后性能下降光源老化、支架松动、材料批次变化检查图像亮度均值比对设计值定期图像质量监控触发重训模型上线即崩训练集和产线图像差异大对比训练样本与现场样本的统计分布重新采集现场数据训练这些问题的共性在于它们很少是单一模型问题。大部分是因为“图像变了而模型不知道”。所以我的排查顺序永远是先查成像再查数据最后才查模型。4.2 结合具体项目的处理过程说一个典型的现场案例。某项目做的是小型电子元件的检测要求识别表面划痕、脏污和引脚偏移。项目刚上线时复判准确率能达到95%但跑了三周后误杀率突然从3%飙升到15%。我们第一步没碰模型而是先看现场图像。拉出一组误报样本发现所有误报都集中在图像左上角正常品在那个位置的纹理偏暗容易形成类似脏污的灰度梯度。再查成像参数发现光源亮度比初始标定时低了大约12%导致图像整体变暗。解决方法是两步走一是重新标定光源并把亮度监控做成自动报警——每天开机后先用标准件拍一张图灰度均值超出公差带就直接提示二是在模型入口加一个图像归一化层让输入模型前把亮度拉回标准范围。改完之后误杀率回到了3%以内。这个案例让我反思了很久。我们花了很多时间优化模型结构实际最后金子却花在光源和归一化上。AI AOI最值钱的地方是把图像信息吃透但图像如果本身在变化AI再聪明也扛不住。4.3 避免深坑增广、重训、模型漂移增广不是越多越好这也是很多人踩过的坑。某些团队为了凑样本对缺陷图做了大量对比度拉高、HSV扰动结果模型在训练集上很好到产线上一遇到真实光线就误判。原因很简单合成出来的纹理特征跟真实缺陷纹理不一致模型学到的其实是“增广特效”而不是“缺陷本质”。重训是AI AOI绕不开的事但重训本身非常容易失控。如果只拿最近一周的数据去微调模型可能会遗忘以前见过的缺陷形态。我建议每次重训都要保留一个长期历史测试集里面包含过去所有版本的典型样本。重训后的模型必须在这个测试集上不退化才允许发布。同时做好模型版本管理旧模型要能一键回滚万一新模型有隐藏问题不至于堵住整个产线。模型漂移是更隐蔽的问题。当产品换型、材料批次切换、环境湿度变化时缺陷的成像特征也会发生缓慢变化。如果不做监控系统可能在不知不觉中从98分降到85分而你毫无察觉。最简单的做法是每天记录图像灰度均值、缺陷检出率、误杀率这些指标按周做趋势分析。指标一旦连续多天异常就要触发一次人工复评。5. 从“检出”到“工艺闭环”AI AOI的进阶玩法5.1 检测数据的二次利用AI AOI如果只用来分拣良品和不良品其实是巨大的浪费。因为模型输出的不只是“OK/NG”还有缺陷的位置、类别、置信度、面积、长度、方向。这些量化信息是可以反哺工艺的。比如在某个贴装产线上我们发现AI AOI输出的元件偏移量不是随机分布而是系统性偏向同一个方向。顺着这个特征去查发现是贴片机的某根丝杆间隙变大导致每次贴装位置出现规律性偏移。如果只是传统AOI只能知道“这块板有偏移”不可能知道偏移量在统计上呈什么分布更不可能自动追溯到设备部件。所以我会建议项目团队在规划AI AOI时就预留数据导出接口。缺陷图、坐标、类别、时间戳、产线编号、工艺参数这些信息统一进数据库。表面上是检测数据实际上是一张“制程健康度地图”。5.2 从零件级检测走向工艺级分析工艺级分析的核心是相关性。当你积累了足够多的检测数据后就可以开始看缺陷与工艺参数之间的关系。比如检测到锡膏印刷偏位频次上升同时回流焊温度曲线最近两周做了调整两者是否相关再比如某台设备的缺陷率总比其他设备高差异是不是来自吸嘴更换频率这些分析不需要很复杂的数据科学方法把检测结果按时间、设备、班次聚合一下画个趋势图往往就能看出端倪。到这里AI AOI变成了一个“传感器平台”而不只是一台分拣设备。这也是AI AOI相比传统AOI最不一样的地方传统AOI的逻辑是为“判级”设计的它的规则输出很简单AI AOI的模型输出是丰富的特征向量天然适合做统计分析。不过我要提醒一句工艺闭环的前提是数据质量。如果标注本身是乱的缺陷类别定义模棱两可后面所有分析都会失真。先在检测端把数据吃透再谈工艺分析顺序不能反。5.3 团队怎么搭项目怎么推AI AOI项目看起来是算法项目实际上是一个跨专业协作项目。我至少见过三种常见失败结构第一种只让算法工程师背锅。他调了三个月模型产线说误杀太多算法工程师拼命调阈值最后发现是光源从来就没有标定过。没有光学和工艺参与项目必然卡在成像问题上。第二种只让AOI供应商负责。供应商把模型训练得不错但现场操作员不知道怎么换型、怎么处理新的缺陷类型一有异常就停线。AI AOI不是买来就能跑的设备它需要使用方有一定训练和评估能力。第三种项目推动靠“老板拍脑袋”。老板听说AI AOI厉害自上而下要求上但现场没有明确缺陷定义和质量标准。数据标注各说各话模型训练看了笑话一样的标注自然输出笑话一样的结果。我比较推荐的推进方式是从一个高价值、范围小的场景切入。先选一类缺陷跑通“采集—标注—训练—影子运行—上线—监控”的完整闭环让产线看到真实的漏检和误杀数字。有了第一个成功案例再复制到其他缺陷类型。这样风险小团队也能逐步积累经验。6. 实践经验与个人建议6.1 不要神话AI也不要低估规则我做过的项目中效果最好的AI AOI往往是“AI加规则”的组合而不是纯AI。因为AI强在“发现问题”规则强在“精确测量”。举例来说AI先在复杂的背景纹理里框出疑似划痕的区域然后传统算法在这个局部区域里精确测量划痕的宽度、长度、深度相关特征。AI负责找规则负责量两者配合误报率可以压得很低。反过来也不要因为AI效果好就把传统AOI整套扔掉。传统算法在稳定性、可解释性、调试门槛上依然有优势。产线工程师可以轻松看懂传统算法的判定逻辑但很难解释为什么一个神经网络给出这个分数。所以最稳妥的做法是让AI做“模糊判断”规则做“精确裁决”。6.2 上AI AOI前先审清三件事如果一家工厂问我要不要上AI AOI我会先问三个问题第一成像系统是否稳定光源有没有标定流程相机有没有固定夹具如果连图像灰度都每天漂移AI模型训练得再好也会被现场图像带偏。第二缺陷定义是否清楚你们到底想抓什么缺陷边界怎么画哪些类型可以算同一种没有标准化的缺陷定义就没有标准化的数据自然没有标准化的模型。第三有没有数据回流通道产线图像能不能保存复判结果能不能回写模型更新后由谁审核发布如果这些机制都没有AI AOI上线三个月后大概率会慢慢退化。这三个问题里只要有一个是否定的我建议先把基础打好再上AI。AI AOI不是用来弥补基础问题的灵药。6.3 我最想分享的落地技巧最后分享一个我在多个项目里屡试不爽的小技巧影子运行不要只做两周最好做到四周以上。产线的缺陷种类不是均匀出现的有些长尾缺陷可能两三周才出现一次。如果影子运行时间太短模型看到的现场样本太单调上线后一旦遇到没见过的缺陷形态照样抓瞎。影子运行期间我还会额外做一件事——让模型对每一帧图像的输出都留档包括置信度。即使开了自动判定这些历史输出也要保存。之后再做模型迭代时就可以拿这些存档当测试集不用再去产线重新采集。这套做法看起来简单但能省掉大量返工时间。AI AOI这条路我已经走了不少弯路也踩过不少坑。它不是一个可以一蹴而就的升级而是一套需要持续投入数据、流程和跨团队协作的系统工程。只要把地基打牢它带来的回报会远超一台传统AOI设备本身。