正反检测是上料检测、组装复检等应用中经常会遇到的需求。在很多人看来,正反检测非常简单,用诸如亮度判断或图案匹配就能轻松实现。确实,如果是特征明显,或正反区分很大的工件,简单工具就能实现,如下面这类应用,使用亮度分析工具可以稳定实现正反判断,产品方案选择软件、智能相机或者视觉传感器都可以。
正面 反面
亮度分析工具结果
但实际应用往往会遇到更复杂的情况,本次介绍三类在应用中遇到的正反检测复杂应用,探讨一下正反检测的不同实现方式。
应用场景1:金属扣正反检测
这个应用需要检测组装后的金属扣的正反,避免组装异常。
正面 反面
该应用的最大难点在于正反面的特征难以提取,工件的成像不理想,工件的正面和反面特征很细微,而且一致性很差,用图案匹配等传统工具检测不稳定,准确率低。
针对该应用特点,采用深度学习分类工具可以轻松解决该问题。
我们采用6张正面样本+6张反面样本进行训练,只要5分钟左右就可以训练得到分类模型。
检测时只需要一个深度学习分类工具即可实现稳定的正反检测。而且采用CPU版本可以在不增加显卡的基础上实现高速检测(20ms)。
算法方案及耗时
应用场景2:金属工件正反检测
这个应用需要检测抓取前的金属工件金属的正反,并统计正反的数量。
正面1 正面2
反面1 反面2
这里应用的难点是,类内差异较大,亮度特征、纹理特征等都很难稳定检测。针对这类应用,可以考虑采用异常检测功能。不同于深度学习分类工具,通过该工具可以采用少数几张正面和反面的样本进行快速在线训练。具体操作如下:
Step1:在缺陷检测工具箱中找到异常检测工具,
Step2:根据应用向导进行设置,导入少数几张(一般20张以内,可以全部是正面-OK,也可以包含反面-NG)图片进行学习,完成后即可实现正反检测。
Step3: 根据需要添加小图裁剪、数据统计等工具,并设计运行界面,完成开发。
应用场景3:轮胎正反检测
这个应用需要检测流水线过来的轮胎正反,如果是反的,需要发出信号给操作人员,进行翻转处理。
正面 反面
这个应用中轮胎的正反区分明显,但难以用稳定特征描述,正反区分的特征是字符的正反,而且字符的位置和内容都在变化。
针对场景特点,我们采用字符定位+字符识别的方法来实现正反检测。算法方案如下:
由于字符位置不固定,所以采用深度学习字符定位工具实现任意任意字符串定位,并设置字符串宽度和高度筛选条件,确保只输出长字符串,提高后续字符识别信息的可靠性。
深度学习字符识别工具直接继承字符定位结果作为ROI输入即可,不需要手动绘制。
当轮胎是正面时,字符串也是正的,识别置信度较高(一般为0.9以上),当轮胎是反面时,字符也是反的,无法正常识别,识别置信度较低(一般0.5以下)。
检测结果
以上深度学习字符定位和字符识别工具均采用CPU版本,无需增加显卡,系统成本较低。
针对这三类应用本文提供的方案不是唯一的,也不一定是最优的,欢迎大家一起探讨,提出更多更好的方案。
总结:
目前机器视觉在各个行业都得到了广泛应用,以其“智慧之眼”保障工业生产的高效高质。随着应用的广度和深度不断扩大和加深,对机器视觉从业者的要求也越来越高,哪怕诸如“有无检测”、“正反检测”等看似简单的应用充满着变化与技巧,一方面需要机器视觉软件提供商能尽可能丰富的视觉工具,另一方面,应用者也要尽可能多熟悉视觉工具的特点,并结合需求灵活应用。