目录
基于深度学习分割的表面缺陷检测
引言
相关工作
提出的算法
分割网络
决策网络
学习
推理
分割与决策网络的评估
Kolektor表面缺陷数据集
实验
性能指标
实现和学习细节
分割和决策网络
决策网络的贡献
要求注释的精度
与先进水平的比较
商业软件
使用先进的分割网络
与已经提出的算法比较
对训练样本数量的敏感性
计算消耗
讨论和总结
致谢
参考文献
PDF\CODE
基于深度学习分割的表面缺陷检测
Domen Tabernik(domen.tabernik@fri.uni-lj.si);
Samo ?ela;
Jure Skvar;
Danijel Skoaj(danijel.skocaj@fri.uni-lj.si)
part of Springer Nature 2019
摘要:基于机器学习的表面缺陷自动检测已经成为一个有趣且有发展前景的研究领域,对视觉检测的应用领域产生了非常高且直接的影响。深度学习方法已成为最适合这项任务的方法。它们允许缺陷检测系统通过学习仅仅向它显示一些范例图像来检测表面缺陷。本文提出了一种用于表面缺陷检测和分割的基于分割的深度学习体系结构,并在特定的表面裂纹检测领域进行了演示。该体系结构的设计使模型能够使用少量样本进行训练,这是实际应用的一个重要要求。该模型与相关的深度学习方法(包括最先进的商业软件)进行了比较,结果表明该方法在表面裂纹检测的特定领域优于相关的方法。大量的实验也清楚地展示出所需的标注精度、所需的训练样本数量和所需的计算成本。实验是在一个新创建的基于真实质量控制案例的数据集上进行的,实验结果表明了所提出的方法能够在少量缺陷表面上进行学习,仅使用大约25 - 30个缺陷训练样本,而不是在深度学习应用案例中通常需要的成百上千个训练样本。这使得深度学习方法能够在缺陷样本数量有限的工业上得到实际应用。本文的数据集也公开提供,以鼓励开发和评估用于表面缺陷检测的新方法。
关键字:表面缺陷检测;外观检测;质量控制;深度学习;计算机视觉;分割网络;工业4.0
引言
在工业生产过程中,确保成品质量的最重要的任务之一是检查产品的表面。通常,表面质量控制是手工进行的,工人们经过培训来识别复杂的表面缺陷。然而,这种控制非常耗时,效率低下,并可能严重限制生产能力。在过去,经典的机器视觉方法足以解决这些问题((Paniagua et al. 2010; Bulnes et al. 2016);然而,随着工业4.0范式的发展,趋势正朝着生产线的普遍化方向发展,需要对新产品的快速适应能力((Oztemel and Gursev 2018)。传统的机器视觉方法无法保证这样的灵活性。通常,在经典的机器视觉方法中,特征必须是手工制作的,以适应特定的领域。然后使用人为设定的基于规则的方法或使用基于学习的分类器(如SVM、决策树或KNN)做出决策。由于手工制作的特征扮演了十分重要的角色,因此这种分类器不如深度学习方法强大。各种滤波器组、直方图、小波变换、形态学操作和其他技术被用来手工制作适当的特征。手工设计特征在经典方法中占有重要的地位,但是这些特征并不适合所有的任务,并且在机器视觉方法必须手工适应不同产品的情况下,导致开发周期长。可以在数据驱动、机器学习方法中找到一种提高灵活性的解决方案,其中开发的方法可以快速适应新类型的产品和表面缺陷,使用适当数量的训练图像。
本文着重于使用最先进的机器学习方法来解决视觉表面缺陷的检测问题。近年来,深度学习方法已经成为计算机视觉领域最常见的方法。应用于表面质量控制问题(Chen and Ho 2016;Faghih-Roohi et al. 2016;Weimer et al. 2013;Kuo et al. 2014),深度学习方法可以取得优异的效果,并且可以适用于不同的产品。与经典的机器视觉方法相比,深度学习可以直接从底层数据中学习特征,对复杂结构的表征能力更强,从而用自动学习过程完全取代手工制作特征。由于对新产品的快速适应,这种方法非常适合工业4.0所要求的柔性生产线。然而,悬而未决的问题仍然存在:需要多少注释数据,以及注释需要多精确,程序的性能才能适合实际应用?在处理深度学习方法时,这是一个特别重要的问题,因为具有数百万个可学习参数的深度模型通常需要数千张图像,而在实践中往往很难获得这些图像。
本文探索了适合于表面质量控制的深度学习方法。特别是,本文研究了深度学习方法应用于工业品表面裂纹检测(见图1)。我们不仅从总体分类性能出发,还从工业4.0特别重要的三个特征:(a)注释需求、(b)所需训练样本的数量和(c)计算需求的角度出发,探索了合适的网络架构。数据需求是通过利用一个基于两阶段架构的深度卷积网络的有效方法来解决的。提出了一种新的分割和决策网络,该网络适合从少量的缺陷样本中学习,但仍能获得最先进的结果。对所提出的方法的一个广泛的评估是在一个新的、真实的被称为KolektorSDD的表面缺陷数据集进行的。该数据集代表了一个工业半成品表面缺陷检测的现实问题,在这里,可用于训练的缺陷图像的数量是有限的。通过强调三个重要的方面,证明所提出的方法已经适合研究的应用程序:(a)为达到100%的检出率所需的人工检查(通过额外的人工检测验证),(b)所需的注释细节和导致所需的人工人工成本的训练样本数量,以及(c)所需的计算成本。在研究领域,所设计的网络性能优于相关的最新商业产品和两种标准分割网络。
本文的文章结构安排如下:在相关工作部分给出了相关工作,在所提出的方法部分详细介绍了分割和决策网络。在分割和决策网络评价部分详细介绍了对所提议网络的广泛评价,并在“与最先进的部分的比较”部分与最先进的商业解决方案进行了比较。论文最后在讨论和结论部分进行了讨论。
相关工作
在引入AlexNet后不久,深度学习方法开始被更多地应用于表面缺陷分类问题((Krizhevsky et al. 2012)。Masci等人(2012)的工作表明,对于表面缺陷分类而言,深度学习方法优于传统的将手工设计的特征与支持向量机相结合的机器视觉方法。他们通过使用具有五层的卷积神经网络对几种钢铁缺陷类型进行图像分类这一实验证明了这一点,并取得了优异的成绩。但是由于没有使用ReLU和batch标准化处理,他们的工作仅限于浅层网络。FaghihRoohi等人(2016)使用了类似的架构来检测铁路表面缺陷。他们使用ReLU作为激活函数,并针对钢轨缺陷分类的具体问题对几种网络规模进行了评估。
在卷积网络的现代实现中,Chen和Ho(2016)应用了OverFeat (Sermanet和Eigen 2014)网络来检测五种不同类型的表面误差。他们识别了大量标记数据,这是深度网络的一个重要问题,并提出使用一个已有的预训练网络来缓解这一问题。他们利用在ILSVRC2013数据集中的120万幅普通视觉对象图像上训练OverFeat网络,然后使用该网络对有表面缺陷的图像进行特征提取。他们利用支持向量机在深度特征的基础上学习分类器,证明了预训练的特征优于LBP特征。利用所提出的近似表面粗糙度启发式算法,他们可以进一步改进该结果;然而,他们的方法并没有在目标域中学习网络,因此没有充分利用深度学习的潜力。
Weimer等人(2016)评估了用于表面检测的几种不同深度的深度学习体系结构。他们应用的网络从只有5层到11层不等。他们的评估集中在6种不同类型的合成误差上,结果显示深度网络优于任何经典方法,对合成数据集的平均精度达到99.2%。他们的方法也能够将误差定位在几个像素的精确度之内;但是,他们的定位方法效率很低,从每幅图像中提取小的patch,然后对每个单独的图像patch进行分类。
Raki等人(2018)提出了一种更有效的缺陷分割网络。他们实现了一个10层的全卷积网络,同时使用ReLU和batch归一化批处理对缺陷进行分割。此外,他们在分割网络的特征之上,提出了一个附加的决策网络针对缺陷是否存在对每幅图像进行了分类。这使得他们可以提高对合成表面缺陷数据集的分类精度。
最近,Lin等人(2018)提出了LEDNet架构,用于使用30000张低分辨率图像的数据集检测LED芯片图像缺陷。他们提出的网络遵循AlexNet架构,但是去掉了完全连接的层,取而代之的是加入了类激活映射(CAMs),类似于Zhou等人(2016)。这种设计允许他们学习只使用每幅图像标签和使用凸轮定位的缺陷。与传统方法相比,所提出的LEDNet在缺陷检测率上有显著提高。
与相关方法相比,本文提出的方法遵循分割网络和决策网络两阶段设计,类似于Raki等人(2018)的架构。然而,该方法对分割网络和决策网络的结构做了一些改变,目的是增加接受野的大小和增强网络捕捉小细节的能力。和一些相关工作(Raki et al. 2018;Weimer et al. 2016)中一样,提出的网络是被应用于现实世界的例子,而不是使用人为合成的例子。本研究中使用的数据集也只包含少量的缺陷训练样本(即30个有缺陷的样品),而不是数百个(Raki et al. 2018;Weimer et al.2016)或数千(Lin et al. 2018)。这使得一些相关的体系结构,如LEDNet(Lin et al. 2018),只使用每幅图像注释和大量的批处理,不适用于当前的任务。由于样本数量较少,使得网络设计的选择更加重要,本文评估了用两种不同的标准网络设计替代分割网络的效果,即DeepLabv3+ (Chen et al. 2018)和U-Net (Ronneberger et al. 2015),这两种网络设计通常用于语义分割。通过使用对ImageNet (Russakovsky et al. 2015)和MS COCO (Lin et al. 2014)数据集的120多万张图像进行预训练的DeepLabv3+网络,也评估了使用预训练模型的影响。
提出的算法
表面异常检测问题是一个二值图像分类问题。这适用于表面质量控制,在这种情况下,每幅图像中异常的精确分类通常比缺陷的精确定位更重要。然而,为了克服深度学习中样本数量较少的问题,本文提出的方法被表述为两阶段设计,如图2所示。第一阶段实现了一个分割网络,对表面缺陷进行像素定位。有效地将每个像素作为一个单独的训练样本来训练像素级别上的损失,从而增加了训练样本的有效数量,防止了过拟合。第二阶段进行二值图像分类,包括一个附加的网络,该网络建立在分割网络之上,使用分割输出和分割网络的特征。第一阶段网络称为分割网络,第二阶段网络称为决策网络。
分割网络
该网络由11个卷积层和3个最大池层组成,每个层都将分辨率降低了1 / 2。每个卷积层后面都有一个特征归一化和一个非线性ReLU层,这都有助于提高学习过程中的收敛速度。特征归一化将每个通道归一化为具有单位方差的零均值分布。前九个卷积层使用个内核大小,最后两个层分别使用和个内核大小。为不同的层分配不同数量的通道,网络架构的详细描述如图2所示。采用减少输出通道数的卷积层,得到最终的输出掩模。这将导致一个单通道输出映射,其输入图像的分辨率降低了8倍。该方法没有使用Drop-out,因为卷积层中的权值共享提供了足够的正则化。
该分割网络的设计重点是在大分辨率图像中检测小的表面缺陷。为了实现这一点,网络设计有两个重要的要求:(a)在高分辨率图像中需要较大的接受野;(b)需要捕捉小的特征细节。与Raki等人(2018)的相关工作相比,这导致了架构的几个重大变化。首先,在较高的层中增加一个下采样层和较大的核尺寸,以显著增加接受野的大小。其次,每个下采样之间的层数改为在结构的较低部分拥有更少的层,在较高部分拥有更多的层。这增加了接受野大的特征的能力。最后,使用最大池而不是大跨步的卷积来实现下采样。这可以确保小而重要的细节在向下采样过程中存活下来,这在具有额外向下采样层的网络中尤为重要。
决策网络
决策网络的结构使用分割网络的输出作为决策网络的输入。网络获取分割网络的最后一个卷积层(1024通道)的输出,并连接到一个单通道分割输出映射。这将产生1025个通道的卷积,它表示剩余层的输入,其中包含最大池层和具有个内核大小的卷积层。两层组合重复3次,第一、第二、第三卷积层分别为8、16、32通道。该体系结构的详细描述如图2所示。选择的通道数量随着特征分辨率的降低而增加,因此每一层的计算需求是相同的。最后一卷积层的分辨率比原始图像的分辨率小64倍。最后,网络执行全局最大和平均池化,产生64个输出神经元。此外,分割输出映射上的全局最大池和平均池的结果被连接成两个输出神经元,为分割映射已经保证完美检测的情况提供了一个快捷方式。这种设计的结果是66个输出神经元与线性权值组合到最终的输出神经元中。决策网络的设计遵循两个重要原则。首先,采用多层卷积和下采样的方法,保证了对大型复杂形状的合适容量。这使得网络不仅能够捕捉局部的形状,而且还能够捕捉横跨图像大区域的全局形状。其次,决策网络不仅使用1×1核进行信道约简前从分割网络输出的最后一个卷积操作的特征量,还使用1×1核进行信道约简后得到的最终分割输出映射。这提供了一个捷径,网络可以利用它来避免在不需要的情况下使用大量的特征图。它还减少了参数量大时的过拟合。快捷功能实现在两个层面:一个在决策网络的开始部分,分割输出映射被送入到决策网络的几个卷积网络层中,另一个在决定网络的最终部分,全局平均和最大值分割输出映射作为最后的全链接层的输入。与Raki等人(2018)的相关工作相比较,决策网络开始的快捷方式和几个低采样的卷积层是一个重要的区别。与本文提出的工作相比,它们在决策层中只使用单层,不使用下采样,在卷积中不直接使用分割输出映射,而是通过全局最大值和平均池化间接使用。这限制了决策网络的复杂性,并阻止它捕获大的全局形状。
学习
分割网络被学习为一个二进制分割问题,因此,分类是在单个像素的水平上进行的。评估了两种不同的训练方法:(a)使用具有均方误差损失(MSE)的回归和(b)使用具有交叉熵损失的二元分类。模型没有在其他分类数据集上预先训练,而是使用正态分布随机初始化。
采用交叉熵损失函数训练决策网络。学习与分割网络是分开进行的。首先,只对分割网络进行独立训练,然后冻结分割网络的权值,只对决策网络层进行训练。通过只微调决策层网络避免了分割网络中大量权值带来的过拟合问题。学习决策层阶段比学习分割层阶段更重要。由于GPU内存的限制,在学习决策层时,批大小限制在每批只有一到两个样本,而在学习分割层时,图像的每个像素都被视为一个单独的训练样本,因此有效批大小增加了几倍。同时考虑了分割网络和决策网络的学习。在这种情况下,损失函数的类型起着重要的作用。同时学习只有当交叉熵被用于两个网络时才可能。由于损失适用的范围不同,即每像素层和每图像层的精确归一化起到了至关重要的作用。最后,正确地规范这两种损失被证明不仅在实践中比使用单独的学习机制更难实现,而且也没有带来任何性能增益。因此,两阶段学习机制被证明是更好的选择,随后所有实验都采用了这一机制。
推理
该网络的输入是一幅灰度图像。网络结构与输入大小无关,类似于全卷积网络(Long et al. 2015),因为在feature map中不使用全连接层,而是在通过全局平均和最大池化消除空间维度之后才使用。因此,根据问题的不同,输入图像可以是高分辨率或低分辨率。本文探讨了两种图像分辨率:和。
提出的网络模型返回两个输出。第一个输出是从分割网络输出的分割掩码。该分割掩模输出对组输入像素的缺陷概率;因此输出分辨率相对于输入分辨率降低了8倍。由于高分辨率图像中像素块的分类足以解决当前的问题,因此输出的映射没有插值回原始图像大小。第二个输出是在[0,1]范围内的概率分数,表示由决策网络返回的图像中出现异常的概率。
分割与决策网络的评估
该网络在工业品表面裂纹检测中得到了广泛的评价。本节首先介绍数据集的细节,然后介绍评估及其结果的细节。
Kolektor表面缺陷数据集
在缺少带有标注的真实的公开的的表面缺陷数据集的情况下,创建了一个新的数据集,称为Kolektor表面缺陷数据集(KolektorSDD)。该数据集是由KolektorGroupd.o.o提供和注释的缺陷电换向器(见图1)的图像构造的。具体地说,在电子换向器的塑料的表面观察到微观部分或裂纹。每个换向器的表面积被捕获成八张不重叠的图像。为保证图像的高质量,图像是在受控环境下拍摄的,分辨率为像素。数据集由50个有缺陷的电换向器组成,每个都有8个相关的表面。这样总共得到了400张图片。对于每一个项目,缺陷只在一个图像中可见,这意味着有50个图像中缺陷是可见的(即有缺陷或阳性样品)。为每个图像提供了详细的像素级注释掩码。剩下的350张图片是表面没有缺陷的反面例子。具有可见缺陷和无缺陷图像的例子如图3所示。
此外,数据集使用几种不同类型的注释进行注释。这样就可以评估被提议的方法。注释的准确性在工业设置中尤为重要,要尽量减少注释所耗费的人力。为此,通过使用不同的内核大小使用形态学操作扩展原始注释,生成了另外四种注释类型:5、9、13和17像素。注意,这是应用于原始分辨率的图像,在分辨率为原来一半的实验中,注释掩码在放大后减小了。所有的注释,一个手工注释(a)和四个生成注释(b e),如图4所示。
实验
该网络首先在不同的训练设置下进行评估,包括不同类型的注释、输入数据旋转和不同的分割网络损失函数。
总的来说,网络在四个配置组下进行评估:
- 五种注释类型,
- 分割网络的两种损失函数类型(均方误差和交叉熵),
- 输入图像的两种大小(全尺寸和半尺寸),
- 输入图像不旋转和旋转90次。
每个配置组都可以从四个方面评估网络的性能。不同的注释类型允许评估注释精度的影响,而不同的图像分辨率允许以较低的计算成本评估对分类性能的影响。此外,还评估了不同的损失函数的影响,以及以0.5的概率旋转图像来增加训练数据的影响。
在此基础上,将表面缺陷检测问题转化为二值图像分类问题。主要目的是将图像分为两类:(a)存在缺陷和(b)不存在缺陷。
虽然可以从分割网络中得到像素级的缺陷分割,但由于在工业环境中它并不重要,因此评估不能衡量像素级的误差。相反,只测量每幅图像的二值图像分类误差。分割输出仅用于可视化目的。
性能指标
评估通过三次交叉验证来执行,同时确保同一实体产品的所有图像都在同一次验证中,因此不会同时出现在训练集和测试集中。考虑三个不同的分类指标(a)平均精度(AP),(b)平均误差(FN)和(c)误报数(FP),对所有评估过的网络进行比较。注意,正样本指的是有可见缺陷的图像,负样本指的是没有可见缺陷的图像。在评价中使用的主要度量标准是平均精度。这比FP或FN更合适,因为平均精度是计算在精确-召回曲线下的面积,并在一个单一的值中准确地捕捉模型在不同阈值下的性能。另一方面,分类错误的数量(FP和FN)取决于适用于分类分数的特定阈值。我们报告了在达到最佳F-measure的阈值上的错误分类的数量。此外,请注意,选择AP而不是ROCcurve(AUC)下的区域,因为AP更准确地捕捉了具有大量负(即,负)的数据集的性能。(如无缺陷)的样品比AUC的样品要少。
实现和学习细节
网络架构在TensorFlow框架中实现(Abadi et al. 2015),两个网络都使用不带动量的随机梯度下降进行训练。平均平方误差(MSE)采用0.005的学习率,交叉熵损失采用0.1的学习率。每次迭代只使用一张图像,即batch批处理大小被设置为1,主要是由于大图像大小和GPU内存的限制。
在学习过程中,训练样本是随机选取的,但对选取过程进行了修改,以确保网络观察到的缺陷图像和非缺陷图像数量平衡。
这是通过在每一次偶数迭代中获取有缺陷的图像,在每一次奇数迭代中获取无缺陷的图像来实现的。该机制确保系统以恒定的速率观察缺陷图像;否则,学习是不平衡的,有利于没有缺陷的样本,并会学习明显更慢,因为在数据集中有更大的一组没有缺陷的图像。应该指出的是,这导致的训练不是独家epochs做的,因为无缺陷图像的数量是有缺陷图像数量的8倍,网络接收到相同的缺陷图像之前,所有的无缺陷图像。
两个网络都被训练了6600步。有33个缺陷图像,每个训练集在单一和交替之间的缺陷和非缺陷图像在每一步,这转化为100个epoch。只有当所有有缺陷的意象至少被观察一次时,一个时代才被认为结束了,但并非所有没有缺陷的意象都必须被观察到。
分割和决策网络
首先对由第一阶段的分割网络和第二阶段的决策网络组成的网络进行了评价。详细结果如图5所示。此图显示了不同颜色的注释类型的实验结果,以及在虚线栏中使用图像旋转的实验结果。上面的组报告了全图像分辨率的实验,下面的组报告了一半分辨率的实验。采用个核尺寸(dilate=5)、交叉熵损失函数、全图像分辨率和不旋转图像的情况下,得到了性能最好的注释。这种配置下的网络达到了99.9%的平均精度(AP),有零假阳性(FP)和一个假阴性(FN)。
接下来,个人学习设置的影响可以通过观察每个具体设置变化的平均表现改进来评估。影响性能报告以下更改设置:(a)的损失函数改变叉分割网络的均方误差损失,(b)改变一个较小的图像分辨率的图像分辨率,和(c)的改变输入数据从没有旋转旋转到90年。AP在所有实验中的平均改进情况如图6所示。对于一个特定的设置更改,例如,将图像分辨率从完整的图像分辨率更改为图像分辨率的一半,首先通过计算所有设置中所有可能配置的AP来获得结果(如图5所示)。然后计算两个只改变了相关设置的实验之间的AP差异,例如,使用半图像分辨率的实验和使用全图像分辨率的实验,其他设置都是一样的。性能的总体改进是通过AP相对于所有其他设置的差异的平均值来实现的。正方向和负方向的标准差也分别被记录。
损失函数。对比图5中的均方误差损失(MSE)和交叉熵损失函数,可以清楚地看到,使用交叉熵损失函数训练的网络具有最好的性能。这反映在AP度量和FP/FN计数中,以及在图6中所有其他设置的平均交叉熵的改进中。平均而言,在AP上交叉熵达到了7% (pp)。
图像分辨率。如图6所示,降低图像分辨率的网络的AP平均下降了5%。仔细观察图5可以发现,较小的图像对用MSE损失函数训练的网络有很大的负面影响,而用交叉训练的网络则没有。交叉熵对降低的图像分辨率不那么敏感,而且在某些情况下,降低分辨率的图像的性能略好一些(在AP中大约为1%)。图像旋转。另一方面,随机旋转图像并没有被证明是有用的,也没有带来任何显著的性能提升。在某些情况下,增幅最多为1%;然而,在其他情况下,性能下降得更多。
注释类型。最后,对比图5中不同注释类型,在较小注释(原始注释或小核膨胀)的训练和考虑交叉熵损失时,对性能的负面影响不大。这种差异在MSE损失函数中更为明显。总的来说,最好的结果似乎是实现了以中到大型扩展速度扩展的注释。
决策网络的贡献
同时也评估了决策网络对最终性能的贡献。这一贡献是通过比较前一节的结果与分割网络,而不考虑决策网络来衡量的。代替决策网络,一个简单的二维描述符和逻辑回归被使用。根据分割输出映射的全局最大池值和平均池值创建一个二维描述符,作为逻辑回归的特征。逻辑回归是在分割网络训练完成后从分割网络中单独学习的。
结果如图7所示。当关注具有交叉熵损失的模型时,很明显,仅采用分割网络的网络已经取得了较好的效果。通过dilate=9注释获得的最佳配置达到平均精度(AP)为98.2%,零假阳性(FP)和四假阴性(FN)。然而,决策网络在大多数实验中都改进了这一结果。决策网络对MSE损失的贡献较大。当只使用分割网络的时候,MSE损失函数的平均精度达到了小于90%AP。但是当使用决策网络时,MSE损失函数的AP达到了95%以上。对于交叉熵训练的网络,决策网络也有助于性能的提高,但由于分割网络的性能已经很好,改进幅度略小,决策网络平均AP提高了3.6%,达到98%以上。在理想阈值处,错误分类的数量也有同样的趋势,当包含决策网络时,分割网络平均4个错误分类减少到平均2个错误分类。
这些结果表明了决策网络的重要作用。简单像素输出分割似乎没有足够的信息来预测图像中缺陷的存在,就像决策网络一样。另一方面,所提出的决策网络能够从最后一层的丰富特征中获取信息,并且通过决策层,能够从正确的特征中分离出噪声。决策网络中额外的下采样也有助于提高性能,因为这增加了接受野的大小,使决策网络能够捕获缺陷的全局形状。整体形状对分类很重要,但对像素分割不重要。
要求注释的精度
来自上一节的实验表明,大型注释比精细注释执行得更好。本节将通过评估更粗的注释对分类性能的影响进一步探讨这一点。为此,创建了两种额外类型的注释,称为:(a)带有边框的大注释和(b)带有旋转边框的粗注释。两种标注均如图8所示。人工注释器执行这种类型的注释所花费的时间较少,并且在工业环境中效果更好。
结果如图9所示。由于之前的实验证明MSE损失的能力较弱,所以本实验只使用具有交叉熵损失的网络。实验表明,大型注释的执行效果几乎和精细注释一样好。标记为big的注释表现稍差,最佳AP为98.7%,有3个误分类,而粗注释的AP为99.7%,有2个误分类。注意,如果使用更小的图像分辨率,这两个注释都可以实现类似的APs,但错误分类数量相同。
这些结果可以与上一节中通过更精细的注释获得的结果相媲美,在上一节中,只有一个错误分类获得了99.9%的AP。更精细的注释确实能获得更好的结果;但是,考虑到这种级别的细节注释花费的时间太长,使用粗糙的注释仍然是可行的,而且性能损失很小或者没有损失。
与先进水平的比较
在相关工作的背景下,对几个国情模型进行了进一步评估,以评估所提议的方法的表现。本节首先演示了一个最先进的商业产品和两个标准分割网络在不同的训练配置下的性能。这为每一种最先进的方法提供了最好的培训配置,并允许与提议的网络架构进行比较,这将在本节的最后进行。
商业软件
首先评估的是基于深度学习的最先进的工业图像分析商业软件Cognex ViDi Suite (Cognex2018)。Vidi公司于2012年从CSEM中脱颖而出,CSEM是一家私营的、非盈利的瑞士研究和技术组织,并于2017年被Cognexin收购。该软件包有三个不同的深度学习工具:ViDi blue(固定、定位),ViDi Red(分割和异常检测),ViDi green(物体和场景分类)。
Vidi Red是一个用于异常检测、审美视觉检查和分割的工具。该工具可以在无监督或监督模式下运行。在前一种情况下只需要非缺陷样本的图像,而在后一种情况下只需要缺陷样本的图像。用户可以从四个不同的区域调整各种参数:采样(特征尺寸,颜色),训练(计数新纪元,序列选择),扰动(旋转,比例,纵横比,剪切,翻转,亮度,对比度)和处理(采样密度,简单区域)。
在本文中,所有使用Cognex ViDi Suite v2.1的实验都是在监督模式下使用ViDi Red工具进行的。软件将在不同的学习配置下进行广泛的评估,以找到最佳的条件,以便与下一节提出的方法进行公平的比较。以下学习配置可用于此评估:
- 五种注释类型,
- 三种特征大小(20,40,60像素),
- 两种输入图像大小(全尺寸和半尺寸),
- 输入数据旋转/不旋转90次。
不同的设置类似于“分割和决策网络评估”部分的设置,不同之处在于不同的损失函数没有被评估,因为软件没有提供如此详细的控制级别。取而代之的是评估不同大小的特征,这些特征已经被证明在被提出的数据集中起着至关重要的作用。评估大小在20到60个像素之间的特征。根据说明书的要求,不建议使用小于15像素的特征,而大于60像素的特征会产生更糟糕的结果。
实现细节。可以通过生产和培训API访问ViDi套件的学习和推理核心。所有的实验都是在C#变成语言下进行的。评估是通过三重交叉验证和与之前实验相同的训练/测试分割来执行的,使用灰度图像(颜色通道数设置为1)和100个epoch的学习。对来自训练数据集的所有图像进行训练;因此,training selection = 100%。模型是在生产模式下被导出和评估的,其中,使用测试数据集,参数simple regions=enabled,sampling density=1。这保证了在深度学习模型中所使用的处理过程是等价的。对于参数sampling density,我们使用供应商推荐的默认值。也进行了以较慢的推断为代价的更密集的采样值的实验,但这并没有提高结果。
结果。结果如图10所示。在不同的学习设置中,使用dilate=5d的标记样本训练的模型,使用最小的特征尺寸(20个像素),不旋转图像和使用原始图像尺寸获得最佳性能。该模型的AP达到99.0%,有5个误分类,即FN为5,FP为0。值得注意的是,一个模型只完成了4个误分类,尽管总体上AP较低。
标注尺寸。在不同的标注类型中,膨胀标注的性能优于未膨胀标注。然而,在不同的膨胀率之间,性能增益最小,dilate=5和dilate=17之间只有0.1 pp的差异。
特征尺寸。通过比较不同的特征大小,无论标注精度如何,具有小特征的模型始终优于具有大特征的模型。这一点归因于具有高图像分辨率和许多小的表面缺陷的数据集。此外,对半分辨率图像的实验表明,在这种情况下,大特征的表现明显差于小特征。这导致了一个结论,即大的特征尺寸不能捕捉小的细节,这是重要的分类。
图像大小和旋转。最后,实验还表明,半分辨率图像和随机旋转输入数据中90%的数据都不能提高性能。在这两种情况下,性能都会略微下降,尽管二者的性能下降都很小。
使用先进的分割网络
接下来,我们评估了两个标准的分割网络,即DeepLabv3+ (Chen etal. 2018)和U-Net (Ronnebergeretal.2015)。DeepLab架构被选为在当前语义分割基准上达到最先进结果的预训练模型的代表,而U-Net架构被选为精确像素分割的模型的代表。读者可以参考Chenetal.(2018)获得关于DeepLabv3+方法的更详细信息,也可以参考(Ronneberger etal. 2015)获得关于U-Net模型的详细信息。两种模型在不同的标注下进行评估,但是损失函数只考虑了交叉熵,并且只使用了没有数据旋转的全分辨率图像大小,因为这些设置在之前的实验中被证明是最好的。
实现细节。通过替换网络的分割部分,将两种分割方法嵌入到本文提出的方法中。嵌入到提出网络中的两个网络的都是基于TensorFlow实现的。这些实验中使用的DeepLabv3+基于包含65个卷积层的Xception (Chollet 2017)架构,在单一尺度上训练和评估,使用16的输出步长。实验中使用的U-Net是经过改进的U-Net架构,有24个卷积层,唯一的修改是对每个卷积都增加了批处理归一化。原U-Net也以全输入分辨率输出分割,但由于全分辨率的像素级精确分割不符合本实验的需要,因此输出映射分辨率降低了8倍。这与提出的网络中的输出分辨率相同。
对于这两个分割网络,分割层和决策层是分开训练的,类似于所提出的方法,使用三倍交叉验证与之前所有实验相同的训练/测试分割。这两种方法也用logistic回归代替决策网络进行了评价,但结果证明其性能较差。使用ImageNet (Russakovsky et al. 2015)和COCO数据集(Lin et al. 2014)预训练的模型初始化DeepLabv3+网络的参数。而U-Net网络的参数是按照正态分布随机初始化的,类似于本文网络的初始化。两个网络都训练了100个epoch,学习过程与所提出的模型相同,即在没有动量的情况下使用0.1的学习率,批大小为1,每一步都在缺陷图像和非缺陷图像之间交替进行。
结果。结果如图11所示。在标准网络中,性能最好的模型,即DeepLabv3+使用dilate=9个注释进行训练,AP达到98.0%,在理想的F-measure下获得2个FP和4个FN。总的来说,稍微放大的注释可以得到最好的结果,而用大内核放大的注释得到的结果更差。平均而言,无论标注类型是什么,DeepLabv3+的平均精度也比U-Net架构高出2个百分点。
与已经提出的算法比较
最后,将三种最先进的方法与本文提出的网络进行了比较。并与分割和决策网络相结合的方法进行了比较。为了进行公平的比较,本节报告的所有方法都是根据前几节评估的最佳训练设置选择的。对于所有的方法,包括使用原始图像大小(1408 512分辨率),不输入图像旋转,使用最小的特征尺寸20像素的商业软件和使用交叉熵损失函数的所有其他的方法。对于标注类型,不同的方法在不同的标签上表现最好。商业软件和本文提出的分割和决策网络方法在dilate=5标签上训练时性能最好,而DeepLabv3+和U-Net在dilate=9标签上训练时性能最好。为每个选项选择的配置设置如表1所示。
结果。如图12所示。在最左边的栏中显示的所提出的方法在所有指标上都优于所有最先进的方法。商业产品的性能第二好,而两种标准的分割方法都是最差的,DeepLabv3+架构的性能略优于U-Net。观察理想f -测度下的误分类数量,可以发现所提出的分割和决策网络能够将误分类减少到只有一个误分类,而其余的方法都引入了5个或更多的误分类。
图13、14给出了所有方法的一些误分类图像。真阳性和假阴性检测,如图13所示,在第一列中,对所提方法进行了一次缺失检测。这个样本包含了一个小的缺陷,它很难被检测到,并且没有被任何剩余的方法检测到。对于剩下的例子,本文提出的方法能够正确地预测缺陷的存在,包括在最后一列中看到的一个小缺陷。同时,该方法也能很好地定位缺陷。在相关方法中也可以观察到良好的定位;然而,对缺陷存在或不存在的预测很差。注意,在某些情况下,分数很大;然而,为了正确地将所有的缺陷从非缺陷中分离出来,阈值也需要设置得很高,这就导致了对无缺陷图像的许多误报。图14很好地说明了这一点,其中显示了几个错误检测。除了本文提出的方法和商业软件外,所有相关的方法都可以观察到高的假阳性。特别是,U-Net返回的输出带有大量的噪声,即使加上附加的决策网络,也无法将真缺陷和假缺陷完全分离。另一方面,提出的方法没有任何假阳性问题,能够正确地预测这些图像中没有缺陷。
结果。当考虑在工业环境中使用提出的模型时,确保检测出所有的缺陷项目是重要的,即使以牺牲更多的假阳性为代价。由于之前的度量标准没有捕获这些条件下的性能,因此本节将进一步说明如果需要零漏报率(即零漏报率),将获得的误报的数量。如果要求召回率为100%。这些假阳性结果代表了需要由熟练工人最终验证的项目的数量,并直接指向了达到预期准确性所需的工作量。
结果显示,在所有400幅图像中,本文所提出的模型在零缺失率下只引入了3个假阳性。这代表了所有图像的0.75%。另一方面,相关方法的效果较差,商业产品需要手工验证7幅图像,而标准分割网络DeepLabv3+和U-Net分别需要68幅和108幅手动验证。注意,结果报告的两个标准分段包括使用建议的决策网络。使用逻辑回归代替所提出的决策网络会导致显著的性能下降。
对训练样本数量的敏感性
在工业环境下,一个非常重要的因素也是所需的缺陷训练样本的数量,因此我们也评估了较小的训练样本规模的效果。评估是使用三倍交叉验证与同样的训练/测试分裂使用在所有之前的实验,因此有效地使用33个阳性(缺陷)样本在每个折叠时,所有的训练样本。然后减少正训练样本的数量,有效地得到每一次训练的样本大小N为25、20、15、10和5个,而每一次训练的测试集保持不变。取出的训练样本是随机选取的,但所有方法取出的样本相同。与之前的所有实验一样,采用了同样的训练和测试程序。将所提出的分割与决策网络与商用软件Cognex ViDi Suite和两种最先进的分割网络进行了比较。所有的方法都是使用在前几节中给出的实验中确定的最佳训练设置来评估的。使用dilated=5个注释(或者dilated=9用于分割网络),全图像分辨率,交叉熵损失和无图像旋转。结果如图15所示。在仅使用25个有缺陷的训练样本的情况下,分割和决策网络保留了99%以上的AP和一个误分类结果。当使用更少的训练样本时,结果会下降,但仅使用5个有缺陷的训练样本时,该方法仍能达到96%左右的AP。然而,在Cognex ViDi组中可以观察到更明显的性能下降,在这种情况下,在N=25到AP时,结果已经下降了97.4%。当只使用5个有缺陷的训练样本时,商业软件的AP值略低于90%。图15的下半部分所示的误分类数也有同样的趋势,暗色代表误阳性,浅色代表误阴性。另一方面,当使用较少的训练样本时,DeepLab v3+和U-Net的性能比所提出的方法差。U-Net的性能迅速下降,而DeepLab即使只对15个有缺陷的训练样本保持了相当好的结果。需要注意的是,在20个和15个有缺陷的训练样本中,其性能略优于在所有训练样本中得到的结果,说明DeepLab对特定的训练样本比较敏感,去除这些样本有助于提高性能。U-Net对训练样本数量的减少明显更敏感;结果在平均精度上从75%到略高于90%不等。然而,对于10个和5个有缺陷的训练样本,DeepLab表现最差,AP分别为46%和16%。实验结果表明,在训练样本较少的情况下,该方法仍能保持较好的稳定性能。
计算消耗
本文提出的方法在计算量方面优于现有的分割方法,并与商业软件相竞争。图16报告了相对于平均精度的正向通过时间。
结果在单个NVIDIA TITAN X (Pascal) GPU上获得。实验结果表明,该方法比DeepLab v3+和UNet速度快得多,具有较高的精度。这是通过较少的参数实现的,这在图16中的标记大小中得到了反映,也如表2所示。对于所提出的模型,该性能仅使用15.7个mio参数就可以实现,而U-Net和DeepLab v3+的参数则是前者的两倍多,分别为31.1 mio和41.1 mio参数。Cognex ViDi套件的参数数量是不可公开的。所提出的方法和商业软件也显示在一半的分辨率与图16中的星星标记。这表明,该方法比全分辨率的快3倍,半分辨率为33ms,全分辨率为110ms。商用软件Cognex ViDi Suite的性能最快,每幅图像的处理时间为10ms。然而,当使用一半的图像分辨率时,所提出的最佳性能模型只需要稍微大一点的计算代价就可以获得类似的性能。请注意,所提出的模型在TensorFlow框架中实现了这种性能,而没有应用任何计算优化,而可以安全地假设商业软件已经进行了高度优化,以尽可能减少计算成本。
讨论和总结
从具体工业应用的角度出发,探讨了一种基于分割网络的深度学习表面缺陷检测方法。提出了一种两阶段的方法。
第一阶段是在缺陷的像素级标签上训练一个分割网络,第二阶段是在分割网络的基础上建立一个判断整个图像是否存在异常的决策网络。对提出的方法进行了广泛的评价,对半成品工业产品,即这是一个电气换向器,表面缺陷表现为材料的断裂。这个问题域已经作为基准数据集公开提供,称为Kolektor表面缺陷数据集(KolektorSDD)。该方法在该领域与几种先进的方法进行了比较,包括专有软件和两种基于深度学习的标准分割方法。
在KolektorSDD上的实验表明,与只有一个误分类的相关方法相比,所提出的模型取得了显著的好结果,而相关方法取得了五个或更多的误分类结果。这可以归因于提出的带有分割和决策网络的两阶段设计,以及改进的接受野大小和提高了捕捉缺陷细节的能力。相关的方法缺少这些特征。例如,性能最差的分割方法U-Net接受野大小有限,接受野大小只有45像素,而本文方法的接受野大小为205像素。虽然DeepLabv3+提高了接受野的大小,但它的代价是太多的参数,这会导致模型过度拟合,尽管它是在单独的数据集上预先训练的。
另一方面,很难评估与商业软件的区别,因为该方法的细节尚未公开。然而,实验表明,在使用低分辨率图像时,商业软件的性能明显比本文提出的方法差。这个实验表明,商业软件很难捕获缺陷的细节,并且需要更高的分辨率来获得良好的性能。
然而,即使在使用高分辨率图像的情况下,仍无法获得与本文方法相同的性能。
该方法仅通过对33个缺陷样本的学习就获得了良好的性能。图17给出了正确分类的几个例子。而且,仅使用25个缺陷样品,仍然可以获得良好的性能,而在这种情况下,相关的方法取得了较差的结果。这表明,所提出的深度学习方法适用于具有有限缺陷样本的工业应用。此外,为了进一步考虑工业环境的应用,我们评估了三个重要特征:(a)实现100%检测率的性能,(b)注释的细节和(c)计算成本。从100%检测率的性能来看,我们提出的模型在400张图像中只需要3张图像进行手工检测,检测率为0.75%。大而粗的注释也足以实现与细注释类似的性能。在某些情况下,更大的注释甚至比使用更好的性能。这个结论似乎是反直觉的;然而,一种可能的解释可以从用于分类每个像素的感受野大小中找到。对于一个稍微远离缺陷区域的像素,cepcepfield仍然会覆盖缺陷区域的一部分,因此,如果正确注释,可以帮助找到对检测重要的特征。这一结论可以导致在将方法适应新领域时减少手工工作,并将导致降低劳动力成本和提高生产线的灵活性。
然而,被提出的方法仅限于特定类型的任务。特别地,该架构是为任务设计的,这些任务可以被框定为像素级注释的分割问题。存在其他质量控制问题,而基于分段的解决方案不太适合。例如,复杂的3D对象的质量控制可能需要检测破碎或缺失的部件。这些问题可以通过检测方法来解决,如Mask RCNN (kaim et al. 2017)。
本研究证明了所提方法在特定任务(裂纹检测)和特定表面类型上的性能,但网络架构并非仅针对该特定领域设计。不需要任何修改就可以学习新的领域。体系结构可以应用于图像包含多个复杂的表面,也可以应用于检测其他不同的缺陷模式,如划痕,污迹或其他违规行为,提供足够数量的叛逃训练样本是可用的,特定的缺陷检测的任务框架,可以作为表面分割问题。然而,为了进一步评估这一点,需要新的数据集。就我们所知,DAGM数据集(Weimer et al. 2016)是唯一一种公开可用的带注释的数据集,具有多种表面和缺陷类型,适合评估基于学习的方法。该方法在该数据集上取得了很好的结果,但该数据集是综合生成的,也是根据所得到的结果饱和的。因此,未来的努力应该集中在基于现实世界的视觉检查问题获取新的复杂数据集上,深度学习(和其他)方法可以被真实地全面评估;本文中展示的数据集是这个方向的第一步。
致谢
这项工作得到了以下研究项目和计划的部分支持:由斯洛文尼亚共和国和欧洲区域发展基金共同资助的GOSTOP项目C3330-16-529000, ARRS研究项目J2-9433 (DIVID)和ARRS研究项目P2-0214。我们还要感谢Kolektor Orodjarna d. o. o.公司为我们的数据集提供了图片,并提供了高质量的注释。
参考文献
在文献引用部分的“年份”处提供了超链接,直接点击即可,部分可直接下载。