大模型视觉 · 外观质检 / 可行性方案
Φ34.46 mm 合金圆环、正反两面、360° 外圆边缘—— 用穹顶漫射光把磕边化成剪影问题,再把圆周展开成一条半径曲线,判据从「像不像缺陷」变成「少了多少毫米」。
这是一件外径 34.46 mm、内径 20.65 mm 的合金圆环,要检的是正反两面外圆边缘上的磕碰缺口。项目当前只回答一个问题:这件事能不能用机器视觉做。节拍、预算与验收指标都还没锁定,最小检出尺寸也没定。这种阶段最容易犯的错是先承诺一个识别率——但识别率是标准的函数,标准没定,数字就没有意义。可行性该论证的是另外三件事:缺陷在成像上是否稳定可见、可见到什么尺度、以及标准定下来之后系统改不改得动。
01/10现场问题
磕边的形态其实很单一:搬运或装夹时磕到外圆棱线,掉下一小块材料,留下一个缺口。难点不在形态,在三个附加条件。其一,它出现在圆周的任意角度,没有固定检测窗口,整整 108 mm 的外圆都要覆盖。其二,工件是合金件,端面有油污和方向性反光,普通照明下反光斑和正常车削纹理都可能被误判成异常。其三,正反两面都要检,一次成像只能看见一面。
更麻烦的是标准的缺位。「多小的磕边算 NG」这件事,客户还没给出判据。传统 AOI 的做法是先按一个假定档位收样本、训模型、调阈值,等标准明确了再重来一轮——这一轮返工的成本,往往比第一轮还高。所以本方案从一开始就把最小检出档位当作一个待填的参数来设计,而不是当作一个已知条件。
可行性阶段要交付的不是识别率,而是一条可量化的检出下限,以及标准变化时只改一个数字的能力。
02/10磕边量化
手上有一批项目实际跑出来的检测结果图,模型已经把缺口用框标了出来(图 01 右下为未修改的原始输出)。但框只说明「这里有」,没说明「有多大」。既然工件外径 34.46 mm 是已知量,比例尺就可以自己反算:用亮场轮廓拟合外圆,得到半径的像素值,再与真实外径相除,就得到这批图的 mm/pixel。拟合时剔除最内侧 12 % 的轮廓点,避免缺口本身把基准圆往里拉。
标定之后,每一处缺口都可以换算成两个物理量:相对拟合圆的最大径向内缩(深度),以及下凹超过半深的角度跨度折成弧长。七处磕边的结果落在 0.046 – 0.244 mm 与 0.23 – 0.75 mm 两个区间。
| 样本 | 角位置 | 径向深 | 缺损弧长 | 该图基线抖动 P95 |
|---|---|---|---|---|
| A | 269° | 0.23 mm | 0.45 mm | 0.015 mm |
| B | 343° | 0.24 mm | 0.41 mm | 0.017 mm |
| C | 219° | 0.14 mm | 0.75 mm | 0.022 mm |
| D | 16° | 0.14 mm | 0.23 mm | 0.018 mm |
| E | 104° | 0.11 mm | 0.34 mm | 0.013 mm |
| F | 291° | 0.18 mm | 0.45 mm | 0.027 mm |
| G | 266° | 0.05 mm | 0.34 mm | 0.025 mm |
两组对照值得注意。样本 C 与 D 深度几乎相同,弧长却差三倍多——深度与弧长并不成正比,只给一个面积或一个框尺寸,会把「长而浅」和「窄而深」混为一谈,而这两者在工艺上通常对应不同的判定。样本 G 是现有素材里最浅的一档,0.05 mm 大约只有该图基线抖动的两倍,已经接近这批图的量测下限。
需要说明的是,这批效果图短边为 1024 像素,比例尺约 0.041 mm/pixel,只有原始成像的一半左右。也就是说,上表是在降采样图像上量到的量级;原始分辨率下的实际余量比这更宽。
03/10成像口径
现有配置是 500 万像素黑白相机、12 – 36 mm 变焦工业镜头、穹顶光源,工作距离 80 – 120 mm,工件静止拍摄。按 2448 × 2048 计算,要覆盖 Φ34.46 mm 并留出装夹余量,单帧视场取约 42 mm,对短边 2048 像素即 0.020 mm/pixel;这个视场对应的焦距落在 12 – 18 mm,正好在现有变焦范围内。
由此可以核出两个数。其一,外圆周长 π × 34.46 ≈ 108.3 mm,摊到 0.020 mm/pixel 上是约 5300 像素——整条待检边缘一帧就能覆盖,不需要分段拍摄,也不需要转台。这一点和大幅面工件的检测方案有本质区别:没有分段,就没有段间接缝、没有重复定位误差、也没有几十帧的曝光节拍。其二,一处 0.45 mm 弧长、0.23 mm 深的缺口,在原始分辨率下约占 22 × 11 像素——够分割贴住轮廓,但不宽裕,所以这条采样线是硬约束而不是余量。
穹顶光的作用则要单独说。大角度漫射照明让合金端面整体过曝成一片白,油污、车削纹理和方向性反光被一并压平;背景保持暗场,外圆边缘就成了一条高对比度的黑白分界。这一步把问题的性质换掉了:磕边不再是一个「表面看起来异常」的纹理问题,而是一个「剪影缺了一块」的几何问题。几何判据比纹理判据稳定得多,也更容易对上图纸公差。
变焦镜头是这套配置里唯一的风险点。12 – 36 mm 变焦便于调试,但焦距或光圈一旦被误碰,比例尺就变了,所有毫米判据随之失效。上线前必须锁死,或换成同焦段定焦。镜头的具体型号以实物铭牌为准。
04/10基准与工装
「镜头光轴中心 = 穹顶光源中心 = 工件中心」是这套光路的基本要求。但把它拆开看,三种偏差对结果的影响完全不同,而工装只需要管住其中一种。
偏心可以被算法吸收。工件横向偏离光轴时,平行于像面的圆在投影下仍然是圆,只是位置变了。基准圆是从本图自身拟合出来的,圆心跟着一起平移,半径曲线不受影响。图 01 与图 03 用的那几张图里,工件其实都没有落在画幅正中,量测照样成立。偏心真正吃掉的是视场余量——偏得太多,外圆会被画幅切掉。
高度波动同样可以被吸收。工件端面高度变化会改变成像放大倍率,工作距离 100 mm 时每变化 1 mm 约带来 1 % 的尺度漂移,折成半径就是 0.17 mm 量级,比任何一处磕边都大。但只要判据定义成「相对本图拟合圆的径向内缩」,整体缩放就被同步抵消。反过来说,如果改成绝对直径判据,这 0.17 mm 会直接砸在结果上——这是判据形式选择带来的实际差别。
只有端面倾斜必须靠工装。工件端面相对光轴倾斜 α 时,外圆投影成椭圆,长短轴之差约为 D(1 − cos α)。代入 D = 34.46 mm:
| 端面倾斜 | 椭圆度(长短轴之差) | 与磕边的关系 |
|---|---|---|
| 2° | 0.010 mm | 低于基线抖动,可忽略 |
| 3° | 0.024 mm | 与基线抖动同量级 |
| 5° | 0.066 mm | 已超过最浅一档磕边(0.05 mm) |
| 8° | 0.168 mm | 接近最深一档磕边(0.24 mm) |
所以定位工装的核心指标不是同心度,而是端面倾斜,控制在 3° 以内比较稳妥。即便机械上难以保证,也还有一层退路:椭圆度是沿圆周缓慢变化的二阶谐波,而磕边是局部尖峰,两者在展开曲线上形态完全不同,可以改用椭圆拟合或扣除低阶谐波把它压掉——但这属于余量,不该当成第一道防线。
那么三中心共线到底管什么?管照明的对称性。穹顶光的亮度分布绕光源轴对称,工件一旦偏心,圆周不同方位接收到的入射条件就不一致,边缘明暗过渡的宽度随方位漂移,二值化的阈值位置跟着漂——这部分误差是算法补不掉的。现有素材里恰好有一个佐证:圆周亮度最不均匀、下缘露出车削纹理的那张(样本 F),基线抖动是全组最大的 0.027 mm,约为最好一张(样本 E,0.013 mm)的两倍。
几何对中可以在算法里补,照明对称补不了;工装的验收项应该写成端面倾斜与照明均匀性,而不是笼统的「摆正」。
05/10轮廓判据
磕边在圆周上的位置随机,这件事看起来是麻烦,其实有一个很干净的处理方式:先拟合外圆定出圆心与基准半径,再按角度逐点取轮廓的半径,把整圈展开成一条 r(θ) 曲线。展开之后,位置随机性就消失了——整圈是同一条判据,缺口表现为曲线上的一段下凹。
r(θ) 曲线:绿色虚线是拟合半径 17.23 mm,浅绿带为实测基线抖动 ± 0.02 mm,橙色虚线为示意判定档位(内缩 0.10 mm)。269° 处的下凹即被标出的那处缺口。这条曲线一次解决了三件事。第一,判定量变成物理量:径向内缩多少毫米、下凹跨多少弧长,两个数都能直接对上图纸公差,不需要再解释「模型置信度 0.87」是什么意思。第二,信噪比可以算——未缺损圆周的残差 p95 就是这套光路的噪声底,本图约 0.015 mm,而缺口深 0.23 mm,相差约 15 倍;即使最浅的一档 0.05 mm,也还有约 2 倍。「能不能检出 0.1 mm」于是从一个感觉问题变成一次比值计算。第三,档位可调:最小检出尺寸定下来,只是把橙色判定线往上或往下挪一格,模型完全不动。
需要强调的是,这条曲线并不取代分割模型。展开给出的是稳定的量化口径,模型负责在复杂背景下把「哪一段属于缺口」判出来——包括把毛刺、夹持痕迹、工装遮挡与真正的磕碰区分开。两者是判据与感知的分工,不是替代关系。
06/10正反两面
一次成像只能看见一面,正反面各一次是绕不开的。节拍与预算都未确定,两种配置就同时保留:方案 A 用一套相机、镜头和光源分时拍两面,中间加一次翻面;方案 B 用两套光路正反面同时成像,省掉翻面动作。
值得指出的是,这两种配置对软件是同一套。无论一台还是两台,进入状态机的都是「正面结论」和「反面结论」两个事件,按同一个工件编号汇合,任一面命中磕边即整件 NG。方案 A 比方案 B 多一个「已翻面」状态,方案 B 比方案 A 多一路并行采图——换配置改的是流程编排,不是检测口径。
这带来一条实际的推进路径:先按方案 A 上线,把最小检出档位、样本库和判定阈值跑通;等节拍要求明确后再扩到方案 B,前期的样本、标注和阈值全部沿用,需要重做的只有第二套光路的标定。
07/10张量流
视觉智能体部署在边缘侧:配置、推理、展示与结果输出在同一套软件里完成,零代码拖拉编排——从算子库拖出节点、按数据流连接。本项目的流很短:正反面各一条支路,采图 → 预处理(外圆定位与极坐标展开)→ 语义分割 → 事件探测,两路事件汇入同一个状态机,之后接存图与串口设备。
双击节点进入子编辑器:语义分割 → 标注工具,事件探测 → GPU 事件编排器,状态机 → 状态图编辑器。这条流的结构与工件规格无关,换一种圆环只需改标定值、样本与阈值,流本身可以直接复用到同类工位。
08/10语义分割
磕边的边界不规则,缺口可能是尖 V、可能是长弧浅缺,用框回归很难贴合,而后续的深度与弧长换算又完全依赖轮廓精度。方案因此走像素级语义分割:在标注工具里用少量现场图定义「外圆磕边」这一个类别,产品侧按 1–10 张样本图、数分钟配置 起步,输出掩膜后再换算成毫米。
类别只有一个,反而让样本策略更清楚:要采的不是「更多缺陷种类」,而是覆盖检出边界的样本谱——明显磕边、临界磕边、正常件,以及容易被误判的干扰项(夹持痕迹、毛刺、油污残留、工装遮挡)。临界样本尤其关键,它直接决定了最小检出档位定在哪里才既不漏检也不虚报。训练与推理都在边缘 GPU 本地完成,工位画面不出厂。
09/10事件与状态机
分割只负责看见像素,业务要的是可判定事件。事件在 GPU 事件编排器里搭:由「物体存在」确认掩膜落在外圆环带上,再由「宽度检测」取相对拟合圆的径向内缩与毫米阈值比较,两者经「与」汇合。缺损弧长是同一条掩膜上的第二个量,单独成一个事件;缺口数量再成一个。
E4 圆度异常用同一条轮廓监视工装——整周缓变的椭圆度会先报工装校正,而不是被误判成磕边。把阈值放在事件层而不是模型里,是整套结构的支点,对这个项目尤其重要:最小检出档位本来就还没定。系统可以先按一个初始档位上线跑数据,等客户标准明确,改的是配方里的毫米数,样本、标注和模型都不动。同理,允许的缺损弧长上限、单件允许的缺口数量,也都是配方里的数字。
状态机再把这些事件编成现场流程。工件到位后进入正面检测,正面合格才触发翻面、进入反面检测,两面均合格才放行计数;任一面命中即转 NG,存图时把角度位置、径向深度与弧长一并记录下来。这里有一处省节拍的细节:正面已经判 NG 的工件不必翻面,直接结算,翻面动作只发生在正面合格的件上。
E1–E3 在正面命中时走虚线直接转 S5,跳过翻面;E4 圆度异常不判工件,而是自回 S1 并触发工装校正提示,避免把装夹问题算进不良率。机器给出的不是「这张图看起来像不像」,而是「这一件在当前配方下是否允许过站」——带角度、带毫米、可复核。
10部署闭环
整套系统落在五层结构上:相机与穹顶光源负责采集;千兆工业以太网在内网传输,图像不出厂区;边缘 GPU 完成分割推理、尺寸换算、事件判定与状态机流转;前端提供实时画面、NG 报警、人工复核与按时间/件号/角度检索的追溯;配方统一管理相机参数、标定值、模型版本与阈值。原图、掩膜、结果图与结论按件归档,既是追溯材料,也是下一轮优化的样本来源。
对这个尚未锁定标准的项目,归档还有一层额外价值:系统跑起来之后,每一件的深度与弧长都会被记下来,几周之后就有了一张真实的尺寸分布。最小检出档位可以定在数据上,而不是定在感觉上。
下表只定设备类别与配置方向;具体型号在实物复核与节拍确定后冻结。
| # | 设备 | 配置方向 | 用途 |
|---|---|---|---|
| 1 | 工业相机 | 500 万像素黑白、外触发 | 采集正反面外圆图像,对应 ≈ 0.020 mm/pixel |
| 2 | 工业镜头 | 12 – 36 mm 变焦,上线前锁焦或换定焦 | 匹配 ≈ 42 mm 单帧视场,WD 80 – 120 mm |
| 3 | 穹顶光源 | 顶部开孔按镜头最大包络复核,初步 Φ50 – 55 mm | 大角度漫射,压平油污与方向性反光 |
| 4 | 定位工装 | 同心定位 + 端面支撑,端面倾斜控制在 3° 以内 | 守住照明对称性与重复摆放 |
| 5 | 翻面机构 / 第二套光路 | 按方案 A 或方案 B 选型 | 覆盖反面外圆 |
| 6 | 到位传感器 / PLC 接口 | 工业开关量或通讯接口 | 触发采图、接收 OK/NG、控制过站 |
| 7 | 边缘计算单元 | 满足单件双面推理与数据保存 | 分割推理、尺寸换算、界面与归档 |
| 8 | HMI 与声光报警 | 工业显示器、三色灯、蜂鸣器 | 现场显示、报警、复核与操作 |
顺序上有一处与常规不同:标准对齐排在样本采集之前。判据没定就开始标注,标注规范会随判据一起返工。
| 阶段 | 周期 | 主要工作 | 输出物 |
|---|---|---|---|
| 标准对齐 | 1 周 | 明确最小检出档位、允许缺损范围、正反面判定口径与复核规则 | 验收判据表 · 标注规范 |
| 成像固化 | 1 周 | 锁定焦距光圈与曝光,工装同心与倾斜复核,用标准件标定 mm/pixel | 成像标定记录 · 工装验收项 |
| 样本与标注 | 1–2 周 | 采集正常、明显磕边、临界磕边与干扰样本,按统一标准标注 | 样本库 · 标注一致性核对 |
| 试点部署 | 1–2 周 | 配方、事件阈值与状态机联调,正反面结论汇合与 PLC 对接 | 上线系统 · 配置记录 |
| 试运行优化 | 2 周 | 按误报/漏报样本调整阈值与模型,用实测分布回定档位 | 优化报告 · 尺寸分布 · 运维手册 |
适用边界也说清楚。本方案面向轮廓型缺陷,即在外圆剪影上造成缺失的磕碰缺口;如果验收范围还包括端面划伤、麻点、色差这类纹理型缺陷,穹顶光把端面压成白场的做法就不再适用,需要另配低角度或环形光作为第二套配方,属于另一条技术路径。工件高度尚未确认,会影响景深与工装设计;镜头实际型号与外径需按实物复核,顶部开孔尺寸随之确定。文中所有量测值取自降采样的效果图,用于确定量级;最小检出档位与 OK/NG 界限,以原始分辨率图像和客户验收标准为准。
Blue
工业视觉算法工程师 · 本文作者
计算机视觉方向,长期做光学成像与缺陷分割的工程落地。习惯先把打光与采样口径定住,再谈模型;近年主要用少样本视觉大模型替代逐类调参的传统 AOI,参与过 3C 结构件、家电五金、锂电与汽车零部件的产线检测与 SOP 过程监控部署,也负责现场标定、配方管理与上线后的持续迭代。
点击任意处关闭