检测器和分类器级联的飞机发动机损伤检测

2022-11-18 05:34黄睿段博坤陈望叶清池彭洪健马孝汶樊玮
中国图象图形学报 2022年11期
关键词:置信度特征提取类别

黄睿,段博坤,陈望,叶清池,彭洪健,马孝汶,樊玮*

1. 中国民航大学计算机科学与技术学院, 天津 300300; 2. 厦门航空有限公司, 厦门 361006

0 引 言

飞行安全是民用航空安全的首要问题,而飞机发动机的健康状况是保障飞行安全的重要因素。飞机发动机长时间工作在高温高压的环境下,容易产生如烧蚀、裂缝、材料丢失和磨损等不同类型的损伤。为了保证飞行器的运行安全和效率,需要定期检查发动机的健康状况。业界普遍采用视情维护策略(裴广达,2000),要求“定期对设备或部件按标准进行检验,以确定其在下一个计划检查周期之前能够使用”。目前,孔探是业内普遍采用的一种视情维护技术。专业人员通过孔探仪检查发动机的各个部位,观察孔探仪传回的图像,检查发动机是否有损伤,以及其损伤程度是否达到维护手册中要求的更换条件。

随着民航业的飞速发展,飞机数量增多,传统的基于人工的孔探检测不能满足高质量、低时耗和低成本的民航发展要求。因此,需要采用智能的飞机发动机损伤检测方法,提高检测速度和精度,降低人力成本,减少由于人为过失引起的民航安全问题。然而,基于视觉技术的飞机发动机孔探检测尚处在起步阶段,大多数检测方法都是直接将目标检测模型用于飞机发动机的损伤检测,没有考虑发动机损伤检测问题的特殊性,导致目前目标检测性能最好的模型YOLO v5(you only look once version 5)(Redmon等,2016),在发动机损伤检测问题上无法达到较高检测精度,并且存在漏检、误检等问题。

飞机发动机损伤检测的关键是对损伤区域进行图像处理和特征提取(Zou,2020),大多数图像处理算法依赖于目标区域和背景区域的灰度变化趋势及纹理特征。但是发动机内部结构复杂,损伤区域与背景区域混杂在一起,一些损伤灰度不明显,损伤区域纹理复杂,给图像处理带来很大困难。其次,发动机内部损伤的种类较多,图像特征多样,不同类型的损伤可能会在同一区域同时出现,增加了损伤区域识别的难度。最后,不同损伤之间可能存在时间上的演变关系,如发动机高压涡轮中的叶片由于异物撞击产生凹坑,导致材料变形不易承受高温,随着时间推移,该部位极易发生氧化变色,并演变为烧蚀甚至穿孔等损伤,这导致了不同损伤类别之间难以区分,增加了损伤的分类难度。

针对以上问题,本文提出了基于检测器和分类器级联的飞机发动机损伤检测算法Cascade-YOLO。首先,将不同类型的损伤作为正例、正常区域作为负例,训练二分类飞机发动机损伤检测网络初始化特征提取网络的网络参数;其次,固定特征提取网络,使用多个损伤检测头分别用于检测不同类型的发动机损伤,每个检测头独立进行检测,从而提高单类别损伤的检测召回率;最后,对于置信度在一定范围内的损伤,训练一个多分类判别器,用于校正检测头输出的损伤类别。提出的方法有效结合单分类检测器和多类分类器各自的优势,充分利用数据中的正负样本信息,提高每类损伤的召回率及检测精度,有效解决了损伤检测中漏检的问题。由于使用独立的检测头检测损伤,在训练单类检测器时可以有针对性地进行单类损伤数据的扩充,一定程度上缓解了样本分布不均衡的问题。通过增加单类检测器的数量可以轻易增加检测类别,而不需要重新训练所有模型。此外,将语义分割引入Cascade-YOLO,可以实现损伤区域的定位和分割。

1 相关工作

1.1 基于传统图像处理技术的检测方法

目前大多数的孔探自动检查技术都是针对裂缝进行研究(Yuan,2018)。李长有等人(2007)定义了粗糙度系数作为边缘曲线识别的特征,可以有效地识别图像中的裂纹。刘笃喜等人(2007)提出了基于边缘检测的小波滤波器和自适应阈值分割算法,实现了叶片裂纹的自适应快速检测。李华等人(2016)提出了飞机发动机内部裂纹的自动测量方法,通过Sobel边缘检测及最大熵分割进行裂纹的识别与测量。Guo等人(2019)提出了一种基于加权形态的飞机发动机孔探图像裂缝检测算法,通过形态学操作将裂缝图像进行增强,然后使用加权形态的检测算子对图像进行分割,并提取出裂缝的小边缘,可以及时发现发动机内部结构损伤。秦钟伟等人(2019)使用高斯平滑弱化摩擦片表面缺陷的纹理,然后采用多尺度细节增强算法补偿高斯平滑中丢失的缺陷边缘信息,计算图像中目标的显著性进行强弱分化,从而实现针对摩擦片的表面缺陷检测。

然而,航空发动机内部环境复杂,导致孔探成像质量差、背景和损伤区域的区分度低。传统方法仅能识别特定的损伤类型,精度低、鲁棒性差,无法应用于实际的检测任务中。

1.2 基于深度学习的检测方法

随着深度学习在计算机视觉领域取得了巨大的成功(赵永强 等, 2020),研究人员开始尝试将深度学习方法应用于发动机损伤检测。Kim和Lee(2019)利用孔探图像训练卷积神经网络(convolutional neural networks,CNN),在分类任务和检测任务上都达到了较高的准确率,验证了深度学习模型在飞机发动机孔探图像检测中的可行性。旷可嘉(2017)采用Faster R-CNN(faster region-based convolutional neural network)和SSD(single shot multibox detector)网络模型检测飞机发动机损伤。Li等人(2019)将深度可分卷积、特征金字塔和YOLOv3相结合,提出了YOLOv3-lite方法,可以有效提取裂缝特征,在保证检测精度的同时达到了实时检测。Shen等人(2019)利用全卷积神经网络(fully convolutional networks, FCN)识别和定位孔探图像中的裂缝。Bian等人(2016)同样采用了全卷积网络FCN,在此基础上使用了多尺度训练技巧,结合在不同尺度上训练的网络模型对孔探图像上的损伤进行分割,获得了较好的分割结果。Zhang等人(2020)将YOLO v3引入航空发动机检测领域,在检测精度和检测速度之间进行折衷。虽然保证了检测速度,但检测精度并不能满足实际应用的要求。Chen等人(2020)提出使用特征加权网络来解决缺陷尺度变化的问题并提高检测精度,该方法在烧蚀、涂层脱落等大面积损伤上达到了较高的检测精度。Li等人(2021)通过捕获更高分辨率的原始发动机图像,来保证深度学习网络的特征学习能力,然后使用粗分类器模块来过滤掉大部分背景区域,用细分类器模块在缺陷图像中定位和分类缺陷,该方法在一定程度上解决了发动机损伤检测精度低的问题,但其输入图像要求为高分辨率的原始图像,极大提高了孔探图像的获取成本。

上述方法通过引入深度学习方法检测飞机发动机损伤,但直接使用通用的目标检测模型对航空发动机进行损伤检测,得到的损伤检测精度较低,并且模型只能针对特定损伤或特定背景环境进行检测,泛化能力差、鲁棒性低。

2 本文方法

本文提出基于检测器和分类器级联的飞机发动机损伤检测方法Cascade-YOLO,其框架如图1所示。通过特征提取网络提取孔探图像的特征,然后使用不同损伤的检测头检测图像中的损伤。通过共享特征提取网络可以避免重复计算,减少网络参数,提高网络的效率。使用不同的检测头,可以提高单个损伤类别的召回率,同时便于后续追加其他类型的损伤检测。当单个损伤检测头的检测结果的置信度较高时,其检测结果有效;置信度较低时,检测结果无效;置信度在一定范围时,需要进一步对损伤的类型分类。基于单个检测头的结果,多分类器通过对损伤进行类别判断,重新确定损伤类型。对于检测到的损伤,使用语义分割网络可以得到损伤的形状。

图1 基于检测器和分类器级联的飞机发动机损伤检测框架Fig.1 The framework of cascade detector and classifier based airplane engine damage detection

2.1 损伤检测

2.1.1 特征提取网络

目标检测领域中提出了如特征金字塔(Lin等,2017)、递归特征金字塔(Qiao等,2020)等高效的特征提取网络来寻找更具表达能力的特征,用于提高目标检测的精度。YOLO(Redmon等,2016)系列是目前检测精度与速度都较为优秀的检测模型,YOLO v5通过Focus、Conv(convolution)、CSP(cross stage paritial)和SPP(spatial pyramid pooling)模块的堆叠,提取图像不同尺度的卷积特征,结合检测头,在目标检测领域达到了两阶段检测器的检测精度。考虑到YOLO v5的高效性,本文使用YOLO v5的前9层作为特征提取的骨干网络。同时,为了减少不同检测头提取特征的代价,所有检测头使用固定的骨干网络,提取图像特征。骨干网络对应层的设置和输出特征图的大小如表1所示。

特征提取网络的结构如图2所示。输入图像经过聚合模块进行切片和拼接以完成特征重组,这样可以提取到更加充分的原始图像特征,减少在下采样过程中的信息丢失。卷积(Conv)模块对输入图像做卷积运算,以实现采样和降维的作用。特征交叉(CSP)模块使用多个卷积层实现特征的局部跨层融合,用于提取更加丰富的多尺度信息。图2中CSP_2、CSP_9分别对应表1中第2、9层的结构和参数。CSP_4、CSP_6和CSP_2具有相似的网络结构。

表1 网络模型的参数设置Table 1 The parameter setting of network model

图2 特征提取网络Fig.2 The feature extraction network

2.1.2 多类别损伤并列检测

不同于传统目标检测方法的一次检测多个类别目标,本文采用多类别损伤并列检测方法,对每一类损伤训练一个独立的检测头,用于预测相应损伤类型的边界框。对于任一种损伤,输出类别i∈{0,1},0表示背景,1表示损伤。通过对每一类损伤单独设置一类检测头的方式,可以对不同损伤设置不同的交并比(intersection over union, IoU)阈值,从而有针对性地提高每一类损伤的召回率。此外,当需要检测新的损伤类型时,不需要重新训练特征提取网络及所有的损伤检测头,仅通过添加一个新的检测头就可实现新类型损伤的检测。使得网络具有较高的检测效率和可复用性。

通过将特征提取网络和检测头结合可以实现损伤检测。为了使特征提取网络较好地提取损伤相关的特征,在训练过程中,首先将所有损伤作为目标,训练一个无类别的损伤检测网络。当网络收敛时,将训练好的特征提取网络的权重固定,然后为每一类损伤单独训练一个检测头。训练完成后,通过图1所示的方式将不同权重的检测头合并,即可达到检测不同类别损伤的目的。

2.1.3 单类别损伤检测

多类别损伤并列检测本质上是多个单类别损伤检测。单类别损伤检测网络由单类别检测头和边界框预测两部分组成。图3左侧为单类别检测头的具体结构,单类别检测头包括Conv、Upsample、CSP、Concat模块,用于进一步提取目标相关的卷积特征,从而进行目标的边界框预测。其中输入部分的CSP_4,CSP_6,CSP_9分别为图2特征提取网络中CSP_4,CSP_6,CSP_9这3个模块提取到的图像特征。其余模块及参数的具体配置见表1中10~24层所示。单类别检测头的输出部分分别对应表1中第17、20、23层的3个不同尺度的卷积特征F17、F20和F23,将这3个尺度的特征经过融合层得到统一尺度的特征图,经过特定的判别模块进行边界框预测,输出目标的位置[x,y,w,h]、该检测头对应的类别i和置信度c,其中,x,y,w,h分别表示目标的水平和垂直位置、宽度、高度。

由于孔探任务中存在许多易混淆的损伤,导致检测的结果中存在将同一区域检测为多个类别的情况,因此需要根据检测结果的置信度对损伤类型进行二次分类,确定当前损伤区域的类别信息。图3右侧为边界框预测的具体流程,首先对特征图进行类别判断,用以确定当前损伤类别与当前检测头所属类别是否一致。具体来说,当检测到损伤的类别置信度c>0.7时,说明当前检测头以较高的置信度确定当前损伤的类别,此时保留当前类别信息;当c<0.3时,说明当前检测头对检测到损伤的类别置信度较低,直接丢弃该损伤类别;当0.3

图3 单类别损伤检测网络Fig.3 Single class damage detection network

2.2 基于多分类器的损伤类型矫正

损伤类型的识别实际是图像分类问题,本文采用ResNet50(He等,2016)作为损伤类型分类网络。通过使用剪切后的损伤图像块训练损伤分类网络,实现对分类置信度在[0.3,0.7]区间内存在歧义的预测结果的类别进行调整。当损伤分类网络的预测结果与对应检测头的损伤类型一致时,说明损伤类型预测正确;当损伤分类网络的预测结果不同于检测头所对应的损伤类型时,修改对应目标的损伤类型为损伤分类网络预测的损伤类型。

2.3 基于语义分割网络的损伤区域分割

损伤检测只能使用边界框框出损伤区域,无法用于损伤区域的测量。因此,需要一种分割方法分割出损伤区域。Mask R-CNN(mask region-based convolutional neural network)(He等,2017)采用局部mask的思想,通过在ROI(region of interest) Align特征上添加卷积层实现目标区域的分割,但是该方法没有考虑待分割区域的实际尺寸,使用14×14的ROI特征进行分割,得到28×28的mask,再将其缩放到实际尺寸,最终分割质量取决于待分割区域的实际大小。Deeplab v3+(Chen等,2018)则采用全局mask的思想,直接对整幅原始图像进行分割,避免了尺寸缩放对分割效果的影响,但是由于要对整幅图像进行分割,导致计算量大,且存在漏检风险。

如图4所示,本文方法结合局部mask方法漏检率低和全局mask方法分割结果精细的优势,首先使用标记好的孔探数据集训练Deeplab v3+;其次通过单类别损伤检测网络定位损伤区域;然后根据检测网络得到的位置信息[x,y,w,h],提取损伤区域对应的图像块,对图像块使用Deeplab v3+网络进行全局分割;最后将分割后的图像块对应到原始图像中[x,y,w,h]位置处,得到整幅原始图像的分割结果,在保证检测效果的情况下对检测到的损伤区域进行较为精细的分割。

图4 基于语义分割模型的损伤区域分割网络Fig.4 Damaged area segmentation network based on semantic segmentation model

3 实 验

3.1 数据集

实验选取1 305幅带有损伤的发动机孔探图像作为损伤检测数据集,其中,烧蚀393幅,裂缝456幅,叶边卷曲65幅,材料丢失192幅,涂层脱落648幅,刻痕133幅,氧化变色325幅,磨损51幅,凹坑51幅。原始图像大小为720×576 像素。

首先使用Labelme标注工具对发动机孔探数据集进行标注。标注完成后将图像按照损伤类型以7 ∶3的比例划分为训练图像和测试图像,最终得到训练集915幅,测试集390幅。针对训练集中的图像,使用旋转、裁剪、高斯模糊和色彩抖动等传统数据扩展方法扩展10倍,最终得到训练集22 864幅。

3.2 对比方法

实验选取SSD(Liu等,2016)、Refinedet(refinement neural network for object detection)(Zhang等,2018)、M2Det(object detector based on multi-level feature pyramid network)(Zhao等,2019)、Mask R-CNN(He等,2017)、BMask R-CNN(boundary-preserving mask R-CNN)(Cheng等,2020)、YOLO v5(Redmon等,2016)作为对比方法。所有实验均使用 Pytorch 深度学习框架,并采用CUDA10.1在2080Ti进行训练和测试。

3.3 量化指标

实验选择IoU阈值为0.5时,不同置信度下的真正例(true positives,TP)、假正例(false positives,FP)、真负例(true negatives,TN)和假负例(false negatives,FN)作为计算模型检测精确率P的参考值

(1)

式中,c为模型检测时采取的置信度,TPc,FPc,FNc表示置信度为c时模型检测得到的TP, FP, FN。

当检测时设置的置信度不同时,精确率P会发生变化,因此采取10个等距置信度c∈{0.50, 0.55, …, 0.95}下的平均精确率(average precision,AP)作为衡量模型检测性能的评价指标,即

(2)

对于多分类模型,不同检测类别具有不同的AP,所有类别的平均AP称为平均精确率均值(mean average precision,MAP),即

(3)

式中,n表示模型可以检测的类别总数,j为不同的检测类别。

相比MAP,工业界更加关注是否检测到全部损伤和检测到的损伤类型和位置是否正确。各类损伤的准确率(accuracy,ACC)与召回率(recall,R)分别为

(4)

(5)

式中,下标i表示第i个类别,TPi表示检测正确的类别i标签数量,FPi表示类别i被检测出来但类别标注错误的标签数量,Ni表示当前类别i的总标签数量。

3.4 结果分析

图5展示了不同目标检测算法对测试图像上损伤检测的结果。对比方法对孔探图像中的裂缝检测效果较差,在第1—4行的图像中存在漏检和误检。如图5最后一行,SSD和M2Det无法检测到发动机叶片的卷曲。相对而言,本文方法可以准确检测到图像中的各类损伤。表2对比了不同检测算法的平均精度。在整个测试集上,本文方法的平均精度为0.334 8,相比SSD提高了12.68%,相比Refinedet提高了5.76%,相比M2Det提高了7.29%,相比YOLO v5提高了2.49%,相比Mask R-CNN提高了3.3%,相比BMask R-CNN提高了5.65%。

表2还展示了不同损伤类别的检测结果。可以发现,本文方法在影响发动机性能的主要损伤,如烧蚀、裂缝、材料丢失和刻痕等损伤上表现效果优于其他模型,其中烧蚀相比YOLO v5提高了2.47%,裂缝相比YOLO v5提高了8.87%,材料丢失相比YOLO v5提高了10.43%,涂层脱落相比YOLO v5提高了11.56%,刻痕相比YOLO v5提高了3.34%。本文方法每秒可以处理8.6幅图像,速度略低于单阶段检测方法,但平均精度高于所有检测方法。

表3对比了不同检测算法和本文方法在各类损伤上的召回率和准确率。本文方法在所有损伤类型上的检测结果的召回率和准确率都高于YOLO v5,达到了0.686 2和0.737 4。相对于YOLO v5,本文方法平均检测准确率提高了12.59%,平均召回率提高了12.46%。本文方法对凹坑的检测准确率及召回率提升最高,达到了20.63%和20.64%;对裂缝提升次高,准确率及召回率都达到了18.46%。

综合表2和表3可知,单阶段检测算法中SSD模型更偏向于对检测速度的优化,对特征卷积层进行了缩减,导致特征信息提取不充分,从而对小目标样本如卷曲、凹坑等损伤的检测效果较差。Refinedet采用两步级联思想对SSD模型进行了改进,在小目标样本的检测效果上有了较大提升,M2Det通过多级特征金字塔对SSD模型进行改进,解决了SSD特征信息提取不充分的问题,使模型的检测效果有所提升,但上述两种改进模型整体的检测效果都不如本文方法。

图5 不同模型的目标检测结果Fig.5 The detection results of different detectors((a) SSD; (b) Refinedet; (c) M2Det; (d) YOLO v5; (e) Cascade-YOLO(ours))

表2 不同检测模型的检测结果(MAP)及检测时间Table 2 Detection results (MAP) and detection time of different detection models

表3 不同损伤类别的准确率及召回率Tabel 3 The results of the accuracy (ACC) and recall (R) of different defect categories /%

两阶段检测算法Mask R-CNN和BMask R-CNN在涂层脱落类别上表现较好,原因是涂层脱落类别的样本数量较多,且涂层脱落一般为较大面积的损伤,随着执飞时长的增加,几乎每台发动机都会发生涂层脱落现象,一般程度的涂层脱落并不影响飞机的飞行安全。Mask R-CNN和BMask R-CNN模型更偏向于检测此类目标。

图6对比了Mask R-CNN、BMask R-CNN和本文方法在裂缝图像上的分割结果。可以发现Mask R-CNN和BMask R-CNN的分割结果存在不连续的现象。本文基于Deeplab v3+语义分割的结果可以较好地分割出图像中裂缝的轮廓,同时得到的分割结果连续且平滑。

4 结 论

根据飞机发动机损伤检测问题的特殊性,本文提出一种基于检测器和分类器级联的飞机发动机损伤检测方法Cascade-YOLO。通过使用检测头独立检测单一类别的损伤,可以提高损伤检测的召回率;将多个单类别检测头级联起来可以实现多类别损伤检测并且提高网络效率;通过使用损伤分类网络对置信度较低、类别归属模糊的检测目标进行二次分类,可以有效提高分类的准确率。此外,将Deeplab v3+引入到检测网络中,实现了对损伤区域的有效分割。实验结果表明,相对于现有的目标检测算法Mask R-CNN、YOLO v5等,本文方法可以有效提高损伤检测的检测精度、提高召回率和准确率。使用独立的检测头检测损伤,在一定程度上解决了损伤类别数据分布不平衡的问题,同时保证了该模型在新类型的损伤检测问题中的可扩展性。但本文检测部分与分割部分需要分别训练不同的模型进行推理,后续将进一步研究如何将分割部分与检测部分融合为一个端到端的网络。

图6 不同方法的损伤分割结果Fig.6 The damage segmentation results of different methods((a) original images; (b) Mask R-CNN; (c) BMask R-CNN; (d) Cascade-YOLO(ours))

猜你喜欢
置信度特征提取类别
基于数据置信度衰减的多传感器区间估计融合方法
一种基于定位置信度预测的二阶段目标检测方法
论陶瓷刻划花艺术类别与特征
一起去图书馆吧
空间目标的ISAR成像及轮廓特征提取
基于Gazebo仿真环境的ORB特征提取与比对的研究
基于特征提取的绘本阅读机器人设计方案
基于Daubechies(dbN)的飞行器音频特征提取
校核、验证与确认在红外辐射特性测量中的应用
选相纸 打照片