朱贺,杨华,尹周平
(华中科技大学 机械科学与工程学院 数字制造装备与技术国家重点实验室,武汉 430000)
在工业制造领域,使用者和生产企业对产品质量需求越来越高,除了要求较高的功能品质和性能品质之外,对产品外观品质的要求也在逐步提高。特别在服装、箱包等纺织领域内,用户对于产品外观品质的重视程度甚至大于其功能品质。如果这类产品存在脏污、变形等表面缺陷,导致产品美观度大打折扣的同时,其价值也将备受影响。
表面缺陷检测广泛应用于电子3C、汽车、化工、轻工等行业,因自然物体表面多存在规则或者不规则的纹理背景,表面缺陷检测的一个主流研究方向为纹理表面缺陷检测。自20世纪开始,纹理表面缺陷检测大致经历了3个阶段:人工目视检测、光学传感器检测、机器视觉检测。本文将叙述纹理表面缺陷机器视觉检测方法的最新研究进展,并主要叙述以深度学习方法为主的纹理表面缺陷视觉检测算法研究成果。
自然表面通常表现出一些重复的强度变化或图案,通常被称为纹理[1]。从结构角度来看,纹理产生于像素的空间变化,并与一系列具有一定随机性的重复模式的自然现象有关,纹理通常用它们的规则程度来描述,从规则纹理到随机纹理[2],有研究将纹理分为57类[3]。纹理在自然图像中普遍存在,为图像分割、图像检索和纹理形状等各种图像分析应用提供了重要视觉线索[4]。
缺陷在纹理表面的表现形式为破坏纹理规则表达的现象,如图1所示,对缺陷的检测以有无缺陷判别、缺陷定位、缺陷分割、缺陷分类共四步组成,根据应用需求不同,缺陷检测需要进行到的程度也不同,其中最重要的是缺陷定位,多数方法也均以定位缺陷位置为缺陷检测结果,在实际中根据需求决定是否进行缺陷分割与缺陷分类。
图1 纹理表面缺陷示例Fig.1 Examples of texture surface defects
纹理表面缺陷视觉检测方法发展至今可分为传统方法与深度学习方法两大类。在深度学习兴起之前,传统学习方法是该领域的研究主流,至今很多经典方法仍用于工业制造检测领域一线。早期的方法综述[5-7]将传统方法进行了详细划分,大致可分为统计方法、结构方法、滤波方法与基于模型方法。随着纹理表面视觉检测方法研究的不断深入,统计方法中的直方图操作等逐渐被更高级的诸如全局特征等方法替代、结构方法中的形态学操作等方法也因为方法更替,已不单独作为检测方法使用,目前在检测方法后处理中有部分应用。随着机器学习方法的不断研究,目前基于SVM 强分类器、聚类、随机森林等基于传统机器学习的缺陷检测方法也逐步得到研究者们的认可。
深度学习最早可追溯到1943年McCulloch[8]提出的M-P 结构,到后来的感知机模型[9],并突破于1974年Rumelhart[10]提出了反向传播算法BP(Backpropagation algorithm)的概念,2012年AlexNet 等[11]在ImageNet 竞赛中的表现将深度学习图像处理方法正式引入大家的视野中。自此之后基于深度学习的纹理表面视觉检测方法逐步兴起,从最开始的基于卷积神经网络CNN(Convolutional neural networks)方法,到基于目标检测模型、基于语义分割模型,缺陷检测精度不断提高,但监督学习方法需要在模型训练过程中提供近似相等的正负例样本才会达到较好的训练效果,在工业应用中,缺陷样本出现频率过低,导致基于监督模型的方法较难应用于工业领域,同时使得无监督学习方法、迁移学习方法的研究进程得以大大加快。
纹理表面缺陷视觉检测方法从最初的统计方法与结构方法发展至深度学习方法,无论从算法复杂度还是从缺陷检测精度,都有较大提升。目前,由于深度学习的优异性能,基于深度学习的方法已经成为纹理表面缺陷机器视觉检测方法研究领域的热点,同时由于工业制造领域缺陷样本不足以支撑模型训练,如何实现少样本训练缺陷检测模型,已经成为纹理表面缺陷视觉检测领域棘手难题。
根据框架不同,可将现有纹理表面缺陷视觉检测方法分为传统方法与深度学习方法两种。在传统深度学习方法中,由于基于直方图方法、边缘检测方法、形态学方法等传统方法需要复杂、针对性强的算法设计工作,近年相关方向研究已逐渐减少,同时传统机器学习方法用其卓越的检测性能证明了其强大,所以将传统方法分类为:图像结构方法、频域分析方法与传统机器学习方法,并基于此3大类进一步细分。
深度学习方法根据其训练所需样本要求,分类为:监督学习方法、弱监督学习方法、无监督学习方法、迁移学习方法与主动学习方法。其中,监督学习方法根据其所用网络特性可细分为:基于传统CNN 方法、基于目标检测方法与基于语义分割方法;基于无监督学习方法可细分为:无监督样本训练方法、仿真缺陷样本训练方法,如图2所示。
图2 纹理表面缺陷视觉检测方法分类框架图Fig.2 Classification framework of visual detection methods for texture surface defects
纹理表面缺陷机器视觉检测方法的传统方法中以传统机器学习方法为研究重点,其方法精度低于深度学习方法,算法复杂度低,可嵌入性较强,在工业领域的小型设备上应用广泛。深度学习方法中以弱监督学习方法与无监督学习方法为研究重点,其精度高于传统方法,但因其黑箱性与高配置设备需求性,目前在工业领域应用少于传统方法。
评价缺陷检测方法性能优劣的方式有很多,通常使用目标检测领域与语义分割领域常用指标进行评价,如准确率RAccuracy、综合评价指标F1、交并比UIo。PT等符号代表意义如表1所示。
表1 分类结果混淆矩阵Tab.1 Confusion matrix for the classification results
准确率RAccuracy与像素准确率RPA在缺陷检测领域是等价的,即缺陷与背景检测正确的像素点数与所有像素点数之比。
查准率RPrecision、召回率RRecall、正阳率RTP与假阳率RFP,以上几个评价指标通常不用于评价缺陷检测方法表现好坏,有少数方法[12]使用RFP值代表缺陷过检指标。
综合评价Fmeasure是评价分类模型好坏的关键指标,其最常用表现形式为F1指标,即β=1时,代入式(7)的表现形式。
交并比(Intersection over union)表示为UIo与F1指标均是较为苛刻的评价指标,可以更好反应缺陷检测方法在数据集上表现。其中,Bd为缺陷检出面积,Bgt为缺陷标定真值,式(10)为式(9)的像素表达形式。
受试者工作特征曲线下面积为AUC;平均精度PA定义为缺陷的P(R)曲线下面积,具体计算方法根据采点不同略有不同;平均精度均值PmA为多分类问题时所有类别PA值均值,在缺陷检测领域PA与PmA所反映效果相同。
根据实验数据集的不同,对各方法表现进行了归纳总结,如表2、表3所示,同时简述了各方法优缺点,如表4所示。
表2 DAGM_2007[77]数据集测试效果Tab.2 Test results using the DAGM_2007[77] dataset
表3 MVTec[151]数据集测试效果Tab.3 Test results using the MVTec[151] dataset
表4 纹理表面缺陷机器视觉检测方法优缺点比较Tab.4 Comparison of the pros and cons of machine vision detection methods for texture surface defects
正如1.2小节中所提到的传统分类方法所述,该章节主要介绍图像结构方法、频域分析方法与传统机器学习方法。
在图像结构方法中,使用图像特征对图像直接进行缺陷检测是该类方法的特点,图像特征可以是纹理基元或纹理元素,以及整幅图像中基元的空间安排。该类方法可分为:图像基本特征方法、灰度共生矩阵方法、低秩分解方法。
2.1.1 图像基本特征方法
使用图像的边缘特征或缺陷的固有特征、全局背景特征的显著性判别与纹理基元等进行缺陷检测均可以称为基于图像基本特征方法。
基于图像缺陷特有特征的方法通常从图像全局出发,统计全局与局部间的关系,使用特征信息对图像进行直接检测,获得缺陷检测结果[13-15]。其中,Jiang 等[16]提出了一种基于Sobel 算子与patch 统计的缺陷检测算法,该方法应用于简单背景,抗背景噪声能力有限;Kumari 等[17]提出了一种基于Sylvester矩阵[18]相似度度量的表面缺陷检测方法,根据输入图像与配准图像Sylvester 矩阵秩情况等信息检测缺陷位置。
基于全局背景特征方法的一种是基于纹理特征均一性,对突兀缺陷进行检测,有基于隶属度方法、显著性方法等[19-21],如Zhang 等[22]将测试图像的隶属度矩阵转换为模糊隶属度矩阵,通过估计输入图像每个像素点的隶属度值得到缺陷检测结果;Qiu等人[23]使用多尺度显著性检测方法构建显著性图获得缺陷粗检测结果与粗定位的背景区域,再将缺陷图像分解为照度层与反射层。将反射层图像去噪,与缺陷粗检测结果同为依据,后处理获得缺陷精检测结果。该方法在NEU 数据集[24]上F1值为86.7%。
基于纹理基元方法较为代表性的是MVTec 公司提出的texems 系列算法[25-26],两种方法可以在MVTec 公司的商业软件Halcon 上找到。除此之外Jia 等[27]提出了一种基于纹理基元的织物表面缺陷检测方法,首先将输入图像进行晶格分割,提取晶格特征并判断晶格在特征上的距离,筛选出缺陷晶格,该方法在自建织物数据集进行了测试,缺陷检测精度RAccuracy≥96%。
图像基本特征方法使用图像特定背景与缺陷本身间的特征区别直接进行缺陷检测的方法,该类方法原理简单,复杂度低,同时方法具有针对性,多针对特定纹理表面进行缺陷识别,缺陷检测效果在特定情况下、特定纹理表面上可达到较好效果。虽然存在局限性,但该类方法在工业场景中仍有较大应用前景。
2.1.2 灰度共生矩阵方法
灰度共生矩阵GLCM(Gray level co-occurrence matrix)是1973年Haralick 等[28]提出的使用灰度图像空间相关性进行纹理描述的方法,是最著名和应用最广泛的纹理描述方法之一。该方法通过将二阶统计量被累积成一组二维矩阵,每个矩阵测量两个灰度级的空间依赖性,给定一个位移向量。纹理特征,如熵、对比度、逆差距与相关性等,可以基于灰度共生矩阵得到。提取上述特征与其他特征共同加工进行缺陷检测是目前GLCM 的主流用法,将基于GLCM 得到的特征直接用于缺陷检测,称为灰度共生矩阵方法。
Li 等[29]提出了一种基于多项二值算子与灰度共生矩阵GLCM 的表面缺陷检测方法,该方法分为特征提取与缺陷检测两个方面,首先由多项二值描述子与GLCM 提取无缺陷图像的多向纹理特征矩阵,其次根据特征矩阵的相似性确定检测阈值,再对输入图像提取特征矩阵,由预先确定的检测阈值检测缺陷;Tiemtud 等[30]提出了一种基于高斯增益非广度熵的芒果表面缺陷检测方法,首先提取输入图像的灰度共生矩阵特征,再对灰度共生矩阵每个小窗口(窗口大小3×3~9×9)子域计算结合高斯增益的非广度熵[31],对计算出的熵值拟合高斯分布,处于分布边缘的子域被认为是缺陷,该算法在自建芒果表面缺陷数据集进行测试,表现出了一定的缺陷检测能力。
GLCM 是经典的纹理表达方法,除此之外灰度共生矩阵仍存在一些变种方法,如灰度依赖性矩阵NGLDM(Neighboring gray level dependence matrix)[32]、灰度行程矩阵GLRLM(Gray-level run-length matrix),除直接使用GLCM 进行缺陷检测外,基于GLCM 所提取特征与其他特征输入传统机器学习分类器、或者神经网络等进行表面缺陷检测[33-34],也是效果优异的GLCM 应用方法。
2.1.3 低秩分解方法
使用低秩分解检测图像显著性的方法。如果输入的数据特征矩阵是由两种比较明显的数据组成,其中一部分具有稀疏性,另一部分具有低秩性,则该数据矩阵可通过凸优化分解出低秩部分与稀疏部分,通常低秩部分被认为是背景,稀疏部分代表显著性区域。将该思想引入到缺陷检测领域中,对待检测图像特征矩阵分解,提取低秩部分为背景,稀疏部分为缺陷[35-37],即低秩分解方法。
较为有代表性的是Zhou 等[38]提出了一种基于双低秩分解的钢材表面缺陷检测算方法,通过将图像特征矩阵分解为背景特征矩阵与前景特征矩阵,分别低秩分解两个矩阵,融合两者分解结果得到缺陷检测结果;Mo 等[39]假设织物图像背景与缺陷部分均为低秩部分,将输入图像特征矩阵分解为低秩无缺陷矩阵与低秩缺陷矩阵,进行缺陷检测,该方法在HKBU 数据集[40-42]、TILDA 数据集[43]、TianChi 数据集[44]、自建数据集进行了实验,其中HKBU 数据集各类别缺陷检测F1指标分别为69%、43%、56%,优于其对比的传统方法。
低秩分解方法在近几年被应用于纹理表面缺陷检测,该类方法由实验结果可以看出,纹理背景不同,其方法效果不同[36-39],规则纹理背景其缺陷检测效果较好,非规则纹理背景下缺陷检测效果欠佳。低秩分解方法是重要方法,分离背景与缺陷的思想是该类方法核心,其思想在提升该类方法的同时,也对如基于语义分割等其他检测方法带来了启迪。
在图像处理领域中,频域变换会使得高频与低频信息分离,在空间域中的卷积运算会转换为乘法。频域中适用的变换也会使某些纹理特征更加凸显与可分,基于频域分析的表面缺陷检测同样是本领域研究热点,本小节将其细分为:傅里叶变换方法与Gabor 变换方法。
2.2.1 傅里叶变换方法
傅里叶变换Fourier 是由傅里叶级数推导出来的。使用傅里叶变换将图像空间域转变到频域分析是常用的转换方式,早期基于Fourier 的检测方法以提取频域纹理特征进行缺陷检测为主[45-47],近期出现了傅里叶变换与四元数图像表达相结合的缺陷检测方式,达到了较好的检测效果。
Di 等[48]提出了一种基于光照矫正与二维分数阶傅里叶变换2D FRFT(2D fractional fourier transform)的表面缺陷检测方法,该方法使用多尺度侧窗盒滤波MS-BOX(Multi-scale side window box)[49]提取图像光照分量并使用构建的二维伽马校正函数对图像进行全局角度光照矫正,并将图像转换为每个像素由颜色、强度和边缘特征组成的四元数表示。使用2D FRFT 获得四元数图像的显著性矩阵,处理后得到缺陷检测结果,在自建数据集上缺陷检测效果优于轻量化网络方法Mobile-Unet[50];Liu 等[51]通过四元数矩阵将待检测图像合成多通道重构图像,使用超复数傅里叶变换转换四元数图像到频域进行调谐,用局部高斯滤波器平滑振幅谱峰值,通过逆超复数傅里叶变换获得显著性图像即为缺陷检测结果,如图3所示。
图3 傅里叶变换方法[51]Fig.3 The Fourier transform method[51]
傅里叶变换方法是经典的频域分析手段,其目的是通过频域表征分离难区分的特征用于表面缺陷检测,通常将其作为检测方法中转换模块使用[48],使得问题简化。
2.2.2 Gabor 变换方法
Gabor 变换是短时Fourier 变换中当窗函数设置为高斯函数时的一种特殊情况,可以将Gabor 变换理解为是对图像进行卷积操作,Gabor 滤波器尝试在空间域和频域中进行最优联合定位[52]。使用Gabor 变换前,如何确定Gabor 滤波器参数以获得最优情况,是首要需解决问题。
Li 等[53]基于Gabor 滤波器与Radon 变换提出了一种缺陷方向投影方法用于表面缺陷检测,该方法首先使用Gabor 滤波器对输入图像进行滤波,再使用硬阈值分割图像,将分割二值图用Radon 变换投影,选择缺陷值最大的通道作为Gabor 滤波器最优通道检测缺陷;Sulistyaningrum 等[54]使用Gabor滤波器进行裂缝缺陷分割,结合形态学方法进一步处理分割结果,并将裂缝区域根据椭圆模型求解尺寸;Zhang 等[55]使用量子粒子群优化算法[56]优化得到Gabor 滤波器参数,对Gabor 滤波器处理过的输入图像提取特征,根据孤立森林算法[57]分离得到缺陷检测结果。
Gabor 变换方法提取出的纹理特征考虑了空间域与频域两者,是比Fourier 变换考虑的更加全面的频域信息使用方法,如何确定Gabor 滤波器参数是首先要考虑的问题,其达到的缺陷检测效果与参数选择也密切相关。与GLCM 方法相同,常用Gabor变换提取特征该与分类器等方法相结合进行缺陷检测[35-38,52],Gabor 变换方法主要适用于规则纹理背景中或其他特定情况下的表面缺陷识别。
机器学习作为人工智能领域的研究热门,在各个任务应用上均表现出优异的应用效果。将机器学习应用到纹理表面缺陷视觉检测领域同样达到了令人满意的效果。机器学习可分为传统机器学习与深度学习两个研究领域,基于传统机器学习的纹理表面缺陷视觉检测方法可细分为:基于强分类器方法、基于集成学习方法。
2.3.1 强分类器方法
传统机器学习研究领域一个主要任务即为分类任务,分类器、集成学习均为分类任务的一种实现方式。基于强分类器方法特指使用基于监督学习的强分类器模型,如支持向量机SVM(Support vector machines)的纹理表面缺陷视觉检测方法。
Zhou 等[33]提出了一种名为WR-IFOA-SVM 的钢丝绳表面缺陷检测方法,WR-IFOA-SVM 使用同态滤波对图像进行预处理,消除因光照造成的缺陷识别影响,再提取由均匀模式处理过的u-LBP 特征与基于GLCM 的图像特征,由SVM 得到缺陷检测结果,如图4所示。Gao 等[34]提出了一种基于SVM 的路面缺陷检测方法,首先根据输入图像的灰度共生矩阵计算熵特征,根据熵特征初步分割背景与缺陷区域,再提取面积、周长、圆度、矩形度、宽高比、连通域特征、投影特征、分型特征使用SVM 进行缺陷检测得到缺陷检测结果;Song 等[58]提出了一种基于多约束和改进纹理特征的显著性缺陷检测算法,其使用基于光谱聚类的超像素分割算法对输入图像进行超像素重构,由SVM 预测结果,将得到的标记结果与提出的多约束策略结合得到缺陷检测结果。
图4 基于SVM 缺陷检测方法[34]Fig.4 The SVM-based defect detection method[34]
除了SVM 分类器外,还有一些基于其他强分类器的缺陷检测方法,如Mentouri 等[59]提出了一种基于多尺度二值化统计图像特征与K 最近邻方法KNN(K-nearest neighbor algorithm)的钢板表面缺陷检测方法,在NEU 数据集上RAccuracy=99.6%;Yue 等[60]提出了一种基于黎曼流形与Fisher 分类器的羽毛缺陷检测方法;Essa 等[61]提出了一种基于极限学习器ELM(Extreme learning machine)的表面缺陷检测方法,在TILDA 数据集进行了测试,该方法缺陷检测RAccuracy=98.07%。
基于分类器方法因其可靠的检测效果、异于深度学习黑盒特型的高度可解释性,以及适中的模型复杂度,该方法是目前传统方法中应用最为广泛的一种缺陷检测方法。
2.3.2 集成学习方法
集成学习是以多个弱分类器为基础,组合生成强分类器的一种分类方法,以Bagging 策略与Boosting 策略为主,其表现出与强分类器如SVM 相近甚至更强的分类能力,目前应用较为广泛的是随机森林、优化的分布式梯度提升库XGBoost(Extreme gradient boosting)[62]等,基于集成学习的缺陷检测方法性能同样优异。
Jawahar 等[63]提出了一种基于随机森林的表面缺陷检测方法,首先提取GLCM 特征、不变矩Hu 特征、HSV 颜色特征,再将提出的特征驶入随机森林得到缺陷检测结果;Chaudhari[64]提取GLCM特征、Gabor 滤波特征、HOG 特征,使用随机森林进行缺陷检测;Chun 等[65]通过提取基于像素值的特征(局域灰度均值等)、几何特征(周长等)训练XGBoost 的变种方法轻量梯度提升决策树LightGBM(Light gradient boosting machine)[66]进行缺陷检测,该方法在自建混凝土桥梁与路面数据集上F1指标达到69%;Jawahar 等[67]使用灰度共生矩阵提取并通过优化算法筛选特征,由随机森林分类器检测缺陷。
基于集成学习方法进行缺陷检测,虽然具有较强的缺陷检测能力,但集成学习方法出现过拟合现象更加频繁,其泛化能力要弱于其他传统机器学习方法,同时随机森林模型等集成学习方法具有一定的黑盒性质[68],综上所述,该类方法实际应用较少。
如1.2节中所提到的深度学习分类方法所述,该章节主要介绍监督学习方法、弱监督学习方法、无监督学习方法、迁移学习方法与主动学习方法。
图像处理领域所用的深度学习网络框架多基于卷积神经网络CNN(Convolutional neural networks),自AlexNet 以来的深度学习方法多数从监督学习开始发展,逐步发展到半监督、弱监督与无监督学习。在缺陷检测效果方面,监督学习方法检测效果最优。本小节将其细分为:基于传统CNN 方法、基于目标检测方法、基于语义分割方法。
3.1.1 传统CNN 方法
在深度学习方法引入纹理表面缺陷视觉检测领域初期,出现了一些基于CNN 的缺陷检测方法,这些方法多数以数层卷积层为主体,进行特征提取及缺陷定位工作,作为初期的方法引入,其证明了将深度学习方法用于缺陷检测的可能性,同时该类方法达到的效果通常优于传统方法。
早期基于深度学习方法的网络框架都相对简单[69-74],如Cha 等[75]提出了一种基于卷积神经网络的裂纹缺陷检测算法,使用8层网络结构,以patch 为检测单位进行缺陷定位;Wang 等[76]提出了一个基于11层卷积神经网络的表面缺陷检测算法,如图5所示,该方法在DAGM_2007[77]数据集进行了测试,RAccuracy达到了99.8%;Staar 等[78]提出了一种基于欧几里得距离的三联合输入网络,通过衡量样本间的特征距离检测缺陷,该算法在DAGM_2007缺陷数据集进行了效果验证,不同情况下AUC≥76%;Garg 等[79]提出了一种基于卷积神经网络的织物表面缺陷检测方法,该方法以patch 为缺陷检测单位,对patch 进行缺陷与非缺陷分类,在TILDA数据集上进行测试,缺陷检测效果优于基于传统方法的缺陷检测方法。
图5 用于缺陷检测的传统CNN 网络框架[76]Fig.5 The traditional CNN network framework for defect detection[76]
基于传统CNN 方法虽然所使用的网络结构及思想对比现阶段研究进展相对简单,但该类方法是将深度学习引入到缺陷检测领域的开始,证明了深度学习方法进行缺陷检测的可能性,对纹理表面缺陷机器视觉检测方法发展意义重大。
3.1.2 目标检测方法
目标检测(Object detection)一直是深度学习领域研究重点,该领域方法以RCNN(Region-CNN)[80]与YOLO(You only look once)[81-82]两个系列为发展主体,衍生出了Faster RCNN[83]、YOLO 等经典方法。目标检测方法的思想主要是由所要检测的目标产生一系列候选区域,根据产生的候选区域使用非极大值抑制的方法定位合并出所需区域,即为检测结果。该思想契合缺陷检测初衷,大量基于深度学习的缺陷检测方法均属于基于目标检测方法。
Faster RCNN 网络、YOLO 系列网络、SSD 网络均可以直接应用于缺陷检测,所以基于该类网络的检测方法均有不错的效果[84-84]。有研究者基于Faster RCNN 进行缺陷检测,如Zhou 等[84]在Faster RCNN 基础上加入了可变形卷积[85];Wei 等[86]减少了Faster RCNN 网络框架中锚点数量的同时,也对网络结构进行了适当调整;Wei 等[87]在Faster RCNN基础上添加了视觉增益机制,通过视觉增益机制增加模型知觉的灵敏程度;Su 等[88]基于Faster RCNN构建了通道注意子网络与空间注意子网络连接的互补注意网络,用于表面缺陷检测。基于YOLO 系列网络与SSD 网络同样很多,如Jiang 等[89]在YOLOv3网络框架基础上,使用特征维度聚类将低级特征与高级信息结合进行表面缺陷检测;Li 等[90]在SSD框架基础上将浅层与深层特征融合进行缺陷检测,效果略优于SSD 网络。
有研究者未使用常用目标检测框架,其通过以目标检测方法思想为基础的方式构建纹理表面缺陷检测方法,如Jun 等[91]使用inction-v1网络与用Le-Net-5网络结合检测缺陷,该方法在TILDA 缺陷数据集上AUC 值达到了87%;Wu 等[92]提出了一种由Inception[93]网络模块筛选滑窗patch 的表面缺陷检测方法,该方法在DAGM_2007缺陷数据集上的RAccuracy达到了98.6%;Lei 等[94]提出了一种基于合并和分裂策略的缺陷检测网络与自我比较驱动循环模型的表面缺陷检测方法;Liu 等[12]基于训练过的目标检测模型(如VGG-16)中提取有用特征进行缺陷检测,在TILDA 数据集上RAccuracy达到93.9%;He 等[95]使用区域提议网络RPN(Region proposal network)生成可能的缺陷区域ROI(Regions of interest),并由检测器对ROI 进行检测得到缺陷检测结果,如图6所示,在NEU 数据集上该方法PmA达到82.3%。
图6 基于目标检测方法缺陷检测[95]Fig.6 The object detection-based defect detection method[95]
基于目标检测方法表现出极强的缺陷检测能力,使得对缺陷检测精度要求略低的任务可直接套用目标检测算法网络框架,但深度学习方法对所搭载设备有较高要求,目前仅在配置极高的检测装备,如配备显卡RTX2080Ti 等高算力设备上搭载。
3.1.3 语义分割方法
语义分割(Semantic segmentation)与目标检测任务相同,是当今计算机视觉领域关键问题之一,将图像中的目标精确分类为语义标签,实现像素级分割精度是其任务所在,所研究的算法有基于区域的方法即基于RCNN 方法,也有基于全卷积网络FCN(Fully convolutional network)[96]方法。将语义分割方法引入到缺陷检测领域是该领域内的一大创举,本文主要介绍以FCN 方法及其衍生网络为主的方法,该类方法也是语义分割领域主流方法,目前已经在缺陷检测领域达到了极佳的缺陷分割效果。
基于语义分割的缺陷检测方法最初以FCN 为主要框架进行构建[97-98],如Zhang 等[99]提出的CrackNet 的裂纹缺陷检测方法,该方法由4层宽高维度相同,通道数不同的卷积层构成,输出像素级缺陷检测结果;Yu 等[100]使用两个全卷积FCN 网络进行缺陷检测,第一个FCN 网络负责粗推断缺陷位置,第二个FCN 网络负责细化缺陷检测结果,该算法在DAGM_2007缺陷数据集进行了效果验证,其RAccuracy=95.99%;Yang 等[101]在基于FCN 网络检测缺陷基础上,推测裂缝拓扑形状、长度、宽度等信息,该方法实验的缺陷检测效果弱于CrackNet[100];Dung 等[102]使用仿VGG16的FCN 检测方法在自建裂纹数据集上F1指标达到89.3%,如图7所示。
图7 基于FCN 网络缺陷检测[102]Fig.7 FCN network-based defect detection[102]
基于FCN 与VGG16网络,SegNet 网络[103]被提出,有研究者将其引入到缺陷检测领域,如Zou等[104]提出了一种基于SegNet 网络的裂纹缺陷检测方法DeepCrack,该方法在CrackTree260[105]数据集进行训练,在自建数据集实验的缺陷检测PA>87%;Dong 等[106]提出了一种基于SegNet 与焦点损失FL(Focal loss function)的隧道衬砌表面缺陷检测方法FL-SegNet,从自建数据集实验结果来看,该方法缺陷检测效果较SegNet 有较大提升;Ren 等[107]提出了一种基于SegNet 网络的裂缝缺陷检测方法CrackSegNet,其在全卷积网络的基础上加入了空洞卷积、空洞金字塔及跳连模块,在自建裂纹数据集上进行了实验,F1指标达到74.55%,优于U-net 网络63.09%。
除SegNet 网络外,U-net 网络[108]因其优异的性能在各领域均有应用,有研究者将U-net 网络应用到缺陷检测中[108-110],如Han 等[111]使用区域预测网络预测缺陷区域,加入空洞卷积保持内部数据细节结构,将可能存在缺陷的区域送入U-net 分割网络中进行缺陷分割,得到缺陷检测结果;Liu 等[112]提出了一种基于U-net 与ResNet 的U-ResNet 网络结构方法用于TFT-LCD 导电粒子缺陷检测;Zhou 等[113]提出了一种基于U-net、PSN(Parametric sigmoid norm)层[114]的缺陷检测网络PSD U-net。
基于语义分割方法所得到的缺陷检测结果与基于目标检测方法不同,其输出为缺陷分割结果,可以很方便得到像素级缺陷检测结果,但与目标检测方法相比,基于语义分割方法对标注依赖程度更高。
在模型训练时通常存在样本标注不完全、样本标注错误、样本标注未达到像素级仅有图像级情况,上述情况均属于弱监督学习范畴,同时本文认同半监督学习属于弱监督学习的观点。为解决样本标注问题,基于弱监督学习方法的缺陷检测方法兴起。
纹理表面缺陷检测弱监督学习方法表现形式多为使用图像级标注样本进行训练[115-117],其中,Chen 等[118]提出了一种使用图像级标注的基于注意力CBAM(Convolutional block attention module)[119]的缺陷检测方法;Xu 等[120]提出了一种基于CNN 与协同学习的弱监督表面缺陷检测算法,该算法在KolektorSDD 数据集[121]上实验效果接近早期基于监督学习的缺陷检测方法;Gao 等[122]提出了一种基于自编码器的伪标签方法PL(Pseudo-label)[123]的弱监督钢表面缺陷识别方法,该方法在NEU 缺陷数据集上RAccuracy达到90.7%,同时表明已标记训练样本越多检测效果越好;Di 等[124]引入SGAN(Semi-supervised generative adversarial networks)[125]进行半监督学习,利用分类网络对钢表面缺陷进行分类检测;Niu 等[126]提出了一种基于生成对抗网络GAN(Generative adversarial nets)[127]的弱监督表面缺陷检测方法DefectGAN,其训练仅需要图像级标注样本,在测试时产生像素级缺陷分割结果,该方法在DAGM_2007数据集上缺陷检测效果与SegNet方法相近。
基于弱监督学习方法的缺陷检测方法目前可在一定程度上解决样本标注问题所带来的模型训练影响,虽然弱监督学习方法缺陷检测精度通常低于监督学习方法,但从缺陷检测效果对比看,如表2所示,现有弱监督学习方法检测精度已经与早期监督学习方法效果相近。
无监督学习是相对于监督学习的一种模型训练方式,其特征是不需要标注样本进行训练,代表性方法是聚类。在纹理表面缺陷视觉检测领域,基于无监督学习的深度学习方法表现形式主要有两种:无缺陷样本训练方法与仿真缺陷样本训练方法。
3.3.1 无缺陷样本训练方法
基于无缺陷样本训练方法是针对缺陷检测问题所提出的方法,其主要思想是使用自编码器AE(Auto encoder)或GAN 的方式在无缺陷样本中提取纹理特征,将输入图像重构无缺陷版本,计算重构无缺陷图像与输入图像间的差分图,得到缺陷检测结果[128-136]。
该思想的代表方法是AnoGAN[137],该方法以无缺陷样本作为训练样本进行无监督训练,通过GAN 学习正常样本分布隐空间,当带缺陷样本输入网络时,由隐空间变量重构无缺陷样本,重构图像与输入图像的残差结合判别器输出即可定位缺陷,如图8所示,AnoGAN 是第一个将GAN 引入缺陷检测的方法,并取得了极佳的效果。原研究者在AnoGAN 基础上加入Encoder 与WGAN(Wasserstein GAN)[138-139]提出了f-AnoGAN[140],该方法在医学数据集上表现远高于基于AE、AdvAE[141]等方法;后来Akcay 等[142]提出了一种基于GAN 的缺陷检测算法GANomaly 算法,使用条件生成对抗网络,联合学习高维图像空间的生成和潜在空间学习无缺陷样本分布检测缺陷,该方法在MNIST 缺陷数据集[143]、CIFAR 缺陷数据集[144]、UBA 缺陷数据集[145]进行了测试,综合效果相比AnoGAN 有大幅提升。
图8 基于GAN 的无监测缺陷检测AnoGAN[137]Fig.8 AnoGAN-based unsupervised defect detection using GAN[137]
除基于GAN 方法,还有基于AE 与VAE 建立仿真缺陷数据集训练缺陷检测方法[146-149],其中Wang 等[150]通过替换偏离无缺陷样本特征使用VAE 生成无缺陷重构图像,与输入图像对比后得到缺陷检测结果,该方法在MVTec[151]数据集上的RAccuracy达到85%,高于AnoGAN 的55%;Tsai 等[152]在CAE 模型上使用特征间距离确定缺陷位置,所提出算法在DAGN_2007、MVTec 等数据集上缺陷检测效果优于Deep-SVDD[153]方法;Paul 等[154]提出了一种基于结构相似性感知损失SSIM(Structural similarity)[155]卷积自编码器AE 网络的表面缺陷检测算法,该方法以无缺陷样本特征聚类为思想对织物进行检测;Venkataramanan 等[156]通过综合注意力图与重构差分图生成缺陷检测结果,该方法在MVTec数据集RAccuracy达到90%。
基于无缺陷样本训练方法所能达到的缺陷检测精度远不及基于监督学习方法所能达到的效果,如表2所示,但由于其训练简单,无需缺陷样本并进行标注,越来越多人投入到无缺陷样本训练方法研究中,基于无缺陷样本训练方法已经成为纹理表面缺陷检测的研究核心,如何有效提升精度一直是该领域核心难题。
3.3.2 仿真缺陷样本训练方法
基于仿真缺陷训练方法是解决缺陷样本不足的一种方法,通过基于高斯模型、基于GAN 的样本生成方式生成带标注的仿真缺陷样本,对缺陷检测模型进行训练,用于解决实际应用过程中缺陷样本不足问题[157-162]。此外,还有研究者基于人工总结规律设计模板生成的仿真缺陷样本进行模型训练[163-165]。
其中,较为有代表性的有:Wei 等[166]提出了一种基于缺陷样本仿真的表面缺陷检测算法,仅需要每类别一张参考缺陷图像即可完成训练;Tsai 等[167]提出了一种基于CycleGAN[168]的仿真缺陷图像生成方法,将生成的仿真缺陷图像及对应的标签结果对U-net 网络进行训练,如图9所示,所提出的缺陷检测算法在DAGM_2007数据集上测试RAccuracy达到93.35%;Tang 等[169]提出了一种基于生成对抗网络GAN 的合成图像数据增强方法,利用生成的图像数据扩展训练数据集,提升了基于Fast R-CNN、YOLOv3模型的钢材表面缺陷检测效果,PmA指标提升约3%~5%;Saiz 等[170]提出了一种基于StyleGAN2[171]的金属制造零件缺陷样本生成方法,并应用于基于DeepLabV3+[172]与金字塔注意力网络缺陷识别网络,加入仿真缺陷样本后原缺陷检测方法在自建数据集UIo提升了2%~6%。
图9 基于CycleGAN 的缺陷检测[167]Fig.9 Defect detection using CycleGAN[167]
基于仿真缺陷训练方法的缺陷检测,在只有无缺陷样本的情况下生成带标注的缺陷样本,使用监督学习方法训练与检测。实验显示,加入仿真缺陷对缺陷检测精度有一定提升[169-170],目前已有一定的研究者投入相关领域研究。如何使得仿真缺陷与真实缺陷相近,达到较好模型训练效果,是该方向研究重点。
监督学习方法效果较弱监督学习、无监督学习等方法提升巨大,但大量标注数据代价昂贵,在工业领域中多数情况下无法采集足够的缺陷样本进行训练。将相关领域中迁移标签数据或模型结构,完善提升任务的学习效果,是迁移学习的初衷及目的。基于迁移学习方法可以有效缓解因样本不足或样本标注代价过大导致的训练难题,因训练数据扩充,对原任务在多数情况下具有一定的效果提升,将迁移学习应用到缺陷检测领域主要为解决缺陷样本不足问题,目前已经有较多应用。基于迁移学习的缺陷检测方法通常在ImageNet[173]数据集下进行预训练[174-180],此外,也有研究者在VOC2007数据集[181]上预训练[182]。
有研究者针对迁移学习特性对所提出基于迁移学习方法进行了实验,并证明了迁移学习的一些特性。Liong 等[183]使用一种基于Mask R-CNN(Mask region-convolutional neural networks)[184]的视觉检测算法用于检测皮革表面缺陷。其训练所用的皮革图像数据仅有84张,但由于网络结构已经在MS COCO(Microsoft common objects in context dataset)[185]进行了共150多万张图像的广泛预训练,在500张皮革图像测试集缺陷检测RAccuracy=70.35%,证明基于迁移学习的少样本纹理表面视觉检测算法具有一定的准确性;Badmos 等[186]对比了基于迁移学习的检测方法与未使用迁移学习方法缺陷检出效果,其中基于迁移学习的检测方法在实验数据集上F1指标达到了99%,优于未使用迁移学习的检测方法;Damacharla 等[187]以U-net 框架为基础采用迁移学习的方式进行训练,其对比了使用ImageNet 数据集进行预训练与不使用预训练的缺陷检测效果,在自建数据集上,基于迁移学习检测方法的缺陷检测RAccuracy优于未进行迁移学习的检测算法26%;Aslam 等[188]提出了一种基于EfficientNet[189]与DenseNet-201[190]的深度学习框架,对比包括皮肤图像数据集HAM10000(Human against machine with 10 000 training images)[191]、混凝土图像数据集CODEBRIM(Concrete defect bridge image)[192]、目标识别数据集ImageNet,不同数据集预训练下的测试效果不同,在ImageNet 数据集上预训练相比于HAM10000数据集与CODEBRIM 数据集预训练可达到更好效果,更有助于表面缺陷识别,证明了采用合适的预训练集对检测精度的提升同样有至关重要的影响。
基于迁移学习方法是缺陷样本不足问题的一种解决方案,同时可以达到提升缺陷检测精度效果,但应用迁移学习方法存在负迁移与负适配问题[193]。迁移学习方法在使用的预训练数据集不同时存在效果差异[188],如何选择预训练数据集是迁移学习的核心问题,由经验可得,使用ImageNet 数据集进行预训练在多数情况下可以达到较好缺陷检测效果,同时应用场景不同,最终检测效果不同。
主动学习是一种人工与机器迭代标注的模型训练方法,该方法在一定程度上可以减少样本标注代价,但应用过程较为繁琐,标注成本巨大。
Feng 等[194]提出了一种基于深度残差网络Res-Net的表面缺陷检测方法,该方法使用结合人工选择标记重复训练的主动学习策略进行模型训练,在自建缺陷数据集进行了缺陷检测效果测试,在使用小于正常监督方法训练数量的标记样本进行训练后,缺陷检测检测RAccuracy达到了87.5%;LYU 等[195]提出了一种基于YOLOv2[196]的表面缺陷检测方法,该方法使用迭代标注训练的主动学习策略进行模型训练,在NEU 数据集上进行了缺陷检测效果测试,其PmA指标达到64.5%。
基于主动学习方法的缺陷检测因训练过程较为繁琐,实际应用较少。
纹理表面缺陷机器视觉检测领域发展至今,出现了许多新兴的研究方向,为今后的检测算法研究提供了研究思路。
随着神经网络模型网络层数的不断增加,网络复杂度的不断提升,庞大的权值参数量使得普通设备运行网络模型变得十分困难,将网络模型轻量化,使其携带更少的参数,可以在普通设备甚至移动端进行应用,是网络轻量化任务所在。该任务以SqueezeNet[197]、MobileNet[198]、ShuffleNet[199]、Xception[200]、EfficientNet[189]模型为主发展出许多分支方法,如何将缺陷检测网络轻量化也成为了目前热门研究方向。
Choi 等[201]基于深度可分离卷积提出了一种混凝土裂缝缺陷检测方法,在自建裂纹缺陷数据集上缺陷检测效果与已有传统神经网络算法检测精度接近,但参数量减少了88倍;Zhou 等[202]基于EfficientNet 提出了一种缺陷检测方法,总参数量859万;Lin 等[203]基于多尺度级联神经网络提出了一种基于MobileNet-v2-dense 的表面缺陷检测方法,该方法在DAGM_2007数据集TPR 值达到99.45%,总参数量只有212万,可以被集成在一般嵌入式设备上;Li 等[204]提出了一种基于SSD 与MobileNet 网络的缺陷检测算法,在DAGM_2007数据集上PmA=88.6%,可应用于移动端设备;Jiang等[50]提出了一种基于MobileNetV2[205]的Mobile-Unet 表面缺陷检测方法,参数总量约有2 298万,少于实验中所得到的U-net 参数总量11 850万;Wu等[206]提出了一种基于混合卷积[207]的轻量化缺陷检测方法,加入了级联引导锚点模块等网络结构,提升精度的同时也提升了效率;Huang 等[208]基于轻量化瓶颈层提出了一个轻量化表面缺陷检测方法,在实验数据集上达到了与MobileNetV2相近的缺陷检测精度,但参数量仅为14万。
缺陷检测网络轻量化目前是网络参数量与缺陷检测精度的平衡过程,基于轻量化网络方法如何在减少网络参数量的同时尽可能提升缺陷检测精度,是目前轻量化方法的核心研究难点。
序列模型(Sequence models)是自然语言处理NLP(Natural Language Processing)领域的核心模型,通过使用循环神经网络RNN(Recurrent neural network)对输入文字序列进行递归处理得到翻译/识别结果,较为经典的方法为长短期记忆人工神经网络LSTM(Long short-term memory),近期有人将相关思想引入到纹理表面缺陷检测中。
Zhang 等[209]提出了一种称为CrackNet-R 的循环神经网络RNN(Recurrent neural network),用于沥青路面表面裂缝检测。该算法基于其提出的门控递归多层感知器,用于递归更新CrackNet-R 的内部记忆,CrackNet-R 是一个两阶段处理算法,分为序列生成和序列建模,序列生成以找到最有可能形成裂纹的模式,序列建模预测序列为裂纹模式的概率,如图10所示,该方法在自建500张裂纹图像数据集进行了测试,与CrackNet[99]相比速度、精度均有一定提升;Zhao 等[210]通过视觉长短期记忆VLSTM(Visual long-short-term memory),即综合视觉感知特征、视觉短期记忆特征、视觉长期记忆特征进行缺陷检测,该方法在自建数据集进行了验证,综合缺陷检测性能优于VGG 网络[211]。
图10 基于序列模型缺陷检测[209]Fig.10 Defect detection using sequence models[209]
基于序列模型的纹理表面缺陷机器视觉检测方法加强了对全局与局部特征的使用,并达到了较优的缺陷检测效果,自然语言处理思想的引入是对视觉领域的延伸,也为两领域更深入结合提供了思路。
使得缺陷检测网络模型可以在嵌入式设备或其他普通设备上应用,一种方法是使用云服务器部署模式,由总服务器负责主要运算,子设备只需满足基本的搭载环境即可运行,如Zhu 等[212]提出了一种基于改进DenseNet 网络的表面缺陷检测方法,其具有较少的资源消耗及易于实现较高的缺陷检测效率。该方法搭载在基于云端部署的实时缺陷检测系统上,在自建缺陷检测数据集进行了验证,11种缺陷平均检测RAccuracy值达到83%。
纹理表面缺陷检测通常基于单张图像,但有时单张图像提取出的特征不足以精确表达特征,有研究基于视频流多帧信息进行缺陷检测,以提升检测效果,如Chen 等[213]提出了一种基于朴素贝叶斯Na¨ıve Bayes 与卷积神经网络的裂缝缺陷检测方法NB-CNN,该方法基于视频流对核电站表面进行裂纹缺陷检测。其中,所提出的卷积神经网络用于检测缺陷候选区域,用基于朴素贝叶斯的数据融合方案融合视频多帧图像信息去除误识别,在自建数据集上进行测试,其FPPF(False positives per frame)指标0.1情况下RAccuracy达到98.3%。
蕾丝等镂空织物的纹理表现形式为存在规则或不规则孔洞,由于使用或其他原因,织物表面会出现非刚性孔洞发生扩大、收缩等原有纹理损坏情况,即为非刚性变形缺陷。非刚性缺陷通常较难检测,有研究针对该类缺陷提出了检测方法,Xu 等[214]提出了一种针对织物表面变形缺陷的缺陷检测方法,该方法根据对比参考样本特征与输入样本特征差异,增强可能存在缺陷区域,容忍局部非刚性变形,定位织物变形缺陷位置,该方法在自建的实际工业花边织物非刚性缺陷检测实验中,RAccuracy达到96.9%,F1指标达到91.7%。
知识蒸馏是一种引入教师网络与学生网络的深度学习模型,属于网络压缩的范畴。使用大规模的教师网络以诱导小规模学生网络训练,实现知识迁移,其目的在于减少网络参数量,提升精度,该思想由Hinton[215]首次提出,有研究者将该思想应用于缺陷检测,如Zhang 等[216]提出了一种弱监督学习的分类感知对象检测方法CADN(Category-aware object detection network)用于表面缺陷检测,该方法使用图像级标签进行模型训练,并使用知识蒸馏策略使得规模较轻的CADN 网络模仿规模较大的CADN 网络,以获得较好实时性与更高的缺陷检测精度,该方法在自建数据集与DAGM_2007缺陷数据集进行测试,在自建数据集F1指标学生网络为95.6%,教师网络为98.3%,在DAGM_2007数据集F1指标学生网络为65.8%,教师网络为69%,经知识蒸馏后的学生网络达到了与教师网络相差不多的缺陷检测效果。
纹理表面缺陷视觉检测领域主要面向工业领域应用,目前存在的问题主要有以下3点:1)训练模型需要大量的缺陷样本,在实际应用时通常收集不到足够的缺陷样本以支撑训练;2)网络模型轻量化问题,目前的深度学习网络模型主要基于强劲的运算处理设备,如何将其搭载在普通设备,甚至移动端设备同样是急需解决的难题;3)方法可解释性问题,在工业领域应用的重要前提为可靠,网络模型的黑盒特性使得其在工业中的应用在人们心中始终存在问号。如何解决上述问题,仍是纹理表面缺陷机器视觉检测领域研究重心。
1)缺陷样本稀缺是机器学习在工业领域应用一大难题,基于无缺陷样本训练方法、基于仿真缺陷训练方法是尝试解决该问题目前较为可靠的研究方向,也是目前的研究热点。随着小样本训练研究的推进,将元学习、基于度量学习等小样本方法思想引入缺陷检测领域或许是未来的研究方向。
2)网络轻量化,已经是计算机视觉领域一大研究热点,如何将深度学习方法应用于普通设备,大规模应用于工业现场,同样是工业领域面临的问题,已有的基于轻量化网络方法、基于云端部署的缺陷检测方法,均处于起步研究阶段,仍存在许多训练、精度、稳定性、泛化性等问题,在该研究方向同样有许多工作需要完成。
3)可解释性差是深度学习方法的一大硬伤,如何提升网络模型可解释性也是计算机视觉领域面临的一大棘手问题,在纹理表面缺陷机器视觉检测领域中较为折中的方法即传统方法与深度学习结合方法,但没有从网络模型根本出发解决问题,提升深度学习方法可解释性在未来需要研究者们努力。
在图像处理领域中,GAN 的提出掀起了一股研究热潮,到至今为止很多视觉任务均能看到GAN 的影子。现在又有将成熟的自然语言处理领域思想引入图像处理领域的趋势,如序列模型思想、Transformer 思想等,已经有研究学者将Transformer[217]引入到目标检测领域,并取得了不错的效果,未来在纹理表面缺陷机器视觉检测领域或许也可以看到相似思想的应用。
本文对近几年纹理表面缺陷机器视觉检测方法进行了全面研究,对纹理表面缺陷机器视觉检测方法进行了简明易懂的分类,分析了该领域内存在的问题,针对各个问题探讨了现有解决方法及其方法不足,分析了未来可能的研究方向,并总结了潜在的研究方向。希望通过本文,对纹理表面缺陷机器视觉检测领域研究学者提供详实有效参考的同时,促进该领域的进一步发展。