缺陷检测是工业视觉领域中极为重要的应用之一。几乎所有工业产品在流入市场前,均设有缺陷检测环节,其目的在于确保产品符合质量标准。
对产品进行缺陷检测时,主要分为人工目视检测和工业视觉检测两种方式。运用工业视觉进行缺陷检测时,常用的解决思路如下:
Ⅰ、传统图像算法
采用传统图像算法进行缺陷检测时,主要有以下两种方法:
①特征工程
特征工程是缺陷检测中最为常用的方法之一。它通过运用传统图像算法,对图像的灰度值、方差、均值、颜色、形状、轮廓、面积等特征进行分析,从而实现对缺陷的检测。该方法具有较高的灵活性,开发速度较快。在应用层面,通常会将与缺陷特征相关的参数开放至软件端,以便使用者根据实际需求进行灵活调整。
②模板匹配
模板匹配是通过预先设置一些图像模板,将这些模板与待测图像进行比对,进而实现对缺陷的识别。然而,这种算法的应用存在一定局限性。例如,在对某品牌饮料瓶标签进行缺陷检测时,会运用特征工程技术识别部分缺陷类型,同时也会采用模板匹配方法,通过预设一些标签图像模板与待测图像进行匹配,以判断标签是否存在缺陷。
Ⅱ、CV 算法
计算机视觉算法,即 CV(Computer Vision)算法,是一种使计算机能够理解图像的技术,属于 AI(Artificial Intelligence)算法的一个分支。
在工业视觉领域,由于处理对象主要为图像,因此在该领域提及 AI 算法时,通常指的就是 CV 算法。尽管 AI 算法听起来较为先进,但在工业视觉领域,人们更习惯使用 AI 算法这一称谓,而较少提及 CV 算法。
图像分类、目标检测、语义分割、实例分割、目标跟踪、OCR、人脸识别、图像生成、异常检测等均属于 CV 算法范畴。其中,在工业视觉缺陷检测领域应用较为广泛的 CV 算法包括图像分类、目标检测和实例分割。
①图像分类
图像分类,从字面意义理解,是一种对图像进行分类并确定其所属类别的算法。根据分类任务的不同,图像分类可进一步分为单标签分类和多标签分类。常用的分类网络有 ResNet、MobileNet、EfficientNet 等。
在工业视觉领域,从理论上讲,可以运用图像分类算法对整张图像进行直接分类,以确定其缺陷类别。然而,由于工业相机拍摄视野的问题,所拍摄的整张图像除目标区域外,往往还包含大量无关的背景信息。这些无关背景会对图像分类模型的训练产生干扰,导致图像分类算法的准确率降低。因此,在实际项目中,很少直接使用图像分类算法对整张图像进行分类。
②目标检测
目标检测算法旨在图像中对所有感兴趣的目标,使用检测框对目标的位置和类别进行定位,如图 1 所示。这种方法较为直接,通过标注大量缺陷数据集,训练出一个具备缺陷检测能力的目标检测模型。
最经典的目标检测算法当属 YOLO 系列,该系列算法具有准确率高、推理速度快等优点,是性能非常优异的算法。在实际应用中,需要对图像进行尺寸缩放,使图像大小符合目标检测模型所要求的尺寸。若原图尺寸较大,而缺陷较小,导致缺陷在原图中所占比例极小,例如点状的微小缺陷,可能会在图像预处理的缩放过程中丢失。因此,若存在此类问题的风险,通常会将原图裁剪为多份,例如将分辨率为 10000×5000 的图像拆分为 10 张分辨率为 2000×2500 的图像,然后对这 10 张图像分别进行检测,最后将检测结果进行汇总。
此类方法也存在一定弊端,即对数据集的依赖程度较高。因为目标检测算法属于有监督学习,需要大量的数据集作为支撑。若数据集不够充足,会导致算法的准确率降低。在实际项目中,往往需要持续收集数据,并对模型进行多次迭代训练,才能达到理想的效果。
③实例分割
实例分割是目标检测的进阶版本,它在目标检测的基础上,采用更为精细的 mask 进行定位,而非使用检测框,如图 2 所示。
将实例分割算法应用于缺陷检测,能够获得比目标检测算法更为精准的缺陷定位,这对于缺陷检测具有积极意义。另一方面,当不同的缺陷距离较近,且出现交叉或包含的情况时,目标检测算法在类别区分上可能会面临困难,而实例分割算法则不存在这一问题。若使用实例分割算法在尺寸较大的图像上进行缺陷检测,其处理方法与目标检测算法相同,即也需要将图像进行拆分。
实例分割算法与目标检测算法一样,均属于有监督学习,需要依赖大量的数据集。与目标检测算法的拉框式标注相比,实例分割算法的标注更为精确,因此标注工作量也更大。在实际项目中,实例分割算法通常也需要持续收集图像数据,并对模型进行多次迭代训练,才能达到理想的效果。
Ⅲ、传统图像算法 + CV 算法
这种方法将传统图像算法与 CV 算法相结合,是一种常用的策略。
通常是先利用传统图像算法对缺陷进行定位,然后将缺陷的 ROI 图像传输给 AI 分类算法进行分类。这种方法有效解决了传统图像算法定位相对容易,但分类较为困难的问题。
结束语
工业视觉缺陷检测算法种类繁多,本文列举了三大类主流方法。除上述三大类外,还存在无监督学习算法、图像异常检测算法等,若读者对此感兴趣,可自行进行检索和研究。
任何一种缺陷检测算法都存在其技术局限性,在实际应用过程中,需根据具体情况进行具体分析。较为理想的策略是将多种不同的算法组合使用,以实现 “绝对检测”。