时间:2024-05-04
李腾飞秦永彬
(贵州大学计算机科学与技术学院贵阳550025)
基于迭代深度学习的缺陷检测
李腾飞秦永彬
(贵州大学计算机科学与技术学院贵阳550025)
随着深度学习的发展,越来越多基于深度学习的应用被推出,深度学习在目标检测,物体识别,语音语义识别等领域都取得了飞跃发展。其中,由于卷积神经网络在图像分类中的广泛应用,现如今的图像识别与传统的图像识别方法已经有了明显的区别。论文使用卷积神经网络对工件缺陷进行检测,针对深度学习在实际应用中出现的小数据集过拟合问题,提出了一种可迭代的深度学习方法来提高识别率并且降低数据的过拟合。
深度学习;卷积神经网络;过拟合;缺陷检测
Class NumberTP391
随着神经网络中反向传播算法[1]梯度弥散问题的解决,神经网络短短数年间得到了迅猛的发展,其中以多层次神经网络的深度学习最为突出。针对图像分类和目标识别问题,我们通常的做法是对原始图像进行特征提取,形成特征数据集合,之后将数据集合通过分类器训练,进而利用这些特征集实现图像分类或目标识别。卷积神经网络[2]实现了一种端到端的学习,即将特征提取的过滤器参数学习与针对分类的分类参数学习作为一个整体,并相互制约,从而达到较好的训练学习效果。目前的卷积神经网络主要是使用Imagenet[3]等较大的数据集,其分类效果可以与人类相媲美甚至高于人类,但在实际的工业生产当中,卷积神经网络的使用往往伴随着初始数据量不大,数据集中的正负样本分布极不均匀等情况,在本文利用深度学习进行工件缺陷检测的应用中,就会遇到上述情况。针对这一问题,我们使用扩大数据集和减少网络参数来减少网络配置参数,并在应用过程中使用一种参数更新的迭代深度学习模型,使得深度学习在实际应用中发挥有效作用。
目前,普遍使用的卷积神经网络是由Roska等[4]提出的,经过一系列更新,加入了Hinton等[5]提出的dropout层来提升网络泛化能力的一种演变结构,如图1所示。
图1 卷积神经网络结构
卷积神经网络的结构包括如下部分,input代表输入层,一般是指训练集图像,C1表示卷积层,对图像进行扫描卷积操作,在此过程中使用多个卷积核对输入图像进行卷积操作,形成一张卷积后的图像,以此获取图像的初始特征。之后F(x)指的是激活函数,一般的网络通常把它融合到卷积层当中,激活函数主要是用来增加非线性化,同时增加网络的表达力。S1表示下采样层,主要是为了减少参数而进行的对之前提取的特征图像进行下采样,其本质还是一种卷积操作,作用是降低图像的维度。Normal1层是正则化层,这一层主要对形成的特征图进行规则化处理,然后是对前面的过程不断重复,从而达到深度提取特征图。经过几个过程后进入到FC层,即全连接层,该层将之前得到的所有特征图连接起来,类似于神经网络的全连接,之后的Loss层就是一般的分类器,该层对得到的整个特征图进行分类训练。如此,就构成了一个基本的卷积神经网络框架。卷积神经网络的层次是可以进行改进的,如调换层的位置,丢弃一些层或者调整参数等,具体情况根据实际场景来调整。整个卷积神经网络结构的优化,可以使用不同的数学模型进行改进,如利用GPU等硬件环境,或者pre-training,fine-tuning等策略来加快网络训练等。
卷积神经网络的使用主要是针对一些数据集较大的用例,在实际的应用场景中,通常一开始很难得到巨大规模的数据集,这时便通过对卷积神经网络进行修改,加入一些约束条件来增强网络的泛化能力,或者从数据的角度出发,利用现有的数据集进行数据扩展。下面将分别介绍针对网络结构和数据集的一些修改方法。
在神经网络层,为防止过拟合以及提高网络泛化能力而经常使用的策略是增加验证数据集[6],验证数据集用来衡量训练集训练后的网络是否可以持续使损失函数的损失减少并且保证在验证集上准确率也能得到提高。当验证集出现准确度下降时,随后的训练就被视为无效训练,然后停止对网络的继续迭代,从而达到减少过拟合,增强网络泛华能力的目的。这种方法是将数据集分成训练集,验证集和测试集。在训练阶段使用训练集和验证集得到网络的过滤器参数和连接参数,然后用测试集来测试整个网络达到的效果。
图2 过拟合时的关系图
其中λJ(ƒ)是正则项,或者称为惩罚项,一般在损失函数的计算时加入此项,网络的正则项使用LRN(Local Response Normalization)层模仿生物神经系统的侧抑制机制,对局部神经元的活动创建竞争机制,使得响应较大的值相对更大,从而提高模型的泛化能力。
如图2所示,该图表示的就是一种过拟合状态,在训练卷积神经网络的过程中,通过验证数据损失函数的波动来判断是否处于过拟合的状态,以此来决定整个网络是否提前停止,从而减少不必要的迭代。
在卷积神经网络中使用L1和L2正则化[7]的连接权重约束也可以约束权重的变化,从而避免由于网络的连接浮动过大而导致的数据过拟合现象,同时对整个卷积神经网络也起到一定的泛化作用。具体的过程是在卷积神经网络进行权重下降时,加入正则化的范式使权重变小,权重的减少使得网络的复杂度变小,避免网络出现大幅度变化,进而达到稳定的状态。类似于机机器学习中的结构风险最小化。
其中α表示缩放因子,β表示指数项,这个公式用来进行通道间的归一化,或是通道内部的归一化。
卷积神经网络中引入dropout层,在dropout层中可以设置dropout随机无效节点的连接比例,即将网络当前的连接参数保存为上一次的参数值,并将此次的输入值置为零,这些参数可能在下一次就恢复正常状态,但又有一些连接点按照随机比率处于失效的状态,这样不停的训练便可以得到一种泛化较好的网络,这样就将原有的一些强关联依赖弱化成一些弱关联依赖。dropout消除了神经元节点之间的适应性,一定程度上增强了网络的泛化能力。Dropout的原理如图3所示。
图3 dropout的原理
图中所示为同一个神经元,在训练的时候此神经元进行dropout配置,其中dropout[8]的概率p在0~1之间,根据是否产生过拟合,p一般在0.4~0.8之间;如果此时数据量比较大,p可以设置为0.4;如果数据量较小,p可以设置为0.8,其他情况则在这个范围内上下调动。以p的概率失活即不参与连接,但在测试阶段该神经元是活跃的,即存在连接的操作策略可以减少神经元间的过度依赖。
除了从算法的角度去修改或是添加一些约束来减少网络的过拟合问题,还可以从数据的角度来适当的增加一些数据集[9],比如对现有的数据通过一些聚类算法来生产一些数据,或是在原有数据集中增加一些噪声数据等。
在对图像的数据集进行扩展时,可以利用图像的信息对图片进行镜像处理,或是将图像旋转一定的角度来增加数据量。Alex的文章在解决小数据集问题时提出了两种数据增大的方法。
在此介绍一种通过对图像进行仿射变换[10],生成不同的图像的方法。一般是将图像进行旋转,左右变换,来增加数据量。其中仿射变换的公式如下:
其中主要是通过T矩阵来进行图像变换,经常使用的变换是旋转操作,在此使用矩阵来进行角度旋转。
此外就是通过网络来训练一些公共的大数据集来得到整个网络的参数及权重,将这些参数及权重用作网络的初始化参数。然后,将网络最后的全连接和分类器改成自己所需要的,使用自己的训练集进行训练,这样的训练可以加速网络的收敛,同时又可以利用其他数据集初始化的参数,这样就在一定程度上增加了数据的多样性,一定程度上防止数据的过拟合。
以上的这些方法无论是从机器学习的角度,深度学习的角度又或是数据的角度,都可以对网络的过拟合起到一定的抑制作用。
为了改进起初数据量小的情况,本文使用迭代的深度学习来提高机器的识别率。本文结合深度学习和增强学习,主要是基于深度学习,提出一种应对初始数据集不能达到高水准识别的策略即在少量数据集的训练之后,通过多阶段的学习来提升识别的准确度,以此来优化生产中的使用。以下是针对这一问题所提出的具体操作:
1)在得到数据集之后,确定所要的分类标注,将数据集分成训练集和测试集。(根据实验将一个大的数据分成几部分数据,使用这些数据来构建下面的迭代过程)。
2)根据第一类数据集的一些特征、数量来选择一个深度学习框架(一般可以修改)。
3)将得到的数据集放入框架进行训练并查看结果,通常情况下网络的层数及网络每层都需要修改,可以结合之前的pre-training和fine-tuning来得到一个比较合适的网络。
4)加入一些约束规则,来限制网络对哪些识别是严格的。
5)经上述的训练选出合适的网络,作为当前的使用网络。
6)将新的数据集放入之前训练好的网络,进行分类识别,给每一个样本按照网络的输出标注上网络的识别标注,并统计网络的当前实际识别率。
7)进行新的学习,将第一阶段的数据与第二阶段的数据融合之后,作为整个的训练集与测试集,在现有的网络结构上进行训练,并调整网络的参数。
8)对比新训练的网络的识别率与原来的网络的识别率,如果高的话更新全网的的参数及权重,低则保持原网络的配置状态。
9)如果有新的数据集加入,在达到新的训练阈值时,重复上述的6)、7)、8)三个过程直至网络稳定。
上述是迭代深度学习的整个流程,针对起始数据量少的情况可以使用前面提到的一些正则化。dropout,pre-training,fine-tuning等方法用来减少网络的过拟合,增强网络的泛化能力。如果是对某一类别的识别要求比较严格,可以在训练中增加对此类别的一些限制等。如图4。
图4 迭代的深度网络
针对上述的一个工作图,将此过程分成两个大的部分进行处理,train表示整个训练过程,一开始以小的数据集进行CNN网络学习,在学习中,主要使用dropout和正则化方法来防止网络过拟合,等到整个网络达到稳定状态后将该时刻的识别准确度与网络参数以及权重存储在param中,如果这个识别率与目标差距不大,可以选择将这个网络的参数配置到work中,work部分被看作是实际的使用场景,经过work的实际使用可以得到新的数据和经过此网络判断的标签数据,将这些数据保存至Data中,使用Data来判断数据的增长,待到新的数据级别时,再将初始时用来训练的数据集融合进来,准备进行第二次的训练参数调整,然后进入第一个train的过程中开始训练,将得到的训练参数存放至parma中,进行准确率的比较,看是否可以将此时训练的参数更新到整个网络中,这个方法只是针对一开始数据集不足,通过深度学习已经达到了某个识别瓶颈,想再有所提升,需要借助一些新的数据集的情况。但是对于一些自身样本很大的网络效果不佳。
实际work时所获取数据的标签标定,一是可以随机地取出当前的机器标定样本查看正确率,如果正确率可以接受就随机抽取部分来作为新数据集的组成部分,二是可以使用k-means聚类算法,使用训练集作为基础,进行聚类来对新的数据集进行标注,三是人工对新学到的数据集进行标注。针对以上三种可供选择的方法,本文采取结合第一种和第二种方法的比对策略,使用网络提取出图像特征,然后根据标签的数据与新增数据集,使用聚类(k-means)的方法进行特征的重新分类,找到特征近似度高的标签进行判定。实验中允许少量的错误标注,这样能起到一定的泛化作用。在进行迭代实验时,要对网络的dropout的p概率做一定修改。下面是一些对实际操作进行的处理,实验时为了模拟这个过程将数据分成几个部分进行迭代实验测试。开始时从大数据集中取出一部分来进行训练集及与测试集的分配,所使用的数据可以看作是小数据集,针对这种情况,使用数据扩展的方式将数据集扩大,在此使用的是将数据集进行仿射变化。在深度学习网络的选取上还主要是根据现有的成熟的网络进行修改,这个过程比较耗时,而参数的确定策略需要参看具体的情况。
实验数据是一家合作公司提供的工件图像数据集,主要是实际的生产线中使用CCD摄录机采集的数据图像,可以正常使用的数据图像总的为1712张,其中正常的工件数936张,含有缺陷的工件数776张,实际使用时训练集与测试集随机分配,训练集与测试集不交叉,这便是最初的数据集。相对于大数据分类来说,本实验仍属于小样本的训练,在此基础上使用仿射变换和对抗训练对数据进行扩大,此时只对训练集进行扩展,而不对测试集进行扩展。针对小的数据集,使用一个含有5个卷积层和2个全连接层及一个softmax损失层的8层网络来训练,其中加入了一些dropout层,LRN层来进行防止过拟合。
表1给出了数据集每次训练的数据量,在此使用的是累加的数据集,使用的增量值是400个数据,其中测试集采用初始的测试集,在以后的实验中不再做修改,以此作为衡量的标准。
表1 训练集与测试集的数据分布
实验中使用的图像的大小统一预处理为100× 100×3的彩色图像,其他的暂且不做处理,因为深度学习可以忽略不同的背景、姿势、光照和周围的物体等,因此省去了过多的图像处理环节。
对基于迭代的深度学习实验进行三次迭代操作,记录每一次训练之后在测试集上的识别率,实验结果如表2所示。
表2 通过增加数据集的迭代训练次数与识别率
从实验中可以看到,在数据量小的情况下识别率只能达到89%,即便调整网络之后也很难有所提升,但是加入第二次数据后再进行训练时,可以将性能提升到91%,进行第三次迭代后实验结果达到了93%。在实验中注意对dropout的调整,和网络权重的衰减策略,该实验中,逐渐减小dropout的值,对于权重的修改,参考了现有的caffe[12]的参数调整策略。
在实际的应用中,数据是一个动态增长的过程,学习是一个前后照应的过程,增强网络的学习能力,有时候便可以使用补充数据集来提升网络的表达。本文介绍的可迭代的深度学习网络只是从另一个角度适当的解决这一动态变化的过程,是从解决问题的角度出发从而进行的改进。
本文介绍的迭代网络框架根据网络进行调参,并没有修改网络的结构,当数据量达到一定程度时,参数调整对于识别准确率的提高将变为次要因素,所以,对网络参数进行自动修改将在一定程度上弥补这方面的不利影响,但是怎么将网络调整工作交给机器还存在一些需要研究和解决的问题,这也将是下一步研究的方向。
[1]Jiang Z,Wang Y,Davis L,et al.Learning Discriminative Features via Label Consistent Neural Network[J].arXiv preprint arXiv:1602.01168,2016:1011-1017.
[2]Pascanu R,Mikolov T,Bengio Y.On the difficulty of training recurrent neural networks[J].ICML(3),2013,28:1310-1318.
[3]Krizhevsky A,Sutskever I,Hinton G E.Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems.2012:1097-1105.
[4]Lin Z,Courbariaux M,Memisevic R,et al.Neural networks with few multiplications[J].arXiv preprint arXiv:1510.03009,2015:1036-1037.
[5]Srivastava N,Hinton G,Krizhevsky A,et al.Dropout:A simple way to prevent neural networks from overfitting[J]. The Journal of Machine Learning Research,2014,15(1):1929-1958.
[6]李航.统计学习方法[M].北京:清华大学出版社,2012:38-41.
LI Hang.Statistical learning method[M].Beijing:Tsinghua University Press,2012:38-41.
[7]Jiang Z,Wang Y,Davis L,et al.Learning Discriminative Features via Label Consistent Neural Network[J].arXiv preprint arXiv:1602.01168,2016:561-563.
[8]Yao L,Miller J.Tiny ImageNet Classification with Convolutional Neural Networks[J].CS 231N,2015:1091-1093.
[9]Andonie R.Extreme data mining:Inference from small datasets[J].International Journal Of Computers Communications and Control,2010,5(3):280-291.
[10]冈萨雷斯,伍兹.数字图像处理[M].西安:西安电子工业出版社,2008:112-115.
Gonzales,Woods.Digital image processing[M].Xi'an:Xi'an Publishing House of electronics industry,2008:112-115.
[11]Parr R,Russell S.Reinforcement learning with hierarchies of machines[J].Advances in neural information processing systems,1998:1043-1049.
[12]Kishore A,Jindal S,Singh S.Designing Deep Learning Neural Networks using Caffe[J].2015:312-323.
Feature Detection Base on Iterative Deep Learning
LI TengfeiQIN Yongbin
(College of Computer Science and Technology,Guizhou University,Guiyang550025)
With the development of deep learning,more and more applications based on deep learning are launched.Deep learning has achieved qualitative development in so many fileds such as object detection,object recognition,speech recognition,semantic field.With the widespread use of convolutional neural network in image classification,a marked distinction has occured between the current image recognition and the traditional method of identifying.When we try to find the workpiece defect with the method of t neural network convolution,small data usually result in over-fitting problem.To solve it,we propose a deep learning method can be iterative to improve the recognition rate and reduce data over-fitting.
deep learning,convolutional neural networks,overfitting,defect detection
TP391
10.3969/j.issn.1672-9722.2017.06.025
2016年12月7日,
2017年1月31日
国家自然科学基金项目(编号:61262006,61540050);贵州省重大应用基础研究项目(编号:黔科合JZ字[2014]2001);贵州省科技厅联合基金(编号:黔科合LH字[2014]7636号);贵州大学引进人才科研项目(编号:201114)资助。
李腾飞,男,硕士研究生,研究方向:机器学习。秦永彬,男,博士,副教授,硕士生导师,研究方向:智慧计算与智能计算、大数据管理与应用、移动互联网研究与应用。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!