王理顺 钟勇 李振东 贺宜龙
摘 要:织物缺陷在线检测是纺织行业面临的重大难题,针对当前织物缺陷检测中存在的误检率高、漏检率高、实时性不强等问题,提出了一种基于深度学习的织物缺陷在线检测算法。首先基于GoogLeNet网络架构,并参考其他分类模型的经典算法,搭建出适用于实际生产环境的织物缺陷分类模型;其次利用质检人员标注的不同种类织物图片组建织物缺陷数据库,并用该数据库对织物缺陷分类模型进行训练;最后对高清相机在织物验布机上采集的图片进行分割,并将分割后的小图以批量的方式传入训练好的分类模型,实现对每张小图的分类,以此来检测缺陷并确定其位置。对该模型在织物缺陷数据库上进行了验证。实验结果表明:织物缺陷分类模型平均每张小图的测试时间为0.37ms,平均测试时间比GoogLeNet减少了67%,比ResNet-50减少了93%;同时模型在测试集上的正确率达到99.99%。说明其准确率与实时性均满足实际工业需求。
关键词:图像处理;深度学习;卷积神经网络;缺陷检测
Abstract:On-line detection of fabric defects is a major problem faced by textile industry. Aiming at the problems such as high false positive rate, high false negative rate and low real-time in the existing detection of fabric defects, an on-line detection algorithm for fabric defects based on deep learning was proposed. Firstly, based on GoogLeNet network architecture, and referring to classical algorithm of other classification models, a fabric defect classification model suitable for actual production environment was constructed. Secondly, a fabric defect database was set up by using different kinds of fabric pictures marked by quality inspectors, and the database was used to train the fabric defect classification model. Finally, the images collected by high-definition camera on fabric inspection machine were segmented, and the segmented small images were sent to the trained classification model in batches to realize the classification of each small image. Thereby the defects were detected and their positions were determined. The model was validated on a fabric defect database. The experimental results show that the average test time of each small picture is 0.37ms by this proposed model, which is 67% lower than that by GoogLeNet, 93% lower than that by ResNet-50, and the accuracy of the proposed model is 99.99% on test set, which shows that its accuracy and real-time performance meet actual industrial demands.
Key words: image processing; deep learning; convolutional neural network; defect detection
0 引言
实现织物缺陷在线实时检测对于加速纺织行业自动化改造、节约生产成本、提高生产效率、实现产业升级具有重要意义。目前织物缺陷检测主要有人工检测和基于纹理分析方式检测。其中人工检测方式存在高成本、低效率且高误检率、高漏检率等一系列问题。基于纹理分析方式检测的方法主要有Haralick等[1]提出的基于二阶灰度统计特征的共生矩阵方法、在频率域提取特征的小波变换法[2]、基于模型算法的马尔可夫随机场法[3],这些方法为实现织物缺陷自动检测作出重要贡献,但由于实际生产环境中的织物种类多,缺陷类型变化大,基于纹理分析检测缺陷的方法由人工设计的特征不能完全覆盖所有缺陷的特点,因此,这些模型的准确率和泛化能力较弱,很难满足实际工业要求。
近年来随着深度学习的发展,卷积神经网络(Convolutional Neural Network, CNN)在图像识别[4]、目标检测[5]、目标分割[6]上取得了一系列重大进展,其中有代表性的图像识别网络主要有Alex网络(Alex Networking, AlexNet)[7]、视觉几何组网络(Visual Geometry Group Networking, VGGNet)[8]、Google网络(GoogLe Networking, GoogLeNet)[9]、残差网络(Residential Networking, ResNet)[10]。这些经典分类模型在ImageNet大規模视觉识别挑战赛(ImageNet Large Scale Visual Recognition Challenge, ILSVRC)上获得极大成功,其中ResNet-152[10]网络更是在该挑战赛上获得了4.49%的Top5错误率。由于神经网络无需手工设计特征,且具有特征提取能力强、分类准确率高等特点,因此本文提出了一种基于深度学习的织物缺陷在线检测算法。传统的经典分类网络算法虽然有着较高的分类准确率,但其模型复杂度高、参数量大,网络的实时性较差,很难满足实际工业需求。本文基于GoogLeNet网络架构,并综合其他分类模型的一些经典思想算法,不断对原模型进行改进与优化,搭建出一个适用于实际工业需求的织物缺陷分类模型。最后进行工程优化,以批量测试的方法对图片进行分类预测,模型的准确率与实时性均达到实际工业需求。
1 深度卷积神经网络
卷积神经网络最早由LeCun在1989年提出,即LeNet网络[11]的最初版本,后对该网络经过不断改进与优化,诞生了LeNet-5网络,成功应用于手写数字集MNIST(Mixed National Institute of Standards and Technology)识别上。该网络包含两个卷积层、两个池化层和三个全链接层,激活函数为Sigmoid函数,通过反向传播对模型进行训练,通过卷积层实现局部连接和权值共享,通过池化层实现了局部平移不变性。通过这些方法,有效降低了模型复杂度,提高了模型的准确率与泛化能力。目前经典的目标识别网络,如VGGNet系列、GoogLeNet系列、ResNet系列均借鉴这一基本思想,同时这几个系列的网络也常常作为目标检测、目标分割的基础网络。表1对比了目前几个经典分类网络,其中VGGNet网络结构用的是特别小的3×3的卷积核,首次将卷积层提升到卷积块,同时多次使用线性整流函数(Rectified Linear Unit, ReLU)[12]作为激活函数替代Sigmoid函数,一定程度上防止了梯度消失,但其参数量巨大,需要很大的存储空间。GoogLeNet提出了Inception模块,如图1所示,能够在一个网络层提取出不同尺度特征,在增加网络宽度与深度的同时,减少了模型参数,降低了模型复杂度,充分利用了计算资源,同时加入局部响应归一化层(Local Response Normalization, LRN)和Dropout层,有效避免了模型过拟合现象,另外GoogLeNet还借鉴了NIN(Network in Network)网络[13]中bottleneck思想,并用全局平均池化层代替全链接层,进一步降低了模型复杂度,减少了模型参数。ResNet提出残差结构,如图2所示,使得训练超级深的网络成为可能,避免了网络加深到一定程度准确率达到饱和的现象,网络层数可以增加到1000层[14]以上,同时整个网络只需要学习残差,降低了学习难度。
2 基于深度学习的织物缺陷检测算法
2.1 基于深度学习的织物缺陷检测算法流程
本文所提出的基于深度学习的织物缺陷检测算法由三部分构成,如图3所示。首先由于在织物验布机上采集的图片大小为4032×4928,而缺陷分类网络输入大小为224×224,为了实现全覆盖检测,本文将每张采集图片分割出396张小图,并记好每张分割图片在原图中相对位置;然后将分割后的图片传入训练好的缺陷分类模型,对所有图片进行分类;最后将有缺陷的图片依据相对位置在原图上进行定位,以此来找出缺陷并确定其位置。其中分割部分仅仅是将采集大图的内存数据按分类网络输入大小进行逻辑切分,然后以多线程的方式读入分类网络,由于大图数据位于内存,且采用多线程方式进行读取,分割部分耗时相对于分类部分耗时可忽略不计,本文主要对缺陷分类网络进行优化。
2.2 缺陷分类模型
本文模型主要参考GoogLeNet网络架构,考虑到工业对于实时性与准确率的要求,本文综合其他分类模型的一些经典思想算法,对模型进行了改进与优化,使模型在保证准确率的同时,实时性能达到工业要求。改进后的模型如图4所示。
网络由两个卷积层、三个池化层、一个Inception层和一个全链接层组成,最后用Softmax函数进行分类。输入图像大小为224×224的灰度图像,第一层有32个7×7的卷积核,滑动步长为2,padding为3,输出32个大小为112×112的特征图,后接一个滑动步长为2、核大小为2×2最大池化层,特征图大小变为56×56;第二层有32×64个3×3的卷积核,滑动步长为1,padding为1,输出64个大小为56×56的特征图,后接一个滑动步长为2、核大小为2×2的最大池化层,特征图大小变为28×28;第三层为一个Inception层,最后输出224个大小为28×28的特征图,后接一个滑动步长为1、核大小为28×28的全局平均池化层,输出224个1×1的特征图。由于只需要找出缺陷相对位置,本文为降低模型复杂度,提高模型准确率,将所有缺陷样本归为一类。最后通过Softmax函数对图像进行正负样本划分。除池化层外,每层网络后面都添加一个BatchNorm层[15]作归一化处理,以加速收敛,提高模型泛化能力。激活函数为ReLU函数,同时去掉了GoogLeNet网络中的LRN层与dropout层,并直接减少网络层数和每层的卷积核数,减轻降低了模型的复杂度,提高了模型的处理速度。
2.3 数据增强
更多的数据有利于提高模型的泛化能力。本文所有数据均来源于织物验布机上的实时高清图,所有缺陷均由经验丰富的质检人员进行标注。但由于每种缺陷采集的图片相对较少,为了不让模型出现过拟合现象,本文使用数据增强技术来扩充现有数据集,以此来提高模型的泛化能力。数据增强的方式有很多,通过对数据集的分析,本研究发现部分缺陷相对较小,图像缩放很有可能导致这些缺陷丢失,因此在扩充数据时没有对图片进行缩放。最终扩充数据集的方式主要有:随机左右翻转,随机旋转90°、180°,随机亮度变化。部分缺陷预处理效果如图5所示。
3 实验与结果分析
3.1 实验环境
本實验数据集共有30000张大小为224×224的灰度图片,数据集基本包含所有纹理织物正样本及其缺陷样本。其中正样本20000张,负样本10000张,正负样本各按4∶1的比例将图片随机划分为训练集、测试集。本实验环境为Windows 7操作系统,16GB内存,NVIDIA GeForce GTX 1080ti显卡,最终在Visual Studio 2013上用Caffe深度学习框架进行训练。
3.2 训练
本实验采用随机梯度下降(Stochastic Gradient Descent, SGD)[16]方法进行训练,每次随机选取一个batch的图片对模型进行训练。最后的分类结果采用Softmax函数进行计算:
其中:ai為网络输出结果为类别i的概率,xi为网络最后一层第i个节点的输出值,n为划分类别总数。
损失函数为交叉熵损失函数:
其中yi为类别i的真实标签。当类别为i时,yi等于1;否则yi等于0。
为加速收敛,减少模型收敛过程中的震荡,本文算法加入了动量(momentum)因子[17],最终模型权重更新策略为:
其中:wt为权重;vt为每次权重更新量;dw为梯度方向;momentum为动量因子,本实验设置为0.9;η为初始化学习率,本实验设为0.0001,为使模型收敛,每迭代400次,就对学习率进行一定程度的衰减,学习率衰减过程如图6所示。
3.3 结果与分析
最终本研究在数据集上分别对GoogLeNet、ResNet-50和本文模型(LocalModel)进行训练,各个网络的收敛速度和准确率如图7、图8所示。从图7、图8可以看出600s时本文模型损失率下降到0.032,准确率达到99.99%。同时准确率有随着损失率的下降而升高的趋势,说明模型并没有出现过拟合现象,泛化能力较强。另外,从图8可以看出,本文模型收敛速度明显高于GoogLeNet和ResNet-50这两个经典分类模型;从图7可以看出,在较短训练时间内,本文模型的准确率也明显高于其他两个经典分类模型。
为提高预测速度,充分利用显存资源。本文采用批量(batch)测试的方法。如表2所示,由于每个模型所需内存大小不同,各个模型的batch大小也有所差异。实验表明,LocalModel、GoogLeNet、ResNet-50的最佳batch大小分别为100,30,20。通过批量测试的方法,本文模型每张小图的平均测试时间为0.37ms,每张小图的平均测试时间比GoogLeNet减少了67%,比ResNet-50减少了93%。
实验结果表明,本文所提出的基于深度学习的织物缺陷检测模型,通过融合几个经典分类网络思想方法,不断优化网络,在保证分类准确率的同时,提高了模型的实时性,最终达到工业对准确率和实时性的要求。
4 结语
本文通过对验布机上获取的织物样本进行分析,对几个经典的分类神经网络进行改进融合,最终提出了一种能满足实际工业需求的神经网络分类模型,经过实验对比,模型的时间复杂度、空间复杂度均低于传统的几个经典分类模型;同时模型具有收敛速度快、泛化能力强等优点。最后通过工程优化,充分利用显卡资源,实现批量测试,极大提高了模型的单张图片平均测试时间,准确率和实时性均达到实际工业要求,为传统纺织行业实现工业升级提供坚实技术保障。虽然模型将传统的经典分类网络作了极大优化,但模型的计算复杂度仍然很高,需要在高速显卡上才能完成快速实时计算,以此来保证实时性。未来还可以通过模型压缩等方法进一步优化模型,减少模型占用空间,提高模型处理速度。
参考文献 (References)
[1] HARALICK R M, SHANGMUGAN K, DINSTEIN I. Textural features for image classification[J]. IEEE Transactions on Systems, Man, and Cybernetics, 1973, 3(6): 610-621.
[2] NGAN H Y T, PANG G K H, YUNG S P, et al. Wavelet based methods on patterned fabric defect detection[J]. Pattern Recognition, 2005, 38(4): 559-576.
[3] 张杨,蒋高明,姚君洲,等.基于MRF层次模型的贾失经编针织物图像分割技术[J].纺织学报,2012,33(12):102-106.(ZHANG Y, JIANG G M, YAO J Z, et al. Segmentation of jacquard warp-knitted fabric image based on hierarchical Markov random field model[J]. Journal of Textile Research, 2013, 33(12): 102-106.)
[4] SZEGEDY C, IOFFE S, VANHOUCKE V, et al. Inception-v4, Inception-ResNet and the impact of residual connections on learning [EB/OL] (2016-08-23) [2018-10-15]. https://arxiv.org/pdf/1602.07261.pdf.
[5] LIU W, ANGUELOV D, ERHAN D, et al. SSD: single shot multibox detector [EB/OL]. [2018-10-15] https://arxiv.org/pdf/1512.02325.pdf.
[6] CHEN L C, PAPANDREOU G, KOKKINOS I, et al. DeepLab: semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected CRFs[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2016, 40(4): 834-848.
[7] KRIZHEVSKY A, SUTSKEVER I, HINTON G E. ImageNet classification with deep convolutional neural networks[C]// Proceedings of the 9th International Conference on Neural Information Processing Systems. Berlin: Springer, 2012: 1097-1105.
[8] SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition [EB/OL]. (2015-04-10) [2018-10-15]. https://arxiv.org/abs/1409.1556.
[9] SZEGEDY C, LIU W, JIA Y, et al. Going deeper with convolutions [EB/OL]. (2014-07-17) [2016-12-10]. https://arxiv.org/abs/1409.4842.
[10] HE K, ZHANG X, REN S, et al. Deep residual learning for image recognition[EB/OL]. (2015-12-10) [2018-10-15]. https://arxiv.org/abs/1512.03-385.
[11] LeCUN Y, BOTTOU I, BENGIO Y, et al. Gradient-based learning applied do document recognition [J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324.
[12] JARRETT K, KAVUKCUOGLU K, RANZATO M, et al. What is the best multi-stage architecture for object recognition? [EB/OL] [2018-10-15]. http://yann.lecun.com/exdb/publis/orig/jarrett-iccv-09.pdf.
[13] LIN M, CHEN Q, YAN S. Network in network[EB/OL]. (2014-03-04) [2018-10-15]. https://arxiv.org/abs/1312.4400.
[14] HE K, ZHANG X, REN S, et al. Identity mappings in deep residual networks [EB/OL]. (2016-07-25) [2018-10-15]. http://arxiv.org/obs/1603.05027.
[15] IOFFE S, SZEGEDY C. Batch normalization: accelerating deep network training by reducing internal covariate shift [EB/OL]. [2018-10-15]. http//arxiv.org/pdf/1502.03167.pdf.
[16] BOTTOU L. Large-scale machine learning with stochastic gradient descent [C]// Proceedings of the 19th International Conference on Computational Statistics. Berlin: Springer, 2010: 177-186.
[17] RUDER S. An overview of gradient descent optimization algorithms [EB/OL]. (2017-06-15) [2018-10-15]. https://arxiv.org/abs/1609.04747.