改进mixed-segdec-net的金属表面缺陷检测方法
2023-03-07彭宁,吴浩*,王盛,宋弘,刘梅
彭 宁,吴 浩*,王 盛,宋 弘,刘 梅
(1.四川轻化工大学 人工智能四川省重点实验室,四川 宜宾 644000;2.四川轻化工大学 自动化与信息工程学院,四川 宜宾 644000;3.阿坝师范学院,四川 阿坝 623002;4.四川启睿克科技有限公司,四川 绵阳 621050)
0 引言
一直以来,金属表面的缺陷检测都是工业生产过程的关键,在工业生产中难免会对金属表面造成如脏点、裂纹、碰伤和压痕等损伤。为了使工业产品满足要求,需要确保产品的金属表面不存在任何缺陷。传统的表面缺陷检测都是人工借助外界设备进行的,由于检测的标准不一,导致存在误检、漏检及效率低等问题。
传统的图像处理方法可以快速获取缺陷特征,如Sobel[1],Canny[2],Prewiit[3]和LBP[4]等,并利用这些特征进行匹配和识别其中的缺陷,但是这些方法很容易受到外界因素的影响,如灯光、噪声等。近些年,基于深度学习的方法能够利用卷积神经网络进行特征提取,建立起有效的网络模型,在缺陷检测中取得了有效的成果。目前主要分为以SSD[5],YOLO[6]为代表的单阶段目标检测网络和Faster-RCNN[7]为代表的两阶段目标检测网络2个部分。Zhang等[8]对SSD进行优化,通过将多尺度感受野模块和路径聚合网络(PANet)中双向特征金字塔的层间特征融合策略融入SSD,克服了人工目视检测稀土磁性材料表面缺陷的局限性。Cheng等[9]通过对YOLOv3的特征图采集网络进行改进,并增加尺寸识别模块和输出网络层的残差网络,有效提高小目标检测的准确率。Jiang等[10]通过对YOLOv5进行改进,利用平衡特征金字塔结构和全局上下文块来增强特征融合和特征提取能力,成功降低了在交通标志检测的误检率。Zhang等[11]对Faster-RCNN进行改进,主要将迁移学习与ResNet-101进行融合。实验表明,该方法在连接器焊点缺陷检测上得到很大的改进,平均检测精度可达94%,对某些缺陷的检出率甚至可达100%。
目前,mixde-segdec-net算法相比于其他网络在工业金属表面缺陷检测中具备精度高、低漏检和低误检的优势。本文以mixde-segdec-net为基础,构建基于ECB的InceptionA模块增强了网络对尺度的适应能力,然后引入基于注意力机制的残差网络模块CRASNet,解决网络中网络退化及梯度退散问题,同时使用深度残差卷积层来构建分类网络中新的卷积层,降低了网络的参数量和计算量。最后通过对比实验和消融实验突出了本文算法的有效性。
1 mixed-segdec-net算法
1.1 网络基本结构
mixde-segdec-net算法[15]是一种基于语义分割和决策分类的二阶段网络,其中分割网络采用精细的像素级信息,分类网络采用粗糙的图像级信息。相比于单阶段的U-Net,DeepLabv3网络以及商业软件Cognex ViDi Suite,其在检测精度和检测速度上都有很大的提升。网络的整体框架如图1所示。
图1 mixde-segdec-net网络结构Fig.1 mixde-segdec-net network structure
分割网络在每个卷积层后都连接了BN层和ReLU,目的是为了更好地提高训练过程中的收敛速度,使模型更加稳定,并防止过拟合和梯度消失。由于卷积层的权重共享机制提供了足够的正则化,因此在该网络中不使用Dropout。在分割网络中的池化层和最后一层采用大卷积核的目的在于增加感受野,从而可以保留图像中小而重要的特征信息。
分类网络的最后采用连接一个全局最大池化层和一个全局平均池化层进行参数缩减和特征融合,得到了2个32×1的特征向量。同时还把分割网络得到的分割输出图连接一个全局最大池化层和一个全局平均池化层,得到2个1×1的特征向量,并最终采用全连接层将这4个特征向量连接起来作为输出。这样设计分类网络不仅可以完整地保留缺陷特征,还可以防止训练过程中出现过拟合现象。
1.2 损失函数
mixde-segdec-net算法为了实现端到端学习,将损失、分割损失以及分类损失组成了一个新的损失函数,允许它们同时学习。新的损失函数为:
ζtotal=λ·γ·ζseg+(1-λ)·δ·ζcls,
(1)
式中,ζseg和ζcls分别为分割和分类的损失,它们都由交叉熵函数所得;δ用来平衡分割和分类损失的贡献;λ为平衡因子,用来平衡每个子网络在最终损失中贡献的平衡因子;γ作为存在像素级注释的指示器,通过将λ这个平衡因子计算为一个简单的线性函数,从而解决了在初始不稳定分割特征上学习分类网络的问题。λ定义为:
(2)
式中,n为训练的样本总数;nep为当前数目的指数。如果不能平衡这2种损失,学习在某些情况下会导致梯度爆炸。
2 改进mixed-segdec-net的金属表面缺陷检测方法
2.1 基于ECB的InceptionA结构网络
Inception模块[16]最先是由GoogLeNet团队在2014年ImageNet大规模视觉挑战赛上提出。Inception将多个卷积和池化操作组合成一个新的网络模块。InceptionA模块属于Inception v3的一种,它与传统的卷积层和池化层的连接顺序不同,将不同尺寸大小的卷积层和池化层进行排序,使得网络不仅可以学习局部信息,还可以学习到全局信息。
虽然InceptionA可以使网络学习到局部信息和全局信息,但是会使网络陷入过拟合、计算量剧增的困境。ECB模块虽然可以降低网络模型的参数量、提升网络的训练速度,但是它的性能相比于其他复杂的模型要差许多。将ECB模块引入到InceptionA网络中不仅可以有效提升网络的性能,还可以解决网络中过拟合及计算量过多的问题。
ECB网络结构如图2所示,由5个部分组合而成。首先,采用3×3的卷积以确保基本的性能;然后,采用1×1的卷积进行通道升维;最后,再通过3×3的卷积进行降维,以保证不同分支的输出通道相同。同时采用隐式方式将Sobel梯度集成到ECB的第3支和第4支当中,采用Laplacian滤波器提取二阶梯度来增加它的稳定性和鲁棒性。
图2 ECB网络结构Fig.2 ECB network structure
ECB模块不仅可以提升网络的性能,还能有效提取边缘和纹理信息,本文将其代替原InceptionA中的传统5×5卷积,使网络的性能和检测的速度都得到进一步提升。改进后的InceptionA结构如图3所示。
图3 基于ECB的InceptionA结构Fig.3 InceptionA structure based on ECB
2.2 CRASNet的残差网络
残差网络最先是由He等于2015年在CNN的基础上提出的。传统的卷积网络是将卷积层的输出通过激活函数ReLU作用后将产生的结果作为下一个卷积层的输入,而残差网络则是在次卷积层中将前一个卷积层的输入和次卷积层的输入进行叠加,再将通过激活函数ReLU作用得到的结果输入到网络的下一层。
本文采用的残差网络是ResBlock,其网络结构如图4所示。该网络的残差支路由2组Conv-BN-ReLU层组成。
图4 ResBlock结构Fig.4 ResBlock structure diagram
残差网络ResBlock可以很好地提取特征,为了增强对表面细小异物的提取能力,本文引入了轻量级注意力机制——CBAM。CBAM表示卷积模块的注意力机制模块,结合了通道注意力机制和空间注意力机制[16],可以无缝连接至神经网络中,实现端到端的训练。
CBAM中的空间注意力模块为了将上下空间的特征进行聚合,采用了一个7×7大小的卷积核。虽然可以增大感受野,但增大了参数量。为了解决上述问题,本文采用了空洞卷积对CBAM进行空间特征聚合,在保证相同感受野的前提下,减少模块参数量。同时,本文还将原CBAM中通道注意力模块和空间注意力模块的串行连接改成了并行连接。改变后的CBAM将输入特征图通过通道和改进后的空间注意力模块得到对应的特征值,再与输入特征图F共同加权输出到优化后的特征图F″。不仅可以保证注意力模块效果的稳定性,还能提高网络的检测精度。改变后的CBAM结构如图5所示。
图5 改变后的CBAM结构Fig.5 CBAM structure after changing
本文将2个ResBlock进行组合,形成一个深度残差网络,可以有效地解决网络中网络退化和梯度弥散的问题。为了增强对表面细小异物的提取能力,在深度残差网络的最后引入了改变后的CBAM模块,可以保证网络在有效解决网络退化和梯度弥散的同时,对网络最后的分类精度不产生影响。CRASNet结构如图6所示。
图6 CRASNet残差网络结构Fig.6 CRASNet residual network structure
2.3 基于深度可分离卷积的分类网络结构
卷积层的作用是进行特征提取,标准卷积层在接收到输入的特征图后需要在卷积核中学习空间特征和通道特征。Howard在2017年提出的深度可分离卷积可以将卷积层的空间相关性和通道性进行解耦,在标准卷积层之后加上一层过渡层,并将其分解成为逐点卷积和深度卷积,深度可分离卷积的引入可以保证在不降低精度的前提下,大幅降低参数量和计算量[17-18]。
本文将mixde-segdec-net的部分标准卷积层替换为深度可分离卷积层。将原本分类网络中特征大小为1 025和6的标准卷积层替换成深度可分离卷积层。原本卷积层由一个5×5的标准卷积、BN层和ReLU组成,替换后的深度可分离卷积层则是由一个5×5的深度卷积、BN层、1×1的标准卷积和BN层组成。改进前的卷积层和改进后的深度可分离卷积层如图7所示。
图7 分类网络改进前后对比Fig.7 Comparison of classification network before and after improvement
2.4 基于改进mixde-segdec-net的检测模型总框架
为了增强网络对尺度的适应能力,应用基于ECB的InceptionA模块,提高了检测速度。为了解决网络退化及梯度退散问题,用CRASNet模块替换原分割网络的Conv卷积模块,提高了网络的检测精度。为了降低参数量和计算量,将分类网络的卷积层替换为深度可分离卷积层。以mixde-segdec-net网络为基础的网络结构,融入了ECB+Inception,CRASNet和深度可分离卷积层的检测模型框架,提高了对金属表面缺陷检测的精度,其模型结构如图8所示。
图8 模型结构Fig.8 Model structure diagram
3 模型训练与实验结果
3.1 模型训练
3.1.1 数据集准备
本文选取的数据集是公开的数据集KolektorSDD2,它由4 662张训练集图片和2 008张测试集图片组成,这些图片都是由视觉检测系统捕捉的部分带有注释缺陷的金属表面图集,图片大小相似。在网络训练中,数据集被分为有缺陷和无缺陷2种类别进行分析。
3.1.2 数据增强
本文实验对原始数据集进行增强,首先采用了随机的图像翻转和图像旋转对KolektorSDD2数据集中的训练集进行增强,使得原来训练集中的图片数量由4 662张增至9 324张。增强前后的图片如图9所示。
图9 数据增强前后图Fig.9 Data diagram before and after enhancement
在对原始图片进行随机翻转和旋转之后,将训练集中的所有图片进行高斯去噪。高斯去噪属于空间域滤波的方法之一,是对均值滤波的改进,它对模板内像素值进行加权平均,有效抑制了高频信息,使得平滑处理的效果更自然。高斯函数的表达式为:
(3)
式中,x,y为像素的模板坐标;σ为正态分布的标准偏差。
3.1.3 实验环境
实验软硬件平台系统为Windows10,CPU为Intel Core i9-119000K,GPU为NVIDIA GeForce RTX 3090,配备64 GB内存,使用Pytorch框架,编程软件为Python。程序运行环境如下:Python版本为3.8.0,opencv-python版本为4.5.5.64,CUDA版本为11.2,torch版本为1.9.0。
3.1.4 网络训练
为了实现模型的最佳性能,在训练过程中,将迭代次数设置为50次,初始学习率设置为0.01,学习衰减率设置为1,膨胀系数设置为15,训练批次设置为1。
3.2 评价指标
采用缺陷检测领域中常用的评估指标平均精度(Average Precision,AP)以及模型评估指标(AUC)对模型进行评估。
精度(precision)是指检测出所有被认为是正样本的总数中正样本正确检测的占比。召回率(recall)是指所有正样本中,检测出的正样本占比。它们可以很好地展示检测过程中误检和漏检的情况,这2个指标计算如下:
(4)
(5)
式中,TP为被模型预测为正类的正样本;FP为被模型预测为正类的负样本;FN为被模型预测为负类的正样本。
本文将金属表面有缺陷的样本设置为正样本,反之则为负样本。FP可以展示出模型中误检的情况,而FN则可以展示出模型中漏检的情况。
AP是PR曲线下的面积(即precision-recall曲线下的面积),它可以有效地衡量学习出来的模型在分类上的好坏。而AUC的值即为ROC曲线下的面积,它的值在0.1~1.0。AUC的数值可以直观地评价分类器的好坏,值越大就说明分类效果越好。AP和AUC的计算如下:
(6)
(7)
式中,Pi为第i次的精度;M为正样本的数量;N为负样本的数量。
3.3 实验结果
3.3.1 消融实验
为了分析本文提出的改进方法对工业金属表面缺陷检测的影响,通过消融实验评估引进不同模块对检测的影响,具体的实验内容及实验结果如表1所示。改进1是在网络中加入基于ECB的InceptionA模块,改进2是将分割网络的conv模块替换成CRASNet模块,改进3是将分类网络中卷积层替换为深度可分离卷积层。结果表明,这几种单独改进的方法相比于原始的网络而言,AP和AUC的指标均得到了提升。将这些方法共同加入至模型中,AP从94.5%提升到96.0%,对工业金属表面缺陷检测实现了进一步的提升。训练的总时间随着模型模块的增多却没有明显变化,完全符合工业金属表面缺陷检测要求。
表1 消融实验结果对比Tab.1 Comparison of ablation experiment results
3.3.2 实验结果分析
改进前后的mixde-segdec-net模型在训练过程中均使用相同的数据集和相同的参数设置,改进前后的AP和AUC指标如图10所示。改进后的AP和AUC曲线相比于改进前都更加平稳,说明改进后的网络相比于改进前具有更好的识别性。
(a)原模型AP曲线(AP=0.945 8)
(b)原模型AUC曲线(AUC=0.982 9)
(c)改进后模型AP曲线(AP=0.960 2)
(d)改进后模型AUC曲线(AUC=0.987 7)图10 改进前后性能对比Fig.10 Performance comparison before and after improvement
改进后的mixde-segdec-net在KolektorSDD2数据集中的部分测试集的识别结果如图11所示。
图11 改进网络后的识别结果Fig.11 Identification results after network improvement
图中,左边2张是对正常图片进行检测,右边2张是对有缺陷的图片进行检测。由图11可以看出,改进后的算法可以很好地检测出图片中是否有缺陷,对于图片中存在的缺陷,可以很好地将其特征信息从图片的背景中分割出来,不仅可以对图片中的小目标缺陷进行检测,而且最终进行二分类的精度也相对较高。相比于mixde-segdec-net模型,改进后的模型对工业金属表面的缺陷检测有更好的鲁棒性,从而表现更优越的分类精度和更高的模型评价指标。
3.3.3 对比实验
为了证明本文算法的综合检测性能,把改进后的mixed-segdec-net与U-Net,DeepLabv3与mixed-segdec-net对KolektorSDD2数据集进行实验对比,并采用AP作为评价指标,对比结果如表2所示。
表2 模型性能对比Tab.2 Model performance comparison
由表2的AP值可以看出,改进的mixed-segdec-net网络相比于传统的U-Net和DeepLabv3在分类精度上有明显提升,说明改进后的mixed-segdec-net网络在工业金属表面的缺陷检测有更好的效果。虽然训练总时间相比于原算法要稍长,但是远远低于传统的U-Net和DeepLabv3,达到了实时检测的要求。
4 结束语
针对工业金属表面缺陷检测中存在误检、漏检及检测精度不高的问题,提出了一种改进mixed-segdec-net的金属表面缺陷检测算法。在mixed-segdec-net主干网络中加入基于ECB的InceptionA模块,用CRASNet模块替换分割网络的Conv模块,同时把分类网络中的卷积层改成深度可分离层,不仅提高了模型对信息处理的能力,还解决了网络退化和梯度弥散的问题。实验表明,将数据增强后的公开数据集KolektorSDD2放在改进前后的mixed-segdec-net进行对比,改进后的mixed-segdec-net得到的AP值和AUC值均有所提升。下一步的研究重点是在保证高精度的前提下对模型继续优化,提升检测的速度,并进一步降低工业金属表面缺陷检测的误检率和漏检率。