基于改进的残差收缩网络的带钢表面缺陷识别*
2022-06-29梁日强胡燕林蒋占四
梁日强,胡燕林,蒋占四
(桂林电子科技大学机电工程学院,桂林 541004)
0 引言
工业表面缺陷检测是检测产品是否合格的一个重要环节,计算机视觉技术正在不断的发展,利用视觉技术可以实现自动化的生产,同时也可以满足工业生产中的实时性在线检测的基本要求。与传统的人工检测相比,视觉技术可以大幅度的提高工作效率和缺陷检测的准确率,降低人工成本,实时性好,推动产业的自动化生产[1]。
带钢作为基础的工业原料,被广泛的应用与各行各业,表面质量是能够直观的反应带钢的好坏,因此研究带钢表面识别的准确率,不仅仅在理论上由意义,而在实际应用中也有着重要的意义。在带钢的缺陷检测领域中,不少学者都给出相应的方法,如:徐海燕等[2]提出了一种提出基于隐马尔科夫模型的带钢表面检测方法,该方法可以降低数据处理量,提高带钢缺陷检测的准确率,可以达到实时性生产要求。刘启浪等[3]提出了一种基于多尺度 LBP 特征的带钢表面缺陷图像SVM分类方法,该方法可以提高识别的准确率扩大受野面积。这些方法虽然在带钢的检测方面有着不错的效果,但是还存在准确率受到图像质量的影响,以及需要的重复操作多等缺点。
随着神经网络以及深度学习的兴起,为了解决上述问题的缺点,近年来学者们把深度学习方法应用到带钢的缺陷检测,表明了深度学习方法在带钢缺陷检测中有着不错的效果。LI等[4]为了针对带钢表面缺陷的复杂性,提取更多的特征,于是提出了一种改进的YOLO带钢缺陷检测的方法,使其成为全卷积网络,实验证明该方法由较高的准确率。翁玉尚等[5]提出了一种改进Mask R-CNN算法的带钢表面缺陷检测,可以满足了带钢工业生产的要求,提高检测的准确率。王立中等[6]为了解决传统视觉在带钢表面缺陷识别过程中的特征不能自动准确提取的问题,构建了卷积神经网络,实现特征自动提取,提出了一种基于深度学习算法的带钢表面缺陷识别方法。
综上所述,传统视觉存在不能自动提取特征以及准确率不高的缺陷,而一般的卷积神经网络中又存在大量的冗余信息,造成识别的效率慢,以及对于带钢识别来说准确率还是不高。针对这些不足,本文利用LeakyReLU激活函数以及Adamax优化器改进残差收缩网络,提高带钢表面缺陷检测的效率以及识别的准确度。
1 残差收缩网络
ZHAO等[7]提出了一种用于故障诊断的深度残差收缩网络,该网络是残差网络的一种变体,不仅能够有残差网络解决梯度消失或者梯度爆炸的问题,同时也能够去除网络中的大量冗余信息。残差收缩网络有基本组件、主干网络、软阈值、残差收缩构建组成和Adam优化器组成,但是该网络在带钢的缺陷检测上还存在准确率低的特点,以及资源使用多。
1.1 基本组件
残差收缩网络跟传统的深度卷积网络一样,都有卷积层、池化层、偏差项、激活函数和交叉熵损失函数。在卷积核与特征图之间需要加上一个偏差项,偏差项表达形式如下:
(1)
式中,xi表示第i个通道的输入特征图;yj是第j个通道的输出特征图;k是卷积核;Mj是计算输出y特征图的通道集合。
在深度学习中,为了减少内部的协变位移,所以正则化通常被引入到深度学习中[8],BN正则化的表达形式如下:
(2)
(3)
(4)
(5)
式中,xn、yn分别代表了第n个特征图的输入和输出;γ、β表示缩放、移动的训练参数;ε是接近于0的一个常数。
激活函数可以有效地防止在深度学习中的梯度消失,使用在非线性变换中。残差收缩网络的激活函数使用ReLU激活函数,它的表达形式如下:
y=max(x,0)
(6)
式中,x、y分别表示输入和输出。
为了更好地计算出交叉熵损失,这里应用softmax函数,把特征强制控制在(0,1)的范围内,它的表达式表示如下:
(7)
式中,x、y是softmax功能的输入和输出特征图;i、j是输出层神经元的索引;Nclass是类别的数量;yj可以被视为属于j类的观测值的预测概率。
在多分类的目标识别中,交叉熵损失函数被用来最小化,交叉熵损失函数表达形式:
(8)
式中,t是目标的输出;tj是属于j类的观测值的实际概率。
1.2 主干网络
残差收缩由一个输入层、一个卷积层、多个rbu、一个BN、一个ReLU、一个输出FC层组成。残差模块如图1所示。
图1 基本的残差模块
主干网络为残差网络,输入和输出关系如下:
F(x)=H(x)-x
(9)
式中,H(x)是观测值,在单位映射中,F(x)对应的残差。这样的模块可以很好地解决梯度消失和梯度爆炸问题。
1.3 软阈值化
软阈值函数,在过去的研究中通常是用来研究噪声处理的,那么把将它融合到残差网络中[9],可以很好地消除图像的一些噪声。它并不是将激活函数的负数特征设为0,而是将其负数特征保留。软阈值函数的表达形式如下:
(10)
式中,x表示输入特征;y表示输出特征;τ表示阈值。其导数的表达形式如下:
(11)
由此可见,导数要么为1,要么为0,可以有效地防止梯度爆炸和梯度消失,这里的软阈值与激活函数的功能类似。
1.4 残差收缩的构建
FC网络中的第二层有多个神经元,神经元的数量等于输入特征图的通道数。FC网络的输出缩放到(0,1)的范围,使用以下公式:
(12)
式中,zc是第c个神经元的特征;αc是第c个缩放数。这里已经计算完FC网络的输出,下一步进行阈值的计算,它的表达模型如下:
(13)
式中,τc是第c个特征图的阈值;i、j、c分别表示特征图x的宽、高和通道。
1.5 Adam优化器
在机器是学习中,优化参数使之达到最合适的值,同时也就是时损失函数达到最小。优化器的任务是在每一轮的迭代中计算损失函数的梯度,并且更新参数。它的模型如下:
gt=ΔθJ(θt-1′)
(14)
mt=β1mt-1+(1-β1)gt
(15)
(16)
(17)
(18)
(19)
2 改进的残差收缩网络
2.1 激活函数的改进
ReLU激活函数,当输入数接近0时,梯度突然变为0,无法进行有效的网络反向传播,无法学习,此外存在神经元死亡问题。因此本文使用LeakyReLU激活函数,可以有效的解决ReLU激活神经元死亡问题,计算效率高,可以快速收敛,LeakyReLU激活函数如下:
(20)
式中,ai是(0,+∞)的固定参数。
2.2 优化器的改进
在计算完成交叉熵损失之后,应用随机梯度下降算法,对深度学习进行优化,原有的Adam优化算法不稳定,对于更新比较慢,因此使用Adamax算法对残差收缩网络进行优化,使其收敛的时候得到一个有效的稳定的值,加快更新速度。
(21)
(22)
(23)
ut=max(β2*Vt-1,|gt|)
(24)
这里引用无穷阶动量后,可以得到一个比较稳定的结果。这里的参数一般都选用默认的参数。改进后的残差收缩模块如图2所示。
图2 改进后DRESN-CW的模块
由图2可见,改进后的残差收缩模块主要是3个正则化,3个LeakyReLU激活函数、两个卷积快、两个全连接层、以及一个Sigmoid函数组成。由LeakyReLU替换成原来的ReLU激活函数可以加快网络的效率。
2.3 改进残差收缩带钢缺陷识别步骤
基于残差收缩网络带钢识别的基本步骤:
步骤1:导入数据集,通过增广数据集,提高网络训练的准确度;
步骤2:搭建改进的残差收缩网络模型,确定深度学习的层数,以及各个通道数;
步骤3:优化器选择上,把优化器从Adam换成Adamax优化器,提高训练网络的精度,和减少资源的使用;
步骤4:训练完成网络,输出网络训练的准确率,保存网络各种参数,以便验证。
图3 改进的残差网络带钢缺陷识别流程
3 实验分析
本次实验使用的是带钢数据集,是某大学所建立的数据集,该数据集有裂纹、夹杂、斑块、麻点、压入氧化皮和划痕6大缺陷类别特征。各类缺陷有300个样本。由图4我们可以看到,由于受到材料和光照的影响,各类的类内缺陷差别较大,而类间缺陷具有一定的相似性。这就是带钢缺陷数据集的两个难点[10]。
(a) 裂纹 (b) 夹杂 (c) 斑块
本实验的实验配置如下:使用1080Ti,内存为64 G显卡。主要使用DRESN-CW构建残差收缩36层的网络训练。
为了验证网络的有效性,本文设置为一些对比试验:未改进的残差收缩网络进行总准确度对比以及各类缺陷的准确度对比,其结果如表1所示。
表1 改进与未改进准确率的对比 (%)
把改进的网络与未改进的网络运行3次,然后取平均值,由表1可知改进后的残差收缩网络无论是训练集还是测试集的表现都比未改进的要好,说明测试集的错误率下降了73%。所以改进的网络有效。
由表2可知,未改进的网络除了夹杂的识别准确率为95.45%,斑块的识别准确率为78.26%,其他都为100%的识别准确率。改进的残差收缩网络只是斑块的识别准确率为91.80%,其他的识别率都为100%。因此改进的残差收缩网络在各类缺陷识别的准确率有一定的提高,所以改进的残差收缩网络在各类的缺陷识别上有较好的识别准确度。
表2 各类型缺陷的准确率对比 (%)
为了进一步证明本文方法的有效性,找出常用的带钢缺陷检测方法进行比较。由表3可知,文献[3]、文献[2]和SVM+GLDM这些传统的方法,准确率都没有超过97%,而且分类器加特征提取的传统方法容易受到图像质量的影响,造成识别的准确率降低。深度学习的方法,ResNet、DRESN-CS、DRESN-CW、改进DRESN-CS这些方法准确率都没有达到96%,而且需要消耗了大量的资源。文献[6]的方法准确率虽然比较高,但是对于本文改进的方法还是略低。通过对比发现,本文提出的方法相对于其他带钢识别的方法具有一定的优势和实际的使用价值,所以本文提出的这种方法是有效的。
表3 各算法的带钢缺陷识别对比 (%)
4 结论
在带钢的表面缺陷检测中,传统的缺陷识别方法容易受到光照不均匀的影响,因此本文将残差收缩网络引进带钢的缺陷检测,通过适当的改进,建立带钢的缺陷检测模型并且优化参数,利用训练好的模型应用于带钢的缺陷检测中,所以本文得出以下的结论:
(1)本文所提出的方法,带钢表面质量检测要比传统的方法:SVM、卷积神经网络、ResNet网络等等的准确率要高,说明该方法具有一定的实用价值。
(2)本文提出的方法的带钢缺陷检测,对比没改进之前效果好,说明所提出的改进方法有效。
虽然本文提出的方法验证了在带钢缺陷检测的有效性,但是带钢的缺陷数据集数量不多,因此在后期还需要继续以研究数据增强的方法,如结合GAN网络研究数据集的增强。