机器视觉尺寸外观一体检测算法:产线落地的踩坑与实践总结

摘要:针对工业产线多工位检测节拍不足的痛点,结合近三年十几条一体检测线的落地经验,聊清楚机器视觉尺寸外观一体检测算法的核心矛盾、常见坑点和可直接复用的落地方案,给做项目的中级工程师做参考。

为什么非要做一体检测?分开做不行吗

去年接了个国内头部手机厂的订单,测中框的长宽公差和表面刮痕、崩边。一开始想的简单,尺寸一次拍,外观再拍一次,两套算法分开跑。

客户要求什么?每分钟出60件成品。

算下来单工位节拍只有一秒。两次检测光上下料加拍照就用了1.2秒,根本达不到要求,节拍卡得要死。

这就是一体检测出来的原因。省工位,省节拍,降成本,对现在的产线来说太重要了。分开做,两个相机两个工位,场地成本翻番,人工维护也麻烦,出了错还不好追溯。

实话讲,只要是精密零件检测,现在客户都直接提一体检测的要求了。

3C手机中框机器视觉一体检测工位布局图
3C手机中框机器视觉一体检测工位布局图

一体检测算法的核心矛盾,90%的人都踩过坑

尺寸检测要什么?低畸变、均匀曝光、亚像素级边缘精度。外观缺陷检测要什么?高对比度、定向打光、突出缺陷边缘反差。两个任务对图像、对算法的要求天生就是矛盾的。

一开始我们图省事,用共享主干网络,一个 backbone 提特征,分两个头分别跑尺寸和外观。本来想着省计算量,速度能提上去,结果训出来的模型什么德行?

尺寸精度偏了两个微米。

外观缺陷的误检率比单独做高了8个百分点。

那阵子天天熬夜调数据集,头都大了!后来才想明白,梯度冲突啊!外观任务是分类分割,梯度变化大,直接把共享层的权重带偏了,尺寸任务需要的低层级边缘特征直接被冲没了。这不就乱了吗?

还有一个坑,很多人做一体检测,畸变校正只做一次,就不管了。尺寸检测要求全图畸变小于千分之一,外观检测只要缺陷能看到就行,你不分开校正或者做统一的高精度校正,最后尺寸肯定不合格。我们一开始就是这么错的,第一批试产报废了三百多件中框,老板脸都绿了。

机器视觉一体检测共享主干网络梯度冲突对比图
机器视觉一体检测共享主干网络梯度冲突对比图

落地能用的算法框架,我们亲测好用

落地能用的算法框架,我们亲测好用
落地能用的算法框架,我们亲测好用

踩过坑之后,我们改了方案,现在跑了十几条线,合格率稳定在99.5%以上,节拍也能满足每分钟65件,完全符合客户要求。

核心就是一句话:多分支解耦训练+动态权重加权

具体怎么搭?backbone 用改进的ResNet18,足够轻量,特征提取能力也够。尺寸分支单独接IAdaPIN亚像素边缘提取模块,这里要求边缘定位精度必须达到0.01pixel以内,换算到千万像素级工业相机,对应实际精度就是0.5微米,完全满足精密零件的公差要求。外观分支单独接FPN特征金字塔,专门提取不同尺度的缺陷特征,0.02mm的微小刮痕都能稳定检出。

训练的时候,两个分支的梯度不共享,各自反传,只在共享 backbone 输出特征的时候加动态权重:哪个任务当前收敛误差大,就给哪个任务的特征更高的权重。说白了就是谁差谁优先,解决梯度冲突的问题。就这一个改动,尺寸精度直接拉回了0.3微米以内,误检率掉了7个百分点,太香了。

还有校准环节,必须严格按GB/T 22059-2008机器视觉检测精度校准规范做,用标准量块做全图畸变校正,不要嫌麻烦,这一步省了,后面批量出问题你哭都来不及。

不过话说回来,不是所有场景都适合做一体检测。如果是公差要求低于0.1毫米,缺陷也都是毫米级的大缺陷,那一体检测完全没问题。如果是公差要求零点几微米的高端芯片,那还是分开做更稳,对吧?

现在产线降本压力越来越大,把尺寸和外观检测合在一起,肯定是越来越多项目的选择。踩过我们这些坑,你至少能少熬一个月的夜,少报废几百件试产件,这就是老工程师攒出来的经验。

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:机器视觉尺寸外观一体检测算法:产线落地的踩坑与实践总结
文章链接:https://m.yqhljx.com/list_9/2496.html