程 豪,蒋占四,陈晓鑫,郑洪鑫,蒋 慧
(1.桂林电子科技大学机电工程学院,桂林 541004;2.广州航海学院土木与工程管理学院,广州 510725)
带钢是钢铁的重要原材料之一,广泛应用于我国国民经济建设与钢铁工业的主要生产领域,在各类生产生活中占有重要地位。目前带钢产品的材质与尺寸已经能够满足基本要求,但表面质量问题却往往成为主要的影响因素,带钢在生产过程中会产生裂纹、划痕、斑块等表面缺陷,这些缺陷会给带钢产品的疲劳强度以及抗腐蚀性等性能带来很大的负面影响,轻则减少了带钢的使用寿命与用途,重则会造成重大施工事故。因此,研究一种精度更高的带钢表面缺陷检测算法具有十分重要的意义[1]。
早期缺陷检测手段以使用人工裸眼检测为主,过度依赖于人工的经验,检测效率低,劳动强度大,生产成本高,已经不能满足工业带钢表面缺陷检测的需求。后来出现了基于机器视觉的缺陷检测方法,屈尔庆等[2]针对传统 Gabor小波滤波器存在参数量多和算法检测速度慢的问题,提出了复合差分进化的Gabor滤波器优化方法,但该方法在实时检测方面仍不满足要求;AMINZADEH等[3]通过分析比较缺陷区域与背景的直方图来确定一个阈值,进而分割缺陷,该方法要求缺陷区域和背景区域具有显著的可分离特征;HU等[4]采用混合染色体遗传算法来优化带钢表面缺陷的分类模型,构建出SVM分类器,提高了对缺陷进行分类的精准度。此类方法需要人工提取特征因子且易受外界环境因素影响,具有一定的局限性。
近年来,随着大数据的迅速发展和硬件算力的提升,基于深度学习的检测方案逐渐应用到表面缺陷检测上[5]。基于深度学习的方法主要有以YOLO[6-7]、SSD[8]为代表的一阶段算法和以Faster-RCNN[9]等算法为代表的二阶段算法[10]。HE等[11]基于 Faster-RCNN 提出了一个带钢缺陷检测系统,将多个分层特征组合成一个特征,检测的精度有了大幅地提升,但该方法模型较大,难以满足工业生产实时检测的需求;LIU等[12]基于SSD网络模型提出了一种结合多特征融合网络与注意机制的表面缺陷检测方法,减少了网络的计算量,同时该方法的检测速度相比原模型提高了12.9%,可以达到工业实时检测的要求;李维刚等[13]给出了一种通过优化YOLOv3算法的带钢表面缺陷检测模型,作者通过使用聚类算法对先验框的参数进行了调整,同时对网络结构进一步改进,融合深层与浅层网络的特征信息,经过改进后的YOLOv3算法mAP值达到了80%,较原模型的mAP值提高了11%。YOLO系列模型发展迅速,且在检测精度与速度之间均有不错的性能,本研究在YOLOv5s的基础上,首先在检测端增添64倍下采样的检测层;其次将深层特征信息与浅层特征信息进一步融合;然后在主干部分引入CA(coordinate attention)[14]注意力模块;最后对网络中的部分C3模块进行改进。本文提出的算法在NEU-DET数据集[15]上进行测验,实验验证了改进后算法的有效性。
基于YOLOv5算法,本文提出如图1所示改进后的YOLOv5算法模型。YOLOv5根据网络的深度和宽度,主要可分为YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个不同的版本。考虑到缺陷检测对轻量化和实时性的要求较高,因此文本综合考虑检测模型的大小、检测精准度和效率,基于YOLOv5模型对带钢表面缺陷检测算法进行改进设计。改进后的YOLOv5模型主要由Backbone、Neck、Head三个部分构成。
图1 改进后的YOLOv5模型
近年来,注意力机制在计算机视觉领域的有效性得到了广泛的验证[16]。YOLOv5网络在提取特征时会同等对待模型的所有通道,这在一定程度上影响了网络的检测性能。为了进一步提高检测模型的特征提取能力,本文在主干网络中的池化层之前引入了CA注意力机制。
CA注意力的结构如图2所示,相比其他注意力模块的优势是将通道注意力划分为两个一维特征编码的过程,分别沿两个不同的空间方向聚合缺陷特征。首先将特征图输入尺寸大小为(H,1)和(1,W)的池化核,产生大小分别为C×H×1和C×1×W的特征图zH和zW;再将特征图进行拼接并通过卷积生成过程特征图f∈R(C/r×1×(H+W)),其中r表示下采样的比例系数;再将过程特征图沿水平方向和垂直方向拆分并通过卷积层得到fh∈R(C×H×1)和fw∈R(C×1×W);最后利用激活函数得到注意力权值gh和gw,将特征图像与已获得的注意力权值相乘得到最终的注意力特征。本文通过引入Ca注意力机制,这样就能够沿一个空间方向获得远程的依赖关系,进行远程空间的交互,并且也能够沿另一个空间方向保留检测目标精确的位置信息,两者可以互补地应用到输入的特征图,进而增强检测模型对目标的特征表示。
图2 CA注意力结构
部分特征信息会因网络层数的加深而丢失,因此多尺度特征融合被广泛应用于目标检测网络中,以提高模型的检测精度。在YOLOv5的Neck部分中,运用了FPN和PAN结构融合深浅层网络,其中FPN通过自顶向下传达,增强特征的语义信息,而PAN通过自底向上传达,增强特征的定位信息。BiFPN是一种具有加权信息的双向特征金字塔网络,相比其他结构能够便捷地实现深浅层多尺度特征融合。
如图1中Neck部分结构所示,本文通过类似BiFPN[17]的形式进行深浅层多尺度特征融合,但通过BiFPN_Add取代原BiFPN中的部分Concat环节。首先从主干特征网络C3模块层通过Concat与FPN[18]网络结构里的上采样进行通道融合,实现特征融合,再跳跃与PAN[19]网络结构中的网络层相加,进而实现深层网络与浅层网络的多尺度特征融合。BiFPN_Add本质是进行add操作并不是Concat操作,这样子更节省计算量和参数。本文通过BiFPN_Add结构,在兼顾模型参数量的同时实现双向多尺度特征融合,提高检测模型对整体特征的表达能力。
LIU等[20]提出了ConvNextBlock结构,对照Swin Transformer的设计理念,渐进式改造ResNet,相比标准的ResNet Block,ConvNextBlock结构采用反转瓶颈结构,同时在卷积核大小、激活函数等方面均进一步优化。ConvNextBlock结构原理图如图3中所示,ConvNextBlock结构近似残差模块,具有两个分支,其中一条分支先经过卷积核大小为7的卷积,再经过卷积核大小为1的卷积通道数变为原先的4倍,最后再经过卷积核大小为1的卷积,通道数变为初始输入的通道数;另外一条分支将输入跳过上述3个卷积运算后直接与上述分支相加再进行输出。
图3 ConvNextBlock模块结构
如图4中CNeB结构原理图所示,本研究所提出的CNeB模块是将C3中的Bottleneck更改为ConvNextBlock,构建成新的模块。新构成的模块相比C3模块参数量更低,同时具有良好的性能。如图1中Neck部分结构所示,本文将原模型Neck部分结构中对应于4个检测层的C3模块更改为CNeB模块。为了进一步增强了模型的感受野,本文引入ConvNextBlock模块,构建出CNeb模块取代各检测层对应的C3模块,提高了模型对背景模糊、特征难分辨之类缺陷的特征提取能力。
图4 CNeB 模块结构
原始的YOLOv5模型有3个检测层,当输入的图片尺寸为640×640时,检测层特征图的输出尺寸分别为80×80、40×40、20×20,分别被用于不同大小目标的检测。由于工业带钢表面缺陷背景模糊,且缺陷类别多,各类缺陷表征形式不同,同一类缺陷表征形式也有差别等特点,结合数据集中缺陷目标的大小,为了提高缺陷检测的准确率,如图1里Head网络结构中所示,本文在原模型基础上增添了64倍下采样的检测层,对应检测层特征图的输出尺寸为10×10,满足准确识别各类尺度缺陷目标的检测需求。
在进行训练时,基于训练数据采用自适应锚框计算锚框大小,增添新的检测层后,总的先验框数量增加至12个。新增检测层拥有更大的感受野,对于大目标特征较为敏感,满足准确识别各类尺度缺陷目标的需求。多尺度检测层有利于提高网络的泛化能力,提高模型的检测性能,减少漏检与误检的情况发生。
为对本文提出的改进后的YOLOv5模型进行验证,本文采用NEU-DET公共数据集,该数据集收集了6种工业生产中常见的带钢表面缺陷图像:夹杂(In)、划痕(Sc)、麻点(PS)、斑块(Pa)、裂纹(Cr)和压入氧化皮(RS),6类缺陷图片各300张,共1800张,图像大小为200×200,按照8:1:1的比例随机将数据集划分为训练集、验证集与测试集,各类缺陷的图像如图5所示。
(a) 夹杂 (b) 划痕 (c) 麻点
(d) 斑块 (e) 裂纹 (f) 压入氧化皮图5 数据集图像
本实验在Windows11系统下完成,采用PyTorch深度学习框架搭建网络。在训练时使用Adam算法来优化损失函数,设置输入图形大小为640×640;batch size为16;IoU的阈值设置为 0.5;各实验模型均迭代250轮。
本实验采用平均精度(AP)和均值平均精度(mAP)作为主要评估指标,同时参考每秒检测帧数(fps)、参数量(Parameters)、精准率(Precision)和召回率(Recall)。AP指PR(precision-recall)曲线下的面积,用来评估模型在单个缺陷检测类别上的检测精度,mAP是所有类别AP的均值,用来评估模型整体对缺陷的检测精度,表达式为:
(1)
(2)
式中:P和R分别表示精准率和召回率。它们的公式可表示为:
(3)
(4)
式中:NTP表示检测正确的目标数量,NFP表示检测错误的目标数量,NFN表示漏检的目标数量。
为更直观地展示和评估本文提出的对YOLOv5s模型的多种改进策略在带钢缺陷检测方面的性能,本文进行了5组消融实验。实验结果如表1中所示。
表1 消融实验
续表
实验以YOLOv5s原模型为基线(第1组),可以看出改进策略给模型的检测性能有不同程度的提升。第2组实验相较第1组实验模型的检测层由3层增至4层,mAP从76.4%提升至78.7%,准确率和召回率分别提高了1.2%和3.9%,表明增加检测层降低了漏检率,提高了模型对不同尺缺陷目标的检测精度。第3组实验在第2组的基础上使用BiFPN_Add融合网络特征,mAP提高1.1%,参数量近乎没有增加,准确率高达81.1%,表明该优化改善了模型深浅层特征融合不充分的问题,可以有效提高模型的检测精度。第4组实验在第3组实验的基础上引入CA注意力机制使mAP提高至80.5%,检测精度获得进一步提升,表明引入CA注意力机制能提高网络对特征的提取能力。第5组实验在第4组实验的基础上采用改进后的CNeB模块取代部分C3模块,在网络模型参数量相较第4组实验更低的同时,mAP提升至80.9%,表明所构建的CNeB模块能够兼顾模型大小与检测精度,进一步提高模型性能。
图6为YOLOv5s算法与改进后的算法在各类缺陷上检测的AP对比图。
图6 改进前后各缺陷AP对比
从图6中可知,本文所提的改进策略能够有效的提高带钢表面缺陷的检测准确率,在多类缺陷检测上均有所提升。对于难识别缺陷样本裂纹(Cr)和压入氧化皮(RS)的AP,改进后的模型分别提升7.5%和8.2%,相比原网络具有大幅的提升,验证了改进后模型针对困难样本能有较好的改善。
图7为改进后的YOLOv5s模型与原模型的检测结果对比图。从图中可以看出原模型存在漏检和检测准确率不高的情况,而改进后的模型在精度方面相比原模型有了巨大的提升,且能检测出更多的目标,进一步验证了改进后的模型在对困难样本的检测方面有所改善,在整体检测性能方面更为优秀。
(a) YOLOv5s (b) 改进后的YOLOv5s图7 改进前后模型检测结果
为验证本文所改进模型的检测性能,与主流目标检测模型Faster-RCNN、SDD以及YOLOv4模型进行横向对比,表2为不同算法在数据集上的检测性能对比结果图。从表中可以发现,其中改进后的YOLOv5s模型的mAP值相比二阶段目标检测模型Faster-RCNN高出5.4%,从整体上来说,一阶段算法较二阶段算法在缺陷检测效率方面有着明显的优势;相比SDD算法,本文所提的算法mAP提高了12.8%,SDD算法在检测速度上达到48 fps,相较其他算法有一定优势,但其存在漏检、误检等问题,导致检测精度不高;YOLOv4算法均衡了检测的精度和效率,但其检测性能仍有很大的改进空间。
表2 不同算法检测性能的对比结果
本文所改进的算法相比原YOLOv5s算法,在困难样本方面有了较好的改善,mAP提高了4.5%,模型的大小仅为23.2MB。相比于其他主流的目标检测算法,能够达到更好的检测效果,同时保持较好的检测速度,更有利于在工业进行部署。
为进一步提高工业带钢表面缺陷检测的性能,本文提出一种改进的YOLOv5算法,通过引入CA注意力机制增强网络对全局特征的提取,采用BiFPN_Add融合不同尺度的特征信息,构建CNeB模块以提高模型提取特征的感受野,增添检测层,降低漏检率。
实验结果表明,本文基于YOLOv5所提出的4个改进策略能够有效地提升网络检测性能,改进后的YOLOv5算法检测精度和检测速度分别达到80.9%和39 fps,为带钢表面缺陷检测提供了有益的帮助。针对难识别缺陷样本裂纹(Cr)和压入氧化皮(RS),改进后的模型AP值分别提升7.5%和8.2%,进一步改善了对困难样本的识别。相比其他主流的一些目标检测算法,改进后的模型兼顾检测精度与速度,且模型大小仅23.2 MB,在检测精准度、检测速度以及模型大小方面实现了更好的平衡,更有利于工业生产的应用。后续的研究将从轻量化主干特征提取网络出发,结合工业生产,不断优化改进策略,以实现更优的检测准确率和实时性。