十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

机器视觉检测项目实战指南:从需求拆解到现场落地

机器视觉检测项目实战指南:从需求拆解到现场落地 1. 想清楚再动手机器视觉检测的前期规划比写代码重要得多先说说我自己的判断。机器视觉检测这件事说白了就是给产线装一双“眼睛”加一个“大脑”——用相机代替人眼用算法代替人脑来做判断。听起来很高大上但真正做过几个项目之后你会发现难的不是算法本身而是前期那些没人跟你讲清楚的事情检测需求没拆干净项目做到一半才发现光源不对、相机视野不够、算法选型错误最后整个方案推倒重来预算和时间全部超支。先说清楚这篇文章适合谁看。如果你是一个刚接触机器视觉的工程师准备在自己的产线或项目里落地一套检测方案或者你是做自动化集成的需要对外报价、选型、做技术方案又或者你只是被老板一句“这个能不能上视觉检测”问住了不知道该从哪入手——那这篇文章就是给你准备的。我不会讲太深的理论只讲我踩过的坑和验证过可行的路子。为什么要强调“前期规划”因为机器视觉检测项目有一个很特殊的性质它不像写软件写错了改代码就行它的硬件选型一旦定下来后面想改光源、换镜头、提分辨率往往意味着整个结构件、安装位、甚至产线空间都要重做。我见过太多项目第一步错后面步步错最后只能靠算法硬扛扛不住就烂尾。所以我在做任何视觉项目之前一定会逼自己回答几个问题检测对象是什么缺陷或特征长什么样产线节拍是多少现场环境有没有震动、灰尘、反光后面跟PLC怎么通信这些问题不搞清楚拿着相机就拍百分之百翻车。1.1 检测需求到底该怎么“拆”很多人上来就说“我要检测产品有没有问题”这句话等于没说。机器视觉检测里的需求拆解是要把“问题”翻译成“可以计算的指标”这个过程叫需求量化。我用一个实际案例来说明。之前做过一个项目客户要做汽车密封圈的表面缺陷检测。客户给的需求是“检测划伤、缺料、毛边”。听起来很清楚对吧但真正开工前必须进一步追问划伤的最小长度和宽度是多少0.5毫米的划伤算不算不良品缺料是在哪个区域边缘还是内孔面积多大算缺料毛边的允许高度是多少颜色和背景接近怎么办如果这些指标不说清楚算法就无从设计。更麻烦的是不同客户对“缺陷”的定义经常是模糊的甚至同一个客户的不同质检员标准都不一样。所以我在需求阶段就带着相机去现场拍样件——好品、坏品、可疑品都要拍然后回来跟客户逐张确认这张图片里哪些是必须抓的哪些是可以放的。用图片说话比用语言描述靠谱一百倍。需求拆清楚之后还要给缺陷分类。有些缺陷是“面”上的比如划伤、污渍、缺料适合用区域分析有些缺陷是“边缘”上的比如毛刺、崩边适合用边缘检测还有一些是“整体”层面的比如颜色偏差、形状变形可能需要用模板匹配或深度学习分类。不同类型对应完全不同的算法和光源方案这也是为什么前期拆解直接影响后续所有决策。1.2 先算账再选型节拍、精度、成本三角机器视觉检测方案没有绝对的好坏只有合不合适。决定方案路线的最核心三个约束条件我称之为“三角”节拍、精度、成本。先看节拍。假设产线要求每分钟检测60个产品也就是每个产品只有1秒的处理时间。这时你可能需要在相机采图的同时进行算法处理或者用多相机并行或者把不必要的检测步骤砍掉。再比如节拍是10秒一个那就宽松很多甚至可以上更大的模型做深度学习推理。再看精度。精度怎么算我给大家一个简单的计算公式。如果视野范围是100毫米需要检测的最小缺陷是0.1毫米那么缺陷在图像里至少应该占到3到5个像素才稳定可检测不能只占1个像素因为边缘过渡、噪声等因素会让单像素检测非常不可靠。所以需要的像素数大概是100毫米 ÷ 0.1毫米 × 3像素 3000像素也就是横向至少需要3000像素对应500万像素级别的相机按2000×3000算。如果缺陷是0.05毫米那就需要6000像素也就是2000万像素级别。理解了这层关系你就不会被销售忽悠着买低分辨率相机了。最后是成本。这里说的成本不只是硬件价格还包括调试时间、维护成本、误判带来的损失。比如光源选便宜了图像不稳定算法就要反复改调试周期翻倍算下来比买好光源贵得多。所以在做任何视觉方案之前先把这个三角算清楚算出结果再去找硬件和算法方案你会发现整个项目路径清晰很多。2. 硬件选型成像系统是机器视觉检测的命根子很多人做机器视觉检测第一反应是“用什么算法”但做过实际项目的人都知道成像质量决定了算法难度的90%。图像拍得好一个最简单的阈值分割就能解决问题图像拍得烂再高级的深度学习模型都救不回来。这不是夸张这是视觉行业的铁律。大家可以把成像理解成给产品拍照。拍一张光线均匀、对比清晰、特征突出的照片后处理就是简单加个滤镜的事拍一张过曝、反光、阴影乱七八糟的照片后面堆多少算法都是痛苦挣扎。所以硬件选型我永远放在第一位来讲。整套成像系统由四个核心部分组成相机、镜头、光源、安装支架。每一环都影响最终图像质量且环环相扣。2.1 相机怎么选分辨率、帧率、传感器相机选型第一看分辨率这个由我前面算过的精度需求决定。还是用上面的例子视野100毫米、最小缺陷0.1毫米需要至少3000像素横向分辨率那选500万像素相机就够用如果你同时还要看很大的视野比如300毫米那500万像素就不够了得按公式重新算。第二看帧率。帧率决定了能不能跟上产线节拍。如果节拍是每秒2个产品相机的触发频率至少要能到2帧以上配合软件处理时间我一般会留出至少30%的余量选3到5帧能满足要求的相机。第三看传感器类型。目前主流还是CMOS大部分项目场景电子元件、五金件、包装检测等CMOS完全够用。CCD在一些特殊弱光、高精度的场景还有优势但现在越来越少见了。还要注意是全局快门还是卷帘快门。运动中的产品检测必须选全局快门不然图像会变形出现“果冻效应”。好多新手在这里翻车买了个卷帘快门的相机去拍流水线图像永远花的。第四看接口。GigE千兆网接口是工业相机最常见的传输距离长100米内、布线方便、兼容性好USB3.0更快但线缆长度受限CameraLink传输稳定带宽高但价格贵、布线复杂一般是高性能项目才用。我个人做自动化集成项目90%的情况选GigE够用且通用。2.2 镜头选择的关键参数焦距、工作距离、景深、畸变镜头决定了相机能看到什么、看得多清楚。如果相机是眼睛的视网膜镜头就是晶状体晶状体不好使视网膜再强也白搭。镜头选型最核心的几个参数焦距决定了视场角。焦距越短视野越宽能照的范围越大焦距越长视野越窄放得越大。工作距离镜头前端到被测物体之间的距离这个由机械安装空间决定。如果只能装200毫米的高度那就选一个能在200毫米工作距离下覆盖目标视野的镜头组合。景深能拍清楚的深度范围。检测有高度差的产品需要足够的景深景深不够就会出现中间清楚边缘模糊。小光圈可以加大景深但进光量也会减少。畸变镜头边缘成像的变形。做尺寸测量类项目时畸变是致命问题必须选低畸变镜头甚至远心镜头。我举一个实例。需要一个视野300毫米×200毫米的工位工作距离约500毫米。首先估算需要的焦距镜头焦距 ≈ 传感器尺寸 × 工作距离 ÷ 视野宽度。如果传感器是1/1.8英寸约7.2毫米宽那焦距约等于7.2×500÷300算下来约12毫米。再根据景深要求确定用F4还是F8光圈最后结合畸变要求在标准工业镜头和远心镜头里做选择。2.3 光源设计90%的视觉项目成败都在这一步我得说一个反常识的经验光源才是机器视觉检测项目里最值钱的技术活而不是算法。一个对的光源设计可以把本来复杂到要上深度学习的项目简化为一个“找阈值”就搞定的任务。常见光源类型有几种各自有适用场景环形光源从四周45度左右打光适合检测字符、划伤、轮廓也是最常用的。但环形光在镜面物体上容易造成反光死区。背光源从物体背面打光得到的是黑色剪影特别适合做轮廓测量、尺寸检测、透明物体缺陷检测。同轴光源光源通过半反半透镜垂直投射到物体表面反射光进入相机适合高反光平面上的缺陷检测比如晶圆表面、磨砂金属面。条形光源从侧面大角度打光适合表面纹理、压印字符以及有一定高度的边缘缺陷。穹顶光源/圆顶光源通过内壁漫反射形成均匀照明适合球形、凹曲面的反光物体能消除大部分反光。光源的颜色也很有讲究。不同颜色的光照射到不同颜色的物体上会增强或减弱对比度。比如红色背景上的黑色划伤用红色光打划伤会更黑更明显用蓝色光打红色背景变暗对比度反而变差。所以光源颜色选对了图像对比度就是天壤之别。打光角度同样关键。一个经典的技巧是划伤和压痕这类“凹陷型”缺陷用低角度条形光从侧面打缺陷会产生一个明显的暗部阴影在图像里非常显眼。我第一次做金属划伤检测时用环形光怎么打都看不清楚后来改成两个条形光低角度对打划伤一下就在图里“站起来”了原理也简单低角度光照到凹槽时会产生遮挡阴影形成了高对比度的暗特征。所以我的建议是在硬件选型阶段光源花的时间应该占到一半以上。多试、多拍、多对比直到图像达到“算法几乎不需要做什么努力就能出结果”的程度再往下走。3. 算法选型与工具链传统方法还是AI别盲目追新成像做好了图像质量没问题这时才开始谈算法。算法选型这步我见过太多人犯的错误是盲目追新——听到“深度学习”“AI质检”就觉得高级不管什么项目都上神经网络。但实际上传统图像处理算法在很多场景下更快、更稳、更省成本而且更容易向客户解释结果。判断标准很简单能不能用传统方法解决能用就绝不引入深度学习。深度学习是最后的手段不是一个“看起来更专业”的借口。3.1 传统图像处理90%的项目够用传统机器视觉检测方法的核心逻辑是通过图像处理技术把目标特征从背景中分离出来然后根据特征参数做判断。我常用的传统方法有这几类阈值分割根据灰度值把图像分成前景和背景是最基础也最常用的方法。适合目标与背景灰度差异明显的场景。Blob分析对分割出来的连通区域进行计算包括面积、周长、长宽比、圆度等特征。比如检测一个产品有没有缺角可以分割后看每个区域的面积是否在公差范围内检测表面有没有污渍可以找异常灰度区域。边缘检测找图像中灰度急剧变化的位置适合尺寸测量、边缘缺陷检测。模板匹配在图像中查找与预存模板相似的区域适合定位、贴片方向检测、部件有无检测。形态学处理膨胀、腐蚀、开运算、闭运算等操作用来去噪声、连接断裂区域、分离粘连物体。举一个我做过的例子。检测PCB板上的电容有无漏贴。做法很直接采集图像后先做阈值分割把电容区域从板子上分出来然后用Blob分析统计每个区域的位置和面积跟标准模板的电容坐标逐一比对缺失或偏移超过阈值就判为NG。整个过程不到50行代码稳定运行了两年多没有任何深度学习的影子。很多人问我这种传统方法是不是太“土”了我的回答是它土但有用。传统方法有三大优势——处理速度快毫秒级、可解释性强每个参数都能说清楚是什么含义、对硬件要求低普通工控机就能跑。这些优势在实际生产中非常重要。3.2 深度学习方法什么时候该上传统方法也有它的天花板。遇到下面这些情况我才会考虑用深度学习缺陷特征无法用几何指标描述比如“纹理异常”“颜色不均”“随机分布的小瑕疵”这些靠人工设计特征和阈值非常困难。背景纹理太复杂传统分割无法有效分离目标。检测标准是“主观”的比如某些表面外观缺陷人的判断标准是“看着不舒服”这种用传统方法很难量化用深度学习标注学习反而更接近人的判断。深度学习的三大主流任务对应不同场景目标检测框出图像中物体的位置和类别比如检测产品上的焊点、接头、标签有没有缺失。语义分割对每个像素分类适合细分缺陷区域的场景。分类整张图归为OK或NG适合表面杂色、纹理异常这类全局判断。但深度学习不是万能的代价也很明确需要大量标注样本最好每个缺陷类型有几百到上千张需要GPU环境和推理时间模型结果不可解释客户审厂时不好交代训练和迭代成本高。所以我的原则是如果传统方法能做到99%的检出率就不要非要上AI省下来的时间精力去处理那1%的疑难杂症。3.3 工具链怎么选OpenCV、商业软件还是自研框架工具这块我分三档来说。第一档是开源库比如OpenCV。免费、功能全、社区大、案例多。我自己做原型验证和简单检测项目首选OpenCV。缺点是开发门槛高需要写代码调试和维护都靠自己。第二档是商业机器视觉软件比如HALCON、VisionPro、康耐视的自带工具。这些软件内置了大量成熟算法模块界面化操作上手快适合集成商和没有强大算法团队的工厂。HALCON在定位、测量、Blob分析上非常强效果和稳定性都比自己调OpenCV好就是license价格不便宜。第三档是自研框架。如果项目需求非常特殊或者要大规模部署且算法团队够强可以考虑自研底层。但我不建议普通项目走这条路成本太高维护太重。我的经验是原型阶段用OpenCV免费验证可行性正式交付用商业软件保证稳定性和开发效率。如果客户预算有限且项目算法相对简单OpenCV也完全可以扛起正式交付的担子。说到底工具只是手段能稳定解决现场问题才是王道。4. 实战记录一个机器视觉检测项目从0到1的完整路径理论聊了不少这一章我完整梳理一个实际项目从需求到落地要经历的步骤以及每一步里面最容易被忽略的细节。拿我之前做的电机换向器表面缺陷检测来举例这个项目的完整路径很有代表性。换向器是电机里的一个铜质圆柱件表面有很多互相绝缘的铜片需要在生产线上自动检测铜片表面有没有划伤、压痕、电灼烧点、异物附着等缺陷。这项目要求节拍是2.5秒一个检测精度要求在0.3毫米左右的划痕必须稳定检出。4.1 第一步采集样本建立缺陷图库很多人跳过这步直接写算法这是大忌。没有样本你的算法就是闭着眼睛猜。样本采集的核心原则是“覆盖面广、代表性够”每个已知缺陷类型至少要采集10到50张不同角度、不同严重程度的图片同时要采集大量正常品作为对照。采样的方式可以是实验室模拟但更好的方式是去产线现场拍因为现场才有真实的光线环境、真实的产品状态。我当时带着一套临时搭的简易成像装置在产线旁边蹲了两天拍了几百张图然后跟质检员逐张确认缺陷类型和级别。这步做完后面所有开发都有据可依了。4.2 第二步搭试验台确定成像参数有了样本下一步就是搭一个临时试验台来做打光测试。我把环形光、低角度条形光、同轴光、背光都带过去逐个试每个都拍一组图像然后对比哪个方案对缺陷的对比度最高。换向器是圆柱面且有金属光泽环形光打上去会出现很强的镜面反光把划伤淹没了同轴光效果好一些但对不太规则的圆面来说亮度不均最后用两个条形光从左右低角度对打在铜片表面形成一个渐变照明划伤和压痕形成明显的暗色阴影电灼烧点也显示出灰黑色的碳化区域对比度非常好。打光方案定下来之后再根据精度需求选相机。视野大约40毫米×40毫米最小缺陷0.3毫米按3像素折算分辨率需要400像素左右实际我选了500万像素的相机视野范围大逻辑推理变得更简单一个相机80毫米视野全包住后续如果要扩展检测范围也有余量。这步想清楚后面就不会反复拆装。4.3 第三步开发算法流程算法思路此时已经非常清晰铜片区域整体是亮的划伤和压痕是暗的那直接用阈值分割提取暗区域再用Blob分析计算每个暗区域的面积、长宽比、主轴方向、位置然后根据缺陷特征区分划伤是长条形的长宽比大压痕是块状的面积大、圆度低电灼烧点是小而深的暗斑。整个流程跑下来单张图像处理时间大约200毫秒左右节拍2.5秒余量充足。我用OpenCV做了原型效果稳定后为了保证正式交付的稳定性和易维护性改到HALCON上重新实现了算法逻辑。这里有个经验要分享原型用开源库跑通不代表正式交付就能直接用OpenCV。如果你的客户有标准化需求或者项目维护的人不熟悉C和OpenCV那商业软件反而是更稳妥的选择。有时候技术方案的优劣不是由技术本身决定的而是由“谁在后面维护”决定的。4.4 第四步现场安装调试与通信对接算法在实验室跑得再好到了现场都可能出幺蛾子所以现场调试的时间一定要预留。主要工作是安装相机和光源调整到最佳工作距离和角度。接入产线的传感器触发信号确保产品到位后相机在正确时刻拍照。跟PLC调通通信协议输出OK/NG信号NG信号要带保持功能方便后续自动化剔除装置。校准坐标系如果要做定位引导还需要把像素坐标转换为机械坐标。换向器项目在现场遇到一个很典型的问题产线有轻微震动导致相机轻微抖动图像偶尔出现模糊。排查后确认是安装支架刚性不够换了重型支架并加了橡胶减震垫问题解决。这种问题在实验室里是永远发现不了的所以现场调试阶段一定要预留时间和预案。4.5 第五步试运行与误判调优试运行是这个项目中最磨人也是最重要的阶段。刚开始自动运行客户会拿各种没有见过的产品形态来挑战你轻微氧化的铜片、光照变化、油污干扰……这些都会导致误判。误判分两种漏检把不良品放过去和过检把好品误判为不良。漏检是致命的过检是成本损失。调优时需要在两者之间找平衡。我的做法是把试运行期间的每张被判定为NG的图像都保存下来每天下班前跟客户的质检员一起复盘看哪些是真正的缺陷哪些是误判。误判的类型找出来之后要么加算法约束要么加光源处理要么调整判定阈值。持续迭代一到两周把误判率压低到客户可接受的范围内然后固化参数项目才算正式进入验收阶段。5. 现场实施过程中的高频问题与排查方法机器视觉检测项目上了产线之后真正的挑战才刚刚开始。这里我整理了一份高频问题速查表这些问题几乎每个项目都会遇到至少一两个。现象可能原因排查思路图像模糊镜头对焦不准、相机安装松动、快门时间过长产品移动先用静态目标重新对焦确认没有松动再检查快门时间是否小于产品移动速度的像素位移图像亮度不稳定光源老化/电压波动、环境光干扰用光源控制器检查亮度输出增加遮光罩隔绝环境光同一个产品时好时坏产品摆放位置变化、来料一致性差、触发时机偏移固定机械定位夹具调整触发传感器的位置和延迟误判率突然升高产品表面状态变化氧化、油污、光源污染灰尘查看NG图像存档追溯是哪类缺陷误判分别处理通信时好时坏接地不良、线缆干扰、PLC程序问题检查屏蔽和接地单独走线用示波器看信号波形处理超时导致漏拍算法耗时波动、CPU占用高、内存累积优化算法加长时间统计监控排查内存泄漏表格里列的是诊断思路但我在实际工作中的体会是现场很多问题的根源是“不够干净”。灰尘落在镜头上、落在光源上、落在产品上都会让系统莫名奇妙出问题。所以我有一个铁律视觉检测系统在产线上运行时必须配一套防尘措施镜头要装防护罩光源要定期清洁。5.1 硬件层面的三个排查要点硬件问题排查我习惯按“从物理到电学”的顺序来。首先检查物理固定相机支架有没有松动底座有没有被撞过光源角度有没有因为振动改变这些问题不需要仪器目测加手动轻推就能排查。然后是光学链路镜头是不是脏了光源是不是有衰减照明区域有没有被异物遮挡最简单的方法是拍一张白纸或标准标定板跟初始安装时的图像对比一眼就能看出差异。再然后是电气和触发链路触发信号稳不稳电源有没有纹波我用过一个办法在PLC侧把触发信号输出频率降低看相机是否能稳定采图如果稳定的话至少说明相机和采图链路正常工作问题大概率出在触发信号或时序上。5.2 算法层面的两个高频“坑”第一个坑是参数写死导致的漂移。很多人在算法里直接写了固定的灰度阈值比如大于120就算缺陷。但现场光照会有缓慢变化比如光源老化、电压波动、天气变化影响环境光固定阈值就会逐渐失效。解决方法是做动态阈值或者周期性自动校正让算法适应光照波动。第二个坑是没做图像质量自检。系统运行了几个月光源衰减或者镜头脏污图像质量悄悄变差但没有人发现直到漏检被下游客户投诉。我现在每个项目都会加一个图像质量自检模块每拍一张图自动统计图像的平均灰度、对比度、清晰度指标超出正常范围就报警。这样能在问题扩大之前触发维护提醒。6. 关于投入和效益硬性的判断标准与软性的回报最后聊点不那么“技术”但很现实的话题做一套机器视觉检测到底能带来什么回报直接效益很好算。以换向器检测项目为例原来人工目检需要两个工人倒班每人每天能检约2000个人工成本每年大概十几万视觉检测系统一次性投入设备加调试在二三十万左右每年维护成本几千块还有部分产线节拍提升带来的效率收益——这些数据拿出来老板才会觉得投资值得。但机器视觉检测项目的回报还有两块很多人忽略了。第一块是可追溯性。系统每次检测都留存图像和数据一旦出了质量问题可以直接回溯到具体产品、具体缺陷类型这对汽车、医疗、电子这些有严格质量追溯需求的行业来说价值比省几个人工费高得多。第二块是数据驱动改进。视觉检测积累的数据能帮你分析产线上的缺陷频次、趋势、主要异常类型反过来指导工艺改进。这些优势人工目检完全做不到。我自己做这类项目的体感是机器视觉检测的回报曲线是“先低后高”的——刚上线那几个月要磨合、要调误判率效果甚至不如熟练的老质检员但只要把系统稳定住它的一致性、速度和持续在线能力很快会超过人工极限。这种长期回报往往被短期的“调不好”“误判多”给掩盖了所以做项目时要做好心理预期别因为前两周的阵痛就否定整条路线。另外说说我踩过的最深的一个坑过度定制。第一次做视觉项目时我为某一种特定产品把光源、算法、参数全定制化结果客户换了一个型号的产品整套系统基本作废。后来再做项目我都会预留一定的“通用性”——光源可调、算法模块化、参数可配置不同型号切换时只需改配置文件不用改代码和结构。这套思路让我在后续项目里省下了大量维护成本。机器视觉检测这条路的门槛其实不在某一点上而是需要把光学、硬件、算法、机械、电气、产线工艺这些环节串起来。每个环节都不难难的是你能不能在出问题时准确定位到底是哪一环出了问题。多攒几个项目多踩几轮坑你自然就会有那种“看一眼图像就大概知道问题出在哪”的直觉。这种直觉就是经验最值钱的部分。
返回列表