基于轻量化深度学习VGG16网络模型的表面缺陷检测方法
2023-07-25方宇伦陈雪纯杜世昌
方宇伦, 陈雪纯, 杜世昌, 吕 君, 王 勇
(1.上海交通大学 机械与动力工程学院,上海 200240,E-mail:fyl1997@sjtu.edu.cn; 2.华东师范大学经济与管理学院,上海 200241; 3.力度工业智能科技(苏州)有限公司,江苏 常熟 215558)
受生产环境、工艺流程或其他因素的影响,产品在加工过程中表面可能出现各种类型的缺陷,如划痕、孔洞、漏印、错印、斑点等。完整而美观的产品能够给消费者带来好的感官体验,增加产品竞争力。目前产品表面缺陷检测采用人工挑拣的方式进行剔除,存在检测精度低、漏检率高等缺点。
随着光学成像技术软硬件的发展和个人电子计算机的不断研究与进化,机器视觉已经广泛的应用于产品质量检测[1]。机器视觉能够能够对拍摄得到的信息不完整或者信息混乱的图片进行处理获取更详尽和准确的信息,替代人工检测[2-3]。
传统的机器视觉表面缺陷检测方法通过提取图像的特征如边缘轮廓等作为控制量进行识别[4],对泡沫塑料产品、铝塑产品和瓶罐产品的表面缺陷品检测[5]。李莹等提取了食品包装的圆形度、长宽比、灰度标准差等特征来识别污染、飞墨等典型缺陷[6]。王俊等采取改进于传统归一化互相关匹配算法对药板的铝塑泡罩区域进行缺陷识别,识别速度较快、精度较高[7]。传统视觉识别算法主要基于特征提取,选取合适的特征存在一定难度和复杂性,同时受加工现场环境与产品种类的影响,拓展性和鲁棒性较低,而深度学习具有强大的数据处理与自动学习能力,无需人工设计提取特征,已经逐渐应用在产品表面缺陷检测中,以提高缺陷品的识别率[8-10]。
基于深度学习的产品质量缺陷检测已取得了研究进展。Ajmi等通过对数据集进行通道增加与数据增强,利用VGGNet对X射线焊缝缺陷进行检测,分类精度较高[11]。Feng等基于特征金字塔对MobileNet改进,在复杂环境下对钢轨的缺陷检测具有快速和精度高的优点[12]。Chen等使用ResNet-34网络在ImageNet数据集上进行预训练后对印刷图像扫描数据进行缺陷检测[13]。李建明等提出一种基于深度学习的 Inception-V3 图像分类算法和 YOLO-V3目标检测算法相结合的缺陷检测方法,适用于缺陷区域较小,多目标复杂背景下的检测[14]。
实际生产线中生产节拍较快,例如某些生产线需要每秒检测十件产品,因此产品表面缺陷检测的实时性和准确性尤为重要,而目前基于深度学习机器视觉方法存在模型复杂度高、预测耗时长等缺点。本文提出基于轻量化VGG16网络的表面缺陷快速检测算法,通过对VGG16卷积神经网络进行结构优化与剪枝操作来搭建轻量化识别模型,并构建表面缺陷数据集进行训练与预测。通过标准数据就和搭建机器视觉测试平台都证明本文所开发的表面缺陷检测方法具有准确率高、实时性强等优点。
1 VGG16轻量化模型搭建
VGGNet是牛津大学Karen和 Andrew的视觉几何组实验室(Visual Geometry Group)于2014年首次提出[15],并在当年的ILSVRC-2014分类竞赛中获得了亚军。VGGNet在AlexNet的基础上做了改进,通过使用很小的3×3卷积核,增加神经网络的深度从而提升模型的分类效果,同时也能够对网络进行正则化,减少过拟合的风险。
Karen和 Andrew对多种不同深度的网络进行了测试。 VGG16包含13层卷积层与3层全连接层,输入维度为224×224×3的彩色图像,经过多次3×3与1×1的卷积核进行滤波,卷积步长设置为1个像素,卷积层之间的池化层的跨距为2×2,最后是三层单元数为4 096、4 096和1 000的三个全连接层。多层的小卷积使决策函数更有判别能力,同时也减少了参数,拥有更好的分类能力。VGG16的卷积层与全连接层结构如图1所示。
1.1 VGG16网络结构优化
VGGNet虽然能够满足缺陷检测的精确度,但为匹配实际生产线中产品的生产速度,模型需要能够迅速判断是否存在缺陷,这就要求网络的结构尽可能的简短,计算次数相对较少,同时也要保证识别准确率。本文对VGG16网络结构进行优化,步骤如下:①输入图片大小进行更改,图片像素越小后续进行训练和预测的耗时也越短。神经网络的输入进行更改后,不更改卷积核,计算量会变小,卷积层和池化层的尺寸也会减小。②为提高模型的分类效果和训练速度,在特征提取后更改原模型的全连接分类器,添加全局均值池化层(Global Average Pooling,GAP)分类器,GAP以特征图为单位进行均值化,每个特征图输出一个值,相比全连接层,GAP能够大大减少模型的参数量,从而提高模型的计算和预测速度,但相对可能会对精确度造成损失③添加Dropout正则化,Dropout每次会随机删除一定比例的神经元,使得权值不过多的依赖某个固定神经元,增加神经元的不可靠性,使得网络去学习更加鲁棒的特征,从而防止过拟合。
▲图1 VGG16网络结构
多分类卷积神经网络的损失函数选择交叉熵损失函数,如公式(1)所示:
(1)
式中:T为训练样本总数,y为样本的标签,p为预测的概率。
卷积神经网络每层的输出如公式(2)所示:
(2)
式中:M为选择的输入特征图,k为j-1层与j层之间的卷积核,b为对应的偏置,f为选择的激活函数,通常为ReLU函数,如公式(3)所示。
relu(x)=max (x,0)
(3)
Dropout的定义如公式(4)所示,每次都会以p的概率随机丢弃一个节点。
(4)
经过改进后的模型结构与原本VGG16的网络结构对比如表1所示。与最初的VGG16模型相比,改进后的模型在参数和权重上都做了轻量化处理,由于网络的输入减少,各层的参数量和计算量都得到了减少,使用GAP替代原本的三层全连接层,网络的输出为图像所属类别。
表1 改进VGG16结构对比
1.2 VGG16网络剪枝
为进一步提高模型的预测速度,减少计算量,同时减小模型占用空间,对模型进行稀疏训练与剪枝操作。稀疏训练是在模型的训练过程中,在损失函数内增加关于权重的L1范数,在权重更新过程中L1范数倾向于选择较少数量的非常大的特征,对模型的复杂度进行惩罚,改进后的模型的损失函数如公式(5)所示,后一项为新增的L1正则项,α为超参数,ω表示卷积核的权重,超参数的数值将会影响最终权重的稀疏程度。
(5)
模型的剪枝主要分为权重剪枝,通道剪枝和卷积核剪枝。权重剪枝根据一定的规则计算神经元的重要性,并根据重要性阈值进行剪枝,得到剪枝后的网络并进行微调,直到达到目标精度,但经过权重剪枝后仍然占用运行内存;通道剪枝则着眼于特征通道,通常是基于重要性因子评估一个通道的有效性进行剪枝,通道剪枝不依赖于特别的库来进行计算加速;卷积核剪枝则是在权重更新时加入正则项进行限制,并根据阈值对卷积核内的权重进行剪枝,不改变输出的通道数量,不会影响下一层输入的结构[16]。
本文基于连接的幅度对卷积核进行权重剪枝,在稀疏训练后将各个卷积核权重按照绝对值的大小进行排序,认为权重的绝对值越大越重要,权重越小,对输出的贡献越小,稀疏训练过程中会不断有权重变为0,这时在训练时可以设置参数的稀疏性不同来决定模型中非零权重的多少。通过设置阈值来决定保留参数的数量。将权重按照绝对值大小进行排序,若设置剪枝率为30%,则保留前70%的权重。
2 实验验证
2.1 测试平台搭建
▲图2 表面缺陷检测测试平台
本文设计的表面缺陷检测测试平台的硬件部分主要由视觉系统和剔除系统构成。视觉系统包括工业相机、平面无影光源、工控机、红外传感器等。硬件系统包括食品用皮带输送机、伺服电机、调速器、PLC等组成,如图2所示。
产品通过皮带输送机入口,向前移动,经过红外传感器时触发相机拍摄图像,经由工控机加载的识别算法进行判断后发出良品或者不良品信号,由翻转剔除装置进行剔除。
2.2 数据获取与扩增
以包装表面缺陷检测为例,由于加工环境和外界因素等影响,包装过程可能产生多种缺陷,主要包括连糖、裸糖、虚封等。连糖为独立糖果间未能完全分离,裸糖为糖果完全裸漏,虚封为包装不完整。通过搭建实验平台来获取包装表面的图片数据集,选取的实验样品为品牌A的正常品和缺陷品,需要检测的种类分为正常品的正面与背面,由于糖果为近似扁长方体,在实际生产线中不会出现侧面朝上的情况因此不需要考虑侧面的识别,缺陷类型为连糖、裸糖与虚封,五种类型的包装如图3所示。
▲图3
收集缺陷糖果并在实验平台进行拍摄,但由于实际生产中的坏损包装数量较少,本文对获取的原始图片数据集进行扩充,通过几何变换的方法来增加每种类型数据集的数量,包括随机翻转、旋转、剪裁、平移、添加高斯噪声的方式。经过扩充数据训练,能够增加模型的鲁棒性,对扩充后的数据集进行统一更改大小,调整为神经网络输入的大小。扩充后的数据集分配如表2所示。训练集、测试集与验证集的比例为7∶2∶1。
表2 数据集样本数量分布
2.3 训练过程对比
本次实验的硬件配置为Inrel(R)Core(TM)i5-6200U CPU @2.30 GHz RAM4G 操作系统为Windows 10操作系统,使用的机器学习平台为tensorflow keras,在jupyter平台上进行运行。
训练过程用准确率和损失值来进行对比,准确率的计算如公式(6)所示:
(6)
式中:TP为真正例、TN为真反例、FP为假正例、FN为假反例。
训练过程中设置学习率为0.01,正则化超参数设置为0.000 1,验证集的样本数设置为100。用原始的VGG16模型,改进结构后的VGG16模型和增加剪枝操作的VGG16模型来进行训练,训练迭代50次过程中准确率和损失值的变化如图4所示。
原始模型存在全连接层,参数数量最多,准确率在波动中上升,波动幅度随着训练次数增加逐渐减小。其中测试集的准确度要普遍高于训练集,但训练集的准确度波动较小,损失值的下降速度较慢,波动幅度较小,训练集的损失值普遍高于测试集,最终准确率逐渐收敛于0.984 0,损失值逐渐收敛于0.044 6。
▲图4 a、d为原始VGG16训练过程,b、e为改进结构VGG16训练过程,c、f为增加剪枝VGG16训练过程
改进后的VGG16模型参数数量减少,同时增加了防止过拟合的结构,准确率的上升速率较低,波动幅度相比原模型较大,测试集中的准确度要普遍高于训练集,在测试集中的波动幅度大于训练集,初始的损失值较大,下降速度较快,波动的幅度和速率较大,最终准确率逐渐收敛于0.976 7,损失值逐渐收敛于0.095 3。
在改进VGG16基础上增加稀疏度的指标,训练过程中的权重参数逐渐接近预先设置的稀疏度30%,训练结束将有30%的权重参数为0。剪枝操作的训练过程准确率初始值较低,仅在0.3左右,在波动中逐渐增高,前20次迭代准确率增速较大,后续逐渐放缓,训练集和测试集的差别不大,初始的损失值较大,最终准确率逐渐收敛于0.990 0,损失值逐渐收敛于0.008 5。
2.4 剪枝权重对比
图5为进行剪枝操作前的改进模型连接权重幅值分布直方图,图6为剪枝操作后的模型连接权重幅值分布直方图,两幅图中所有的权重均分布在-0.1至0.1的区间内,并且权重的均值在0附近,可以看出在进行稀疏训练和剪枝操作后,0附近的大部分权重均被删减,减少了参数和计算的数量。
2.5 不同稀疏度结果对比
对比不同剪枝稀疏度模型的性能,分别设定稀疏度为30%、50%、70%和90%来对模型进行剪枝训练,训练epoch均为50,对比其最终的训练精度、训练损失和验证精度及损失,推理预测单张图片的耗时和Gzip压缩后的模型大小。测试结果如表3所示。
表3 不同稀疏度模型测试结果
▲图5 VGG16权重分布直方图
▲图6 剪枝VGG16权重分布直方图
从结果可以看出,使用GAP替换全连接层并减少输入的大小,结构优化后的改进VGG16精度与经典VGG16相近,随着剪枝稀疏度的增加,Purning-VGG16的训练与验证精度逐渐减小,预测时间和模型大小也逐渐减小,当剪枝稀疏度为30%-50%之间时,精度的损失较为缓慢,50%稀疏度的训练精度为0.906 8,与改进VGG16相比下降0.039 2,模型压缩率为59.79%,当稀疏度继续增加,精度的损失变得迅速,当稀疏度为90%时,虽然模型压缩率达到了19.04%,但准确率下降到了76.65%,通过剪枝训练的模型预测耗时约为正常训练得到的模型耗时的十分之一,稀疏度的增加对时间的影响较小。综上可以得出以下结论:剪枝稀疏度50%的改进VGG16网络在精度、预测时间和占用空间上均能满足实时检测需求。
2.6 NEU表面缺陷数据集测试结果
为验证Pruning-VGG16网络的可迁移性,使用NEU表面缺陷数据集进行测试,该数据集是由东北大学发布的表面缺陷数据库,收集了热轧钢带的六种典型表面缺陷,即轧制氧化皮(RS),斑块(Pa),开裂(Cr),点蚀表面( PS),内含物(In)和划痕(Sc),更改Pruning-VGG16的输出层为六分类,按照9∶1分为训练集和验证集进行训练验证,训练过程如图7所示,得到的结果如表4所示,准确率为0.949,综上本文提出的轻量化模型具有可迁移性。
表4 NEU表面缺陷数据集预测结果
▲图7 NEU表面缺陷数据集训练过程
3 总结
本文提出了一种从结构优化和轻量化剪枝两个角度改进的深度学习VGG16网络模型。与经典VGG16网络相比,在保证准确率的同时具有占用空间小和预测耗时少等优点。配合硬件剔除实现了表面缺陷品剔除的自动化和智能化,可满足每秒10个产品的检测,与人工检测相比具有较高的准确率。本文提出的模型算法具有可迁移性,可应用在其他种类的表面缺陷品检测,具有一定的实用价值。