1. 引言
随着人们生活水平的提高,消费者对产品质量的要求也在逐步提高。然而,在产品的工业化生产过程中,会有很多因素导致产品表面出现缺陷和瑕疵等问题,进一步影响产品质量与生产效率,因此,工厂需要在生产的过程中对产品进行表面缺陷检测。在早期,比较原始与传统的方法是采用人工的方法来检测产品表面,这样不但耗费大量人力成本而且检测效率低下,无法满足现阶段的生产速度,此外,人工检测具有较强的主观性,会因为各种因素的影响而导致误检等问题。与此相比,在生产智能化的今天,利用计算机视觉的自动化检测方法在精度和效率上的优势都是人工检测方法无法比拟的。
目前常用的检测方法主要分为基于手工特征的机器学习方法以及深度学习方法。在一些经典的基于手工特征的方法中,需要人为的在产品的特定区域中提取缺陷特征,然后使用基于某些规则的分类器进行检测 [1] 。近年来,基于深度学习的缺陷检测算法在缺陷检测领域获得了比较好的效果 [2] [3] ,这些方法在神经网络的帮助下能自动学习图像中有价值的数据分布,大大提升了检测的速度与精度。然而,目前大多数深度学习检测方法依赖于有监督学习,这就意味着需要提供大量的有标签数据来训练模型,否则无法发挥其作用。但是在实际的生产过程中,产品的表面缺陷通常是无法预测的。一方面,我们很难获得足够的缺陷样品,另一方面,我们缺少缺陷种类的先验知识,这些约束都会导致有监督学习的检测方法难以进行。因此,基于无监督的高性能检测的方法在近些年受到了广泛的关注。
近些年来,基于无监督学习的检测方法得到了足够的重视。比如,自动编码器以及生成对抗网络被用于解决这一具有挑战性的问题 [4] [5] 。这些方法都是无监督的,在训练过程中只需要无标签的正常样本,利用模型来学习正常样本的特征,到了测试阶段,模型通常不能很好的处理未知的缺陷部分,而是偏向于将其重构成学习过的正常图像,最后通过对比待测试图像与重构得到的图像之间的差值就可以发现识别缺陷,差值较大的部分通常表明这一区域存在缺陷。尽管这些方法能够取得一定的效果,但是重构图像的精度往往不是特别高,这就会导致的检测精度不高等问题。对此,常见的做法是通过叠加的网络层数或者增加网络的训练参数来提高模型的性能,而过于复杂的网络结构以及巨大的参数规模会导致模型的运行时间过长,进一步引发检测速度大大下降等问题。
2. 无监督检测方法
2.1. 基于图像重建与生成的检测方法
通过具有数据重构功能的神经网络能够获得不包含缺陷的重建图像,这些网络一般由自动编码器(AE)或者生成对抗网络(GAN)及其各种改进算法组成。AE在结构上主要分为两个部分:编码器和解码器,其中编码器用于学习输入样本的特征并将其投影到一个潜在的空间,解码器将数据从潜在的空间还原为原始的维度,在这个编码与解码的过程中可以过滤掉许多冗余信息。基于AE的检测方法的思路是在训练时只输入并学习正常的图像,当在测试中输入包含缺陷的图像时,模型倾向于将异常的区域重构为学习过的正常区域,最后通过对比输入图像与重建图像之间的差异,往往可以找出图像中存在缺陷的区域。但是,简单的AE很难胜任高分辨率的重建任务,存在重建图像缺乏必要的细节等问题,而这对于能否准确识别出图像中的异常至关重要。Youkachen等人 [6] 提出使用卷积自动编码器(CAE)来完成工业图像的重建任务,通过对重建图像和输入图像的细节进行锐化,进一步提升了两者之间在缺陷区域存在的差异,最终通过对比重建图像和输入图像,识别出热轧条带的表面缺陷。Collin等人 [7] 提出了一种跳过连接的自动编码器架构,在训练阶段引入原始的噪声模型,以提高重建图像的清晰度。
基于GAN的检测方法的主要思路是学习训练图像中的数据分布,然后生成相似的图像并判断其是否足够逼近原始图像。GAN在结构上分为生成器和判别器,生成器利用在输入样本中所学习到的数据分布生成新的图像,然后通过判别器判断生成图像的好坏,通过不断的迭代训练,使得生成图像十分接近输入图像。所以,基于图像生成的检测方法在训练时仅使用不含缺陷的纯净样本,在测试过程中会自动的忽略缺陷区域的数据分布,将缺陷区域生成为正常的区域,最终通过对比生成图像与输入图像之间的差异就可以发现图像中是否包含异常。Venkataramanan等人 [8] 提出了一种具有引导注意的卷积对抗性VAE,将注意力集中于图像中的正常区域,然后用一个潜在的卷积变量来获得异常的位置。Schlegl等人 [9] 首先提出了应用GAN来定位异常。该方法将深度卷积与生成网络相结合,通过标记异常以及对图像块进行评分,使得输出能够更好的贴近所学习到的数据分布。同样的,一些研究基于类似的生成器思想对工业表面缺陷进行了检测 [10] 。
2.2. 基于特征提取的检测方法
基于特征提取的检测方法主要利用正常样本与异常样本之间特征的差异来实现检测,通过计算正常样本与测试样本的特征向量之间的距离,依据距离大小识别正常与异常样本。Deep SVDD [11] 使用深度神经网络来替代SVDD中的核函数,通过训练一个网络,尽可能的将正常数据映射到特征空间内的一个超球体上,在球体之外的就被视为异常数据。Patch SVDD [12] 方法将图像按顺序分割成多个小图像块,然后训练编码器将结构相似的小图像块聚集到一起并最小化他们特征之间的距离。通常来说,包含异常的小图像块与正常的小图像块的距离较大,这些小图像块就可以被认定为异常的。
3. 本文方法
3.1. 用于图像重建的BLS网络
宽度学习系统(BLS) [13] 是一个轻型的特征学习框架,它的灵感来源于随机向量函数链神经网络(RVFLNN),使用映射节点层与增强节点层替代RVFLNN的原始输入层与增强特征节点层,使得模型能够提取到更多的隐藏特征。BLS的目标是学习得到输入与输出样本之间的连接权值
,模型通过权值
表示输入与输出样本之间的连接关系,然后将提取到的输入样本的节点特征与连接权值
进行运算可以快速的得到输出。所以,我们在训练阶段将不包含缺陷的样本当作要学习目标,使得模型可以学习正常样本的数据模式。在测试阶段,模型就会根据学习到的连接权值将测试图像尽可能的重构成类似输入的图像。简单来说,就是在训练阶段学习正常图像,在测试阶段将测试图像重构成类似输入的图像。
为了避免BLS网络学习到过多的无关信息,我们使用了一个带权值的随机矩阵来提升模型的重构能力,通过对比测试图像与重构图像可以发现图像中的缺陷。如图1所示是我们改进的BLS的网络结构。

Figure 1. The improved network structure of BLS
图1. 改进后的BLS网络结构
我们使用X作为原始输入,然后用X替换原本的输入标签Y。Doersch等人 [14] 表明随机初始化的编码器具有更强的图像检索能力,所以我们在映射节点层加入一个带权值的随机矩阵来提升模型的泛化能力。保持其余的网络结构不变,所以,第i组映射特征节点可以表示为:
(1)
其中
是随机矩阵,而改进的BLS网络可以表示为:
(2)
其中
。
我们的优化目标变为:
(3)
最终,
的计算方法如下:
(4)
3.2. 基于BLS重构模型的缺陷检测
通过改进的BLS网络得到重构图像后就可以进行缺陷检测了,一般来说,比较常用的方法是通过计算测试图像与重构图像之间的差值得到残差图像,然后进行阈值分割即可。
本文方法的检测步骤分为3步:
1) 先将训练图像与测试图像转换为灰度图,然后通过BLS重构模型计算得到测试图像的重构图像。
2) 计算以及的差值,得到两者之间的残差图像。计算过程为
(5)
其中
为重构图像的均值。
3) 对残差图像进行高斯滤波,然后进行二值化处理得到最终结果。
4. 实验评估与分析
4.1. 数据集与预处理
MNIST数据集是一个被广泛使用的手写数字数据集,从数字0到9一共有10类,包含了60,000张训练图片和10,000张用于测试的图片,其中每张图像的分辨率为28 × 28,且均为灰度图像。
BTAD数据集是一个类似于真实生产环境的工业异常数据集,包含了3个不同类别的图像,每个类别包含训练和测试数据,还提供了异常的标签。它们的分辨率分别为1600 × 1600,600 × 600,和800 × 600。
在数据预处理阶段,为了节省更多的计算时间并匹配我们的模型,对于BTAD数据集,我们将每幅彩色图像转化成灰度图像并降采样到200 × 200的分辨率,这是处于对重构精度与计算速度的考虑,过大的分辨率并不能提升精度,反而会导致占用资源以及计算时间的加剧。在必要的情况下,可以根据需求选择合适的分辨率,一般来说,图像的尺寸越小,计算速度就越快。
4.2. 实验设置
理论上,在BLS网络中增加映射节点与增强节点的数量会提升模型的重构精度,然而,我们发现当他们的节点的数量达到一定程度之后对于对结果的影响微乎其微,反而会降低计算速度。因此,考虑到我们输入的图像分辨率的规模,在网络中,增强节点的数量(N3)被设置为5000,映射特征节点的数量(N2)是25,每组映射特征节点中的节点的数量(N1)是200,正则化因素(λ)是2−30,使用非线性激活函数,内核参数系数(s)是0.8,迭代次数为2。
4.3. 实验评估指标
平均结构相似性(SSIM)主要是用来衡量两幅图像之间的差异,其数值范围为0到1,SSIM的值越大,就代表两张图象的结构越相似,表明重建的图像越接近原始图像。SSIM的计算过程如下:
(6)
其中,
、
分别为对比图像的亮度均值;
、
代表标准差;
为2张对比图象的协方差;
、
则为很小的常数。
峰值信噪比(PSNR)经常用作衡量图像重建质量的测量方法,它通过对比对应像素点之间的误差,是一种基于误差敏感的图像质量评价指标。PSNR的单位是dB,数值越大表示失真越小,即重构的质量越好。PSNR的计算依赖与图像之间的均方误差MSE,具体如下:
(7)
AUROC (Area Under the Receiver Operating Characteristic Curve)是针对各种阈值设置下的分类问题的性能度量,其通过接受者操作特征曲线与坐标轴之间的面积大小来反应分类器的性能。AUROC是一个介于0到1之间的数值,当AUROC值接近于1时,表示分类器可以较好的分类正负样本。
4.4. 结果与分析
为了直观的体现本文方法的图像重构能力,我们在MNIST以及BTAD数据集上进行了图像的重构实验,通过测试图像与重构图像进行直观的对比,还计算它们之间的结构相似性来进一步的证明其重构性能。在BTAD数据集上进行重构与缺陷分割,部分结果如图2和图3所示。

Figure 2. Image reconstruction results on the MNIST dataset
图2. 在MNIST数据集上的重构结果
我们的模型具有良好的重构图像的能力,如图2所示,其中奇数行是原始的测试图像,偶数行是我们模型的重构图像。可以看出,我们的模型能够比较准确的重构出测试图像,仅在一些小的细节上表现得不是很好,这是因为模型将倾向于所有学习到的细节都重构出来,这导致最终重构出图像共有的特征。

Table 1. Comparison of reconstruction accuracy on MNIST datasets (SSIM)
表1. MNIST数据集上重构精度比较(SSIM)
从表1可以看出,本文的方法在常用的2个度量指标上优于GAN和ADN方法,进一步证明了本文方法具有良好的重构图像的性能。

Figure 3. Reconstruction and detection results on the BTAD dataset
图3. 在BTAD数据集上的重构以及检测结果
从图3可以看出,无论是正常图像还是包含缺陷的图像,本文方法都能将其重构成不含缺陷的图像,同时在图像的结构与影调上尽可能的逼近测试图像。最终的结果表明了本文方法能够较好的识别缺陷。

Table 2. Comparison of image-level Anomaly Detection Performance on BTAD Data Set (AUROC)
表2. BTAD数据集上图像级异常检测性能比较(AUROC)
在模型识别正负样本的能力方面,从表2可以看出,本文方法识别正常和异常图像的能力在与目前表现得较好的方法相差不大,虽然没能在所有实例上达到最优,但是在所有实例上表现得更加均衡,具有更好的普适性,也表明本文方法具有较好的分类分正样本和负样本的性能。需要说明的是,我们的对比结果来自 [15] 。
除了模型的检测精度,其消耗的计算资源和时间成本也是值得注意的,一般来说,更快的检测时间有助于提升生产效率。我们模型在BTAD数据集上的平均训练时间为325 s左右,平均推理速度能达到60帧/s。在此基础上,如果适当的缩小训练与测试图像的尺寸,计算时间能够进一步的缩短。更快的训练时间以及推理速度有助于降低模型部署过程中的时间成本,使得模型具有更强的适应性。
总的来说,宽度学习系统的轻型网络架构使得模型具有快速重构图像的能力,我们还针对输入图像的分辨率调整了映射特征节点以及增强特征节点的数量,并且只需要2次迭代次就可以完成训练,这样可以大大减少训练以及测试的时间。此外,采用基于标准差的滤波方法能够有效的过滤掉许多重构误差,使得模型的精度提升。当缺陷区域与正常区域的灰度值差异越明显,基于标准差的滤波方法表现得越好。
5. 结论
本文提出了一种基于宽度学习的图像重建与缺陷检测方法,我们利用宽度学习系统来学习输入图像的数据模式,使其具有重构图像的能力,还在其映射特征节点层中加入了随机权重矩阵,提升了模型的泛化能力,使得模型的重构精度得到进一步加强,通过对差分图像进行高斯滤波以及二值化处理,分割出图像中的缺陷。通过在MNIST数据集上进行重构实验,表明我们的模型具有更高的重构精度,此外,我们的模型在BTAD数据集上的表现优于VT-ADL以及Patch SVDD方法,并且运行时间得到极大的减少,运行速度达到60帧/s,基本满足工业生产的实时性的要求。