基于显著性线索与改进U-Net的织物缺陷检测方法
2023-02-03李明辉刘荣强雷渠江桂光超
李明辉,刘荣强,雷渠江,桂光超
(1.陕西科技大学 机电工程学院,西安 710021;2.广州中国科学院先进技术研究所,广州 511548)
0 引言
由于织物被广泛应用于各个领域,例如,服装、医疗、军工等,每年有大量的织物被生产。在实际生产过程中,由于纱线问题、操作不当以及拉伸过度,导致生产的织物出现各种缺陷,有缺陷的织物导致低质量的产品,降低了产品45%~65%的价格[1]。因此,为了保证产品的价值,在生产过程中,对织物表面进行缺陷检测是非常有必要的一个步骤。
传统地,缺陷检测任务是由人类工作者所胜任的。但是由于织物的特殊性(例如高弹性、质地柔软以及色彩丰富等),通过人眼识别许多缺陷易被忽略。根据工业报道,手工检测的精度仅仅只有60%~75%[2]。近年来,自动化检测技术被应用于织物的缺陷检测,基于计算机视觉的检测方法不仅仅提高了检测精度,在效率和资源利用率方面也有了很大的提升。
截止目前,大量先进的织物检测方法被提出,根据原理可将其划分为四类:统计学方法、频谱法、模型法以及基于学习的方法。文献[3]提出利用自相关函数和灰度共生矩阵(GLCM)对原始图像进行特征化处理,通过计算被测图像与模板间的欧式距离,并给出阈值来实现缺陷检测。结果表明,此方法具有计算简单、客观可靠等优点。文献[4]提出一种基于Gabor滤波器和方向梯度直方图(HOG)特征的织物疵点检测算法,利用多个尺度和多个方向的Gabor滤波器组对织物图像滤波,有效的抑制了织物背景纹理的干扰,提高了织物疵点检测的准确率。在以上方法都较难处理织物纹理变化没有规律的情况下,基于模型的方法能获得更好的检测结果。文献[5]提出一种将多渠道信息融合到一个独特的特征图中的方法,根据Gumbel分布模型对无缺陷背景纹理对应的像素值分布建模。该方法不需要任何标准参考就可以取得不错的结果,但泛化能力差,检测性能依赖于所选择模型的参数。基于学习的方法在织物缺陷检测方面极受欢迎。文献[6]通过对图像的显著性映射进行分析,提取并归一化全局和背景关联值作为图像的显著性特征,利用得到的样本训练支持向量机,对有瑕疵的织物分类。
自从Alexnet在2012年的ImageNet竞赛中夺冠后,卷积神经网络(CNN)在计算机视觉领域掀起了革命的浪潮。与经典机器学习算法中手工设计复杂的特征相比,CNN作为一种端到端的学习方式,通过卷积、池化等操作,自动学习有用的特征。最初的CNN被用于图像的分类任务中,随着人工智能和深度学习的高速发展,更多创新的CNN算法被提出,并且被成功应用到物体检测和语义分割任务中。文献[7]对比了YOLO9000、YOLO-VOC和Tiny-YOLO三种检测模型,提出一种基于YOLOV2的织物疵点自动定位和分类的方法。文献[8]提出一种新的深度卷积神经网络PTIP,在训练阶段采用局部图像,而在测试阶段使用整张织物图像。文献[9]提出了一种全卷积神经网络,并命名为U-Net,该模型采用像素到像素的训练方式,在医学图像分割上取得了令人满意的结果。为了解决U-Net不能满足的实时性问题以及织物工厂实际生产条件下正负数据样本不均衡问题,文献[10]提出了一种高效的卷积神经网络Mobile-Unet,该模型采用中位数频率平衡损失函数来克服样本不平衡问题,此外引入深度可分卷积,极大地降低了网络的复杂度和模型规模。
近年来,基于人视觉的注意机制分析方法已经在目标检测、图像分割、物体检索等领域受到了广泛关注。研究表明,人的视觉系统能够快速注意到一些复杂场景中显著的区域。文献[11]注意到织物的缺陷和非缺陷区域的颜色在视觉上的差异,以及缺陷区域往往集中在一个小的区域而不是整张图像,提出了一种利用颜色差异和位置聚集的显著性度量检测方法(CDPA)。鉴于显著性检测算法和卷积神经网络在缺陷检测上的优异表现,本文提出一种改进的U-Net图像分割模型用于织物的缺陷检测,并通过实验将检测结果与上文提到的YOLOV2[7]、PTIP[8]、U-Net[9]、Mobile-Unet[10]以及CDPA[11]方法进行对比。结果证明本文所提出的检测模型在织物缺陷检测中表现更加出色。
1 方法的整体结构
本章从整体上介绍所提出的织物缺陷检测方法流程,如图1所示。此方法是一种对缺陷目标精准定位的端到端的架构,并且主要由三个基本的步骤组成:图像预处理、缺陷目标分割和后处理。
图1 织物缺陷检测流程图
1.1 图像预处理
对神经网络的训练需要大量的样本,但往往在实际的工业环境下,制作带有标签的大型数据集是困难且昂贵的。为了防止数据集样本数量小导致的过拟合,并且让模型学习到更多强健的图像特征,本文采用缩放、旋转、随机剪裁以及其组合的数据增强方式对数据集扩充。另外,本文基于缺陷区域的显著性线索,提出一种融合多种检测算法对图像进行预处理。将预处理后的图像与灰度图像合并为双通道作为神经网络的初始输入。关于显著性检测的详细介绍,将在第三章进行阐述。
1.2 缺陷目标分割
在经过预处理之后,可以得到织物缺陷粗略的位置信息。为了获得更好的分割结果,本文提出一种改进的U-Net(CU-Net)图像分割网络。该网络的主干采用U-Net架构,因此图像处理的过程与U-Net相似。在U-Net中,撇弃了所有的全连接层,实现了像素到像素的映射,另外,通过收缩路径和膨胀路径的跳跃连接,上下文信息被传递到了更高的特征图中。然而,经典的U-Net存在两个严重的缺点:一方面,它的分割精度不高,另一方面,由于模型尺寸较大,它需要较长的时间消耗。因此,我们分析了其特点,并做出了几项重大改进。CU-Net网络结构将在第四章展开讲述。
1.3 后处理
经过CU-Net处理后的图像输出为二值的分割图,后处理阶段基于此分割图,用矩形框对织物的缺陷区域进行标记。最终结果显示,经过后处理的缺陷区域更加显眼且更易被技术人员所认可。
2 显著性检测
通过对有缺陷织物的观察,我们发现在灰度图像中大多数种类的缺陷呈现孔洞和裂纹的特征。进一步对图像进入深层次的分析,五条基于人类视觉注意力机制的重要显著性线索被提出:
1)缺陷区域的光线反射强度比无缺陷区域弱;
2)缺陷区域往往具有更明显的边缘和拐角响应;
3)缺陷目标的灰度值更加显眼;
4)织物的背景纹理呈现有规律的重复;
5)人眼更容易注意到缺陷目标。
2.1 暗度线索(Darker cue)
当缺陷存在时,织物表面的几何形状将会发生微量的变化,这就导致了局部区域的漫反射变得更加杂乱,因此缺陷目标看起来比背景更暗。为了减少光照不均的影响,自适应阈值分割被用来计算该线索。原理被描述:
式(1)中,IR表示初始图像I经过R×R窗口的均值滤波器后得到的模糊图像;t≥0表示一个常数阈值。当一个像素的灰度值小于它邻域的均值减去t时,则认为它比其他的像素值更暗。
2.2 结构张量线索(Structure Tensor cue)
由于缺陷目标和背景之间的漫反射存在差异,所以在缺陷区域的周围存在锐利的边缘和拐角。Harris[12]提出用结构张量(Structure Tensor)检测边缘和拐角。图像的结构张量定义为其海森矩阵,因此,锚点像素(x,y)的结构张量被描述为:
用λ1和λ2表示M的特征值,可以由下式计算得到:
Harris指出:当且仅当λ1和λ2都很大时,该区域是拐角,如果一个特征值很大,同时另一个特征值很小时,边缘响应就会发生。用A和B分别代表锚点像素的拐角响应和边缘响应,它们被定义:
因此,图像的结构张量被描述为:
其中SalA和SalB分别表示初始图像的拐角和边缘显著图,他们可以由等式(4)计算得到。N(·)表示显著图的归一化操作。
2.3 颜色稀缺性线索(Rare color cue)
根据我们观察到的第三条线索,缺陷部位的灰度与背景相区别,由于颜色的稀缺性,缺陷很容易被注意到。因此,AC算法[13]被用来计算此线索。
该方法选取三种不同大小的邻域(边长分别是h/8,h/4,h/2)进行高斯滤波,并将其转换到LAB色彩空间,分别求取像素点h/8邻域LAB空间的均值Lm1、Am1、Bm1,h/4邻域均值Lm2、Am2、Bm2和h/2邻域均值Lm3、Am3、Bm3。再分别将LAB的模糊图合并,用公式表示为:
基于该线索最终的显著图为:
2.4 线索融合
在第四条线索中,我们注意到织物的背景纹理是有规律的,它们遵循固定的模式,并且对缺陷预测造成了很大的影响。PHOT算法[14]能够从图像中以任意规模移除有规律的纹理,并且只保留无序的部分。BMS模型[15]通过模拟人的视觉注意力原理检测显著性目标。
基于以上5条线索,本文提出了一种多线索融合检测方法,称之为MCue,它被定义为:
式(8)中,SBMS、SAC、SPHOT、SST、D分别表示BMS、AC、PHOT、Structure Tensor以及Darker cue的显著图;ωD、ωPHOT表示Darker cue,PHOT显著图的权重;m是一个常数,被用作归一化。
通过对图像的逐像素相加,那些不完整的显著区域相互补充,因此该区域被增强;另外,乘法操作能够很大程度的削弱非显著区域,而对显著可能性大的区域影响不大。我们取ωD=ωPHOT=3,m=5用作执行图像的线索融合。根据ST,PHOT,AC单独的计算,尽管缺陷的高可能性区域被辨别出来了,但是不能得到完整的形状,因此,对这些显著图执行逐像素相加。根据这些部位的高概率密度,PHOT算法可以精确地辨别出缺陷,所以给ωPHOT赋予高值。由于线索一的严格的限制,直接相乘很容易导致错误的检测,因此采用DωD+1.0的策略削弱Darker cue的影响。
3 CU-Net 网络模型
3.1 网络基本架构
为了加快模型的训练和测试速度,我们对U-Net的特征通道数以及压缩路径的下采样数进行了修剪。其中,通道数由U-Net的64,128,256,512,1024减少到CU-Net的32,64,128,256。在CNN中,小的特征图包含更多的语义信息用于分类任务,而更大的特征图包含更多的空间信息。织物缺陷检测是一个二分类问题,因此更多的注意力应该放在定位上。由于下采样数目的减少,CU-Net生成的最小的特征图是U-Net的四倍,这导致了更高的定位精度。
CU-Net采用的编解码器架构如图2所示。在编码器部分,两个3*3的卷积层构成的卷积块被重复使用,为了使每一次的卷积操作不改变图像的大小,采用边界填充策略。在每一个卷积块后紧跟一个ReLU激活函数和一个2*2的最大池化操作,令步长为2用于执行下采样。在每次的下采样中,特征通道的数量将增加一倍。解码器部分与前者相反,用2*2的卷积对输入的特征图进行上采样,得到的特征图通道数减半,但特征图的尺寸翻倍。另外,在编码器和解码器之间通过跳跃连接的方式,将低级特征图的信息传递到更高级的特征图中。此外,考虑到一些织物图像中存在较小的缺陷,在分割过程中容易丢失,因此在跳跃连接中引入注意力机制。
图2 CU-Net网络架构
3.2 注意力机制
注意力机制被用来显式地建模特征通道之间的依赖关系。在CU-Net的跳跃连接中引入注意力机制,抑制不相关区域的特征响应,减少冗余特征的数量。并且该模块只会给模型增加很少的参数和内存负担,却能显著提高模型预测能力。所采用的模块如图3所示。
图3 注意力机制模块
该模块主要分为压缩,激活和融合三个阶段。通过全局均值池化将输入的特征图的各个通道进行压缩,得到各个特征维度的全局信息,压缩操作的计算公式为:
式(9)中,xc是输入特征图的第c维特征;H和W是特征图的宽和高;(i,j)表示特征图空间维的坐标;S为压缩函数;yc为压缩后得到的特征图。
激活操作类似于循环神经网络中门的机制,两层的全连接可以更好地拟合通道之间的复杂的相关性,因此选用两层全连接为每个特征通道生成权重。表示如下:
式中,x是压缩后的特征图;Wr和Ws分别代表压缩和重构的全连接函数;δ和σ分别是ReLU激活函数和Sigmoid激活函数;E为权重函数。
最后,将初始的特征图与权重函数对应元素相乘,突出目标的图像区域并且抑制无关的特征响应。
3.3 损失函数
织物的缺陷检测被建模为一个二分类问题,图像中像素点要么属于缺陷,要么属于背景。通常,交叉熵损失函数被作为二分类的损失函数,它被定义为:
式(12)中,yi表示像素i实际的类别,yi=1表示该像素属于缺陷区域,yi=0表示它属于织物背景;pi∈(0,1)表示此像素经过模型输出的预测值。pi越大,该像素点就越倾向于缺陷;N为图像的像素点总数。在训练中,通过迭代不断调整网络权重,使损失值最小化。
然而,这种损失函数更加适应于正负样本平衡的情况下。在实际的织物图像中,缺陷部位所占据的像素比例远远小于背景区域,这就造成了模型更加侧重于识别比例更高的类别。考虑到这一点,本文提出将DiceLoss函数作为上述函数的补充,DiceLoss被定义为:
式(13)中各符号的含义与式(12)中相同。
当织物图像中背景区域过多时,在交叉熵损失函数的作用下,模型会更加倾向于学习背景区域,通过提高背景区域像素的预测概率来降低损失值。DiceLoss损失则更多关注缺陷区域像素是否被正确分类。结合两种损失函数特点,本文提出将交叉熵损失LCE与DiceLoss损失LDice相加得到的复合损失函数用在织物的缺陷检测问题上。
4 实验结果与分析
4.1 实验装置
为了验证所提出的方法在织物缺陷检测上的有效性,我们在一台装载因特尔酷睿i7 8700k的服务器上进行了一系列的实验,同时服务器搭配16GB的内存和一块英伟达GeForce GTX1080Ti(11GiB)的显卡。在软件方面,Ubuntu16.04操作系统被采用,并且pytorch深度学习框架被用来编制程序。
4.2 数据集
本文选用AITEX数据集[16]对所提出方法进行了实验。AITEX织物数据集由245张4096×256像素的图像组成。其中包含140张无缺陷图像和105张有缺陷图像,缺陷种类共分为12类。所有的图像来自7种不同的织物结构。通过数据增强后,整个数据集共包含595个样本。按照比例将数据集随机划分为训练集、验证集和测试集,分别包含415、119和61个样本。数据集部分样本如图4所示,为了更清晰地展示缺陷部位,所有图像被裁剪成256×256大小。
图4 AITEX织物数据集部分样本
4.3 评价指标
为了定量的评价本文所提出织物缺陷检测方法的表现,我们将引入准确率(Acc)和召回率(RE)两种不同的评价指标。准确率反映了模型对整体样本的判断能力,是度量一个模型好坏最基本的指标。召回率是覆盖面的度量,反映了有多少个正例被划分为了正例。准确率Acc和召回率RE的计算值由下式确定:
式中:TP表示被正确预测的正样本,即网络输出的缺陷区域同时是实际的缺陷区域;TN表示被正确预测的负样本,即网络输出的背景同时是实际的背景;FP表示被错误预测的正样本;FN表示被错误预测的负样本。
4.4 实现细节
在深度学习中,神经网络的权重初始化方式十分重要,其对模型的收敛速度和性能有着较大影响。本文选择用一个标准差为的高斯分布初始化权值,Ni为第i层网络的输入节点数,例如,对于卷积核大小为3×3的64通道网络层,Ni=3×3×64=576。
另外,本文采用Adam优化器来更新网络权值,因为它可以在训练时自适应的调整学习率,且有更快的收敛速度。我们将初始学习率设置为0.001,一阶和二阶矩估计衰减因子分别设置为β1=0.9、β2=0.999。考虑到内存的影响,训练阶段,bitch_size设置为2,共进行100代训练。
4.5 实验结果分析
训练集与验证集的织物图像经过预处理后,将其与原图合并为双通道送入所改进的CU-Net网络中。在经过100次迭代后,模型充分学习了织物的缺陷特征,得到的训练过程曲线如图5、图6所示。结果表明,在训练前期损失值急剧下降,虽然存在震荡现象,但在40次迭代后损失值逐渐趋于收敛。另外在训练过程中准确率与召回率的最高值分别达到98.6%和93.4%,并稳定在该值左右。
图5 训练过程的损失曲线
图6 训练过程的准确率与召回率
将本文的织物缺陷检测整体模型应用于AITEX数据集并可视化各个阶段的处理结果,图7展示了预处理、缺陷目标分割以及后处理的效果图。在预处理阶段,大部分人眼可以显著观察到的缺陷区域被提取出来。经过CU-Net网络的精细分割,缺陷部位被逐像素地辨别为缺陷或背景,通过后处理,最终缺陷以矩形框的形式被标记出来。
图7 织物图像各阶段处理效果图
将本文提出的织物缺陷检测方法在训练集和验证集上学习后,用得到的模型对测试集图像进行预测,并比较文中所提及的其他检测方法,如图8所示。结果表明,本文提出的检测方法能够更加直观的表达织物中的缺陷。
图8 不同算法检测效果对比
为了证明本文提出方法的先进性,将本文方法与上述方法检测结果的准确率Acc与召回率RE分数定量地进行比较,结果如表1所示。在AITEX数据集上,本文方法的准确率和召回率分别达到98.3%和92.7%,相比于其他检测方法的最高分数有4.8%和2.3%的提升。
表1 不同算法检测精度对比
5 结语
受显著性检测与卷积神经网络的启发,本文提出了一种有效的织物缺陷检测深度学习模型。首先,该模型基于缺陷区域的多条显著性线索对初始图像进行预处理,得到图像粗略的ROI区域。其次,对基本的U-Net网络提出改进,并将预处理图像作为网络输入进行语义分割。最后,利用经典视觉算法进行后处理便于实际工程应用。在AITEX数据集上对模型进行了评估,并与文献其他检测方法进行对比。结果表明,本文的模型在准确率与召回率均有一定的提升。由于在实际的工业检测中存在各种干扰因素,而本文没有在该环境下进行实验以检测模型的鲁棒性,接下来的工作将会在此展开。