熊红林,樊重俊+,赵 珊,余 莹
(1.上海理工大学 管理学院,上海 200093; 2.IBM中国上海分公司,上海 200002)
随着计算机视觉技术的快速发展,一些基于机器学习与深度学习的识别与检测方法[1-3,18-20,22-23]被不断提出,并被应用到各种工业产品缺陷检测[23]当中。例如,建立深度置信网络(Deep Belief Networks, DBN)对太阳能电池片表面的缺陷进行检测[3];运用深度学习的特征匹配方法对铸件缺陷图像进行动态检验[5];Acciani等[6]提取测试图像中感兴趣区域的特征,然后构建多层神经网络进行缺陷检测。ZHI Yangyu等[7]提出一种可重复使用的高效率两阶段深度学习的工业环境下的表面缺陷检测方法。Feng等[8]提出一种深度主动的学习系统来最大化模型识别性能。Ren等[9]提出一种基于深度学习的通用表面缺陷检测方法,该方法的创新点在于只需要很小的数据集。总之,深度学习技术在不同行业的应用越来越广泛。
盖板玻璃普遍应用在具有显示性能和触摸性能的各种电子产品上,比如相机、触摸屏手机、电脑和GPS等。盖板玻璃的缺陷检测是其中不可或缺的流程步骤,玻璃缺陷检测实质上是一个识别分类问题,而目前针对计算机视觉技术在玻璃表面缺陷检测的研究并不是很多。比如利用传统Kirsch算子确定边缘方向,然后结合Canny算子进行表面缺陷检测,根据缺陷的几何特征来检测是否具有缺陷[10];利用了形态学处理方法对玻璃屏幕表面的划痕缺陷进行判断[11];基于Gabor小波的表面缺陷识别算法[12],实现对铸坯表面的细裂纹和角裂纹的检测;利用板坯上产生比较深的纵横裂纹的机理特征,实现对深裂纹缺陷的检测[13];对表面图像进行提取特征和识别分类,将裂纹可以从水痕、渣痕、氧化铁皮和振痕中识别出来[14];采用经典边缘检测算子中的算子识别出可疑缺
陷区域,通过边缘特征点的搜索算法来提取出可疑缺陷区域图片,再通过高维特征向量结合支持向量机(Support Vector Machine, SVM)实现连铸坯图像的缺陷检测[15];其他基于图像比较的缺陷检测方法如图像减除法[16]、模板匹配法及相位谱匹配法[17]。所有这些方法虽然也取得很好的结果,但伪缺陷被误判成缺陷的情况较为严重。
总之,近几年非常优秀的目标检测网络在产品质量检测,尤其是玻璃表面缺陷检测上的应用研究[23-26]较少,本文基于传统卷积神经网络,加入图像高斯差分金字塔分解,设计了多尺度卷积神经网络模型MCNN,并将该模型应用到玻璃表面多种类别的缺陷检测实践中,实现自动标记缺陷位置并识别缺陷类别,通过某厂玻璃产品表面缺陷检测实验验证该模型与方法的可行性与有效性。
卷积神经网络(Convolutional Neural Networks,CNN)是首个被成功训练的深层神经网络,属于前馈神经网络。一般的卷积神经网络基本架构(如图1)中包含输入层、卷积层、池化层、全连接层、输出层。
如图1所示为具有8个带权层的卷积神经网络,其中包含:卷积层5层,卷积层实质上就是特征的提取层,用来提取该局部感受野内的特征;全连接层3层,一般情况下与全连接层相连的层,它们之间的神经元节点会相互连接,而同一层的神经元节点间没有连接;输入层即原始数据的网络入口,若输入的是图像信息,输入的原始数据就是像素值;池化层是为了避免直接使用这些图像特征进行分类计算量太大而利用非线性的下采样方法;输出层是根据具体的应用来确定输出层的神经元节点数目,若卷积神经网络用于分类任务,则输出层可看作为分类器。
卷积神经网络通过局部感受野、权重共享和降采样3个特性来使得其具有图像识别的位移、缩放和扭曲不变性[18]。
(1)局部感受野 实质上就是输入神经元中与隐层中每个神经元进行相连的区域。例如:将输入图像像素看作为16×16的方形排列的神经元,其中5×5的区域(25个输入像素),对应于一个特定的隐藏神经元,此5×5的区域为局部感受野,局部感受野每次移动步长为一个像素(如图2)。
(2)权重共享(卷积核、滤波器) 通过局部感受野连接到每个隐藏层神经元都具有该区域的权值和一个偏置,权值共享能够减少卷积神经网络训练的参数。也就是说,对于第j,k个隐性神经元的输出为:
(1)
式中:f为激活函数,wn,m为5×5的权重共享数组,aj+n,k+m表示位置在j+n,k+m的输入激活值,b为共享的偏置值。
(3)降采样 卷积神经网络采用在卷积层后面连接降采样层(池化层)的方式来解决此问题,降采样可以简化从卷积层输出的信息,降低特征的分辨率。
图像经过高斯差分金字塔(Difference of Gaussian, DOG)分解可生成N个不同分辨率图像,高斯差分金字塔由多组金字塔构成,其中每组金字塔包含若干层,高斯差分金字塔由高斯金字塔基础上构建的层阶构成,高斯差分金字塔具体分解过程如下:
步骤1初始化i=0;
步骤2标准图像I(x,y)上采样得到高斯金字塔的第一组的第一层图像g0,0;
步骤3初始化j=0,x=0;
步骤4高斯核Gx与图像gi,0进行卷积:
(2)
gi,j+1(x,y)=gi,j(x,y)⊗Gx(x,y,σx)。
(3)
其中σx为平滑参数。
步骤5将高斯图像gi,j(x,y)与高斯图像gi,j+1(x,y)进行差分得到高斯差分图像di,x:
di,x(x,y)=gi,j(x,y)-gi,j+1(x,y)。
(4)
步骤6j=j+1,x=x+1,反复执行步骤4和步骤5,当j>n-1,x>n-2时,执行步骤7;
步骤7对图像gi,0进行下采样得到第i+1层的高斯图像gi+1,0。当i=i+1,转至步骤3,当满足i>m-1时,分解过程结束。
通过对CNN结构和DOG的理解,本文对两者进行结合,基于传统卷积神经网络架构,采用多像素缺陷图像进行输入,构建了MCNN模型,如图3所示。
本文设计的多尺度卷积神经网络MCNN模型共有9层,其中:卷积层(Conv)3层、池化层(pooling)3层、全连接层(Full-Connected)3层。该模型中的卷积层以及全连接层均采用的激活函数是修正线性神经元(ReLU),相比双曲正切(Tanh)和S型(Sigmoid)函数,ReLU激活函数是一种非线性的非饱和函数,在训练中,非饱和函数比饱和函数训练更快,且ReLU不但具有非线性的表达能力,而且拥有线性的性质,这使得在误差反向传播时,不会由于非线性而导致网络局部最优,从而克服了Tanh和Sigmoid函数的梯度消失问题。
为避免过拟合问题,在网络的后两个全连接(FC)层进行弃权(Dropout)操作[21],和L1,L2规范化不同,Dropout并不依赖对代价函数的修改,而是在Dropout中,改变了网络本身。假设有一个训练数据x,和对应的目标输出y,一般情况下通过在网络中前向传播x,然后进行反向传播来确定对梯度的贡献,然而使用Dropout操作(如图4),本文从随机(临时)地删除网络中的一半隐藏神经元开始,同时让输入层和输出层的神经元保持不变,在此之后前向传播输入x,通过修改后的网络,反向传播结果,重复此过程。总体执行过程为:首先重置Dropout的神经元;然后选择一个新的随机的隐藏神经元的子集进行删除;最后通过估计对一个不同的小批量数据的梯度后,再确定更新权重和偏置。
本文分别采用适合多分类问题的处理Softmax和SVM分类器。假设训练样本为{(x1,y1),(x2,y2),…,(xk,yk)},因此,假设函数将要输出6维向量来表示这6类的分类概率值,具体的假设函数hθ(x)为:
(5)
式中:x(i)表示输入;y(i)表示输出;p(y(i))=k|x(i),θ表示给定模型参数θ的情况下,已知输入样本y(i),估计y(i)属于类别k的概率。
SVM可以将多维特征映射至高维的核空间,从而使得原本不可分的数据获得新特征,更加有利于分类。它是一种依赖于核函数的机器学习分类方法,本文选用的实际工程实验中具有很好分类性能的径向量基(RBF)核函数(其中选取的是默认参数C=10,σ=0.038):
(6)
盖板玻璃表面缺陷的种类及产生原因是各种各样的。在严格的控制工艺流程中,尽可能地防止缺陷的产生。盖板玻璃主要的化学成分有SiO2、CaO、Na2O等,盖板玻璃的生产工艺流程包括:开料、CNC、抛光、钢化、超声波清洗、真空镀膜、丝印等。图5给出了盖板玻璃常见的几种缺陷(原始CCD采集图像)。
在工厂实践中,大部分的玻璃外观缺陷都是经过目视/黑白板/比对卡这几种方式进行检测,表1所示为某工厂盖板玻璃表面常见缺陷检测内容及标准。
表1 盖板玻璃表面常见缺陷内容及标准
续表1
针对盖板玻璃常见缺陷内容与标准,本文利用构建的多尺度卷积神经网络模型对玻璃表面缺陷检测进行实验验证,主要流程如下:
步骤1选择Caffe深度学习的开源框架作为构建多尺度卷积神经网络模型实验环境;
步骤2在构建实验环境的同时,由CCD相机采集玻璃图像数据,相机内所获得的玻璃缺陷图像进行处理并将图像显示在显示器上;
步骤3对相机内所获得的玻璃缺陷图像进行截取,将完整缺陷以及无缺陷图像挑选出来,将检测“缺陷图像”归一化处理,获得的图像尺寸为128×128,建立缺陷标准图像数据集,形成实验样本;
步骤4将样本基于多尺度卷积神经网络模型进行训练和验证,并采用Softmax和SVM分类器进行对比实验,并标签化6类缺陷;
步骤5从标准样本图像数据集中每类随机选取图像成为测试样本,对模型检测玻璃缺陷图片分类结果及准确度进行分析。
盖板玻璃生产厂中缺陷图像基于机器视觉技术采集,一般采用由CCD相机和图像采集卡组成,通过CCD相机获得玻璃图像,然后进行图像数据的接收和传输,对相机内所获得的玻璃缺陷图像进行处理,将处理后的图像显示在显示器上。本文所用数据集均通过此类图像采集单元获取,取自于专门生产盖板玻璃的某玻璃工厂,从不同的生产批次中抽取2万多张原始样本图像。
不同光照强度、光照方向等条件下采集的玻璃表面缺陷图像存在差距,因此,对原始图像进行归一化预处理。本文采用128×128像素的滑动窗口对整幅CCD采集的玻璃缺陷图像进行截取,将完整缺陷以及无缺陷图像挑选出来,建立玻璃表面缺陷标准图像数据集,达到6万多张标准样本图像。为了提高模型训练的质量,本文通过旋转方式人为地扩展了标准图像数据集,总共达到12万多张标准样本图像数据集,其中包含划痕缺陷、裂缝缺陷、异色缺陷、漏光缺陷、气泡缺陷、杂质缺陷图像(如图7)。将获得的标准样本图像数据集按一定的比例分成训练集、验证集与测试集3部分(如表2所示)。
表2 标准缺陷图像数据集
数据集划痕裂缝漏光气泡异色杂质总张数训练集13 00013 00013 00013 00013 00013 00078 000验证集6 5006 5006 5006 5006 5006 50039 000测试集1 0001 0001 0001 0001 0001 0006 000
本实验将对获得的标准样本图像进行多尺度像素的采样,通过尺度不变特征变换算法(Scale-invariant feature transform, SIFT)获得高斯差分金字塔图像(如图8),具体步骤见1.2节高斯差分金字塔分解节所述。本实验主要针对盖板玻璃常见缺陷:划痕、裂缝、异色、漏光、气泡、杂质这6种缺陷进行识别检测。
本文实验设计的神经网络模型MCNN基于Caffe深度学习的开源框架进行,Caffe提供了用于训练、测试、微调和开发模型的完整工具包,并且模型与相应优化都是以文本形式而非代码形式给出。
本文对多尺度卷积神经网络模型MCNN采用两种不同的分类器(Softmax和SVM)进行实验对比,两者采用的模型训练步骤不同,下面给出两者在MCNN模型训练测试时的步骤:
(1)基于MCNN+Softmax模型的盖板玻璃表面缺陷检测训练测试步骤如下:
步骤1采用128×128像素的滑动窗口对整幅CCD采集的玻璃缺陷图像进行截取,将完整缺陷挑选出来,进行图像归一化,得到标准的缺陷图片,整理成标准缺陷数据集;
步骤2将标准缺陷图像进行SIFT提取高斯差分金字塔图像,得到用于训练多尺度卷积神经网络的数据集;
步骤3将获得的多分辨率图像训练数据集直接输入网络,通过Slice层将得到的4张多尺度图像分来,分别进行卷积来提取特征。使用“Gaussian”初始化网络权值,其中偏置设置为“Constant”;
步骤4从训练集中选择一个batch训练样本,输入到网络中;
步骤5样本通过各层间的映射向前传播,直至Concat进行特征合并,然后继续向前传播直至输出层,得到实际输出向量;
步骤6计算实际输出向量与标签之间的误差,若误差小于一个预先设定的阈值(或者训练迭代次数达到预定阈值),停止网络训练,否则网络继续进行;
步骤7按照误差代价最小原则,通过反向传播对整个网络模型的权值参数进行调优;
步骤8重新回到步骤4,继续训练下去;
步骤9随机选取的测试数据集,将其输入至已训练好的模型(卷积核集合和网络权值参数等)中进行识别检测。
(2)基于MCNN+SVM模型的盖板玻璃表面缺陷检测训练测试步骤如下:
步骤1保存MCNN+Softmax已经训练好的网络模型,将多分辨率图像训练数据集代入到训练好的模型中获得对应的特征向量;
步骤2将特征向量作为SVM训练数据集,将训练数据集分成6种进行抽取,均是某种缺陷对应剩余其他缺陷这种形式(总共要识别6种缺陷);
步骤3分别使用这6种训练数据集对6个二分类支持向量机SVM进行训练,将训练好的6个SVM分类器进行保存;
步骤4测试时同样将测试数据集的图像数据转换为特征向量,利用已训练训练好的SVM分类器对其进行预测分类,将获得6个值中最大的一个作为分类结果。
本文构建的多尺度缺陷图像检测模型均采用的是有监督训练方式,其训练图像集均由(缺陷图像,类别标签)的向量对构成,其中“缺陷图像”均为归一化图像,经过归一化之后获得的图像尺寸为128×128,“类别标签”表示输入缺陷图像的分类标签,分为“划痕”、“裂缝”、“异色”、“漏光”、“气泡”、“杂质”6类。
基于设计的多尺度卷积神经网络缺陷图像检测模型,表3给出了进行系统训练的部分参数配置。在训练中,Data层输入的图像是固定尺寸128×128的RGB图像,对于训练集做的预处理为减去每个像素平均RGB值。选择是11×11、5×5、3×3的局部感受野的滤波器(捕捉左/右,上/下,中心的概念的最小尺寸),卷积的步长分别固定为4、1、2个像素。池化层采用的是最大池化,选择3×3的像素区域,步长为2。针对不同网络结构和不同深度的卷积神经网络均采用的是3个全链接(FC)层,前两层有4 096个通道,第3层为6种缺陷分类。
最终正式训练网络参数设置如下:权重衰减(weight decay)为0.0005,记忆因子(momentum)为0.9,学习速率(learning rate)为0.001,学习策略(learning policy)为step。选用的小批量训练尺寸(batch size)为64。归一化因子(scale)采用GPU模式加速训练过程,最大训练迭代次数为10 000次。
如图9所示为MCNN+Softmax模型网络训练过程的准确率曲线、训练损失曲线与验证损失曲线。从图9中可以看出,随着迭代次数的增加,模型在验证集上的准确率不断上升,损失不断下降,模型达到了很好的收敛,并在迭代次数7 000次达到98.4%左右。
表3 缺陷图像检测系统训练的部分参数配置
名称类别局部感受野大小/步长Conv1Convolution11×11/4pooling1Maxpooling3×3/2Conv2Convolution5×5/1pooling2Max pooling3×3/2Conv3Convolution3×3/1pooling3Max pooling3×3/2FC7Fully connectionFC8Fully connectionFC9Fully connection
直接使用迭代次数为7 000次的已收敛的model文件,将得到的多尺度图像训练数据带入训练好的此模型中,得到相应的特征向量,得到训练SVM分类器的训练数据集。将得到的训练数据集分为6种抽取方式,对6个二分类支持向量机SVM进行训练。
对于MCNN+Softmax网络模型而言,直接将模型所训练与验证的已收敛迭代次数为7 000次所得model文件用于测试样本,再次在训练集上对网络模型上确认泛化效果。从标准样本图像数据集中每类随机选取1 000张图像成为测试样本,使用混淆矩阵表示模型在测试集上的分类结果、实际分类情况测得值以及分类结果准确度,如表4所示。
表4 MCNN+Softmax模型测试分类结果
针对MCNN+SVM网络模型,进行测试时需将测试数据集的图像数据转换成特征向量,然后运用已经训练好的6个二分类SVM分类器进行预测分类,得到的6个结果中最大的那个就是预测所属类别。同样用混淆矩阵对其分类结果进行分析(如表5)。
将表4和表5进行对比可以发现,针对玻璃缺陷图像分类而言,使用Softmax要比SVM分类器的效果要好。对于每一类缺陷的查准率和查全率,使用Softmax分类均比SVM要高,最后的整体准确率Softmax同样比SVM要高。
表5 MCNN+SVM模型测试分类结果
本文还将多尺度卷积神经网络MCNN与传统的卷积神经网络CNN进行特征提取的方法进行对比。使用相同的分类器Softmax,实质上CNN+Softmax训练和测试的过程与MCNN+Softmax相同,使用的数据集也一致,因此网络仅是对比试验,这里的网络参数不再赘述,最后同样用混淆矩阵对其分类结果进行分析,如表6所示。
表6 CNN+softmax模型测试分类结果
对模型评价,查准率(准确率)和查全率(召回率)的重要程度相同,因此使用F1对这3个不同的实验模型方法进行度量,F1定义为查准率(准确率)和查全率(召回率)的调和平均:
(7)
(8)
其中:P表示的是查准率(准确率),R表示的是查全率(召回率)。
将这3个不同模型的F1值进行计算得出表7。
表7 不同模型测试F1值对比结果 %
从表7中可以明显看出,对比MCNN+SVM与MCNN+Softmax,MCNN使用两种不同的分类器,发现使用MCNN+Softmax模型时,每种缺陷的F1值都有所提高,整体的分类准确率提高了2.48%。说明采用不同的分类器,对识别准确率有一定的影响,Softmax分类器的效果更佳,这主要是因为采用一对多的方式对SVM分类器进行分类,数据集的不平衡可能会引起一些偏差等原因。然后,对比MCNN+Softmax与CNN+Softmax这两个模型,无论是每种缺陷的F1值,还是整体的分类准确率上,本文采用的MCNN均比传统CNN的准确率高,尤其是在划痕缺陷和杂质缺陷图像识别准确率的提高上幅度比较大,F1值均提高了5.0%以上,这主要是因为多分辨率多尺度的图像采样预处理,使得图像的特征能够更好地被提取。
本文提出一种基于多尺度卷积神经网络MCNN模型,并对该模型进行了可行性验证,通过某玻璃厂生产的玻璃产品实际数据进行缺陷检测应用试验与分析,实验中基于MCNN模型分别使用不同的分类器SVM和Softmax进行对比,结果发现分类器Softmax的效果更好,整体识别准确率较高。除此之外,将多尺度卷积神经网络MCNN与一般卷积神经网络CNN进行对比,采用相同的分类器Softmax,发现在MCNN模型在每一类型的缺陷的识别准确率上都有所提高,整体识别准确率达到98.4%,而CNN模型的整体识别率仅92.08%,可见MCNN较传统CNN在玻璃表面缺陷检测应用中优势较为明显。
此外,基于卷积神经网络设计的多尺度卷积神经网络对玻璃缺陷图像进行识别检测,与传统的玻璃缺陷检测方法对比,此方法利用卷积神经网络可以避免传统图像检测方法中的复杂的图像预处理和特征提取等过程,能够大大减小图像预处理以及人工特征提取的误差,多尺度卷积神经网络对比传统卷积神经网络明显提高了玻璃缺陷识别准确率,这对于玻璃生产行业的产品缺陷检验应用具有现实意义。