ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

工业AI缺陷检测正确率超99.9%:从成像、数据到部署的工程实践

工业AI缺陷检测正确率超99.9%:从成像、数据到部署的工程实践 工业产线上做缺陷检测最怕的不是检出率不够高而是高检出率背后藏着一堆误报最后产线工人直接把系统关了——这种事我见过太多次。标题里说缺陷检测正确率超99.9%这个数字在实验室里跑出来不难难的是在真实产线上、在光照漂移、震动、粉尘、换批次料的情况下还能稳住。这篇内容我想聊的不是AI多厉害而是一套工业AI缺陷检测系统从选型、打光、数据、模型到部署上线到底哪些环节决定了那个99.9%是真数字还是PPT数字。适合正在做机器视觉项目、准备上缺陷检测系统、或者已经上线但被误报率折磨的工程师和项目负责人看。1. 先搞清楚99.9%正确率到底在说什么1.1 正确率这个指标本身就有坑很多人一上来就问你们系统准确率多少这个问题问得就不专业。缺陷检测里正确率至少可以拆成四个指标检出率召回率Recall、误报率过杀率False Positive Rate、漏检率、以及分类准确率。标题里的99.9%如果指的是整体判断正确率那在缺陷样本占比极低的情况下比如千分之三的不良率一个把所有产品都判为OK的傻瓜系统正确率也能到99.7%。这就是典型的类别不平衡陷阱。我在实际项目里判断一套系统好不好第一眼看的是漏检率和过杀率这两个数而不是笼统的准确率。漏检意味着不良品流到客户手里这是质量事故过杀意味着良品被误判为不良产线要返工复检这是成本问题。两者是一对矛盾阈值调高漏检少但过杀多调低反过来。真正成熟的系统是在可接受的漏检率下把过杀率压到最低。提示跟供应商谈指标时一定要问清楚99.9%是在什么样本分布下测的、漏检和过杀分别是多少、测试集里缺陷样本占比多少。含糊其辞的基本可以pass。1.2 工业场景下正确的定义由客户定消费级AI追求的是感觉对工业AI追求的是符合验收标准。同一个划痕在A客户那里是致命缺陷在B客户那里属于可接受范围。所以缺陷检测系统的第一件事不是写代码而是和品质部门一起把缺陷判定标准SOP定下来形成一份带图例的缺陷字典。这份字典通常包含缺陷类型划痕、脏污、缺料、毛刺、变形、色差等、每种缺陷的尺寸阈值、位置约束、允收数量。比如划痕长度小于0.5mm且不在密封面区域可放行。这份文档是后面标注、训练、验收的唯一依据没有它模型训得再好也是空中楼阁。1.3 为什么工业界现在普遍转向AI方案传统机器视觉靠的是规则边缘检测、阈值分割、模板匹配、blob分析。这套方法在缺陷形态固定、背景干净的场景下又快又稳而且可解释性强。但它有两个死穴一是缺陷形态千变万化时规则写不完二是对光照和来料波动极其敏感换个批次就要重新调参。深度学习方案的优势在于特征自学习你给它足够多的样本它能自己学到人眼难以描述的纹理异常。尤其是近几年的无监督异常检测方法比如基于特征重构、基于预训练特征分布建模的思路在缺陷样本稀少的情况下也能work这对工业场景特别友好——因为良品一大堆缺陷品往往就那么几十张。但AI不是万能药。我的经验是能用规则稳定解决的就别上AI。规则方案推理速度快、可解释、维护成本低。只有当缺陷形态复杂、规则覆盖不全、或者换型频繁时AI的投入才划算。很多项目是规则打底AI兜底的混合架构这才是工程上的最优解。2. 成像系统决定上限的永远是打光2.1 算法再强也救不了烂图我经常跟新人说一句话缺陷检测项目70%的成败在成像30%在算法。你拿一张对比度低、反光严重、缺陷和背景糊在一起的图去训模型神仙也救不回来。反过来如果打光打得好缺陷在图像里跳出来哪怕用最简单的阈值分割都能搞定。成像系统的核心三要素光源、镜头、相机。这三者的选型要围绕让缺陷与背景的差异最大化这个目标来做而不是堆参数。2.2 光源选型不同缺陷配不同打法光源是成像里最讲究的部分也是最容易被忽视的部分。常见的打光方式有这么几类我按适用场景列个表打光方式原理适合检测的缺陷注意事项环形光均匀漫射消除阴影表面划痕、字符、一般外观反光件容易过曝需加漫射板同轴光光路与镜头同轴只反射垂直面镜面、金属表面的平整度、细微划痕对平面度要求高曲面件效果差背光从背面打形成剪影尺寸测量、缺料、孔洞、轮廓只能测轮廓测不了表面缺陷条形光/线光低角度掠射表面凹凸、压印、纹理缺陷角度敏感需精调圆顶光穹顶光半球漫射极均匀高反光曲面、复杂形状件亮度偏低需高亮光源配合同轴偏振消除镜面反射高反光金属表面缺陷偏振片角度要匹配实际项目里一个工位往往要组合多种光源。比如检测一个金属手机中框表面划痕用低角度条形光孔位缺料用背光Logo字符用同轴光可能要三套光源分时点亮、分时拍照。这就是为什么工业相机常配多通道光源控制器用触发信号同步切换。注意光源颜色也有讲究。单色光红、蓝、绿能提高特定颜色缺陷的对比度。比如检测蓝色塑料件上的黑点用红光照射黑点吸收红光对比度会明显提升。这个技巧在调光阶段非常实用。2.3 相机与镜头的匹配计算相机选型主要看三个参数分辨率、帧率、接口。分辨率要满足最小缺陷尺寸的检测要求。行业里有个经验公式最小缺陷在图像上至少占3~5个像素才能被稳定检出。举个例子要检测0.1mm的划痕视野FOV是50mm×50mm那么需要的像素数 50 / (0.1/3) ≈ 1500像素也就是至少1500×1500的相机。考虑留余量选2000×2000约400万像素比较稳妥。如果缺陷更小或者视野更大就得往上堆分辨率或者用多个相机分区拍。镜头选型要和相机靶面、工作距离、视野匹配。放大倍率 相机靶面尺寸 / 视野。比如2/3英寸靶面约8.8mm×6.6mm视野50mm放大倍率约0.176。再根据工作距离反推焦距。这些计算在选型阶段一定要算清楚别等装到产线上才发现视野不对。帧率要匹配产线节拍。假设产线每分钟过60个产品每个产品要拍4个面那就是240张/分钟即4帧/秒。这个要求很低普通工业相机都能满足。但如果是高速流水线上的小件节拍可能到每秒几十个那就需要高帧率相机配合频闪光源。3. 数据工程模型效果的天花板3.1 缺陷样本永远不够怎么办工业场景最大的痛点是缺陷样本稀缺。良品一天几万个缺陷品可能一周才攒几十个。而深度学习是数据驱动的样本不够模型就学不好。这是所有工业AI项目都要面对的现实。应对策略有这么几条我按优先级排第一数据增强。对现有缺陷样本做几何变换旋转、翻转、缩放、亮度对比度扰动、噪声注入、局部遮挡等。但要注意工业缺陷的增强不能乱来——你把一个划痕旋转90度可能就不符合物理规律了把缺陷放大到超出实际尺寸范围也会误导模型。增强要物理合理。第二合成缺陷。用良品图 程序生成的缺陷贴图合成大量带缺陷的样本。这个方法在纹理类缺陷划痕、脏污上效果不错但合成的缺陷和真实缺陷总有domain gap需要谨慎使用最好和真实样本混合训练。第三无监督/半监督方法。这是近几年工业AI的主流方向。核心思路是只用良品训练一个正常分布模型推理时凡是偏离正常分布的就算异常。这样就不需要缺陷样本了。常见做法有基于自编码器重构误差的、基于预训练特征记忆库的、基于归一化流密度估计的。这类方法对未知缺陷的泛化能力往往比有监督更好。第四主动学习。系统上线后把置信度低的样本、被人工复判改过的样本自动收集回来定期增量训练。这是一个持续迭代的闭环能让模型越用越准。3.2 标注这件事比想象中重要有监督方法离不开标注。工业缺陷标注的难点在于边界模糊、标准主观、一致性差。同一个划痕张三标成轻微李四标成严重模型就懵了。解决办法是制定标注规范并做一致性校验。规范里要明确每种缺陷的边界怎么画、多小算缺陷、多个缺陷挨在一起怎么处理。一致性校验的做法是让多个人标同一批图算IoU交并比如果一致性低于某个阈值比如0.7说明标准不清晰要回去重新对齐。标注工具推荐用支持多边形、矩形、点、分类多种形式的比如开源的LabelImg、CVAT或者商业的标注平台。标注格式统一成COCO或YOLO格式方便后续训练。实操心得标注阶段一定要让算法工程师和品质工程师一起参与。品质工程师懂缺陷标准算法工程师懂模型需要什么样的标注。两边对齐了后面返工才少。我见过太多项目因为标注标准和模型需求脱节训出来的模型完全不能用。3.3 数据集划分的讲究训练集、验证集、测试集的划分工业场景下不能简单随机分。因为同一批次、同一工位的图像高度相似随机分会导致训练集和测试集泄漏测试指标虚高。正确做法是按批次、按时间、按工位划分。比如用1月到3月的数据训练4月的数据测试。这样测出来的指标才反映真实泛化能力。如果条件允许测试集里要包含不同光照、不同批次、不同缺陷形态的样本尽量模拟真实产线的分布漂移。4. 模型选型与训练没有银弹只有权衡4.1 主流技术路线对比工业缺陷检测的模型路线大致分三类各有适用场景路线代表方法优点缺点适用场景有监督分类/检测CNN分类、YOLO系列、Faster R-CNN精度高、可定位、可分类需要大量标注、对未知缺陷泛化差缺陷类型固定、样本充足无监督异常检测自编码器、特征记忆库、归一化流只需良品、能发现未知缺陷定位精度一般、阈值难调缺陷样本稀缺、缺陷形态多变混合方案规则AI、多模型集成兼顾精度与鲁棒性系统复杂、维护成本高高要求产线、多缺陷类型我的建议是新项目先跑无监督方案做baseline快速验证可行性如果缺陷类型明确且样本够再上有监督方案提精度最终上线往往是混合架构。4.2 训练中的关键调参经验训练缺陷检测模型有几个参数和技巧特别关键输入分辨率。这是影响小缺陷检出率的头号因素。分辨率太低小缺陷在特征图上就几个像素模型根本学不到。但分辨率太高显存和推理时间又吃不消。折中做法是先按最小缺陷尺寸算出理论分辨率再往上取一档。比如理论需要512就用640或768。正负样本比例。有监督训练时缺陷样本和良品样本的比例要控制。一般1:1到1:3之间比较合适。缺陷样本太少会导致模型偏向预测良品漏检太多又会导致过杀。可以用focal loss或者类别加权来缓解不平衡。学习率与预热。用预训练 backbone 时学习率要小1e-4到1e-5并且加warmup。从头训练可以大一些。batch size小的时候用梯度累积模拟大batch。数据增强的度。前面说过工业增强要物理合理。我的经验是几何变换幅度控制在±15度旋转、±10%缩放以内颜色扰动幅度要小因为工业图像的颜色往往有物理意义比如色差缺陷。早停与模型选择。不要只看训练loss要看验证集上的漏检率和过杀率。选验证集上综合指标最好的checkpoint而不是最后一个epoch。4.3 阈值怎么定才不拍脑袋模型输出的是概率或异常分数最终判OK/NG要靠阈值。阈值定不好前面所有努力都白费。定阈值的正确姿势是在验证集上画ROC曲线或PR曲线根据业务对漏检和过杀的容忍度选工作点。比如客户要求漏检率低于0.1%那就在满足这个漏检率的前提下选过杀率最低的阈值。更进一步可以做分段阈值不同缺陷类型、不同区域用不同阈值。比如密封面区域的阈值严一些非关键区域松一些。这需要和品质部门一起定规则。实操心得阈值不要一次定死上线后要留一个阈值微调的入口让现场工程师能根据实际过杀情况小幅调整。但调整范围要限制防止有人为了降过杀把阈值调到漏检爆炸。5. 部署落地实验室到产线的最后一公里5.1 推理速度必须匹配产线节拍实验室里模型跑多慢都无所谓产线上慢一毫秒都可能停线。推理速度的优化手段有模型剪枝与量化把FP32量化成FP16或INT8速度能提升2~4倍精度损失通常可控。TensorRT、OpenVINO这类推理框架都支持。模型轻量化用MobileNet、ShuffleNet这类轻量backbone或者知识蒸馏把小模型训到大模型的精度。算子融合与图优化推理框架会自动做但要注意有些自定义算子可能不支持需要提前验证。多卡/多进程并行多个工位、多个相机时用多进程分发推理任务。实际项目里我一般要求单张图推理时间控制在50ms以内20FPS给整个节拍留足余量。如果达不到就要回头优化模型或换硬件。5.2 与产线系统的对接缺陷检测系统不是孤立的它要和PLC、MES、剔除机构联动。典型流程是传感器触发拍照 → 推理 → 判定结果 → 通过IO或通信协议如Modbus、Profinet、TCP/IP发给PLC → PLC控制剔除气缸或报警。这里有几个坑触发时序。相机触发、光源点亮、拍照、推理、输出结果每个环节都有延迟。要算好总延迟确保在下一个产品到达前完成判定。用硬件触发比软件触发稳定得多。通信可靠性。工业现场电磁干扰大通信偶尔丢包。要有重试机制和超时处理不能因为一次通信失败就停线。结果追溯。每张图的判定结果、图像、时间戳都要存下来方便追溯和复盘。存储策略要设计好不然硬盘很快就满了。5.3 现场调试与验收系统装到产线上才是真正考验的开始。现场调试要关注光照稳定性产线环境光变化、光源老化都会影响成像。要定期校准或者用封闭遮光罩隔离环境光。机械稳定性相机和光源的支架要牢固震动会导致图像偏移。用防松螺丝和减震垫。温度漂移相机和光源长时间工作会发热可能影响成像。必要时加散热或温补。验收测试用一批已知结果的样本包含各种缺陷类型和良品跑一遍统计漏检率和过杀率和客户一起确认是否达标。验收标准一定要白纸黑字写进合同包括测试样本、测试方法、指标定义。我见过太多项目因为验收标准模糊最后扯皮。6. 那些让项目翻车的隐形坑6.1 过杀率才是产线杀手前面反复提过杀率这里单独拎出来说因为它太重要了。漏检是质量事故但过杀是每天都在发生的成本。一条产线如果过杀率5%意味着每100个产品有5个被误判需要人工复检。如果产线节拍快复检工位根本忙不过来最后工人就会把系统关掉。降低过杀的手段提高成像质量、增加良品样本训练、优化阈值、引入人工复判机制对低置信度样本二次确认。其中人工复判是很多成熟系统的标配——模型拿不准的交给人工看一眼既降过杀又收集难例。6.2 换型与泛化产线换产品型号时缺陷检测系统往往要重新调。如果每个型号都重新训练模型维护成本太高。解决办法多型号统一模型把所有型号的数据混在一起训练让模型学会区分。前提是型号间差异不要太大。型号自适应用少量新样本做fine-tune快速适配新型号。模块化设计把成像、预处理、推理、后处理解耦换型时只换需要换的模块。6.3 数据漂移与模型退化系统上线后随着时间推移来料、光照、设备状态都会变化模型效果会慢慢下降。这叫数据漂移。应对方法是建立监控与迭代机制监控每天的过杀率和漏检率通过人工抽检统计。定期收集新样本做增量训练。设置告警当指标异常时自动通知工程师。这是一个长期运营的活不是上线就完事。很多项目失败就失败在上线即终点没有持续维护。7. 关于学习路线和工具链的一点个人建议经常有人问我机器视觉怎么入门。我的建议是先打基础再上AI。基础包括图像处理滤波、边缘、形态学、傅里叶变换这些、相机成像原理、光学基础、编程Python OpenCV。这些不扎实上来就调深度学习遇到问题根本不知道从哪查。工具链方面传统视觉可以看看Halcon、VisionPro、LabVIEW的视觉模块这些在工业界用得很广尤其是LabVIEW在测试测量和产线集成里很常见。深度学习框架用PyTorch居多推理部署用TensorRT或OpenVINO。标注用CVAT或LabelImg。整个链路跑通一遍比看十篇教程都管用。坐标系这块也是新人容易懵的地方相机坐标系、图像坐标系、世界坐标系、机器人坐标系之间的转换涉及标定。手眼标定相机和机械臂的坐标对齐是机器人视觉项目的必修课建议单独花时间搞明白。至于99.9%正确率这个目标我的看法是它不是一个可以拍脑袋承诺的数字而是成像、数据、模型、部署、运维每个环节都做到位之后自然的结果。任何一个环节掉链子这个数字就是空中楼阁。做工业AI敬畏心比技术更重要——敬畏现场的复杂性敬畏每一个可能翻车的细节。
返回列表