李 明,景军锋,李鹏飞
(西安工程大学 电子信息学院,陕西 西安 710048)
由于纺织企业生产效率的不断提升,传统的人工疵点缺陷方式已经逐渐不能满足工业生产上的需求.因此迫切需要开发出一种能够实现自动化织物表面缺陷检测的系统.其中,缺陷检测算法是缺陷检测系统的核心,织物缺陷检测已经成为了国内外学者研究的热门领域之一.但是色织物具有纹理图案复杂、缺陷类型多样的特点,加大了开发缺陷检测算法的难度.
在文献中,基于图像处理的织物缺陷检测算法主要分为统计法、频谱法、模型法、神经网络等.统计法包括灰度共生矩阵、自相关函数法和数学形态学法等.李春雷等[1]提出了应用方向梯度直方图和低秩分解的织物疵点检测算法,低秩分解能有效实现织物疵点的快速分离;文献[2]应用小波变换和自相关函数实现缺陷检测.频谱法有傅里叶变换、小波变换、Gabor变换等,Gabor滤波器模拟人眼的生物学特性来进行织物缺陷检测.为了降低计算复杂度,文献[3]仅在单一尺度和单一方向进行Gabor滤波,建立了基于遗传算法的最优Gabor滤波器;李立轻等[4]应用织物自适应正交小波对织物疵点的检测和识别进行了分析和研究.常用的模型法包括马尔科夫随机场模型和高斯混合模型.贡玉南等[5]提出了基于高斯-马尔可夫随机场模型用于织物纹理特征参数提取,采用不完全Cholesky共轭梯度法,仿真原始纹理图像;文献[6]在进行高斯混合模型计算时分为E步骤和M步骤,实现基于EM算法的高斯混合模型的缺陷检测.在应用神经网络解决疵点检测问题方面,YINMAO S等[7]提出脉冲耦合神经网络 (PCNN),提取织物纹理图像中空间和灰度邻接关系的特征信息;LI等[8]基于织物纹理特征自动选择最优网络参数,利用PCNN模型获得织物缺陷检测的理想结果.
近年来,受到人类视觉系统的启示,人们提出了卷积神经网络,并迅速成为图像处理方向的研究热点之一.卷积神经网络具有多层网络结构,能够自动学习网络参数并提取图像特征,可以有效克服传统图像疵点识别方法存在的缺点.卷积神经网络需要尽可能地学习特征的不同形态,才能达到较高的准确率.但由于织物缺陷图像样本有限,故首先采用GAN对缺陷特征进行抽象提取,然后将抽象特征融合为原缺陷的不同形态,最后卷积神经网络对织物缺陷特征进行学习,实现自动化缺陷识别.
应用GAN和Faster R-CNN的色织物缺陷识别过程主要包括3个阶段:(1)GAN对色织物缺陷库进行扩充;(2)卷积神经网络提取缺陷区域和缺陷边缘特征,并将其抽象表示;(3)Softmax分类器将抽象特征分为特定的缺陷类别,非极大值抑制算法进一步优化缺陷位置.算法的整体流程如图1所示.
图 1 应用GAN和Faster R-CNN的色织物缺陷识别算法流程Fig.1 The flow chart of the yarn-dyed fabric defect detection using GAN and Faster R-CNN
图 2 GAN的计算流程与结构Fig.2 The calculation process and structure of GAN
织物图像在工业现场采集过程中,由于生产环境的限制,会出现缺陷样本分布不均,多样性贫乏,这种现象会影响后续卷积神经网络模型的识别准确率.因此,为了提高织物图像的多样性,最大程度地平衡样本分布,需要对缺陷样本库进行扩充,传统的样本扩充方式有旋转、镜像、平移、随机裁剪、仿射变换等,但是这些方式无法扩充缺陷细节,采用GAN对其进行扩充,GAN是Goodfellow等[9]在2014年提出的一种生成式模型.GAN在结构上受博弈论中的二人零和博弈(即二人的利益之和为零,一方的所得正是另一方的所失)的启发,系统由一个生成器和一个判别器构成.生成器捕捉真实数据样本的潜在分布并生成新的数据样本[10].GAN的优化过程是一个极小极大博弈问题,优化目标是达到纳什均衡[11],使生成器估测到数据样本的分布,并令判别器无法区分真实图像与生成图像,GAN的计算流程与结构如图2所示.整个网络的目标使得判别器无法判断,无论对于真假样本,输出结果概率都是0.5,另外一个就是生成与真实样本特征不同形态的扩充图像.优化目标函数可表示为
(1)
式中:x为真实数据;pdata(x)为真实数据的概率分布;z是来自概率分布pz(z)的随机噪声样本.式(1)中第一项是真实数据经过判别器D的熵,判别器试图将其最大化为1,第二项是随机噪声数据经过生成器G的熵,然后生成一个假样本并通过判别器D识别为假,判别器试图使其最大化为0,而生成器试图使真实数据和虚假数据之间的差别最小,E为整个复合函数的期望.总的来说,判别器的目标是最大化函数V(D,G),生成器是令其最小化[12].
生成器和判别器网络架构如图3所示,生成器输入为随机噪声z,输出为一张图像,然后与真实织物缺陷图像一同输入判别器,判别器网络是一个二分类的卷积神经网络,分别对缺陷图像提取边缘特征,并计算两者之间的损失值来区别真假数据,并将参数更新趋势反向传递给生成器,通过迭代网络和模型参数更新,使得生成器生成的数据能够均衡原始数据,GAN的输入样本和扩充部分样本如图4所示.图4(a)的4张图像为带纱缺陷的不同形态,图4(b)为GAN根据图4(a)生成的新图像.可以看出GAN中的数据均衡不是简单地将数据数量达到一致,而是将每类缺陷的不同形态分布达到均衡,生成图像像素分辨率为64×64,相比于真实图像像素的256×256,虽然图像模糊了很多,但对缺陷特征的提取和拟合有很好的效果.
(a) 生成器网络 (b)判别器网络图 3 生成器和判别器网络架构Fig.3 Generator and discriminator network architecture
(a) 输入样本 (b) 生成样本图 4 GAN的输入样本和生成样本Fig.4 The input samples and generated samples by GAN
图 5 Faster R-CNN网络结构Fig.5 The structure of Faster R-CNN network
Faster R-CNN的结构[13]如图5所示,由区域建议网络(RPN,regional proposal network)和Fast R-CNN[14]检测网络组成.首先将原始图像输入卷积神经网络获得图像对应的特征图像,为了能够适应不同大小和位置的变化,通过RPN网络获取一系列不同长宽比、不同尺度的缺陷区域候选框,然后利用Fast R-CNN网络实现缺陷检测.RPN网络与Fast R-CNN检测网络共享卷积层,提高了生成区域候选框的速度,比传统滑动窗口获得目标候选框的质量更高.
经典的目标检测算法使用滑动窗法依次判断所有可能的区域,并在区域中提取人工设定的特征,如HOG通过计算和统计图像局部区域的梯度方向直方图来构成特征,对于卷积神经网络这种超大计算量的分类器来说,滑动窗法的穷举使得计算量过于庞大.UIJLINGS等[15]提出的Selective Search通过简单的区域划分算法,将图片划分成很多小区域,再通过颜色、纹理相似度和面积大小不断地聚合相邻小区域,为尽可能不遗漏候选区域,这种操作在RGB,HSV,Lab等多个颜色空间中同时进行,去除重复后作为候选区域输出,此方法极大地减少了后期分类过程的计算量,但本身的计算量还有很大的优化空间.ZITNICK等人提出了Edge boxes方法[16],它是一种经典、快速的图像分割算法,此方法认为边缘信息能最佳地描述目标,通过对边缘图像内具有大小、方向等特性相似的边缘进行组合,并去除冗余窗口,得到质量高、数量少的目标区域[17],但是这些候选框都来自手工制作的模型,这类方法存在2个主要问题:第一,如图像分类和缺陷检测等问题,深入地学习表示通常比手工表示具有更好的泛化能力;第二,候选框的提取步骤时间和检测网络时间差不多.
Faster R-CNN创造性提出利用卷积神经网络生成区域候选框.区域建议网络采用自动学习的方式,与缺陷检测网络共享卷积层,因此计算候选框几乎不会给检测网络的计算带来时间上的消耗.候选框之间存在大量互相重叠的区域(IoU,intersection over union),为了减少冗余候选框,通过非极大值抑制算法对候选框进行筛选.将候选框与真实框IoU大于0.7的区域全部合并,可以降低候选框的数量并且对检测结果不产生影响.非极大值抑制之后,使用前N个目标框来检测,如图6所示,蓝色代表真实框,红色代表卷积神经网络生成的候选框.
图 6 部分候选框提取结果Fig.6 The real bounding boxes and the top N bounding boxes
为了对提出的应用GAN和Faster R-CNN的色织物缺陷检测算法进行验证,本文进行了大量实验.实验数据分别包括3个织物图像数据集,如表1所示.实验是在Ubuntu系统下的caffe环境执行,处理器为Intel (R) Core (TM) i5-4460CPU@3.20GHz,显卡型号为NVIDIA GeForce GTX 745的计算机下完成的.色织物图像采用JPEG格式,像素均为256×256.
首先利用GAN扩充了织物样本库,图7中对比了使用GAN扩充织物样本之后在ImageNet上面预训练过的Faster R-CNN的缺陷检测结果和没有使用GAN的缺陷检测结果.本文通过平均准确率mAP[18-20](mean average precision)来评价模型的性能.一组数据的mAP是每一类AP取平均值,每一类的AP是由精确率/召回率曲线下的面积计算得到的.具体计算公式为
(2)
式中:Nrel-img是检测出缺陷的训练图像数;P(i)是第i个图像的检测准确率;rel-img(i)判断图像i是否分类正确.在原始数据的基础上,分别加入了从100~800张新图像,对训练得到模型的mAP进行了计算,如图7(a)所示.可以看出扩充织物样本库之后,随着训练样本数的增加,训练出来的织物缺陷检测模型的性能逐步提高,在扩充样本数目为500时,3个数据集的mAP达到顶点,与扩充训练样本之前相比mAP分别提高了4.32%,3.88%,3.46%,如图7(b)所示,每个数据集上各种缺陷类型的检测性能如表2所示.
(a) 不同扩充样本数的模型性能对比 (b) 训练样本扩充前后的模型性能对比图 7 扩充样本的模型性能评价Fig.7 The evaluation on the model performance of expanded sample
Table 2 The accuracy of the model in three data sets when the expansion number is 500
数据集每类缺陷的AP值/%带纱结头色纤破洞污渍划痕褶皱mAP/%标准差A92.3994.97—————93.681.82 B92.0591.3689.9496.45———92.452.81 C———96.8593.2192.8891.8693.702.18
图 8 不同特征提取网络对模型性能的影响Fig.8 The evaluation on the model performance of different CNN
Faster R-CNN使用CNN提取输入图像的特征,然后通过RPN网络生成区域候选框.本文分别利用3种不同复杂程度的卷积神经网络ZF-Net[21]、VGG-CNN-M-1024-Net[22]和VGG16-Net[22],实现缺陷检测网络中对输入图像的特征提取.其中ZF-Net的网络结构最为简单,包括5个卷积层和3个全连接层.VGG16-Net包括13个卷积层和3个全连接层,VGG-CNN-M-1024-Net为VGG16-Net的简化版.图8分别给出了这3种网络在扩充后的数据集C对应的4类缺陷样本上的模型性能.可以看出,ZF-Net和VGG-CNN-M-1024-Net的效果对比相差不多,而VGG16-Net网络对检测结果有很大提升,所以采用VGG16-Net作为卷积神经网络的核心部分.
首先利用GAN生成新的缺陷织物样本,加入织物样本库.然后通过Faster R-CNN实现织物缺陷识别.将织物图像输入VGG网络,经过VGG网络的13个卷积层将织物特征表征在最后一个卷积层上,并且通过RPN网络提取缺陷区域候选框,在ROI pooling层中将每个候选框尺寸重置为固定大小,然后经过全连接层,得到固定大小的特征向量,最后分别在各自的全连接层上进行缺陷区域的回归和分类.图9~11给出了部分色织物缺陷检测结果,将织物缺陷区域在图中定位出来,并标记缺陷的类别.平均每幅图像的识别时间为198 ms,与原始的Faster R-CNN处理时间一样,只是在训练模型时多加入了数据扩充,最终实现了在保证效率不变的前提下,算法准确率上得到一定提升,达到了预期目标.
图 9 数据集A部分缺陷检测结果Fig.9 The results of defect detection on dataset A
图 10 数据集B部分缺陷检测结果Fig.10 The results of defect detection on dataset B
图 11 数据集C部分缺陷检测结果Fig.11 The results of defect detection on dataset C
本文给出了应用GAN和Faster R-CNN的色织物缺陷识别算法,因为织物疵点图像的样本数有限,所以首先利用GAN扩充了织物的样本数,增加了训练数据的复杂度.然后通过Faster R-CNN中的VGG网络提取输入图像的特征,缺陷候选框是RPN网络在VGG卷积层产生的特征图像上通过滑动窗口上提取到的,与Fast R-CNN目标检测网络共享卷积层,进而实现缺陷分类和回归.本文通过大量实验证明了应用GAN和Faster R-CNN的色织物缺陷识别算法的有效性.