练完三学期机械设计实训,学生做机器视觉尺寸外观一体检测算法模型时总拆成两套系统?

上周三的实训课,我刚把第三单元的机器视觉基础内容讲完,留了个随堂作业:给合作车间送来的那批铝制端盖做全项检测方案。

收作业的时候我愣了。

近六成学生交上来的方案,是两套完全独立的流程:一套跑边缘拟合算法测外径、孔距、端平面的跳动量,另一套跑缺陷分割算法找表面的划痕、毛刺、加工残留。两个流程从图像采集开始,就各算各的,连代码仓库都是分开建的。

我盯着投影上的两张推理流程图,半天没说话。

为什么学生总爱拆成两套系统?

其实真不是学生不动脑子。

从大一开始学机械设计的实训,我们的知识点从来都是拆碎了教的:讲尺寸测量,就专门练游标卡尺、千分尺,后来过渡到机器视觉的边缘拟合、亚像素精度计算;讲外观检测,就专门练零件的表面缺陷识别、瑕疵分类。从来没有哪个案例,会把这俩事放在同一个流程里讲。学生的思维定式就是:测尺寸是一类事,查外观是另一类事,碰到综合检测的需求,第一反应就是把之前学过的两个模块拼起来。

不过话说回来,之前的教材也是这么编的,我刚工作的时候,跟着老工程师做项目,也是先把尺寸检测做完,再单独搭外观检测的模块,谁也没想着把俩事凑一块做。

我之前也默认这个逻辑是对的。总觉得先把单个知识点练熟,再谈整合,学生接受起来没负担。直到上个月去汽配厂的现场看设备,人家原来用的就是两套独立的检测系统,两个工控机并排摆在工位上,拍一次零件要转两个角度,跑完全项检测要1.2秒,碰到结果矛盾的时候,还要专门安排个工人手动复核。后来他们换了一体的检测算法模型,单工控机就能跑,节拍压到0.4秒,因为结果打架导致的误判率直接降了一大截。

我站在那个工位旁边看了十分钟,突然觉得之前的教学逻辑走偏了。

铝制端盖机器视觉检测工位实拍图
铝制端盖机器视觉检测工位实拍图

我们教的是能落地的机械设计配套检测方案,不是考完试就扔的孤立知识点。学生如果毕业去工厂做设备集成,上来就给人搭两套独立的检测系统,占地方、费钱、出了问题排查半天,那这课上得就太没意思了。

一体模型的设计取舍,根本不是“把两个模型粘在一起”

很多人一提一体检测算法模型,第一反应就是找两个开源模型,把权重拼一拼,特征层共享一下就完事。哪有这么简单。

就拿这批铝端盖来说,做尺寸检测的时候,我们需要的是亚像素级的边缘定位精度,对光照的微小变化特别敏感——哪怕相机进光量飘了0.5个档位,拟合出来的外径尺寸可能就超了公差范围。但做外观缺陷检测的时候,我们需要的是对低对比度的小瑕疵足够敏感,哪怕边缘有点轻微的噪点,只要能把0.1mm的划痕抠出来就算达标。这两个需求,在特征提取阶段的权重是完全拧着的。

之前有个学生做方案,把两个开源模型硬拼在一起,跑出来的结果特别离谱:尺寸检测把正常的边缘噪点当成了尺寸偏差,判了好几个零件超差;外观检测又把真正的边缘毛刺当成了正常边缘纹理,直接漏检。他在实验室蹲了三个晚上才想明白,共享特征层的时候,不能让两个分支的权重互相打架——尺寸分支的权重要往边缘精度那边偏,外观分支的权重要往缺陷敏感度那边偏,中间还要加个统一的标定坐标系,保证两个分支算出来的位置,和零件的实际物理位置对得上。

机器视觉尺寸外观一体检测算法模型双分支结构示意图
机器视觉尺寸外观一体检测算法模型双分支结构示意图

我现在给学生改作业,不会上来就否定他们的“双系统”方案,而是先让他们算两笔账:第一,你现在的两套流程,图像去噪、ROI定位、相机标定的代码是不是写了两遍?跑一次的显存占用是多少?第二,如果两个分支的结果打架——比如尺寸分支说某个位置的边缘凸起超差,外观分支说那个位置没有缺陷,你打算花多久排查出问题在哪?

上周有个学生算完账,自己都笑了。他之前写的两套流程,光是相机标定的参数就存了两个文件,上次换镜头的时候,只更新了尺寸检测那边的参数,外观检测的参数没改,跑出来的划痕位置偏了2毫米,查了俩小时才找到原因。

我现在调整了实训的考核要求:所有检测方案必须用共享主干的双分支结构,前面的图像预处理、边缘增强、ROI定位这些通用计算,只跑一次,输出的特征图分别给尺寸计算分支和外观检测分支用,所有的标定参数、坐标系全部统一。学生跑通第一版一体检测流程那天,整个实验室都飘着可乐的味道。

教这个模型,别一开始就上复杂网络

现在的学生,一提到做算法,第一反应就是找最复杂的开源大模型,什么YOLO的最新版本,什么分割大模型,拉下来改两行参数就想跑。结果对着几百行的代码,连输入输出的维度都搞不懂,坐那盯着屏幕半小时,最后说算力不够,跑不起来。

真的没必要。

就拿我们实训用的这批铝端盖,总共也就攒了三百多张样本,根本不需要什么复杂的深度网络。最开始练的时候,甚至可以不用深度学习:前面的图像去噪、边缘提取全用传统视觉算法,把提取到的边缘轮廓,一边接霍夫变换算尺寸参数,另一边和标准模板做差分找外观缺陷,一样能实现一体检测的效果。

我之前上课的时候,总觉得要把最先进的技术放进去,结果学生对着复杂的开源代码,头埋得低低的,根本不敢提问。后来我把整个流程拆成三个小模块:预处理模块、尺寸计算模块、外观对比模块,每个模块的代码控制在二十行以内,学生一节课就能把整个流程跑通。那天下课的时候,还有个学生追着我问,能不能在预处理模块加个自动光照补偿的功能,减少车间光照变化对检测精度的影响。

上周翻之前的老教案,发现我之前写的实训目标里,从来没提过“一体检测”这四个字。总觉得把知识点拆成小块,学生学起来轻松。现在才反应过来,我们教机械设计方向的学生学机器视觉,根本不是要他们去当专职的算法工程师,而是要他们能搭出来不折腾、能落地的检测系统。要是学生学了一学期,碰到综合检测的需求,第一反应还是拆成两套独立的系统,那我们之前花那么多课时讲的视觉基础,就真的成了纸上谈兵的知识点了。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:练完三学期机械设计实训,学生做机器视觉尺寸外观一体检测算法模型时总拆成两套系统?
文章链接:https://www.yqhljx.com/list_9/5060.html