1、介绍
缺陷检测时机器视觉需求中最复杂难度较大的一类需求。究其原因,主要是在项目开发过程中首先要保证检测的稳定性和精度,又要实现缺陷检测的通用性,常见的缺陷:凹凸、污点瑕疵、划痕、裂缝、伤痕、毛刺等等类型种类繁杂,缺陷检测不同于尺寸、二维码、OCR识别等算法。后者的应用场景比较单一,基本使用一些成熟的算法实现,最多增加一些定位、图像增强的算法,应用门槛相对较低,也比较容易做成通用的产品或工具。但缺陷检测主要针对工业场景,不同的行业的需求和重点都有差别,这导致不同的行业所使用的缺陷算法迥然不同,这也注定了缺陷检测被工业场景非标定制所束缚。随着缺陷检测要求的不断提高和技术的不断发展,机器学习和深度学习也成了缺陷领域一个不可或缺的技术难点。
2、缺陷检测目前解决方案
2.1 传统算法检测缺陷
优点:可根据需求和图像进行不同需求的开发,可直观展示效果;
缺点:调试难度大,图像变化后会导致检测算法不稳定进而需要反复调参,而且复杂缺陷误检的概率较大,兼容性不好,很难做成通用效果。
2.2 机器学习检测缺陷
一般使用类似MLP的一些单层神经网络,对缺陷特征进行训练分类,该方法需要事先提取出缺陷部分,一般用来与传统分割法搭配使用,达到缺陷检测分类的效果。
2.3 深度学习检测缺陷
优点:通用性好,可以通过迭代训练模型不断提升某个产品的检测准确度。
缺点:需要大量的数据样本(缺陷样本),而且缺陷种类越多,特征性越模糊,检测精度要求越高,其需要的缺陷样本就越大,而且深度学习中的缺陷样本需要人工去标注标签,样本越大,手动标注的工作量也越大,训练的周期也越长。只适合产品产量大且缺陷样本较多的案例。
2.4 深度学习检测缺陷(迁移学习方法)
其操作方法如2.3,但同一行业或相似行业有大量的缺陷样本库,如果深度训练网络具有泛化和迁移的特点,可以在常规缺陷少的情况下,根据统一行业缺陷进行迁移学习训练,进而解决缺陷样本少的问题。该方法我感觉会成为后面工业领域检测瑕疵的一个大趋势,但是需要一些公司去收集各种行业的缺陷类型图片和训练的网络模型,并共享出来,然后后来者可以使用迁移学习的方法学习前人训练好的模型。然后不断的丰富缺陷样本和训练模型。
目前机器视觉中缺陷检测主要分为以下几种:
1 Blob分析+特征提取
2 模板匹配(定位)+查分
3 光度立体
4 特征训练