改进YOLOv4 的表面缺陷检测算法

2023-03-31 07:45李彬汪诚丁相玉巨海娟郭振平李卓越
北京航空航天大学学报 2023年3期
关键词:损失数量精度

李彬,汪诚,丁相玉,巨海娟,郭振平,李卓越

(空军工程大学 基础部,西安 710038)

飞机在飞行过程中,航空发动机长时间处于高温、高压和高转速的条件下,工作环境十分恶劣,极易出现发动机叶片打伤、燃烧室裂纹等故障[1]。另外,飞行过程中发生的外物撞击(如鸟类撞击、冰雹撞击等)也会造成发动机零部件的结构损伤[2],这些损伤给飞机的飞行安全构成了严重威胁。因此,针对航空发动机部件表面进行有效的检测对保障飞行安全具有重要意义。

目前,常规的检测方法主要有磁粉检测、渗透检测、涡流检测、孔探法检测、超声红外热成像检测等,其中孔探法检测是发动机外场检测应用最多的技术手段[3]。但这些方法对操作人员专业素质要求很高,并且检测效率较低。随着深度学习卷积神经网络的不断发展,以单发多框检测(single shot multibox detector,SSD)算法[4]、YOLO 系列[5-8]等算法为代表的单阶段目标检测算法和以Faster R-CNN算法[9]、区域全卷积网络(region-based fully convolutional networks,R-FCN)[10]、Mask R-CNN[11]等算法为代表的两阶段目标检测算法在很多领域得到了广泛应用。文献[12]在YOLOv3-Tiny 算法基础上增加特征映射模块,同时在特征提取网络中引用残差网络,能有效用于遥感图像舰船检测。文献[13]提出了一种残差网络与膨胀卷积相融合的SSD 改进算法,用于航空发动机安装工位时的定位检测。此外,不少学者也将卷积神经网络应用到航空发动机表面缺陷检测领域。文献[14]使用Faster R-CNN和SSD 模型对航空发动机缺陷样本进行训练,为发动机缺陷检测提供了检测平台。文献[15]将改进先验框后的R-FCN 用于航空发动机叶片裂纹检测,并将改进特征金字塔后的YOLOv3 用于裂纹识别。文献[16]对SSD 模型进行了先验框聚类方法和使用底层卷积特征提取的改进,用于航空发动机凸台缺陷的检测。以上文献虽然使用了深度学习的方法来检测航空发动机表面缺陷,但仍存在检测精度不足、检测速度不快的问题。

对此,本文将航空发动机部件表面常见的4 类缺陷(裂纹、缺口、凹坑、划痕)作为检测目标,采用YOLOv4 算法作为基础模型,在路径聚合网络(path aggregation network,PANet)结构中融合浅层特征与深层特征,增大特征检测尺度,同时去除自下而上的路径增强结构,提高小目标检测精度和整体检测速度,再将参数优化后的聚焦损失(focal loss)代替分类误差中的交叉熵损失函数,降低样本不平衡和难易样本对检测精度的影响,提高整体检测精度,从而有效检测航空发动机部件表面的缺陷。

1 YOLOv4 算法

1.1 网络结构

YOLOv4 算法属于单阶段目标检测算法,其将目标分类和目标定位集成在同一个网络中进行预测,实现了“端到端”的检测。YOLOv4 算法的网络结构如图1 所示。主干特征提取网络采用CSPDarknet53[17],CSPDarknet53 是在Darknet53[7]基础上改进的,其在残差单元结构中使用了跨阶段局部网络(cross stage partial network,CSPNet)[17],进一步增强网络的学习能力,在保证精度的前提下降低内存成本和计算瓶颈,同时也使用了Mish[18]激活函数代替原有的Leaky ReLU[19]激活函数。Mish 激活函数在负值区比Leaky ReLU 更为平滑,有利于梯度的计算和更新,能获得更好的准确性和泛化能力。主干特征提取网络之后引入了空间金字塔池化(spatial pyramid pooling, SPP)结构[20],SPP 结构利用不同的最大池化层结合进行处理,池化核大小分别为1×1、5×5、9×9、13×13,能有效增加感受野,分离出显著的上下文特征。PANet[21]是在特征金字塔网络(feature pyramid network, FPN)[22]基础上增加自下而上的路径增强(bottom-up path augmentation)结构,缩短低层特征到高层特征的信息路径,加快低层信息流通。检测头部YOLO Head 沿用了YOLOv3中的Head,由3×3 和1×1 卷积层组成,对PANet 处理后输出的特征层进行结果预测。

图1 YOLOv4 网络结构Fig.1 YOLOv4 network structure

1.2 损失函数

YOLOv4 算法的损失误差包括置信度误差Lconf、分类误差Lcls和回归框预测误差Lloc。其中,置信度误差和分类误差沿用了YOLOv3 算法中的损失函数,具体如式(1)和式(2)所示。而在回归框预测误差中采用完整交并比(complete intersection over union,CIoU)损失,CIoU 损失是在交并比(intersection over union,IoU)损失[23]、泛化交并比(generalized intersection over union,GIoU)损失[24]、距离交并比(distance-intersection over union,DIoU)损失[25]上进一步改进的,既考虑到检测框和目标重叠面积,解决了边界框不重合时的问题,也考虑到边界框中心点距离和宽高比的尺度信息,提高了预测回归的精度和速度,具体如式(3)和式(4)所示。

2 改进的YOLOv4 算法

2.1 改进的PANet 结构

相比之前版本的YOLO 系列算法,YOLOv4 使用的PANet 结构可对不同特征层的语义信息进行融合补充,适合检测不同尺寸的目标。通过PANet处理,输出的特征层大小分别为原始输入图像的1/32、1/16、1/8。例如,输入图像尺寸大小为416×416,获得的特征层大小分别为13×13、26×26 和52×52,这在一定程度上可以满足不同尺寸目标的检测。但由于航空发动机部件表面存在许多微小缺陷,缺陷目标在图像中像素占比较少,但数量占比较多,原有的PANet 结构对微小缺陷目标仍缺乏有效的检测。因此,本文在原有特征层基础上继续融合浅层特征与深层特征,增大特征检测尺度,形成一个新的特征检测层。特征层大小为输入图像的1/4,即104×104。增加新的特征检测层会导致网络结构参数量的增加,且自下而上的路径增强结构在小目标居多的情况下发挥的作用有限,因此为减少参数冗余,保证足够的检测速度,去除PANet 中自下而上的路径增强结构。改进后的PANet 结构如图2蓝色虚线框所示。改进后的PANet 在结构上与FPN 相似,但在特征融合过程中使用相邻层拼接(concat)代替相邻层相加(add),可达到更好的融合效果。改进后的结构不仅继承了原有结构的特征融合效果,而且能在降低网络参数的同时获取更浅层的特征,提高小目标的特征提取能力。

图2 改进的YOLOv4 结构Fig.2 Improved YOLOv4 structure

2.2 改进的聚焦损失

在YOLOv4 中,当输入图像大小为416×416时,3 个特征层共会生成10 647 个先验框。本文训练集中每张图像约包含2.3 个目标,绝大多数先验框中不包含目标,容易导致训练时正负样本不平衡。YOLOv4 分类误差中采用的交叉熵损失函数难以解决样本不平衡的问题,而聚集损失[26]具有调节样本不平衡和挖掘困难样本(即难以学习的样本)的作用,聚焦损失函数如下:

式中:p∈[0,1]表示样本预测的概率;α 为用于控制正负样本对总损失影响的平衡参数,可调节样本不平衡对损失的影响,α∈(0,1),当正样本占比更少时,可减小α 的取值,加大样本预测错误时的惩罚;γ 为用于控制难易样本对总损失的聚焦参数,当γ>1时,可降低简单样本的损失,使得模型更关注学习难分辨的样本。

虽然聚焦损失可以起到一定的平衡正负样本和难易样本对总损失影响的作用,但在航空发动机部件表面缺陷训练集中,各类缺陷数量不同,检测难度也不同,仅设定恒定不变的参数,难以做到对各类缺陷进行针对性训练。为提升模型训练效果和检测精度,本文采用聚焦损失代替交叉熵损失函数应用于分类误差,并在其基础上根据各类缺陷数量对平衡参数α′进行优化,同时增加权重因子βt,改进方法如下:

式中:α0和β0分别为平衡参数和权重因子的初始化系数;ni为第i 类缺陷的目标数量;N 为所有缺陷的目标总量。α′可根据缺陷数量不同而动态调整缺陷预测正确和错误时的损失权重。

当某类缺陷数量较少,其预测正确时损失权重会较低,但预测错误时损失权重则会较高,从而增大对该类缺陷预测错误的惩罚。βt可根据缺陷数量不同而动态调整其整体损失在总损失中的权重,当某类缺陷数量较少,其整体损失权重就会更大,这样能使得模型更好地学习小数量样本的特征。γ 可用于调整难易样本对总损失的影响,本文γ 设为3,可放大低置信度样本的损失值,使得模型更关注难分辨的样本。综合使用α′、βt和γ 三种损失调节参数,可有效提高模型的检测精度。

3 实验与结果分析

3.1 实验环境及参数设定

本文在Windows 10 系统中采用PyTorch 深度学习 框架搭建网络,Python 版本:3.6.10;Torch 版本:1.2.0;CPU:Inter(R) Xeon(R) Gold 5218 CPU @2.30 GHz;GPU:NVIDIA GeForce RTX 2080 Ti。

实验设置的输入图像大小为416×416,采用COCO 预训练模型进行参数初始化。整个训练过程为200 轮epoch,num_workers 设置为8,权重衰减系数为0.000 5。前100 轮epoch 的学习率设置为0.001,batch size 设置为8,后100 轮epoch 的学习率设置为0.000 1,batch size 设置为4。同时,在每一轮epoch训练过程中同时开启mosaic 数据增强和random 数据增强,提高网络的训练效果。

3.2 实验数据处理

本文采用的实验数据是航空发动机部件表面缺陷图像,包括裂纹、缺口、凹坑、划痕4 种缺陷,如图3 所示。

图3 缺陷类型Fig.3 Defect types

由于采集的图像数量有限,在训练前采用目标裁剪、水平翻转、曝光度调整和添加噪声(高斯噪声、椒盐噪声)的方式进行数据增强。数据增强后的图像数量为3 700 张,随机抽取图像分配给训练集、验证集和测试集,比例为6∶2∶2,即训练集2 220张,验证集740 张,测试集740 张。表1 显示了各数据集的目标数量,其中,裂纹、划痕的数量较多,缺口、凹坑的数量较少。

表1 数据集中的目标数量Table 1 Number of targets in dataset

采用K-means 算法对目标框进行聚类,图4 为聚类中心为12 的聚类结果。可知,大多数缺陷都分布在尺寸较小的区域,获得的先验框可覆盖大部分的缺陷目标,能满足不同特征层的检测。

3.3 结果分析

3.3.1 评价准则

本文以预测框与目标框的IoU 大于0.5 作为评判成功检测到目标的依据。采用平均精度均值(mean average precision, mAP)和加权调和平均(Fβ)作为模型检测精度的评估指标,mAP 和Fβ值越大,表明检测精度越高;采用单位时间内检测的图像数量(Speed)作为模型检测速度的评估指标,Speed 越大,表明检测速度越快。定义如下:

式中:P 为准确率;R 为召回率;为减少出现缺陷漏检的情况,保证召回率的重要程度,本文的β 值设定为1.2;AP 为平均精准度;K 为缺陷类别数;TotalTime为检测的总时间;NumFigure 为检测的图像数量。

3.3.2 性能对比

为验证改进PANet 结构和改进聚焦损失的检测效果,本文在实验中设置原始PANet 结构+交叉熵损失函数(YOLOv4)、改进PANet 结构+交叉熵损失函数(YOLOv4-A)、改进PANet 结构后+改进的聚焦损失(YOLOv4-B)3 组实验进行对比,每种模型训练结束后选取最后3 个epoch 的训练权重进行测试,并将平均结果作为最终检测结果。

在YOLOv4-B 中,选取不同的平衡参数α0和权重因子β0会带来不同的训练效果,进而影响最终的检测精度。表2 为不同参数组合下的检测精度对比情况。可知,当α0为0.20 时,β0越大,mAP 值就越大;当α0为0.25 时,β0越大,mAP 值先增大后减小;当α0为0.30 时,β0越大,mAP 值就越小。这是因为α0和β0直接影响改进后的聚焦损失对不同类型缺陷的损失权重,选取合适的参数组合才能有效提高其调节损失的效果。对比不同参数组合下的mAP 值可知,选取α0为0.25、β0为3.00 的参数组合时检测精度最高。

表2 不同参数组合下的检测精度对比Table 2 Comparison of detection accuracy under different parameter combinations

本文选取最佳参 数组合(α0=0.25,β0=3.00)的YOLOv4-B 作为标准与其他模型进行检测性能对比,对比结果如表3 所示。

表3 不同模型的检测性能对比Table 3 Comparison of detection performance of different models

使用改进的PANet 结构后,mAP 值由87.93%增加到89.61%,增加了1.68%。其中凹坑和划痕的检测效果提升较大,凹坑的AP 值从86.02%上升到89.10%,划痕的AP 值从86.78%上升到89.86%,二者AP 值提升均超过3%。缺口的AP 值从92.29%上升到93.12%,提升了0.83%。这是因为使用的航空发动机部件表面缺陷数据集中存在较多像素占比小的缺陷,特别是发动机叶片容易产生小凹坑,机匣表面容易出现小划痕,使用改进的PANet 结构提升了模型对小目标的检测精度。而裂纹这类缺陷在所有缺陷中数量占比较多,且形状多为细长型,部分目标标注时目标框较大,增加新特征层带来的参数冗余导致这类缺陷检测精度略有下降。各类模型的Fβ结果对比如图5 所示。图5 中的Fβ值变化规律与AP 值类似,说明改进PANet 结构整体上提高了检测精度,且缺陷遗漏率也有所降低。

图5 不同模型的Fβ 对比Fig.5 Comparison of Fβ of different models

改进PANet 结构后检测速度由23.24 fps 提升到24.94 fps,提升了1.70 fps。去除自下而上的路径增强结构降低了网络结构的参数量,从而提高了检测速度。具体的参数变化如表4 所示。原始YOLOv4 网络中总参数量为63 953 841,参数容量为243.96 MB;改进后总参数量为48 971 468,参数容量为186.81 MB,总参数量相比减少了23.43%,参数容量相比也降低了23.43%。

表4 不同模型的网络结构参数量对比Table 4 Comparison of network structure parameters of different models

对比YOLOv4-A 和YOLOv4-B 的结果可知,采用改进的聚焦损失作为分类误差的损失函数后,进一步提升了mAP 值,从89.61%提升至90.10%,提升了0.49%。其中,裂纹、凹坑这2 类缺陷AP 值均有提高,裂纹AP 值提升了0.73%,凹坑AP 值提升较大,提升了3.55%。由于裂纹这类缺陷中包含部分像素模糊的目标,检测较为困难,聚焦参数γ 会增大这些困难样本的损失值,使得模型更专注于学习这些困难样本;凹坑这类缺陷目标较小,不易分辨,而且数量相对也较少,平衡参数α′会增大其预测错误时的损失,同时权重因子βt会进一步增大其整体损失占总损失的比重,二者综合提高了这类缺陷的检测精度。划痕的AP 值略有下降,缺口的AP 值有一定的下降,主要是因为采用改进的聚焦损失后,各类缺陷的损失在总损失中的占比进行了调整,而数据集中划痕数量最多,缺口的特征较易分辨,使得其损失权重相比交叉熵损失函数有所下降,进而对AP 值有一定的影响。总体而言,采用改进的聚焦损失后,各类缺陷的AP 值相对更为平衡。同时,各类缺陷的Fβ均有所提升,说明模型的总体检测精度进一步提升,各类缺陷漏检量也有所减少。在检测速度方面,YOLOv4-A 和YOLOv4-B检测速度基本一致。如表4 所示,使用改进的聚焦损失后并不影响网络结构的总参数量和参数容量。图6 为各类缺陷样本的检测结果。其中,测试图片是测试集中选取的缺陷图像,测试结果包括缺陷的位置、类型和置信度。

图6 各类缺陷样本的检测结果Fig.6 Test results of various defect samples

表5 为不同算法在航空发动机部件表面缺陷数据集下的检测性能对比。SSD、YOLOv3 是常见的单阶段目标检测算法,EfficientDet[27]是谷歌大脑于2019 年提出的目标检测算法,采用Efficient-Net[28]作为主干特征提取网络,包括D0 至D7 共8 种结构,本文采用D0、D1、D2 三种结构进行对比。YOLOv4-Tiny 是YOLOv4 的简化版,仅使用2 个特征层进行分类与回归预测。

表5 不同算法的检测性能对比Table 5 Comparison of detection performance of different algorithms

由表5 可知,在检测精度方面,YOLOv4-B 算法的mAP 值均高于其他算法,比SSD 高30.03%,比EfficientDet-D0、EfficientDet-D1、EfficientDet-D2 分别高40.71%、32.39%、26.70%,比YOLOv3 高3.85%,比YOLOv4-Tiny 高35.85%,比YOLOv4 高2.17%。在检测速度方面,YOLOv4-B 算法的检测速度比EfficientDet-D0、EfficientDet-D1、EfficientDet-D2、YOLOv4 更快,但低于SSD、YOLOv3、YOLOv4-Tiny。主要原因是:SSD 和YOLOv3 的主干特征提取网络分别为VGG 和Darknet53,其参数量均低于YOLOv4,YOLOv4-Tiny 是YOLOv4 的简化版,其参数量也远低于YOLOv4,因此在检测速度上更有优势。但考虑到航空发动机部件缺陷检测对精度的要求,综合来说,YOLOv4-B 检测性能要优于其他算法。

4 结 论

本文提出了一种改进YOLOv4 的表面缺陷检测算法,以航空发动机部件表面缺陷作为检测对象,并与其他常用算法进行性能对比,验证了该算法的有效性。结论如下:

1) 通过在PANet 结构中融合浅层特征与深层特征,增大特征检测尺度,同时去除自下而上的路径增强结构,mAP 值由87.93%提升至89.61%,提升了1.68%。其中,凹坑和划痕的检测精度提升最大,二者AP 值提升均超过3%。检测速度由23.24 fps提升至24.94 fps,提升了1.70 fps。

2) 采用参数优化后的聚焦损失代替分类误差中的交叉熵损失函数后,降低了样本不平衡和难易样本对检测精度的影响,mAP 由89.61%提升至90.10%。其中,凹坑AP 值提升了3.55%,裂纹AP 值提升了0.73%。

3) 在检测精度方面,改进后的YOLOv4 算法检测 的mAP 值 高 于SSD、EfficientDet、YOLOv3 和YOLOv4-Tiny 算法,更适合用于检测航空发动机部件表面缺陷。

猜你喜欢
损失数量精度
胖胖损失了多少元
统一数量再比较
玉米抽穗前倒伏怎么办?怎么减少损失?
基于DSPIC33F微处理器的采集精度的提高
头发的数量
GPS/GLONASS/BDS组合PPP精度分析
一般自由碰撞的最大动能损失
损失
我国博物馆数量达4510家
改进的Goldschmidt双精度浮点除法器