任金梅,仲志丹,李跃松,樊浩杰
(河南科技大学 机电工程学院,洛阳 471003)
随着移动互联网技术的迅猛的发展趋势,智能手机已经成为了移动互联网产品的标志,每年几乎有上亿台智能手机走向市场,在手机外壳生产制造过程中对其缺陷检测是质量监控的重要一步[1,2]。目前在手机外壳实际生产过程中,仍然是以人工目检的方式进行。即使是训练有素的目检专家,对手机外壳缺陷进行检测时,也会出现前后标准不一致,主观臆断较强以及疲劳耗时等问题[3],因此急需研究自动缺陷检测系统来减少目检工作者的工作量,并提供统一标准,客观有效的检测方法。
深度学习和计算机技术的快速发展及其应用领域广泛性的不断增强[4~8],使得计算机视觉已经应用于各种工业产品的质量检测中[9]。Li等[10]提出了一种基于主成分分析(PCA)的手机玻璃膜缺陷检测系统,通过比较缺陷像素数之和来识别缺陷的类型和大小。Ma等[11]提出了一种基于卷积神经网络和滑动窗口技术相结合的方法,来检测手机表面缺陷,但需要先检测出感兴趣区域,再进行分类检测。He等[12]第一次将空间金字塔池化引入卷积神经网络,用来处理输入图片大小不一的问题。Cao等[13]运用卷积神经网络与空间金字塔池化相结合的方法,实现了监控录像中对黑烟车辆的自动识别。Huang等人[14]采用HOGv进行特征提取,再通过ELM算法训练单个分类器,有效的实现了交通信号的识别。
本文受到Cao和Huang等人的启发,在经典卷积神经网络(CNN)AlexNet的基础上,加入空间金字塔池化层(SPP),并与极限学习机(ELM)相结合,设计了SCNN-ELM模型,用来检测手机外壳生产过程中产生的划痕,污点等细小缺陷。该模型能够实现手机外壳的缺陷检测,完成特征的自动提取,并在一定程度上缩短了缺陷检测的时间,并通过测试集进行检验,证明了该方法的有效性与可行性。
卷积神经网络是受生物学中视觉神经元工作机理的启发,受大家不断重视的一种高效识别模型[15]。在CNN网络发展的过程中,出现了几种比较经典的用于分类的网络结构,2012年AlexNet[16]在ImageNet竞赛中一举夺冠,以Relu作为激活函数提高网络训练速度,加入Dropout避免过拟合,是图像检测的首选基础网络,因此本文选取AlexNet作为特征提取器的基础网络,其网络结构如图1所示。
从图1中可以看出AlexNet网络包含五个卷积层,三个采用最大池化方式的池化层,以及三个全连接层。但由于全连接层对输入特征的尺寸是固定的,因此在AlexNet网络结构中要求输入的图片尺寸大小是一致的。所以在网络输入图片时,需要将输入图片进行裁剪、拉伸等操作,保证输入的图片尺寸是统一的。这样做会破坏图片原有特征的完整性,因此在特征提取的过程中会使得特征提取的鲁棒性不够,降低网络精度。而空间金字塔池(SPP)层能够很好的解决上述问题,SPP层采用多个滑块窗口进行池化,原理就是从每个窗口中分别计算每个块的值,从而输出一个神经元,不管输入图片的尺寸是多少,一旦窗口数量固定,那么输入全连接层的神经元个数也随即确定,因此在AlexNet卷积网络的最后一次卷积操作得到不同尺寸的特征图后,用SPP层进行池化,使得输入图片的尺寸不管是否一致,都能满足全连接层对特征图固定尺寸的要求,特征提取的更加完善,从而为模型在检测过程中准确率的提高奠定了基础,其特征提取过程如图2所示。
图1 卷积神经网络结构
图2 SPP特征提取过程
极限学习机(ELM)是人工智能领域的一种人工神经网络模型[17],是一种单隐藏层的前馈神经网络。其输入层权重和隐藏层偏置可以随机确定,输出层权重则是通过最小化损失函数,依据广义逆矩阵理论计算得到,因此泛化能力好,收敛速度快[18]。CNN网络的缺点是结构需要预先确定,训练时会出现局部最优解,网络泛化能力差[19,20]。因此本文选用ELM作为分类器,其网络结构如图3所示。
图3 ELM网络结构
假设有N个训练样本{xi,ti|xi∈Rn,ti∈Rj,i=1,2…N}(式中xi表示第i个特征图,ti表示第i个样本标签,集合代表所有训练样本数据)。从图3中可以看出ELM网络结构中只有一个隐藏层,若隐藏层节点数为L,则隐藏层输出矩阵H(x)为:
式(1)中hi(x)表示第i隐藏层节点的输出,隐藏层的输出是输入乘上对应权重加上偏差,再经过一个非线性函数其所有节点结果求和得到,其表达式为:
式(2)中,W∈RL×n为输入层至隐含层之间的权重;b∈RL为隐含层的偏置量;g(•)为激励函数。则由图3可知期望输出矩阵O的表达式为:
当样本数为N时,若存在权重β使得期望输出O与样本标签T之间的关系若满足式(4),那么网络训练便能够达到预期值。
图4 SCNN-ELM模型结构图
在ELM中W和b是随机产生的,且训练过程中保持不变,H是隐含层输出,因此权重β的确定方法有很多中,其中一种可以通过最小二乘法即通过式(5)求解出权重β。
式(6)中,H+为H的Moore-Penrose广义逆解。ELM算法的核心是求解出权重β,其求解过程可以归纳为三点:1)随机产生输入权重W和和隐藏层偏差b;2)计算出隐藏层输出H;3)由式(6)计算出输出层权重β。
本文以AlexNet为基础,在此基础上加入SPP作为网络结构的最后一个池化层,将SCNN与ELM分类器相结合,其网络结构如图4所示。
该模型输入任意尺寸的图片,经过卷积、最大池化等循环操作,最终经过SPP池化后,得到固定尺寸的特征图,送入到全连接层,进行模型的训练。模型训练完成后,在测试实验的过程中,以及之后的缺陷检测过程中,用该模型进行特征提取,然后用ELM分类器代替原来网络结构中的Softmax分类器,构建SCNN-ELM模型对手机外壳缺陷进行检测。在图4中,以3层的SPP为例,不管输入图片的尺寸大小是多少,经过Conv5卷积层之后得到的每张特征图,再经过3层的SPP进行池化操作后,提取到的特征个数是固定的,以输入图片尺寸247×247×3(图片是彩色图片,其中3为RGB三通道)为例则经过卷积和池化之后输入全连接层的神经元个数为5376个,可以满足全连接层对特征图同一尺寸的要求。
本实验所用硬件平台为Intel i5-3210M 2.5GHz CPU,内存8GB的64位计算机,采用GPU进行加速。采集数据集并构建算法模型,最终通过测试集验证SCNNELM模型在手机外壳缺陷检测中的精确度,具体步骤如下:
1)运用CCD相机进行手机外壳缺陷数据集的采集,用不同尺寸的像素滑动截取完整的缺陷信息,并在显示器上显示并进行标注,构建数据集制作标准实验数据集;
2)以Tensorflow为平台,加入SPP层构建网络结构,从标准数据集中,对每类缺陷样本随机选取组成训练集,进行网络训练,不断更新权重;
3)构建SCNN-ELM模型,将剩余的标准数据集中的图片作为测试集,对进行训练和验证,并采用Softmax与ELM分类器进行对比试验;
4)将模型对手机外壳的缺陷检测分类结果以及准确性进行分析,其主要流程如图5所示。
图5 模型检测流程图
本文实验过程中,选用的设备(包含有:工业CCD相机、计算机、可调节光源等)进行图片信息采集,根据手机外壳颜色的不同,可通过调节光源的颜色使得缺陷特征凸显的更明显,如图6所示。
图6 缺陷图片采集设备
本次实验过程中采用不同尺度的像素对CCD采集的整张手机外壳图片进行截取,将带有完整缺陷和无缺陷的图片挑选出来,并进行标注,构建手机外壳缺陷图像数据集,共计2万多张图片。其中包含划痕、污点、擦伤缺陷图像(如图7所示),将获得的缺陷数据集按照一定的比例分为训练集和测试集(如表1所示)。
图7 3种典型的手机外壳缺陷
表1 缺陷图像数据集
4.2.1 学习速率的选择
在模型训练过程中,学习速率是一个重要的参数,学习速率较大收敛速度会很快,但模型容易越过全局最优解,从而使得模型准确率降低。学习速率太小收敛速度较慢,且容易陷入局部最优解,模型准确率较低。因此学习速率的大小不仅影响着模型的训练时长还将直接影响模型能否收敛到全局最小值。为了研究模型结构中学习速率与准确率之间的联系,在实验的过程中不断调整学习速率对模型进行训练,不断观察模型准确率以及损失值的变化情况,其损失值和准确率与学习速率的关系如表2所示。
表2 不同学习速率下损失值和准确率
由表2可以清楚的看出,当学习速率为10-4时,准确率最高为98.55%,因此,选择10-4作为模型训练时的学习速率。另外该模型为了进一步提高模型的准确率,减小模型训练过程中的损失值,在训练的过程中每次迭代都将学习速率乘以0.95,使学习速率能够在训练过程中不断衰减,更加平滑的向着全局最小值迈进,从而提高训练的准确率。
4.2.2 训练次数选择
在实验过程中,将准确率和损失值与训练次数的关系进行可视化,从关系图中寻找训练次数的最优解。本次实验过程中对不同训练次数时模型的损失值与准确率进行统计,得到三者中之间的关系如图8所示。
图8 损失值和准确率与训练次数的关系
由图8可以看出训练次数为450时,损失值减小几乎为零,稳定在一个很小的值附近,此时的准确率也在一个稳定的值附近,继续增加训练次数,损失值不在减小,准确率亦不再上升,因此再继续增加训练次数已经没有意义,又考虑到训练时间,所以本次实验选择训练次数为450。
4.2.3 SPP层数的选择
实验过程中观察,采取不同空间金字塔池化层数和池化方式时准确率的变化,其变化情况如表3所示。
表3 不同空间金字塔层数时的识别准确率(%)
通过表3可以看出3层和4层的空间金字塔池识别精度较高,最高达到98.55%,继续增加池化层数目,准确率并没有提高。从表3中易看出最大池化略优于平均池化,为减少网络内部计算量,缩短缺陷检测时间,本文选择3层金字塔池化层加上最大池化的方式,作为池化层来进行特征的提取。以污点为例,将卷积池化操作过程进行可视化,卷积特征如图9所示。
图9 卷积特征图的可视化
在实验的过程中发现,ELM算法的隐含层节点个数与测试集的准确率之间有着一定的联系,采集相关数据进行整理,得到两者之间关系,如图10所示。
图10 准确率与隐含层节点数的关系
从图10中可以清晰直观地看出,准确率随着节点数的增加在不断地上升,当节点数为15时,测试集准确率为98.75%,节点数高于15时,准确率便不再发生变化,此时继续增加节点数已经没有意义,因此选择节点数为15较为合适。
将训练集输入网络模型进行训练,将训练次数设置为450次,至模型完全收敛,得到模型参数,用于测试样本特征的提取。本次测试过程中,为确认网络的泛化能力,从数据集的每一类缺陷图片中随机选取800张图片作为测试集,并将测试集通过混合矩阵进行随机混合后,再输入网络模型中,其检测结果,如表4所示。
表4 SCNN-ELM模型分类结果
将混合的测试集缺陷图片输入训练好的模型中,对特征图进行提取,运用Softmax分类器对测试集进行分类识别,其结果如表5所示。
表5 SCNN-Softmax模型分类结果
此外本文将传统的CNN网络,采用上述数据集进行训练,其过程与上述方法类似,在此不再赘述,该模型测试集分类识别结果,如表6所示。
表6 CNN(AlexNet)-Softmax模型分类结果
将三种模型分别对测试集进行测试,并将得到的测试结果进行整理,如图11所示。
从图11中可以看出,加入空间金字塔池化层的SCNN网络相对于传统的CNN网络,不管是单个缺陷种类检测准确率,还是整体识别准确率都有所提高,这是因为SPP层的加入,使得网络对输入图片的尺寸不再限制,能够使得原始特征更好地保留下来,特征提取地更加完整。另外通过柱状图还可以看出,在SCNN网络进行特征提取的基础上,ELM分类器相对于Softmax分类器效果更好,识别准确率相对更高,另外ELM算法不需要迭代,而是随机确定输入权重,通过广义逆矩阵求解输出权重,因此要比Softmax分类用时更少。
图11 三种模型的缺陷检测结果对比
本文基于深度学习的思想,针对手机外壳缺陷检测过程中的速度与准确率等问题,建立了SCNN-ELM模型,模型中SPP池化避免了全连接层对输入图片尺寸的限制,使得特征能够更完整地保留,提高了缺陷检测的精度。ELM采用非梯度优化的坐标下降法,无需对目标函数求导就可以完成对物体的分类识别。在运行速度和分类精度上都具有一定优势,通过对比试验进一步说明模型的可靠性。上述研究,为手机外壳生产过程中的缺陷检测环节提供了可行性方法,也为工业智能制造打下了基础。该模型泛化能力较强,如果出现新的缺陷类型,只需要在训练好的网络结构上,加入新的缺陷训练集,重新对网络结构进行微调即可。