基于扩展跨阶段局部网络的表面缺陷检测
2022-09-05曹桢淼吉卫喜
曹桢淼,吉卫喜,2+,苏 璇,张 贇,王 凯
(1.江南大学 机械工程学院,江苏 无锡 214122;2.江苏省食品制造装备重点实验室,江苏 无锡 214122)
0 引言
近年来,基于深度学习的目标检测与图像分割技术在大量研究的推动下迅速发展[1],表面缺陷检测作为其典型的工业应用场景也随之快速实用化[2]。提高检测精度的主流方法之一是对神经网络的宽度和深度进行扩展,但这往往会带来繁重的计算量,需要昂贵的计算资源才能实现,如云计算、通用GPU(graphics processing unit)和物联网集群等。在这种背景下,轻量级计算越来越受到重视。目前的工业生产线对边缘检测设备的推理时间和检测精度提出了更高要求,对表面缺陷检测算法提出了严峻挑战[3]。
借助模型缩放技术,通过调整主干网络的深度和宽度来控制模型规模,表面缺陷检测模型可以适配不同算力的设备实现高精度实时推理。近年来,针对模型压缩问题的解决方法主要分为两类[4]:第一类方法致力于压缩已有网络,包括张量分解、模型剪枝、模型量化等;另一类致力于构建新的小型网络,包括知识蒸馏、紧凑网络设计等[5]。目前已有许多文献提出了模型缩放的方法。HOWARD等[6]提出大和小两个MobileNet模型,结合硬件感知的网络架构搜索(Neural Architecture Search,NAS)和NetAdapt算法,将网络调整部署到手机CPU;WANG等[7]提出跨阶段局部网络(Cross Stage Partial Network, CSPNet)模型,利用跨阶段特征融合和截断梯度流,将梯度的变化整体集成到特征图中,解决了大型网络主干中梯度信息冗余问题;TAN等[8]提出EfficientDet检测系列,通过加权双向特征金字塔网络加快多尺度特征融合,并对主干网络、特征网络和box/class预测网络的分辨率、深度和宽度同时进行统一缩放;XIANG等[9]提出两级检测器ThunderNet,设计了上下文增强模块和空间注意模块来改进特征表示;HAN等[10]提出一种即插即用的模块Ghost,用来降低网络计算成本,并建立了Ghost-Net轻量级网络。
轻量化模型设计作为提高网络计算效率的方式,在缺陷检测领域已有了初步探索。李春霖等[11]在YOLOv3-Tiny的基础上,引入Dense Block模块与SPP-Net模块对特征提取网络进行复合优化;王璇等[12]构建轻量级anchor-free检测模型AFP-CenterNet,减少模型参数量的同时降低了计算机存储资源占用率;廉家伟等[13]提出基于多尺度压缩的卷积神经网络模型(Multi-scale Compression—Convolutional Neural Network,MC-CNN),提高模型识别效率的同时缩小了模型体积,实现了表面缺陷的快速检测;孙美君等[14]提出弱监督学习下融合注意力机制的算法,仅使用图像级别标签便可预测缺陷的位置和概率,达到高效的表面缺陷检测自动化;金闳奇等[15]结合随机子空间和级联残差网络,提出一种结合随机子空间和级联残差网络缺陷检测方法(RSM-MTResNet),增加单样本数量的同时改善了网络的特征提取能力;何国忠等[16]提出基于YOLOv4的电路板缺陷检测网络,通过长距离注意力机制和特征图重组等方式改进网络模型。
通过分析文献[17]可以得出YOLOv5的主干符合NAS最优架构特征,因此本文关注基于YOLOv5网络的缩放方法。该模型控制结构的参数只有深度倍数和通道层倍数,分别控制瓶颈层深度和卷积核个数。因此进行缩放时,性能随参数量变化而显著波动,导致模型的检测效果较差。为解决上述问题,实现模型灵活缩放的同时保持良好的缺陷检测性能,本文提出一种基于扩展跨阶段局部网络的表面缺陷实时检测方法。该方法是针对YOLOv5s算法的模型缩放技术,可以应用到不同规模目标探测器扩展策略中。其中,在空间金字塔池化(Spatial Pyramid Pooling,SPP)模块中引入SoftPool池化方法[18],由此更好地权衡激活效果并保留更多缺陷特征信息。然后利用深度可分离卷积[6]轻量化模型,最终建立了YOLOv5s-csp和YOLOv5s-P系列模型,实现在30帧/s和50帧/s的视频以及边缘设备上的目标检测。
1 模型方法与原理
1.1 YOLOv5模型架构
YOLOv5是在YOLOv4[19]的基础上使用一系列优化方法得到的,其Neck网络主要用于生成特征金字塔,可增强模型对不同缩放尺度对象的检测能力,从而识别出不同尺度的同一物体。YOLOv4和v5均使用PANet和SPP作为Neck来聚合特征:PANet框架基于Mask R-CNN(region-CNN)和FPN(federated portal network),其特征提取器是一种新型FPN结构,能增强自下向上的路径,可有效改善低层特征的传播效果;SPP模块的主要作用是融合局部与全局特征。YOLOv4和v5的Neck结构区别在于,YOLOv4中的卷积操作均为普通卷积,而YOLOv5则借鉴CSPNet网络重新设计了CSP2结构,使其特征融合能力得到增强。
改进的Neck网络结构如图1所示,SPP模块由4个并行的分支构成,对不同卷积核尺寸的最大池化进行融合操作。SoftSPP模块是在SPP模块的基础上采用软池化操作,经过Concat连接后由一个CBL卷积输出。YOLOv5的设计中有两种CSP结构,一种带残差单元(CBL卷积+残差)应用于主干网络,另一种用普通的CBL替换残差单元应用于Neck中,图1中CSP2_X是不带残差的结构图,该模块由普通卷积和CBL模块Concat组合而成。CSP结构相比于普通的CBL优势显著,它将特征分成两个支路后再通过Concat操作能更好地保留不同支路的特征信息,且有利于特征融合,因此将YOLOv5的Neck网络结构CSP化进一步提高网络的特征提取能力。
1.2 跨阶段局部网络CSPNet
设计高效的模型尺度方法的主要原则是:当模型尺度上升或下降时,缩放的大小、深度和宽度等因素将导致计算成本的增加,因此应将增加的量化成本尽可能地减少。CSPNet可以应用于各种CNN架构,使整个网络体系结构实现更丰富的梯度组合,同时减少参数量和计算量,将上述特点融合到现有网络中,使用CSP化的模型执行模型缩放,可以有效提高硬件的利用率。该组件易于实现且通用性高,可应用到ResNet[20]、ResNeXt[21]和DenseNet[22]等最新的架构中,并部署在移动CPU和GPU上,以降低边缘计算系统的计算负担。
1.3 低端设备扩展微型模型
对于低端边缘设备,模型的推理速度不仅受计算量和模型大小的影响,更主要的是还受外围硬件资源的限制。轻量级模型较之大型模型不同的是,其对参数利用效率要求更高。在设计轻量级网络时,FLOPs和模型参数是主要考虑因素,但削减模型规模和降低FLOPs不等于减少推理时间和降低能耗。因此,在执行微小模型扩展时,还须考虑内存带宽、内存访问成本MAC和GPU计算效率等因素。
以Darknet[23]为例,对于具有b基层通道的第k层卷积层,Darknet层的计算量为:
(1)
在YOLOv5模型中,sizeα、widthβ、depthγ三个参数分别用来控制图像大小、模型层数和通道数。令可用于调整图像大小、层数和通道数的比例因子分别为α、β和γ,通过调整比例因子就可以实现不同大小和复杂度的模型设计。当这些比例因子变化时,d(即FLOPs)的相应变化为:
d=5whkb2,
(2)
sizeα=α2d,
(3)
widthβ=βd,
(4)
depthγ=γ2d。
(5)
由式(3)~式(5)可以看出,缩放的大小、深度和宽度导致了计算成本的增加,它们分别显示平方、线性和平方的增长。当输入图像尺寸增加时,如果针对大尺寸对象进行预测,则必须增加网络的深度或级数。因此,网络模型进行扩展时,首先对输入尺寸、模型计算块数量进行复合缩放,然后根据实时要求,分别对深度和宽度进行设计。
将CSPNet应用于Darknet可得到改变后计算量dcsp:
(6)
(7)
由式(7)可以看出,当层数k≥1时,总有计算量差值Δd>0,因此CSP化Darknet层的计算量总小于原始卷积层,通过引入CSPNet可以有效减少Darknet上的计算量FLOPs(floating-point operations per second)。
2 表面缺陷检测模型YOLOv5s-csp
本章首先介绍经典池化方法SoftPool及其主要特性,然后阐述基于SPP提出的新方法——SoftSPP结构;其次借助CSP化结构可改善模型性能的特点,基于YOLOv5s模型提出了改进模型YOLOv5s-csp;最后详细阐述YOLOv5s-csp的结构设计与模型细节。
2.1 SoftPool下采样
目前广泛使用的池化技术在某些情况下可能无法达到预期效果。例如平均池化操作仅能平均降低该区域内所有激活,最大池化只选择该区域内最高的单个激活,而SoftPool[18]的作用则介于这两者之间,能使较高的激活相比于较低的激活更占主导地位。
图2列举了多种池化方式,其中R为内核邻域中的像素值集合。(a)和(b)为平均池和最大池基于内核的平均和最大激活选择;(c)为随机池化从内核邻域中随机选择的激活;(d)为SoftPool使用softmax算子以指数方式权衡激活的效果。
为保证激活值大小与对应的输出影响成正比,选择以自然指数e为底数。该操作是可微的,即在反向传播期间,局部内核邻域内所有激活将至少被分配一个最小梯度值。SoftPool使用内核领域R内激活的平滑最大近似值,每个激活ai都被赋予权重wi,权重wi为该激活的自然指数除以邻域R中的所有激活的自然指数之和:
(8)
SoftPool方法的输出值是通过对内核邻域R内所有激活的加权求和得到的:
(9)
与最大和平均池化方法相比,SoftPool使用区域的softmax算子产生归一化结果,能够使概率分布与每个激活值相对于核区域的邻近激活值成比例。
2.2 改进的SoftSPP
SPP模块主要用来解决输入图像尺寸不统一的问题,大部分目标检测网络的输出层一般都使用全连接层,因此需要固定尺寸的输入图像。而SPP模块的池化操作是固定分块的,对于不同尺寸的输入能够有相同大小的输出,能有效避免失真。此外,SPP中融合不同尺寸的特征有利于应对待检测区域中目标大小差异较大的情况,尤其对于复杂多目标图像。这里采用SoftPool替换网络的单个池层,可以在不影响参数量和GFLOPs数量的情况下,实现精度的提升。
如图3所示为改进后的SoftSPP结构图。本文将YOLOv5中SPP内部的3个MaxPool替换为SoftPool,将模块中的池化窗口尺寸由[5,9,13]调整为[3,5,7]以保留更多特征信息,同时将其中的SoftPool2d()方法改进为SoftPool2d_pad()。改进后的方法在原来基础上增加了padding功能,能够实现在不同池化窗口大小下输出相同尺寸特征图的效果,使SoftPool能够在SPP中灵活应用,进而提高检测精度。
2.3 CSP化的YOLOv5s模型
YOLOv5s专为在通用GPU上进行实时对象检测而设计。本节将YOLOv5s改进为YOLOv5s-csp,以获得最佳的速度与精度平衡,其中将经CSP化改进后的SoftSPP作为模型内部结构。
在网络架构主干(CSPDarknet)的设计中,跨阶段过程下采样卷积的计算不包含在残差块内。因此CSPDarknet每个阶段的计算量
(10)
由式(1)和式(6)可得k>6/5,即只有k>1时,CSPDarknet阶段才会比Darknet阶段更有计算优势。其中CSPDarknet每个阶段拥有的残差层数分别为1—3—3,为削减计算量,将第一个CSP阶段转换为原始的Darknet残余层。借鉴原始YOLOv5算法中卷积层的设计思想,将CSPDarknet输出的特征层P5后的每个卷积层增加为3个卷积层,卷积核分别为1×1、3×3、1×1;同时将SPP结构后的单个卷积层增加为两个卷积层,卷积核分别为3×3、1×1,改进的网络结构如图4b所示。通过1×1卷积降低通道数,再经3×3卷积改变特征图大小,可有效减少计算量。经过改进的多次小卷积处理后,一方面可加深网络深度,从而增加网络容量和复杂度,另一方面能获得更大的感受野,获取更为全局化、语义层次更高的特征信息,从而有效提取缺陷目标的特征。
网络架构颈部采用PAN体系,主要整合来自不同特征金字塔的特征,然后通过两组无捷径连接的反向Darknet残差层。其中进行多尺度特征融合的SPP模块由采用1×1、3×3、5×5和7×7软池化方式的SoftSPP模块构成。
2.4 YOLOv5s-P
YOLOv5s是为低端GPU或CPU设备所设计的,模型尺寸非常小,能够降低部署成本,其设计遵循1.2节提到的原则。在YOLOv5s基础上设计了一个CSP化的模型YOLOv5s-P5,并将其扩展到YOLOv5s-P6和YOLOv5s-P7,扩展的主要目的是为了实现高精度的实时物体检测。
YOLOv5s-P5与YOLOv5s-csp结构最为相近,但两者的深度倍数和通道层倍数不同。对输入大小和扩展阶段数执行复合缩放,将每个阶段的深度尺度设置为2dsi,其中ds为[1、3、9、9、3]。YOLOv5s-P6和YOLOv5s-P7分别将阶段数扩展到[1、3、9、9、3、3]和[1、3、9、9、3、3、3]。最后,进一步使用推理时间作为约束条件来执行额外的宽度缩放。
2.5 引入DWConv深度可分离卷积
改进后的模型虽然检测精度提升,但同时增加了参数量及推理时间。为能在边缘设备上获得更好的效果,需要在精度和效率之间进行权衡。实验曾尝试引入通道注意力机制对特征进行校正,但未获得明显增益。经过权衡分析,进一步采用深度可分离卷积(Depthwise Convolution,DWConv)替换SoftSPP中原有的普通卷积,达到同时减少参数量和GFLOPs的效果。虽然能够实现一定程度上的轻量化,但是可能影响网络正常的训练与学习。因此,下文针对模型精度、参数量和迭代次数等因素进行实验分析。
3 实验结果与分析
3.1 模型训练环境及检测流程
实验数据选择DAGM 2007表面缺陷检测公开数据集,用来验证提出的YOLOv5s-csp模型。将数据集分为训练集、验证集和测试集3部分,比例为7∶2∶1,即训练集1 046张,验证集300张,测试集150张。
采用Windows10操作系统,计算机内存为64 G,处理器型号为Intel(R) Xeon(R) CPU E5-2 620 v4,显卡型号为 GPU NVIDIA Quadro P4 000,深度学习框架使用Pytorch 1.7.1,CUDA 10.1,CUDNN7.6.5。边缘设备选取Raspberry Pi4B搭载英特尔NCS2计算棒,OpenVINO版本为2020R4。采用Adam 算法优化损失函数,使用小批量随机梯度下降法来训练模型,批大小设置为16,初始学习率为0.000 1,动量设置为0.9,训练周期为300个epoch,并使用Mosaic数据增强加快收敛。
利用构建的基于扩展跨阶段局部网络YOLOv5s-csp模型对表面缺陷进行实验验证,主要检测流程如图5所示,步骤如下:
步骤1选取Pytorch深度学习框架作为实验环境构建YOLOv5s-csp算法模型;
步骤2构建模型的同时,利用CCD相机采集表面缺陷图像数据,直接选取DRAM 2007表面缺陷数据集,并将其划分后转换为VOC格式;
步骤3利用训练集对YOLOv5s-csp模型进行训练,选取测试集验证模型检测性能,将达到各项性能指标的检测模型进行边缘端部署和实验结果分析;
步骤4将训练得到的YOLOv5-csp模型与替换不同Neck结构的YOLOv5s模型进行对比实验,对准确率等指标进行分析比较;
步骤5进行对比实验的同时,将Torch模型转换为OpenVINO模型,并部署到边缘设备上,使用OpenMP实现图像处理的加速;
步骤6将边缘设备Raspberry Pi4B安装于生产流水线上,进行实时表面缺陷检测。
3.2 CSP化模式和YOLOv5s-P的消融研究
本节将对不同的模型进行CSP化,并分析CSP化对模型参数量(Param)、计算量(GFLOPs)、F1值和平均正确率(APval)的影响。使用Darknet作为主干,选择带有SPP的FPN(FPNSPP)和带有SPP的PAN(PANSPP)作为颈部设计消融研究实验,其中SoftSPP为结合2.5节引入DWConv后的结构。表1中列出了不同DNN模型CSP化后的APval结果(阈值iou默认为60%),激活函数(Act)分别选取LeakyReLU(Leaky)和Mish两种,并对模型各项指标进行比较。消融实验在COCO128数据集上进行,得到的平均正确率显示在表1的最后一列。
表1 CSP化模型@640×640消融研究
从表1中数据可得,PANSPP经过CSP化后参数量较原模型减少了1.7%且GFLOPs降低了0.1 B。在APval和F1值上尽管带来了少量提高,但想要获得更高的APval,还需在CSP化后为模型添加更多层或更多高级激活功能。同一模型中Mish相较于LeakyReLU作为激活函数,能够使模型在分类任务中获得更高的平均正确率APval和F1值,说明在相同条件下采用Mish可达到更理想的分类效果。通过将CPANSPP-Mish和CPANSPP-Leaky与PANSPP-Leaky对比,可以发现三者具有相近的参数量,但在计算资源较少的情况下,前两者分别有0.6%和0.7%的APval提升,并在F1上增加了0.9%和0.3%,故CPANSPP使用Mish激活函数时性能最优。综上所述,模型CSP化带来的优势显著,因此选取CPANSPP-Mish结构作为主干。
表2展示了YOLOv5s-P系列模型的训练结果,以Mish为激活函数选取不同阈值(iou为50%、60%和75%)与迭代次数(Epoch)所获得的AP值。
表2 YOLOv5s-P系列模型的消融研究
3.3 用于对象检测的YOLOv5s-csp
通过将YOLOv5s-csp与其他微小物体检测器在DAGM 2007数据集上进行性能比较,结果如表3所示。可以看出,YOLOv5s-csp与其他微型模型相比,性能最佳。
表3 先进的微型模型比较
最后,将YOLOv5s-csp部署在GPU和嵌入式CPU上进行测试,包括NVIDIA Quadro P4 000和搭载NCS2计算棒的Raspberry Pi4B。结果十分明显,YOLOv5s-csp在GPU上推理耗时较短且平均检测精度更高,可以实现实时检测的功能。在树莓派上单张图片的推理时间平均为0.25 s,可以满足大部分生产流水线的检测速度要求。此外,在通用GPU NVIDIA Quadro P4 000上运行YOLOv5s-csp,批处理大小分别为1和2时,帧率分别可达50 fps和119 fps。
3.4 DAGM 2007实验结果
如图5所示为YOLOv5s-csp对DAGM 2007缺陷检测数据的检测结果。该数据集总共包含10类缺陷,图中每列对应一类缺陷。采用Grad-CAM方法[24]对卷积神经网络模型中的决策进行可视化解释,得到灰度图、热力图以及融合图。实验结果表明,检测结果图中缺陷位置与热力图中定位相吻合,故热力图中的缺陷位置能够精确表述原图缺陷。经在数据集上测试,单张图片的检测速度为21 ms/张,10种类型缺陷的平均正确率达96.1%,较原算法提高了5%。
3.5 引入DWConv的YOLOv5s-csp
本节对替换不同层数DWConv的YOLOv5s-csp模型训练并测试,对比不同参数量(Param)和迭代次数(epoch)的模型,以F1作为指标观察模型性能变化,结果如图6所示。图6a采用LeakyRelu激活函数,当参数量下降到7.47e6之后F1呈显著下降趋势,在参数量6.75e6~7.47e6区间内F1最大降幅为0.021,而图6b采用Mish激活函数时最大降幅仅0.004;在迭代次数400次参数量8.32e6时Mish超过LeakyRelu 0.21%,当参数量降至6.75e6时,这种优势达到最大,百分比为0.58%。总体来看,采用Mish作为激活函数时F1更平稳且数值更高,因此选择Mish作为激活函数。将SoftSPP中两个1×1的普通卷积替换成DWConv(1×1),此外SoftSPP前后的两个3×3普通卷积也用DWConv(3×3)进行替换,改进得到的YOLOv5s-csp能够达到参数量与检测精度间的最佳平衡,适宜部署在资源受限的边缘设备上。
4 结束语
表面缺陷检测是现代工业生产中与品控、安全等相关的重要问题。针对有限计算资源下检测性能不足的问题,本文提出一种基于扩展跨阶段局部网络的表面缺陷检测方法。结合YOLOv5s轻量级模型和CSP方法将网络Neck结构CSP化,提出了可向上、向下扩展且适配不同规模计算资源的YOLOv5s-P系列模型。为提升检测精度,将SPP模块池化方式改进为软池化,并优化池化窗口参数。然后利用深度可分离卷积保持模型轻量化,减少参数量和所需算力的同时获得更高的正确率。实验结果表明,YOLOv5s-csp模型在表面缺陷检测方面精度较高,在DAGM 2007缺陷检测数据集上的精度mAP达96.1%,比传统模型高出5%;在搭载NCS2计算棒的Raspberry Pi4B上,YOLOv5s-csp模型的检测速度为4 fps,大小仅7.1 MB,适宜部署在边缘设备上。此外,还测试了YOLOv5s-P系列模型并得到了较高的精度。在未来的工作中,一方面在实时性等方面开展持续研究,另一方面将收集表面缺陷数据反馈生产部门以获得更好的应用价值。