改进YOLOv7的小样本钢板表面缺陷检测算法
2023-12-11胡晨光李庆华郑李明
窦 智,胡晨光,李庆华,郑李明
1.河南师范大学 计算机与信息工程学院,河南 新乡 453007
2.莱芜钢铁集团银山型钢有限公司板带厂,济南 271104
3.金陵科技学院 机电工程学院,南京 211169
钢板是制造业中用途最为广泛的材料之一,由于其表面积较大,生产过程中极易产生不同种类的表面伤痕。然而,这些伤痕往往会对下游产品的质量和耐久性产生严重影响,进而成为整个产业链品控的高风险节点。如何对钢板表面伤痕进行高精度自动化检测和分类是智能制造业缺陷检测中极具挑战的问题。
近年来,大多数较为先进的目标检测算法都使用了卷积神经网络模型,并且在目标检测任务中表现出优异的检测效果,如一阶段检测器SSD[1]和YOLO[2]等,二阶段检测器Faster R-CNN[3]、R-FCN[4]等。一些学者为将目标检测算法能够更好地应用于工业检测做出了尝试,Li等[5]基于一阶段目标检测YOLO网络用来检测钢板表面缺陷。Zhang 等[6]将YOLOv3[7]用于桥梁的缺陷检测任务上,通过迁移学习方法来优化原网络的检测性能。Chen 等[8]尝试将DenseNet[9]嵌入到YOLOv3 网络结构中,使改进后的网络能够更好地应用于LED 缺陷检测任务上。曹义亲等[10]提出了一种改进YOLOv5 的钢材表面缺陷检测算法。值得注意的是,面向训练样本规模不足的多分类问题(即小样本问题)时,这类方法并不适用。
与传统的人工检测相比,上述方法确实提高了制造业中的产品质检效率和准确率,降低人工成本。但是,智能制造业中良品率比较高,有缺陷的样本数量极少,会导致正负样本极度不均衡,而且行业数据有其特殊的商业价值和保密性特征,公开率极低,有效的训练样本难以获得,且价格较为昂贵,是典型的小样本问题,深度学习方法不具备可行性;此外,该领域对检测精度的行业要求较高,传统的深度网络模型难以达到行业要求,需进一步地降低漏检、误检率,方能达到智能制造业产品缺陷检测的行业要求。针对该特殊场景下的缺陷检测问题,本文提出了一种基于改进YOLOv7[11]的小样本钢板表面缺陷检测算法,通过高仿真度的样本生成算法解决训练样本不足问题,通过改进网络模型提高检测精度,降低漏检和误检的现象。使此类场景下的深度学习方案具备了可行性,同时也获得了更加优秀的检测性能。
本文主要贡献可总结为:首先,提出了一种小样本驱动的钢板表面缺陷样本生成算法,使深度学习应用于样本不足的检测任务具备了可行性;然后,对YOLOv7中的ELAN模块进行优化,来增强网络提取到关键特征的能力;接着,引入注意力机制,将卷积与自注意力相融合,降低网络对小目标的漏检率;最后,优化原网络中的损失函数,来提升模型的定位性能。
1 相关工作
1.1 基于计算机视觉的样本生成
大规模的高质量训练样本,是深度网络得以训练和优化的数据基础。在某些特殊领域中,无法获取足够的训练样本,将导致深度学习无法得到应用。数据增强思想是有效解决样本不足问题的重要手段,能够起到提升深度网络模型性能的作用[3],不仅可以提高模型的泛化能力,防止训练时过度拟合,而且具备较好的可行性。常见的方法是将已有样本进行多种变换操作[12],模拟生成更多样本,提升训练集规模。Nair等[13]对数据采取了颜色变换以及几何变换的操作,通过随机水平翻转、随机裁剪以及在色彩空间上应用PCA来增加数据集样本数量。Dwibedi 等[14]通过对样本数据进行剪切、粘贴等操作提高了模型的检测性能。Tran等[15]从训练集合中,学习特征分布的特点,通过贝叶斯分析方法来生成增强后的数据。
上述方法都采用了比较简单的数据变换,难以在已有样本极其有限的情况下,真实模拟出符合客观分布特征且具有多样性的复杂样本,也难以有针对性地对某特定领域数据集进行高保真度的样本生成与扩充。
另外,目前对于小样本问题,研究人员普遍使用生成对抗网络GAN(generative adversarial nets)[16]来扩充样本数量,如CGAN(conditional generative adversarial nets)[17]、CycleGAN(unpaired image-to-image translation using cycle-consistent adversarial networks)[18]、StyleGAN(a style-based generator architecture for generative adversarial networks)[19]、StyleGAN2(analyzing and improving the image quality of StyleGAN)[20]等,但其均需要足够的数据来训练模型,当样本数据极其稀少时无法应用,具有很大的局限性,无法解决钢板表面缺陷小样本问题。
针对以上问题,本文提出一种面向钢板表面缺陷小样本数据集的样本生成算法。
1.2 YOLOv7模型
在计算机视觉领域中,目标检测算法可以分为两大类,分别是一阶段和二阶段目标检测算法。其中一阶段以YOLO 系列的算法作为代表,其检测速度较快,检测性能更加优异,满足实时检测任务的需求,常应用于实际项目的检测任务。YOLOv7 是YOLO 系列中检测性能较为优异的算法,在检测速度和检测精度上,比大多数目标检测器更好,如YOLOR[21]、YOLOx[22]、YOLOv5、PPYOLOE[23]等。YOLOv7网络架构如图1所示,其骨干网络(Backbone)主要是由ELAN、CBS 和MP-1 结构组成,用于提取特征。Head 由SPPCSPC、ELAN-C、MP-2和REP结构组成,用于模型预测。
YOLOv7将模型重参数化引入到网络架构,训练时采用多分支的网络使模型获取更好的特征表达;同时加入标签分配策略进一步地提升网络性能;利用有效层聚合网络使得深层网络可以有效学习和收敛,使得模型更加高效,提升模型检测精度。
1.3 钢板缺陷检测
钢板缺陷检测是在钢板制造和生产过程中的一个重要环节,旨在发现和识别钢板上的缺陷,以确保生产出高质量的钢板产品。主要有以下几种检测技术。
1.3.1 视觉检测技术
视觉检测是最常用的钢板缺陷检测方法之一,它利用高分辨率相机和图像处理算法,对钢板表面进行扫描和分析,以检测缺陷如裂纹、划痕、孔洞等。这些技术通常结合光源、滤光器和图像处理算法,以提高检测的准确性和效率。
1.3.2 超声波检测技术
超声波检测是一种非接触式的检测方法,适用于检测钢板内部的缺陷,如气孔、夹杂等。超声波技术通过向钢板中发送超声波脉冲,并通过接收器接收反射回来的信号,根据信号的强度和时间延迟来确定缺陷的位置和类型。
1.3.3 磁粉检测技术
磁粉检测是一种常用的钢板表面缺陷检测方法,它利用磁场和磁粉颗粒来检测钢板表面的裂纹、疤痕等缺陷。在磁粉检测过程中,钢板表面涂覆有磁粉颗粒,然后施加磁场,如果存在缺陷,磁粉颗粒会在缺陷处形成可见的磁粉堆积。
1.3.4 热成像检测技术
热成像检测利用红外热像仪来检测钢板表面的温度分布情况,以识别潜在的缺陷。缺陷通常会导致局部温度变化,因此通过检测温度异常可以定位和识别缺陷。
1.3.5 机器学习检测技术
近年来,机器学习技术在钢板缺陷检测中得到广泛应用,通过大量的数据训练模型,可以使计算机自动学习和识别钢板上的各种缺陷,这种方法具有高度的自动化和准确性,并且可以处理大规模的生产线上的数据。
2 改进YOLOv7 的小样本钢板表面缺陷检测算法
2.1 多维统计特征模型的小规模缺陷样本扩充算法
制造业的特殊性使得钢板伤痕的通用数据集缺失,若要将深度学习用于该领域的缺陷检测问题,就必须自制大规模的训练集合。然而,多种缺陷出现概率极低,数月的在线采集也仅能得到十几张到几十张不等的缺陷样本,无法实现对深度网络的有效训练和优化,最终导致检测失败,如3.3 节实验所示。以边丝压入缺陷为例,采集到的该类次品样本极少,仅占总样本数的0.3%,正负样本严重不均衡,无法对深度网络进行有效的训练。为了能将深度学习应用于上述小样本分类问题,本文提出一种基于多维统计特征模型的样本生成算法,能够在尊重缺陷固有特征的前提下,生成大规模保真度高且多样性强的样本集合,进而解决样本规模不足和样本不均衡问题,使得将深度学习应用于小样本目标检测任务具备较好的可行性。
首先,统计良品集合中图像各像素点亮度值的概率分布,舍弃3σ以外的亮度分布,对剩余的亮度值求归一化加权平均,得到背景模型IB:
其中,x、y分别为样本图像中各像素的行、列坐标,Ii表示选取到的第i个亮度级,N为亮度级的最大值,pi表示Ii出现的概率,图2为得到的背景模型。
然后,提取次品集合中各样本图像的伤痕区域,并对其进行有效特征的统计分析。通过实验分析可知,钢板边丝压入缺陷检测的强特征包括伤痕长度α(单位为像素),伤痕宽度β(单位为像素)和伤痕角度θ(单位为度),伤痕的统计特征向量可表示为C=(α,β,θ)T。分别统计α、β及θ的均值及标准差,(μα,σα)=(401,16),(μβ,σβ)=(1 3,2),(μθ,σθ)=(1 20,45)。假设强特征之间相互独立,且均符合正态分布,据此建立钢板伤痕的三元正态分布模型Sαβθ。依据此模型的概率分布特征,随机生成M(本文中M=2 000)个伤痕子图。设特征向量生成样本的概率密度函数为:
其中,Σ=Cov(C)为C=(α,β,θ)T的协方差矩阵,μ为数学特征均值向量,μ=(μα,μβ,μθ)T。得到的边丝压入缺陷子图如图3所示。
图3 生成的伤痕子图Fig.3 Generated scar subgraph
接着,对生成的各伤痕子图的边缘进行半径为R(本文中R=60)的羽化,即使处于伤痕子图边缘R行、R列像素的透明度dr随边缘半径r的增大逐渐从0%递增到100%,羽化效果如图4所示,透明度函数表示为:
图4 伤痕子图羽化后效果Fig.4 Effect of feathered scar sub image
最后,随机调节羽化处理后的各伤痕子图的位置,并将其与背景模型IB进行基于透明度的图像融合,去除结构相似性较差的样本,即可得到规模为M的多样性边丝压入缺陷样本集合。将该集合并入原伤痕样本集合,即可在不改变样本统计分布特征的前提下,获得保真度好且多样性强的大规模训练样本,有效解决正负样本不均衡的问题,使得深度网络能够被有效训练,并最终实现高性能缺陷检测。图5 为使用边丝压入缺陷样本生成算法生成样本的展示效果图。
图5 伤痕样本生成展示Fig.5 Display of scar sample generation
2.2 改进的SE-ELAN模块
本文基于原YOLOv7 网络在特征提取环节进行改进,对网络中ELAN模块进行了优化,引入SE模块[24]来加强网络提取关键特征的能力。SE-ELAN模块采用一种特征重标定策略,使网络能够充分利用全局信息,通过损失函数来自主地学习特征权重,取得各个特征通道的重要程度,达成特征通道自适应标定,增加有效特征通道的权值,减少无效特征通道的权值,从而增强重要的特征、抑制次要的特征,提升模型的检测性能。图6为SE-ELAN的结构图。
图6 SE-ELAN模块Fig.6 SE-ELAN module
SE-ELAN原理如下:首先,给定特征图X′,维度信息为H′×W′×C′,经过卷积操作后生成维度为H×W×C的特征图U。然后,经过全局平均池化操作,将H×W×C大小的特征图压缩为1×1×C。这一维参数亦获取了H×W全局的感受野。接着,依次经过全连接层和激活函数,利用全连接层对特征图进行下采样操作,将特征维度由1×1×C降采样为1×1×C/r,其中r表示为一个缩放参数,降低模型的参数量,加快模型训练。然后,使用激活函数来增加网络非线性拟合能力。再通过全连接层将特征维度由1×1×C/r上采样到1×1×C的大小。之后,经过Sigmoid 归一化成数值为0~1的权重,不同大小的权重代表了不同特征通道的重要性。最后,通过一个Scale步骤,将各个通道对应的特征与相应的权重进行加权处理。
2.3 ACmix注意力模块
本文由CoAtNet[25]网络得到启发,结合卷积以及自注意力机制的特点,引入ACmix[26]模块来提升网络对钢板表面缺陷小尺寸目标的关注度。其结构是卷积与自注意力两部分融合而成,原理如图7所示。
首先,利用三个1×1的卷积对输入的特征进行投影后分成N部分,得到3N个映射之后的中间特征。在第一个分支上,利用卷积操作获取局部感受野的特征信息,中间特征经过全连接层后,再将生成的特征进行位移以及聚合的操作,接着对输入的特征采取卷积处理,得到H×W×C的特征;在第二个分支上,利用自注意力机制获取全局感受野,而且更加关注重点。3N个中间特征对应三个特征图,分别为Query、Key和Value,并遵循多头自注意力模块,再通过卷积处理得到H×W×C的特征。最后,将以上两个分支的输出加在一起,其强度由两个可学习的标量控制。
其中,Fout为ACmix 模块中最后的输出结果,Fatt、Fconv分别为自注意力路径与卷积路径上的输出结果,α和β值设置为1。ACmix 集成卷积和自注意力模块的优点,作用于YOLOv7网络中的Head部分,利用注意力机制来加权不同边界框的预测结果,根据每个边界框的特征表示或置信度等信息,动态地调整不同边界框的重要性,以提高对小目标的关注度,降低网络模型检测小目标时产生的漏检情况,提升整体的检测准确度。
改进后YOLOv7网络结构如图8所示。
图8 改进后YOLOv7网络结构Fig.8 Improved YOLOv7 network structure
2.4 优化损失函数
本文在实验过程中,发现数据集存在低质量的样本,几何因素会造成低质量样本加重惩罚,导致模型泛化能力不足。针对此问题,本文引入动态非单调的聚焦机制WIoU[27]替换YOLOv7 中的损失函数,使用离群值β替代IoU对锚框质量评估,其定义如式(5)、(6)所示:
3 实验结果与分析
3.1 实验说明
3.1.1 实验设定
在本文中,实验使用Linux 操作系统,GPU 采用GeForce RTX 2080 Ti 的11 GB 显 卡,CPU 为Intel®Xeon®E5-2620 V4 2.10 GHz,CUDA 版本为10.0。所有网络均未使用预训练模型,设置训练轮次epoch=100,批量大小batch size=8,设置网络初始学习率为0.01,输入的图片尺寸大小统一缩放为640×640。
3.1.2 数据集介绍
本文共使用两种数据集,第一种为微软公司发布的COCO2017 数据集,实验中使用118 287 张图片用来训练,5 000张图片用来验证,共计数据123 287张,包含80个种类。第二种为钢板表面缺陷数据集SPD(steel plate defect data set),从钢板生产过程中采集的缺陷样本数据,并对其进行了标注、分类,其中训练集图片有690张,验证集图片为176张,共计数据866张,包含5个种类。在SPD数据集中有一种名为“边丝压入”的缺陷,样本数量极少,属于小样本数据,本文通过样本生成算法将其样本数据由16张扩增为150张。
3.1.3 评价指标
本实验中,以召回率、准确率、mAP 作为评价指标。召回率用来表示模型在检测任务中,正确检测到的正样本数量,占总正样本数的比例。准确率用来表示模型在实际检测任务当中,正确检测到的样本数量,占总样本数的比例。mAP 体现了目标检测网络的综合性能,其中mAP又分为mAP0.5、mAP0.5:0.95、mAPsmall、mAPmedian、mAPlarge。
3.2 消融实验
3.2.1 算法改进有效性验证
本文提出的算法是在YOLOv7基础上改进所得,为体现改进方法的优势,排除数据增强对实验结果的影响,在未使用样本生成算法的SPD数据集上对各改进策略进行有效性验证,消融实验结果如表1所示。
表1 消融实验结果对比Table 1 Comparison of ablation experiment results
实验结果表明,本文在YOLOv7 算法基础上提出的各种改进方法,对模型的检测性能均起到一定的提升作用,而且本文提出的检测算法在检测性能上表现更为优异。
3.2.2 样本生成算法有效性验证
针对钢板表面缺陷数据集中存在的小样本问题,本文提出一种样本生成算法,下面使用YOLOv7验证小样本数据集扩增前后对检测结果的影响。
实验结果如表2 所示,未经过扩增的小样本数据集,由于训练样本过少,导致模型检测性能较差,无法满足检测任务。而在经过样本扩增之后,训练数据量得到扩充,模型的检测性能也随之提升。另外,为验证2.1节中伤痕子图羽化前后是否对检测结果产生影响,本文通过实验进行论证,实验结果表明,羽化操作有助于还原真实样本特征,更加接近真实数据,便于模型对真实特征的学习,从而提升模型的检测性能。
表2 样本生成算法有效性实验结果Table 2 Experimental results on effectiveness of sample generation algorithm
3.3 实验对比
3.3.1 验证样本生成算法的有效性
从SPD 数据集中,取出产品缺陷为边丝压入的小样本数据,来验证本文提出的伤痕样本生成算法是否有效。
由图9可知:原YOLOv7在小样本数据集上无法准确检测到目标,这是由于训练集样本过少,正负样本不均衡,导致缺陷检测失效。而使用本文的样本生成算法后,模型检测精度得到提高,没有漏检和误检现象,说明本文算法可以改善小样本数据中正负样本不均衡的情况,在解决钢板表面缺陷小样本问题上是有效、可行的。
图9 检测效果对比图Fig.9 Comparison of detection effects
3.3.2 公共数据集上的实验对比
为了评价本文基于YOLOv7改进前后算法优势,使用COCO数据集来验证本文提出改进方法的有效性,实验结果如表3所示。
表3 COCO数据集实验结果Table 3 Experimental results of COCO dataset
由图10可知,组图从左至右,原YOLOv7依次出现了定位不准确、小目标漏检、误检、检测精度低的情况,而本文算法均未出现此类问题,检测精度更高,检测性能更优。经过实验证明,本文基于YOLOv7改进的方法是有效、可行的。
图10 COCO数据集检测结果对比Fig.10 Comparison of COCO dataset detection results
3.3.3 钢板表面缺陷数据集(SPD)上的实验对比
为了论证本文基于YOLOv7 改进的算法在钢板表面缺陷检测任务上更加优异,使用在钢板生产过程中采集的钢板表面缺陷样本数据集,通过对比模型检测结果,来验证本文提出的算法优势。
图11 中,图(a)为原YOLOv7 检测结果,图(b)为本文算法检测结果。经过对比可知YOLOv7存在误检、漏检现象,无法满足工业检测的需求。而本文提出的算法不仅可以正确检测出图中所有缺陷目标,而且没有发生误检、漏检的现象,检测精度更高,对于复杂的工业数据中的目标有着较好的检测效果,更能满足钢板表面缺陷检测任务。本文算法在钢板表面缺陷数据集上与其他算法的对比实验结果,如表4所示。
表4 钢板表面缺陷数据集实验结果对比Table 4 Comparison of experimental results of steel plate surface defect dataset
图11 SPD数据集检测结果对比Fig.11 Comparison of SPD dataset detection results
4 结束语
本文提出一种改进YOLOv7 网络的钢板表面缺陷检测方法,对原网络的ELAN 模块进行优化改进,便于提取钢板表面缺陷的重要特征信息。加入ACmix注意力模块,将自注意力机制和传统卷积注意力机制相融合,提高对钢板表面小尺寸缺陷的关注度,同时对损失函数进行优化,使用WIoU 替换原损失函数,增强网络模型的定位能力,提高检测的准确性。当训练轮次足够,模型收敛时,检测精度可达到98.6%,高于工业检测的需求。最后,针对钢板表面缺陷数据中存在小样本的问题,本文提出一种小样本缺陷样本生成算法,改善了钢板表面缺陷检测任务中小样本数据集正负样本不均衡的情况,极大地提高了小样本数据集检测的精度,为解决小样本问题提供了一个有效的方案。下一步将在保证模型高检测精度的前提下,降低模型参数的规模,降低计算量,提升模型的检测速度,使之更适于实际应用。