APP下载

基于深度学习的零件表面缺陷检测与识别

2023-08-22周玉凤李彬鹏

计算机时代 2023年8期
关键词:池化特征提取残差

蔡 航,茅 健,周玉凤,李彬鹏

(上海工程技术大学机械与汽车工程学院,上海 201620)

0 引言

卷积神经网络(CNN)是一种识别二维或三维数据的多层神经网络,与其他基于深度学习的网络相比,CNN 网络有很多独特的优势,能够有效提高网络模型的图像处理的准确率。

近年来,随着对卷积神经网络的不断探索与应用,研究该网络的学者越来越多,发表了大量基于卷积神经网络的算法结构。Christian Szegedy 等人[1]在AlexNet算法模型的基础上提出了GoogLeNet模型,通过增加其网络深度使模型在训练中取得更好的效果,他们还提出了一种新的结构--Inception 结构;何凯明等人[2]设计了深度残差网络ResNet 模型,新增了冗余模块,能深化网络到101层、152层等更深的层次,特征的提取错误率也降到了3.6%。Residual-Attention[3]、DenseNet[4]、SENet[5]等算法,在图像识别领域得到了广泛应用,取得了优异的识别效果,如在特征提取网络中,特征的提取错误率已降到2.2%。

综合所述,本文针对铣削零件表面缺陷识别分类问题,在ResNet 网络基础上设计CNN 网络结构模型,实现铣削零件表面缺陷的检测分类。

1 数据采集与预处理

铣削零件的缺陷图像由设备PV5040-DCC 影像测量仪进行采集,采集缺陷图像如图1所示。

图1 缺陷采集图像

在深度学习中,由于缺乏数据支撑而降低网络的性能,尤其在深度神经网络中,训练数据量的优化会使它的性能随之提升。由于缺陷类型的不一致,缺陷最终的识别准确率将有所下降,而且在数据量很小的情况下,很可能会导致识别误差,针对此现状,本文设计基于深度卷积对抗生成网络(DCGAN)[6]的数据扩增算法,本文算法优化措施为:①使用更容易收敛的激活函数;②在每个卷积层后面都使用BN 层加速模型收敛;③移除全连接层,并使用全局池化层;④取消最大池化,下采样通过stride=2的卷积实现。

本文设计的DCGAN网络结构如图2所示。如铣削零件表面缺陷,假设每个图像样本的大小为256×256,网络中每一层的卷积核尺寸为5×5,输出的特征图进行都进行归一化处理,模型的衰减值设置为0.9,eclipse设置为0.00006;由图3 可知,在迭代次数为1000 后,模型损失基本不变,所以设定该模型的训练迭代的次数为1500。

图3 生成器D与判别器G的损失与训练迭代的关系

在完成一系列的网络训练后,DCGAN 网络生成的缺陷样本部分如图4所示。生成的图像与实际图像基本一致,这一过程使得生成样本更接近真实获取图像的状态,提高了缺陷数据库的多样性。

图4 生成缺陷样本图

2 基于深度学习的检测与识别算法

基于深度学习技术的目标识别检测技术主要分一阶段算法和二阶段算法[7],他们可以自动提取训练集中的图像特征,无需人工干预,且检测效率和检测精度比传统的检测方法更高,检测结果更准确。

一阶段算法主要有SSD算法、YOLO系列算法等;二阶段算法主流算法有R-CNN 算法、Fast R-CNN 算法和Faster R-CNN 算法等。通常,使用二阶段算法检测物体的精度高于一阶段算法。因此,本文基于改进的Faster R-CNN[8]目标检测算法建立表面缺陷检测模型,应用于铣削零件表面缺陷检测。

2.1 特征提取网络优化

Faster R-CNN 的特征提取网络为VGG16,该网络是生成候选框的主要网络。但是,该网络对参数的量要求高,并且随着网络的加深,将面临梯度消失的风险,VGG16t 网络的性能就会大大降低,无法保证在一定的时间内将缺陷的特征充分提取。

⑴ResNet网络

深度残差网络ResNet 将底层网络的先验知识引入网络训练里,使深层网络表现稳定。ResNet 网络引入了一个残差模块,如图5所示。

图5 残差网络基本单元

残差网络由图5的基本单元堆叠形成,左侧为残差模块,右侧为bottleneck模块。通过计算时间和性能的考虑,本文选择ResNet-50和ResNet-101进行实验。

⑵ResNext网络

残差网络有效解决了网络层深度与模型识别准确率的矛盾,同时又要面临新的复杂的网络计算难题。受到了VGG 网络和Inception 网络思想的启发,Xie 等人[9]构建了ResNext 网络,在同一层级特征图下使用多个相同的结构并将其融合,不增加参数难度的前提下,提高了网络的拟合能力。

ResNext 网络的一个block 结构如图6 所示,它使用大小为1×1、3×3的卷积和残差网络的短连接来构建网络,同时采用分组并行卷积的方法,将高维卷积转化为低维卷积,32 组相同的拓扑结构平行的堆叠以获取特征。这种算法保证网络实现正常的拟合,同时也可以保持原有计算量,有效地优化了网络的检测准确率。本文选择ResNext-101 作为特征提取网络来进行实验,并将其与上述残差网络进行比较,进而获得最佳的backbone。ResNext-101 网络的结构与ResNet-101相似,只需要用图6所示的block结构替换对应的残差结构。

图6 ResNet块(左)和ResNext块(右)

2.2 RoI Pooling层的改进

⑴RPN网络输出的ROI区域需要在输入到分类与回归模块前进行池化操作统一尺寸。因为在RoI Pooling的过程中会有两次边界量化取整操作,而在此之后现边界框和最初的边界框偏离,导致目标定位不准。

何凯明等使用RoI Align[10]改进了RoI Pooling层。在映射目标区域时,不要对所有生成的浮点边界进行量化,而是把区域进行划分成几个小单元,并且不必量化各个单元的边界。使用双线性插值法,得到了各单元内四个点坐标,以减少误差,其原理如图7所示。

图7 ROI Align原理图

RoI Align优化了量化方法,但每个单元内部插值点数目仅和周围的四个整数位置像素点相关,且插值点数目不能自适应调整,无法将梯度表达出来,因而还存在提升的空间。

PrRoI Pooling 不进行量化,且边界框坐标具有连续梯度。对于特征图F 而言,本文用wi,j表示离散坐标(i,j)处特征图上的特征,双线性差值的使用可让输出的离散特征图被模型看作是连续的,此时可用(x,y)表示图像内任何连续空间的坐标。函数表达式如下:

其中,IC(x,y,i,j)=max(0,1-|x-i|)×max(0,1-|y -j|)为插值系数。

bin={(x1,y1),(x2,y2)}表示为一个RoI 区域的一个单元,其中(x1,y1)和(x2,y2)代表左上与右下两个对角点的连续坐标。最后使用二阶积分来实现给定单元和特征图F的池化操作,公式如下:

由于这种方法避免了任何量化,所以公式⑵是可微的,对于x的偏导,有:

对于其他变量的偏导也类似。

PrRoI Pooling、PrRoI Align 和RoI Pooling 这三种类型的池化方式比较如图8 所示,虚线表示图像的特征再某一单元中的实际位置。RoI Pooling 不划分单元,其池化方式是通过求二阶积分的均值实现,该方式下输出的特征图可以看作是连续的,缺陷特征的信息完整,从而精准的获取细小缺陷的位置。所以本文使用PrRoI Pooling池化方式实现模型的池化操作。

图8 三种池化方式的示意图

3 实验与结果分析

3.1 数据集的制作

铣削零件缺陷原始图像样本共十张,分辨率为256×256。采用DCGAN 网络扩增数据,共有缺陷样本数据2000 张,数据集扩增后各类样本数量见表1。DCGAN 网络生成图像如图9。从缺陷样本中随机选取600张作为测试集,其余1400张作为训练集。

表1 数据集扩增后各类样本数量

图9 DCGAN扩充样本图

3.2 实验

⑴训练参数设计

使用改进后的Faster R_CNN 深度学习网络训练时选取Adam 算法对学习率进行自动学习更新,初始学习率设置为0.001;迭代次数设置为10000,批尺寸大小设置为64;Relu 函数为激活函数;将L1 正则化函数加入模型中,正则化系数设置为1e-5;选取CDIoU Loss 函数作为损失函数,动量参数设为0.9;锚框尺度设置为[8,16,32]、比例为[0.5,1,2]。

⑵特征提取网络选取实验

为了选择合适的特征提取网络进行铣削零件缺陷检测,实验分别选择ResNet-50,ResNet-101和ResNext-101 作为Faster R-CNN 框架的backbone,对表面缺陷进行检测,并在同一测试集上进行测试。在实验中,使用平均精度均值(mAP)和平均检测时间作为评价指标评估检测模型的检测性能,实验结果如表2所示。

表2 各网络评价指标对比

由表2 可知使用ResNet-50,ResNet-101 和ResNext-101 几种网络作为模型的backbone 分别进行训练时,他们的模型的检测性能mAP 值分别为94.7%,95.3%和98.4%。从平均检测精度来看,ResNet-101网络的性能最强,mAP 值为98.4%;在检测速度方面,ResNet-50 的其检测速度最快。ResNext-101 网络在mAP 值上的贡献程度弥补了该网络在平均检测时间指标上的不足,在实际中需要足够高的识别准确度,因此本文中Faster R-CNN 模型的backbone 选定为ResNext-101 网络。当使用ResNext-101 网络作为检测模型的backbone 时,零件表面缺陷每一类的AP 值如图10所示。

图10 四种缺陷平均检测精度(AP)图

从图10 可以看出,当使用ResNext-101 网络作为检测模型的backbone 时,检测模型对于四种缺陷的检测精度都非常出色,每种缺陷的AP都在96.5%以上。

⑶整体缺陷检测结果与分析

600 张缺陷样本测试集的检测结果如表3 所示。每张测试图片包含正常区域和缺陷区域,漏检(False Negative,FN)表示是没有检测到缺陷目标或缺陷目标小部分被检测出(LOU<0.35),漏检率(Miss detect rate,MDR)的计算方法见式⑷;过检(False Positive,FP)表示的非缺陷目标被定义为缺陷,过检率(Over detect rate,ODR)计算方法见式⑸;正确检测样本数占总样本数的比例定义为正确检测率(Correct detect rate,CDR),其计算方法见式⑹。

表3 Faster R-CNN检测结果

当未处理铣削图像背景纹理时,Faster R-CNN 模型检测基本失效,正确率只有33.3%,而处理后正确率提高了66.7%。当缺陷图片不足时,使用原Faster RCNN 检测时,模型的MDR 与ODR 都偏高,此时模型在进行缺陷检测时对图片噪声的鲁棒性较差,会导致模型检测精度降低;当经过DCGAN 算法扩充缺陷数据集和对检测模型的特征提取网络改进后,缺陷检测模型的检测准确率提升了13.4%,该模型的最终检测率为98.7%。在检测细小缺陷时,本文对Faster RCNN 算法的特征提取网络和ROI Pooling 层进行改进,使得新模型能够准确定位微小缺陷,且能更好的框选出缺陷位置,检测缺陷效果如图11所示。

图11 改进前后Faster R-CNN检测结果对比

3.3 实验总结

本文改进的Faster R-CNN 网络具有98.7%的检测精度,但仍存在总体检测速度不够快问题,检测一张分辨率为256×256 的图像平均耗时0.3s,检测速度难以满足实际工业检测的需求。因此,在确保不降低检测精度的前提下,对检测模型进行轻量化设计以提高检测效率,是该检测网络未来的改进方向。

4 结束语

本文提出了一种针对铣削零件表面缺陷检测的方法。在将铣削零件背景纹理抑制的基础上,将DCGAN 网络应用到零件缺陷检测中,对铣削零件的缺陷图片数据集进行增强;对传统的Faster R-CNN网络中特征提取网络、ROI Pooling 层做改进设计,缺陷检测正确率达98.7%,提高Faster R-CNN 网络模型的识别精度以及对微小缺陷的识别能力,实现了零件表面缺陷检测识别。

猜你喜欢

池化特征提取残差
面向神经网络池化层的灵活高效硬件设计
基于Sobel算子的池化算法设计
基于双向GRU与残差拟合的车辆跟驰建模
卷积神经网络中的自适应加权池化
基于残差学习的自适应无人机目标跟踪算法
基于递归残差网络的图像超分辨率重建
基于卷积神经网络和池化算法的表情识别研究
基于Daubechies(dbN)的飞行器音频特征提取
Bagging RCSP脑电特征提取算法
平稳自相关过程的残差累积和控制图