工业视觉检测落地全流程:从老师傅经验到AI算法与工控联动
2026/9/24 20:42:42 网站建设 项目流程

去年我蹲过一个汽车零部件工厂的视觉检测改造项目,车间主任跟我说了一句让我印象特别深的话:"我们这行最值钱的不是机器,是老师傅那双眼睛。"当时车间里一位干了二十多年的质检老师傅,拿着一件外观件翻来覆去看了几秒,就判了不合格,但旁边的年轻质检员对着作业指导书看了半天,愣是没看出来问题在哪。老师傅指了指某个角度说:"这个反光不对,里面裂纹了。"那一刻我就知道,这个项目要做的不是简单买套相机装个算法,而是要想办法把这些老师傅脑子里的判断经验,真正变成一套能24小时稳定运行的AI工业视觉检测系统。

这个方向,业内现在叫"AI+工业视觉+自动工控",简单说就是用工业相机代替人眼,用算法代替老师傅的判断逻辑,最终把检测结果直接接入产线工控系统,实现产品质量检测的自动化。它解决的核心问题是:人眼会疲劳、会情绪化、会流失,而产品质量标准不能跟着人走。这篇文章我就以这个项目的经验为底,把工业视觉落地到产品质量自动检测这条路完整走一遍,从经验提取、算法选型、成像系统到工控联动,每一步的取舍逻辑和踩坑记录都摊开讲。

1. 为什么"老师傅经验"是检测项目里最难啃的骨头

很多刚接触工业视觉的人会有一个误区,觉得检测嘛,不就是拿相机拍个照,用一个现成的图像分类模型判断好坏就完事了。真正下场做过的都知道,对检测环节来说,最难的从来不是模型训练,而是搞清楚"老师傅到底在看什么"。这部分说不清楚,后面的算法、工控全是空中楼阁。

1.1 老师傅的判据不是标准书上的文字

厂里的作业指导书怎么写?常见的就是"表面无裂纹、无划伤、无明显色差",或者"毛刺高度≤0.05mm"。听着挺明确,但老师傅实际执行的时候,靠的是一套语言根本没法完全表达的经验组合。比如判定一个压铸件有没有内部裂纹,老师傅先看外观,再看断面反光角度,还要听一下敲击声——这个"声音脆不脆"就是经验,没有任何一本SOP会写"听觉判定法"。再比如液晶屏的Mura缺陷(亮度不均匀),新手对着屏幕看到眼睛花都看不出来,老师傅把屏转到特定角度,一眼就能圈出区域,因为他见过上万片屏,脑子里形成了一个"正常亮度分布应该长什么样"的标准模板。

我后来总结,老师傅的经验可以拆成三个层次:第一层是规则明确的常识,比如尺寸超差、缺料;第二层是模糊但可量化的感官经验,比如光泽度、纹理粗细、手感;第三层是完全靠大量案例积累的模式识别,比如"这种材质这个区域的变形大概率是模具早期磨损造成的"。第一层传统机器视觉就能搞定,第二层和第三层才是AI能发挥价值的地方——深度学习天然擅长从大量标注样本中学到人类难以显式表达的细微特征。

1.2 经验流失的代价怎么算都不划算

为什么工厂老板愿意花几十万上百万元上视觉检测系统?算一笔账就明白了。一个熟练质检员的培养周期,外观检类岗位通常是三到六个月,内部探伤类岗位可能要一年以上。而制造业的现状是年轻人不愿意干这种重复枯燥的检测活,老师傅退休潮又挡不住。老师傅离开后,产线良率短期内掉几个点是非常常见的事,按一个中型工厂月产值几千万元计算,良率掉一个点就是几十万元的损失。更麻烦的是客诉风险——漏检的缺陷件流到整车厂或者电子厂,一旦被投诉,批量召回和赔偿金额可能比一套检测系统贵得多。

所以"把老师傅的经验装进算法"这件事,本质上是在做企业核心资产的数字化固化。这个资产不是设备,也不是图纸,而是质检团队写在脑子里的判据。这也是为什么我每次做这类项目,第一步永远是花大量时间跟老师傅泡在一起,而不是先去看相机型号或者算法框架。

2. 经验提取:把老师傅的手感和眼光翻译成机器能学的特征

这个阶段是整个项目里最容易被低估的环节。很多团队上来就找人标注缺陷图片,以为只要"标的够多"模型就会准。结果标了一两万张训练出来的模型,在测试集上表现还行,一上产线误检率就爆炸。根子在于标注之前,你没把"检测什么"这件事的定义搞清楚。

2.1 缺陷定义阶段:跟老师傅一起看图说话

我习惯的做法是,把老师傅叫到会议室,把过去三个月内所有判定过的不良品图片全部打印出来,铺满一桌子,然后请老师傅一张一张讲:这个为什么判废,那个为什么判退,再看的是哪个区域,是通过什么特征判断的。旁边一定要有人记录——不是记录结论,而是记录判据关键词。老师傅说"这个光泽不对",你就得追问:"光泽不对,是偏亮还是偏暗?是某一区域还是整个面?跟什么参照比?"这样反复追问下来的结果,就是形成一份缺陷字典

缺陷字典长什么样?举个例子,一个手机中框外观件项目,我们最终整理出12类缺陷,每类下面再按位置和严重程度细分,比如:

  • 划伤类:按方向分(顺纹、横纹、斜纹),按深浅分(表浅可修复、深入基材报废),按位置分(外观面、非外观面)
  • 压伤/碰伤类:按形态分(点状、线状、块状),按光泽变化分(发亮、发暗)
  • 脏污类:区分油污、粉尘、指纹,因为处理方式完全不同
  • 氧化/变色类:按分布范围分

这份字典不是给算法看的,是给标注人员、软件工程师、产线技术人员和老师傅之间建立的一门"共同语言"。没有这个语言,标注员标的"A类划伤"在老师傅看来可能是"B类压伤",那模型学到的东西就是错的。

2.2 负样本比正样本更值钱

缺陷检测项目里有一个反直觉的经验:真正决定模型上限的,不是你有多少张缺陷图,而是你收集了多少种"容易被误判为缺陷的正常件"图片。这个叫假阳性样本,也就是老师傅口中"长得像不良但其实能用"的件。

我见过太多项目因为负样本没收集够,算法一上线就开始乱杀。比如工件表面有纹理,光线一变,正常纹理在某些角度下看起来就是划伤;模具磨损到一定的程度,产品上会产生亮带,但这个亮带既可能是正常脱模痕迹,也可能是拉伤。这些边界案例,只有产线老师傅和质检员手里有真实样本,他们是唯一的采集入口。

所以样本采集阶段我的建议是分两条线走:一条线是批量过线采集,在产线上装临时相机,24小时连续拍正常件,把正常工况下的所有表现形态吃透;另一条线是主动收集边界样本,让老师傅在平时的检料过程中,遇到"有点问题但拿不准的"、 "看着吓人但实际能用的"都挑出来单独放,然后由我们团队进行二次确认。第二条线靠自觉,所以一定要给产线足够的配合动力,否则你拿到的样本库永远只有标准品和严重缺陷,模型天然学不会边界。

2.3 标注规范:模糊地带怎么定

有了缺陷字典和样本库,下一步才是标注。这里面最关键的规范是"模糊地带"的处理原则。比如一条划伤,长度到了多少算缺陷?角度偏了多少可以忽略?深度有没有统一的参照?这些在SOP里说不清楚,但在标注规范里必须定义清楚,因为算法学的是标注的边界。

实操上我一般这样定:每张图至少三个人标——标注员初标,质检组长复核,老师傅终审。遇到分歧特别大的样本,不强行统一,而是单独拉出来作为"疑难样本"交给算法团队,在模型设计阶段做聚类分析,看它到底跟哪一类缺陷的混叠严重,然后决定是合并类别、细化类别还是单独建一个"伪缺陷"类别。

注意:标注规范里一定要明确"不进行二次返工判断"。也就是说,标注只管"这是什么缺陷类型",不要标"这个缺陷是否需要返工"。返工策略是工控阶段做的事,混在标注任务里会严重干扰模型的学习目标。

3. 算法选型背后的权衡逻辑:深度学习不是唯一解

到了算法选型这一步,很多人第一反应就是"上深度学习"。但我在项目里吃过亏——第一个视觉检测项目,不管三七二十一,所有检测项都往上堆深度学习,结果是一个简单的尺寸测量项目,明明用传统视觉做一个边缘检测就能又快又稳,非要去训一个目标检测模型,不仅数据量不够,现场调试还麻烦。后来学乖了:选型的第一原则不是"哪个先进",而是"哪个能在产线24小时稳定跑"。

3.1 传统机器视觉的适用边界

传统机器视觉本质上是"用规则和数学描述特征"。比如用阈值分割找黑点,用边缘检测和几何拟合量尺寸,用模板匹配验证形状,用傅里叶变换或频域分析测纹理的周期性。这些方法的共同特点是:可解释、可预期、计算资源消耗小、单帧处理快,而且调参逻辑清晰。

实际应用中,以下几类质检项我会优先用传统视觉:标准的几何尺寸测量(直径、长宽、角度、同心度)、规则明确的表面缺陷(均匀背景下的大颗粒异物、明显黑点白点)、位置和姿态检测(标记点定位、引脚有无、方向是否正确)、计数类检测(端子个数、齿轮齿数)。这些场景特征边界清晰,规则容易表达,深度学习的收益很小,反而引入更多变量——比如需要大量数据、需要GPU、难以逐点解释"为什么判NG"。

3.2 深度学习真正发力和3D视觉的适用场景

深度学习解决的是"说不清楚但看得多就懂"的问题。典型场景包括:纹理复杂且形态多变的表面缺陷(铸件表面、布料、皮革)、低对比度细微缺陷(玻璃划痕、偏振片内部缺陷)、需要语义理解的复杂判断(装配件错漏装识别、焊缝品质分级)、一类无规律变化的背景干扰(自然纹理干扰、光照渐晕)。

另外,深度学习配合3D工业视觉做检测,这两年是落地速度最快的方向之一。2D视觉本质上依赖灰度差异和颜色差异,对凹陷、鼓包、高度差、共面度这类三维特征天生不敏感。3D视觉通过结构光或者激光轮廓扫描获得点云数据,直接在高度维度上卡阈值,比如检测IC引脚共面度、PCB板上锡高度、注塑件表面凹陷。3D的选型逻辑跟2D不太一样:精度、视野、扫描速度是核心约束,而光源反而变成了辅助,主打的传感器是激光轮廓仪或线扫3D相机。

提示:3D视觉不是万能的,它对产线振动、物体透明/反光特性、安装刚性都极其敏感。如果一个2D方案加一套打光能解决,就先不要上3D,成本和维护复杂度不是一个量级。

3.3 一个实际的选型决策案例

还是回到那个汽车零部件项目。检测目标是压铸铝件的外观缺陷,类别有十几个:砂孔、冷隔、裂纹、欠铸、拉伤、飞边等。一开始我们尝试纯2D深度学习方案,用Fast R-CNN和YOLO系列跑了几轮,裂纹类表现还行,但砂孔和冷隔的真实3D深度信息在2D图像上完全无法区分——有的砂孔看起来颜色深,有的却跟正常区域灰度几乎一致,纯粹是表面不平整引起的。后来调整为"2D深度学习做粗分类 + 3D激光轮廓扫描做局部深度检测"的双通道方案:2D负责找候选区域和做宏观分类,3D在候选区域内做高精度深度测量,把"看起来像和确实是"这两个层次的问题彻底分开。最终漏检率从最初的3.2%压到了0.4%以下。

4. 成像系统决定算法上限:相机、镜头、光源的选型计算实例

算法圈有个说法:垃圾进,垃圾出。工业视觉项目里,成像质量决定了算法能发挥的上限。我先说一个我踩过的坑:第一次做金属反光件检测时,随便用了个常规环形光源,结果拍出来的图片大片过曝,算法调了很久都调不好。后来光学工程师一句话点醒我:"金属表面不能正面打光,要低角度打光,让光把表面的凹凸变成阴影。"换完光源之后,原来一个特别复杂的算法问题突然变成了一个简单的二值化问题。从此我对"算法不行先别急着换模型,先看看图像到底把特征表达到位没有"这句话深信不疑。

4.1 相机分辨率:跟着最小缺陷走

分辨率的选型原则是:最小缺陷要在图像上覆盖至少3×3个像素,否则再强的算法也无米下炊。我给你一个可以直接抄的计算公式:

假设检测视野(FOV)是120mm×90mm,需要检出的最小缺陷是0.15mm。那么:

  • 精度 = 最小缺陷/3 = 0.15/3 = 0.05mm/pixel
  • X方向像素数 = 120/0.05 = 2400 pixel
  • Y方向像素数 = 90/0.05 = 1800 pixel

所以至少需要2400×1800≈432万像素的相机。考虑到边缘畸变和相机实际有效像素的问题,我会在这个基础上乘1.2~1.5倍的冗余系数,选500万或600万像素的工业相机向上靠。记住,分辨率不是越高越好,分辨率越高,单帧数据量越大,传输和处理时间越长,节拍压力越大,存储成本也越高。

4.2 镜头选型的焦距计算

镜头选型的核心是把"工作距离、视野、靶面尺寸"三者匹配起来。原理公式是:

焦距f = 工作距离WD × 靶面尺寸H / 视野FOV

举例:如果CCD靶面是1/1.8英寸(约7.1mm×5.3mm),要求在工作距离300mm处拍到的视野是100mm×75mm,那么:

  • 水平方向焦距 = 300×7.1/100 = 21.3mm
  • 垂直方向焦距 = 300×5.3/75 = 21.2mm

那就可以选标称焦距为20mm或25mm的定焦工业镜头,装上去之后再微调工作距离来补偿,让视野正好符合要求。这里特别提醒两件事:一是工业镜头一定要用C接口或CS接口并配好适配环,别拿普通安防镜头凑合,畸变和分辨率根本扛不住;二是光圈不要开最大,一般收缩两档,既保清晰度又增景深,避免工件高度波动时边缘发虚。

关于"工业视觉精度是怎么算的需要算上镜头放大倍率吗",这里顺带回答一下:工业视觉的精度最终由"视场大小除以像素数"决定,虽然镜头倍率会影响实际成像大小到感光芯片上的映射关系,但我们在软件层面通常都以标定板做像素当量标定,把"毫米/像素"这个比值直接测出来。放大倍率属于光学设计阶段的计算参数,在最终的软件精度评估中,通过标定已经把它隐含进去了,不需要在检测算法里单独再乘一次。

4.3 光源角度:缺陷的"化妆师"

光源是工业视觉里最"出力不讨好"的环节——花钱不多,效果直接,但很少有人愿意认真钻研。我分享一下几个最常用的打光思路:

  • 低角度环形光:几乎平行于被测物表面,适合把划伤、压印、滚花等表面凹凸放大成阴影
  • 同轴光:垂直向下照亮工件,适合高反光平面和镜面物体上的异物检测
  • 背光:光源放在工件下方,呈现剪影效果,适合轮廓尺寸测量和毛刺检测
  • 多角度分区光:同一个光源控制器不同角度交替点亮,在同一视野下获取多幅不同打光角度的图像,用于提取浅刻痕、花纹等方向性特征
  • 特定波段光源加滤镜:比如用红外或紫外光配合窄带滤镜压低环境光干扰

对应到"3D工业视觉"这个方向,光源就变成了投射器(结构光)或者激光器(激光轮廓扫描),它的作用不是照明,而是给物体"编码"高度信息。这个对很多搞软件出身的人是个思维转变。

5. 从像素到动作:检测结果怎么接进产线工控

算法输出"OK/NG"只是做完了一半,真正实现"自动工控"——也就是让产线根据检测结果自动决定放行还是剔除——还需要一套可靠的通信和联动机制。这段我把它单独拎出来讲,是因为我有过惨痛教训:检测软件判断出了NG品,但因为通信延迟和PLC程序里信号宽度设置不对,气缸还没动作,不良品已经流过去了,导致整批产品被客户打回来。从那以后我才真正重视"视觉系统与工控系统的握手协议"这个环节。

5.1 视觉系统怎么和PLC通信

目前工业现场最通用的组合是:视觉控制器或工控机跑检测算法,通过TCP/IP或RS-232/485串口跟PLC通信,具体用哪种取决于PLC品牌和项目预算。TCP/IP适合数据量大的场景,但存在毫秒级的网络抖动,对时序严格要求时必须加握手应答;串口协议简单稳定,适合低速但确定性的开关量信号。

更硬核一点的做法是直接通过IO卡或Profinet/EtherCAT总线对接,视觉控制器检测完直接把结果映射到一个IO输出点,PLC扫到这个信号之后立刻触发剔除机构。这种方式中间没有串口或网口协议转换,实时性最好,在高速产线上几乎是必须的。

5.2 硬触发和软触发的区别:时序是生命线

相机拍照的触发方式直接影响检测节拍。软触发是软件发指令拍照,优点灵活,缺点是有延迟且延迟不稳定;硬触发是用光电传感器或编码器信号直接触发相机快门,物理上硬连线,延迟是微秒级,而且在产线速度变化时,能通过编码器频率自动匹配拍照节奏。我的建议是:但凡产线节拍小于5秒一件的检测项目,统统用硬触发。后面我再补充一个真实调试场景:某次光电传感器安装位置离目标太近,产品还没来得及完全到达视野中心就触发了相机,拍出来的照片全是边缘视角,识别效果惨不忍睹。这个问题最后是通过调整传感器到相机的间距、并增加一个小的位置补偿延时解决的,但便宜的方案其实是一开始就在安装支架上留出前后可调的长孔。

5.3 节拍计算和剔除联动的整体设计

以我之前做过的一个连接器外观检测项目为例,产线节拍要求是每件2.8秒。检测流程是:产品经过光纤传感器时触发相机,拍照后算法处理约800ms,然后视觉系统通过TCP协议把结果(OK/NG + 缺陷码)发给PLC,同时IO卡直接输出一个NG信号。PLC收到NG信号后,在传送带模型上记住这个产品的位置,等它走到末端时,末端气缸根据跟踪计数信息挑选NG品剔除。这里有个非常重要的细节:视觉检测结果和产品物理位置之间一定要做跟踪对齐。传送带速度快一点慢一点会导致产品位置偏移,所以不能只看时序,必须综合编码器脉冲计数或者光电传感器分拣确认来实现精确剔除。

这个整体设计的节奏预算大概是:2.8秒节拍中,成像占0.1秒,传输占0.1秒,算法占0.8秒,剩余1.8秒留给产品流转、剔除和余量,所以最终选型时算法部分单帧处理必须控制在800ms以内,给整个系统留足富余。

6. 产线落地避坑记录:误杀、漏杀、光照漂移和模型迭代

最后一个环节,分享几个我在实际产线调试和运行中掉过的坑,每一个都付出了实打实的代价。这些经验教材里很难搜到,但对做同类项目的人参考价值极高。

6.1 过杀率压不下去:先找样本问题

有一次设备调试阶段,良品通过率只有88%,客户差点翻脸。我一开始以为是算法精度问题,疯狂调模型,后来才发现根子是样本问题:训练集里的良品图片都是在设备调试初期拍的,那时候环境光线不稳定,拍出来的良品本身就带着各种条纹阴影,模型学的"良品模板"就是错的,上线之后自然把很多正常产品当成异常。解决办法很简单却很耗时:重新在稳定光源下采集一批干净、规范的良品图片,加入训练,良品通过率立刻就上去了。

这件事给了我一个原则:遇到过杀率高,先确认"模型学到的正常长什么样",再谈算法调参。

6.2 漏杀和过杀的取舍:重新定义阈值

工业检测项目里,漏杀(把不良品当良品放过去)和过杀(把良品当不良品踢出来)本质上是一对矛盾。对产线来说,过杀损失的是产能稼动,漏杀损失的是客户信任,两者都很痛,但现场往往必须做一个明确的取舍。我一般建议跟客户产线负责人把标准定成一个具体指标,比如"过杀率控制在3%以内,漏杀率0.5%以内",然后通过调整算法的置信度阈值来做平衡。阈值不是拍脑袋定的,默认0.5不是金标准。真正做法是拿一批覆盖所有缺陷类型的留样数据,绘制精确率/召回率曲线,在曲线上找到同时满足客户两个指标的最高阈值点。

6.3 光照漂移:算法再稳也经不住环境变

工厂的环境光是检测系统最大的隐性敌人。白天窗户漏进来的自然光、晚上车间灯具的色温变化、传送带上方天车的影子,都会让成像特性漂移。我在一个项目里就遇到,早班过杀率正常,下午三点半开始过杀率突然飙升,后来排查发现是设备正好对着车间西侧的窗户,下午阳光斜射进来,改变了被测物表面的整体亮度。

解决光照漂移有三个层次:第一层是物理隔绝,检测工位整体加遮光罩,切断环境光干扰;第二层是硬件补偿,用带反馈的恒流光源控制器,保证光源本身亮度稳定;第三层是算法鲁棒性,训练数据里加入亮度抖动、对比度抖动、色温变化等数据增强手段,让模型对小幅光照变化不敏感。三层都做了才能保证全天候稳定。

6.4 模型上线不是终点:要设计迭代闭环

传统自动化设备买回来调好就完事了,但AI视觉检测设备不一样——它本质上是需要持续学习的。产线模具会磨损,来料批次会有差异,工艺调整会让缺陷形态发生迁移。所以模型部署之后一定要设计一个反馈迭代闭环:检测系统每天产出的NG图片要有人工复核,每天抽一批"疑似NG但被人工判定为OK"的图片回捞,每周汇总一次样本分布变化,每月做一次增量训练,迭代后的模型先在离线环境跑通全部历史数据回归测试,没有明显退化之后,选择低风险时间窗口灰度上线。这个循环走顺了,系统才会越用越准,而不是越用越废。

我在实际项目里还观察到,算法做检测的结果有两种反馈回路:一是复检岗位对算法判NG的产品再次确认,确认结果要能够回传系统;二是客户投诉件要专项分析,如果发现是漏检,要把这类缺陷的图片第一时间补进训练集,重新生成决策边界。只有建立了这样的闭环,你的"老师傅经验"才会随着数据积累不断更新。

关于经验进算法这件事,我最后想再多说一句

很多人问过我:视觉检测设备上了之后,老师傅是不是就失业了?我的答案恰恰相反。在我做过的项目里,真正把项目做顺、做出高回报的团队,几乎都是老师傅和算法工程师深度绑定的团队。老师傅看不懂模型权重里的数字,但他能告诉你什么图需要补、什么图标错了、什么缺陷未来半年可能会集中爆发。算法工程师负责做数据管道,老师傅负责产出高质量先验知识。你现在做的不只是"替代人眼",而是把这个岗位上最值钱的经验,塑造成一套可以复制、可传承、可持续迭代的产线数字资产。这套资产的产出效率,和"人和算法配合"的默契程度成正比。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询