大模型视觉 · 外观质检 / 可行性方案

家电行业:圆环外圆磕边检测可行性落地实践

Φ34.46 mm 合金圆环、正反两面、360° 外圆边缘—— 用穹顶漫射光把磕边化成剪影问题,再把圆周展开成一条半径曲线,判据从「像不像缺陷」变成「少了多少毫米」

本篇要点

七处圆环外圆磕边的特写与实测径向深度、缺损弧长
图 01磕边样例与实测尺寸。特写裁自项目实际检测结果图,每张以缺口为中心、青色指示线固定落在画面正中;数值为按外径标定后的量测结果,用于确定量级,正式档位以原始分辨率图像和验收标准复核为准。

这是一件外径 34.46 mm、内径 20.65 mm 的合金圆环,要检的是正反两面外圆边缘上的磕碰缺口。项目当前只回答一个问题:这件事能不能用机器视觉做。节拍、预算与验收指标都还没锁定,最小检出尺寸也没定。这种阶段最容易犯的错是先承诺一个识别率——但识别率是标准的函数,标准没定,数字就没有意义。可行性该论证的是另外三件事:缺陷在成像上是否稳定可见、可见到什么尺度、以及标准定下来之后系统改不改得动。

01/10现场问题

一个随机出现在 360° 上的局部缺口

磕边的形态其实很单一:搬运或装夹时磕到外圆棱线,掉下一小块材料,留下一个缺口。难点不在形态,在三个附加条件。其一,它出现在圆周的任意角度,没有固定检测窗口,整整 108 mm 的外圆都要覆盖。其二,工件是合金件,端面有油污和方向性反光,普通照明下反光斑和正常车削纹理都可能被误判成异常。其三,正反两面都要检,一次成像只能看见一面。

更麻烦的是标准的缺位。「多小的磕边算 NG」这件事,客户还没给出判据。传统 AOI 的做法是先按一个假定档位收样本、训模型、调阈值,等标准明确了再重来一轮——这一轮返工的成本,往往比第一轮还高。所以本方案从一开始就把最小检出档位当作一个待填的参数来设计,而不是当作一个已知条件。

可行性阶段要交付的不是识别率,而是一条可量化的检出下限,以及标准变化时只改一个数字的能力。

02/10磕边量化

先把「多大算大」量出来

手上有一批项目实际跑出来的检测结果图,模型已经把缺口用框标了出来(图 01 右下为未修改的原始输出)。但框只说明「这里有」,没说明「有多大」。既然工件外径 34.46 mm 是已知量,比例尺就可以自己反算:用亮场轮廓拟合外圆,得到半径的像素值,再与真实外径相除,就得到这批图的 mm/pixel。拟合时剔除最内侧 12 % 的轮廓点,避免缺口本身把基准圆往里拉。

标定之后,每一处缺口都可以换算成两个物理量:相对拟合圆的最大径向内缩(深度),以及下凹超过半深的角度跨度折成弧长。七处磕边的结果落在 0.046 – 0.244 mm 与 0.23 – 0.75 mm 两个区间。

样本角位置径向深缺损弧长该图基线抖动 P95
A269°0.23 mm0.45 mm0.015 mm
B343°0.24 mm0.41 mm0.017 mm
C219°0.14 mm0.75 mm0.022 mm
D16°0.14 mm0.23 mm0.018 mm
E104°0.11 mm0.34 mm0.013 mm
F291°0.18 mm0.45 mm0.027 mm
G266°0.05 mm0.34 mm0.025 mm

两组对照值得注意。样本 C 与 D 深度几乎相同,弧长却差三倍多——深度与弧长并不成正比,只给一个面积或一个框尺寸,会把「长而浅」和「窄而深」混为一谈,而这两者在工艺上通常对应不同的判定。样本 G 是现有素材里最浅的一档,0.05 mm 大约只有该图基线抖动的两倍,已经接近这批图的量测下限。

需要说明的是,这批效果图短边为 1024 像素,比例尺约 0.041 mm/pixel,只有原始成像的一半左右。也就是说,上表是在降采样图像上量到的量级;原始分辨率下的实际余量比这更宽。

03/10成像口径

0.020 mm/pixel,整圈一帧拍完

现有配置是 500 万像素黑白相机、12 – 36 mm 变焦工业镜头、穹顶光源,工作距离 80 – 120 mm,工件静止拍摄。按 2448 × 2048 计算,要覆盖 Φ34.46 mm 并留出装夹余量,单帧视场取约 42 mm,对短边 2048 像素即 0.020 mm/pixel;这个视场对应的焦距落在 12 – 18 mm,正好在现有变焦范围内。

成像与打光示意:黑白相机、变焦镜头、穹顶漫射光源与三中心共线的共同中心轴
图 02成像与打光示意。工件与光源比例为示意画法;顶部开孔尺寸需按镜头实际最大包络(含锁紧螺钉)加装配间隙复核,初步建议 Φ50 – 55 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:

端面倾斜椭圆度(长短轴之差)与磕边的关系
0.010 mm低于基线抖动,可忽略
0.024 mm与基线抖动同量级
0.066 mm已超过最浅一档磕边(0.05 mm)
0.168 mm接近最深一档磕边(0.24 mm)

所以定位工装的核心指标不是同心度,而是端面倾斜,控制在 3° 以内比较稳妥。即便机械上难以保证,也还有一层退路:椭圆度是沿圆周缓慢变化的二阶谐波,而磕边是局部尖峰,两者在展开曲线上形态完全不同,可以改用椭圆拟合或扣除低阶谐波把它压掉——但这属于余量,不该当成第一道防线。

那么三中心共线到底管什么?管照明的对称性。穹顶光的亮度分布绕光源轴对称,工件一旦偏心,圆周不同方位接收到的入射条件就不一致,边缘明暗过渡的宽度随方位漂移,二值化的阈值位置跟着漂——这部分误差是算法补不掉的。现有素材里恰好有一个佐证:圆周亮度最不均匀、下缘露出车削纹理的那张(样本 F),基线抖动是全组最大的 0.027 mm,约为最好一张(样本 E,0.013 mm)的两倍。

几何对中可以在算法里补,照明对称补不了;工装的验收项应该写成端面倾斜与照明均匀性,而不是笼统的「摆正」。

05/10轮廓判据

把圆周展开成一条线

磕边在圆周上的位置随机,这件事看起来是麻烦,其实有一个很干净的处理方式:先拟合外圆定出圆心与基准半径,再按角度逐点取轮廓的半径,把整圈展开成一条 r(θ) 曲线。展开之后,位置随机性就消失了——整圈是同一条判据,缺口表现为曲线上的一段下凹。

拟合外圆与按角度展开的半径曲线,缺口表现为一段明显下凹
图 03轮廓展开与判定。左侧为拟合出的基准圆与圆心,右侧为同一张图的 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 用两套光路正反面同时成像,省掉翻面动作。

正反面检测的两种配置:单相机分时翻面与双相机并行拍摄的对比
图 04正反面两种配置。方案 A 硬件少、两面天然共用同一条比例尺;方案 B 免翻面、节拍快,但两套光路要各自标定、各自守住三中心共线。

值得指出的是,这两种配置对软件是同一套。无论一台还是两台,进入状态机的都是「正面结论」和「反面结论」两个事件,按同一个工件编号汇合,任一面命中磕边即整件 NG。方案 A 比方案 B 多一个「已翻面」状态,方案 B 比方案 A 多一路并行采图——换配置改的是流程编排,不是检测口径。

这带来一条实际的推进路径:先按方案 A 上线,把最小检出档位、样本库和判定阈值跑通;等节拍要求明确后再扩到方案 B,前期的样本、标注和阈值全部沿用,需要重做的只有第二套光路的标定。

07/10张量流

两条支路,汇进同一条工作流

视觉智能体部署在边缘侧:配置、推理、展示与结果输出在同一套软件里完成,零代码拖拉编排——从算子库拖出节点、按数据流连接。本项目的流很短:正反面各一条支路,采图 → 预处理(外圆定位与极坐标展开)→ 语义分割 → 事件探测,两路事件汇入同一个状态机,之后接存图与串口设备。

张量流编辑器:正反面两条支路汇入状态机,翻面机构挂在状态机输出侧
界面 01张量流画布。翻面机构挂在状态机的输出侧而不是采图之前——因为翻面是被判定结果驱动的动作;方案 B 直接停用该节点,其余部分不动。光源控制算子在本流程中未启用:穹顶光常亮,不需要分区切换。

双击节点进入子编辑器:语义分割 → 标注工具,事件探测 → GPU 事件编排器,状态机 → 状态图编辑器。这条流的结构与工件规格无关,换一种圆环只需改标定值、样本与阈值,流本身可以直接复用到同类工位。

08/10语义分割

像素级掩膜,用 1–10 张样本把新形态定下来

磕边的边界不规则,缺口可能是尖 V、可能是长弧浅缺,用框回归很难贴合,而后续的深度与弧长换算又完全依赖轮廓精度。方案因此走像素级语义分割:在标注工具里用少量现场图定义「外圆磕边」这一个类别,产品侧按 1–10 张样本图、数分钟配置 起步,输出掩膜后再换算成毫米。

语义分割标注界面:左侧人工标注、右侧模型检测结果,类别为外圆磕边
界面 02语义分割标注工具。左侧人工标注、右侧模型检测结果,同一帧对照;类别只有「NG1 外圆磕边」一个。底部形成保存标注 → 迁移 → 检测的闭环,便于现场持续补样本。

类别只有一个,反而让样本策略更清楚:要采的不是「更多缺陷种类」,而是覆盖检出边界的样本谱——明显磕边、临界磕边、正常件,以及容易被误判的干扰项(夹持痕迹、毛刺、油污残留、工装遮挡)。临界样本尤其关键,它直接决定了最小检出档位定在哪里才既不漏检也不虚报。训练与推理都在边缘 GPU 本地完成,工位画面不出厂。

09/10事件与状态机

把掩膜变成「深度超 0.10 mm」,再汇成一件的结论

分割只负责看见像素,业务要的是可判定事件。事件在 GPU 事件编排器里搭:由「物体存在」确认掩膜落在外圆环带上,再由「宽度检测」取相对拟合圆的径向内缩与毫米阈值比较,两者经「与」汇合。缺损弧长是同一条掩膜上的第二个量,单独成一个事件;缺口数量再成一个。

GPU 事件编排器:磕边深度超限事件由物体存在与宽度检测经与门汇合
界面 03GPU 事件编排器。示例配置「外圆磕边 · 径向深度超限」;右侧事件张量里 E4 圆度异常用同一条轮廓监视工装——整周缓变的椭圆度会先报工装校正,而不是被误判成磕边。

把阈值放在事件层而不是模型里,是整套结构的支点,对这个项目尤其重要:最小检出档位本来就还没定。系统可以先按一个初始档位上线跑数据,等客户标准明确,改的是配方里的毫米数,样本、标注和模型都不动。同理,允许的缺损弧长上限、单件允许的缺口数量,也都是配方里的数字。

状态机再把这些事件编成现场流程。工件到位后进入正面检测,正面合格才触发翻面、进入反面检测,两面均合格才放行计数;任一面命中即转 NG,存图时把角度位置、径向深度与弧长一并记录下来。这里有一处省节拍的细节:正面已经判 NG 的工件不必翻面,直接结算,翻面动作只发生在正面合格的件上。

状态图编辑器:等待、正面检测、待翻面、反面检测、判定合格与判定 NG 的闭环
界面 04状态图编辑器。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边缘计算单元满足单件双面推理与数据保存分割推理、尺寸换算、界面与归档
8HMI 与声光报警工业显示器、三色灯、蜂鸣器现场显示、报警、复核与操作

实施节奏

顺序上有一处与常规不同:标准对齐排在样本采集之前。判据没定就开始标注,标注规范会随判据一起返工。

阶段周期主要工作输出物
标准对齐1 周明确最小检出档位、允许缺损范围、正反面判定口径与复核规则验收判据表 · 标注规范
成像固化1 周锁定焦距光圈与曝光,工装同心与倾斜复核,用标准件标定 mm/pixel成像标定记录 · 工装验收项
样本与标注1–2 周采集正常、明显磕边、临界磕边与干扰样本,按统一标准标注样本库 · 标注一致性核对
试点部署1–2 周配方、事件阈值与状态机联调,正反面结论汇合与 PLC 对接上线系统 · 配置记录
试运行优化2 周按误报/漏报样本调整阈值与模型,用实测分布回定档位优化报告 · 尺寸分布 · 运维手册

适用边界也说清楚。本方案面向轮廓型缺陷,即在外圆剪影上造成缺失的磕碰缺口;如果验收范围还包括端面划伤、麻点、色差这类纹理型缺陷,穹顶光把端面压成白场的做法就不再适用,需要另配低角度或环形光作为第二套配方,属于另一条技术路径。工件高度尚未确认,会影响景深与工装设计;镜头实际型号与外径需按实物复核,顶部开孔尺寸随之确定。文中所有量测值取自降采样的效果图,用于确定量级;最小检出档位与 OK/NG 界限,以原始分辨率图像和客户验收标准为准。

BLUE

Blue

工业视觉算法工程师 · 本文作者

计算机视觉方向,长期做光学成像与缺陷分割的工程落地。习惯先把打光与采样口径定住,再谈模型;近年主要用少样本视觉大模型替代逐类调参的传统 AOI,参与过 3C 结构件、家电五金、锂电与汽车零部件的产线检测与 SOP 过程监控部署,也负责现场标定、配方管理与上线后的持续迭代。