工业视觉缺陷检验测试的算法总结
2024-03-18 07:08:14解决方案

  缺陷检测是工业视觉领域很重要的应用之一。几乎所有的工业产品在流入市场之前都会有缺陷检验测试的环节,目的是确定保证产品是合格的。

  对产品进行缺陷检验测试时,分为人工目视检测和工业视觉检测。利用工业视觉做缺陷检验测试时,常用的解决思路如下:

  特征工程是缺陷检验测试中最常用的方法。特征工程是通过传统图像算法分析图像灰度值、方差、均值、颜色、型状、轮廓、面积等特征去检测缺陷,方法非常灵活,开发速度也快。在应用层面,一般会将缺陷特征的相关参数开放到软件端,供使用者灵活调整。

  模板匹配是通过预设一些图像模板,将图像模板与待测图像作比较,以达到识别缺陷的目的。这种算法应用有限,举个例子,做某品牌饮料瓶标签的缺陷检验测试,会利用方法①特征工程的技术识别部分缺陷类型,但也会利用模板匹配,通过预设一些标签图像模板去匹配待测图像,以判断标签是否有缺陷。

  在工业视觉领域,处理对象是图像,故提到AI算法便是CV算法。也许AI算法听起来高级,所以在工业视觉领域,大家一般多说AI算法,不怎么提CV算法。

  图像分类、目标检测、语义分割、实例分割、目标跟踪、OCR、人脸识别、图像生成、异常检测、等都属于CV算法。其中,在工业视觉缺陷检验测试领域应用较多的CV算法为图像分类、目标检测、实例分割。

  图像分类,顾名思义,是对图像进行分类并确定图像类别的一种算法。根据分类任务不同,图像分类又分为单标签分类和多标签分类。常用的分类网络有ResNet、MobileNet、EfficientNet等。

  在工业视觉领域,理论上讲,可通过图像分类算法对整张图像直接分类,以确定其缺陷类别。由于工业相机拍摄的视野问题,会使整张图像除了目标区域外,还会包含很多无关的背景,这些无关的背景会干扰图像分类模型的训练,导致图像分类算法的准确率低,因此实际项目中,极少利用图像分类算法直接对整张图进行分类。

  目标检测算法是在图像中对所有感兴趣的目标,用检测框定位目标的位置和类别。这种方法简单粗暴,即通过标注大量缺陷数据集,训练一个具有缺陷检验测试能力的目标检测模型。

  最经典目标检测算法首推YOLO系列,准确率高且推理速度快,属于非常优异的算法。在实际应用中,需要对图像进行尺寸的缩放,使图像大小符合目标检测模型所要求的尺寸。如果原图很大,缺陷很小,使缺陷在原图中占比很小,比如点状的微小缺陷,可能会使图像在预处理缩放过程中,将缺陷丢失。因此,如果有此类问题的风险,一般会将原图进行裁剪为多份,比如100005000分辨率的图像,拆分为10张20002500分辨率的图像,然后对这10张图像单独进行仔细的检测,最后将检测结果汇总。

  此类方法也有弊端,那就是数据集,成也数据集,败也数据集。因为目标检测算法属于有监督学习,依赖大量的数据集,如果数据集不够,会导致算法准确率低。实际项目中,往往需要持续收集数据,反复多次迭代模型,才可以做到理想效果。

  实例分割是目标检测的升华版本,即在目标检测的基础上用更精细的mask做定位,而非检测框。

  将实例分割算法应用到缺陷检验测试上,能够得到比目标检测算法更精准的缺陷定位,这是有利于缺陷检验测试的。另一方面,当不同的缺陷离得很近,并且出现交叉或者包含的情况,目标检测算法很难获得较好的类别区分,但是实例分割算法并没这个困境。若用实例分割算法在尺寸很大的图像上进行缺陷检验测试时,处理方法与目标检测算法一致,也是将图像拆分。

  实例分割算法和目标检测算法一样,都属于有监督学习,需要依赖大量的数据集。相比于目标检测算法拉框式的标注,实例分割算法标注的更为精确,标注工作量更大。实际项目中,实例分割算法往往也需要持续收集图像数据,反复多次迭代模型,才可以做到理想效果。

  PS:此处致敬一下Joseph Redmon大神,摘选他YOLOv3论文惊人敬佩的结束语。

  通常是利用传统图像算法先定位缺陷,然后再将缺陷ROI图像传给AI分类算法进行分类。这种方法解决了传统图像算法定位容易,但是分类困难的问题。

  工业视觉缺陷检验测试算法有很多,本文罗列了三大类主流方法,除了上述三大类,也有无监督学习算法、图像异常检测算法,读者感兴趣可自行检索研究。

  任何一种缺陷检验测试算法都有自己的技术边界,在使用的时候,要详细情况具体分析,好的策略是将多种不同的算法组合使用,形成“绝对检测”。

Copyright © 2018 BOB电子(中国)官方网站 All Rights Reserved
网站地图 备案信息: 湘ICP备14017517