航空发动机损伤图像的二分类到多分类递进式检测网络
2021-09-09李晨炫彭洪健
樊 玮,李晨炫,邢 艳,黄 睿*,彭洪健
(1.中国民航大学计算机科学与技术学院,天津 300300;2.厦门航空有限公司维修工程部,福建厦门 361006)
0 引言
航空发动机损伤是影响飞行安全的重要因素。业界普遍采用视情维护策略,通过孔探检查在不拆解发动机的前提下监测其内部的损伤状况[1]。90%以上的拆解发动机的主要依据来自孔探检查的结果[2]。然而,传统人工检查方式需要专业的检修人员并耗费大量的时间[3]。
近年来,研究人员将图像处理技术,如:样条插值[4]、骨架特征提取[5],用于发动机损伤检测。虽然取得了一些进展,但仅用于某类(如:裂纹)损伤,不适用于其他损伤类型。随着深度学习在计算机视觉中取得巨大的成功,基于VGG16(Visual Geometry Group network 16)[6]、FCN(Fully Convolutional Network)[7]、Faster R-CNN(Faster Region-based Convolutional Neural Network)[8]和SSD(Single Shot multibox Detector)[9],研究人员发表了一系列用于航空发动机孔探损伤检测的文章。尽管基于深度学习的检测算法与传统基于手工特征的算法相比省去了复杂的特征设计过程,但是存在以下两方面问题:一、现有检测算法将发动机孔探损伤检测视为目标检测或者语义分割问题,利用成熟的目标检测或者语义分割模型进行发动机孔探损伤检测,对发动机孔探检测问题的特殊性关注不足,检测精度较低;二、现有检测算法使用的数据量较少、损伤类型单一,在处理发动机图像时模型的鲁棒性低,可检测类别少,难以用于实际的孔探检测工作。
在实际孔探检测工作中,首先由检修人员确定发动机中有无损伤,其次转交技术专家确定损伤类型和严重程度。结合孔探检测的实际需求,本文提出基于Mask R-CNN(Mask Regionbased Convolutional Neural Network)[10]的二分类到多分类递进式航空发动机损伤图像检测网络。本文方法充分利用孔探图像中健康区域面积较大的特点,通过在Mask R-CNN中的区域候选网络和检测分支之间中增加二分类检测分支,首先训练二分类检测器对孔探图像中可能的损伤区域进行检测;然后递进地训练多分类检测算法,对第一步检测出的结果进一步优化并细分其类型;最后使用分割分支对损伤区域进行分割。整个训练过程端到端地进行,最终各自独立输出二分类和多分类的检测结果,在实际应用过程中可互为参考和补充。
为了验证本文方法的有效性,经过筛选后标注了1 315张孔探图像,其中包括热障涂层丢失、烧蚀与凹坑、裂纹、氧化变色、叶边缺口、磨损、叶边卷曲和材料丢失等八类损伤。以图像对应的发动机部位为依据,分别随机抽样85%作为训练集,其余部分作为测试集。对比实验的量化结果表明多分类检测的平均精度(Average Precision,AP)和AP75(Average Precision under IoU(Intersection over Union)of 75%)指标与Mask R-CNN算法相比分别提高3.34%,9.71%。本文方法中二分类检测分支作为对多类检测分支的补充,具有更高的鲁棒性。如图1所示,相对于多类数据下训练的Mask R-CNN,本文方法可以检测出子图(c)右上角圆圈所示的损伤。
图1 本文方法的检测结果Fig.1 Detection resultsof the proposed method
本文的主要工作如下:1)结合孔探检测的实际需求,提出了二分类到多分类递进式航空发动机损伤图像检测网络;2)构建了包括多种损伤类型共1 315张孔探图像的数据集,并验证了本文方法的有效性。
1 相关工作
基于计算机视觉的发动机损伤的检测方法主要包括基于传统图像处理技术的方法和基于CNN(Convolutional Neural Network)的方法。基于传统图像处理技术对发动机损伤的检测方法包括边缘检测、小波变换、阈值分割等。粗糙度系数法[11]使用边缘检测和小波变换,借助损伤区域边缘的曲线粗糙度特征对损伤进行检测。尽管能够有效地识别孔探图像中存在的裂纹损伤,但该方法容易受到图像中杂物和高粗糙度特征噪声的影响而产生假警,难以解决具有复杂背景的损伤检测问题。针对发动机损伤的测量主要使用样条插值[4]、细化和骨架特征提取[5]等方法。张勇等[12]通过对叶边缺口图像灰度化、滤波降噪、锐化、阈值分割并提取边缘进行基于样条插值的测量。尽管该方法可以自动提取叶片掉块的起点和终点并计算损伤的尺寸,但需要选取适当的阈值进行分割。陈果等[13]结合BP(Back Propagation)神经网络和遗传算法设计自适应神经网络用于孔探损伤检测。孟娇茹等[14]使用最大类间方差法提取孔探图像的统计特征并使用BP神经网络进行损伤类型分类。基于传统图像处理的损伤检测方法检测类别单一且易受到图像噪声的影响。
近年来在计算机视觉领域,研究人员开展了将CNN相关进展应用于航空发动机损伤检测的研究。Svensén等[15]利用VGG16将孔探图像分为混合器、燃烧室、燃料喷管和高压涡轮叶片等。Kim等[16]利用CNN对图像中提取的SIFT(Scale-Invariant Feature Transform)特征进行分类,用于叶片边缘缺口的检测。Bian等[17]提出多尺度FCN用于检测热障涂层丢失。Shen等[3]利用FCN检测裂纹和烧蚀并取得了良好的效果。旷可嘉[18]基于Faster R-CNN和SSD,设计了可以检测凹痕、缺口和烧蚀三类损伤的损伤检测系统。樊玮等[19]从数据的角度入手,提出使用交互式数据扩展方法,增加损伤图像的数量,进行发动机孔探图像的损伤检测。尽管现有的基于深度学习的损伤检测方法在特定损伤类型的检测中取得了较好的检测效果,但由于缺少多类别像素级标注的数据,难以检测多种类型的损伤,且现有检测算法直接进行多类损伤检测时精度较低、漏检率较高。然而,在实际孔探检测中首先要确定有无损伤,再确定损伤类型及位置。考虑到孔探检测的实际需求,本文提出了二分类到多分类递进式检测网络,并将其应用于航空发动机孔探图像中的损伤检测。
2 本文方法
本文所提出的网络基于Mask R-CNN,整体框架如图2所示,主要模块包括:1)特征提取网络(Backbone):使用特征金字塔网络(Feature Pyramid Network,FPN)对图像中多尺度的卷积特征进行提取;2)区域候选网络(Region Proposal Network,RPN):依据给定锚框选取多尺度卷积特征的子特征区域,对前景和背景区域进行粗略的分类和回归,产生候选区域;3)RoI(Region of Interest)分支:包括用于二分类目标检测的Box1、用于多类目标检测的Box2和用于产生分割结果的Mask分支。Box1进一步对区域候选网络的结果进行筛选优化,依据区域候选网络的结果对多尺度卷积特征进行RoIAlign的池化操作,得到若干子特征图,并对其进行二分类和回归;Box2对Box1的结果进行重采样和更高阈值的匹配,再次池化并对池化结果进行多分类和回归,预测损伤的具体类别并生成更准确的Box坐标;Mask在Box2检测结果的基础上对每个检测结果进行语义分割。
图2 本文方法的整体框架Fig.2 Overall framework of the proposed method
下面首先介绍了Mask R-CNN中特征提取网络、区域候选网络,然后详述了改进的递进式RoI检测分支以及损失函数的细节。
2.1 特征提取网络
本文使用特征金字塔网络(FPN)作为特征提取网络。以残差网络(Residual Network,ResNet)为基础,从图像中提取不同尺度的卷积特征,记为C1,C2,…,C5。为了获取鲁棒的特征,采用自顶向下的方式,逐步融合不同尺度的特征。首先对C5特征进行1×1和3×3卷积得到F5:
其中:Conv1表示1×1卷积,Conv3表示3×3卷积。对F5进行步长值为1、填充值为2的最大池化操作得到F6。F6具有较丰富的语义信息,可以用于检测较大的物体。为了检测不同尺度物体,使用式(2)计算F2、F3、F4:
其中:i∈[2,4],UpSampling2表示2倍上采样,⊕表示逐元素相加(element-wise addition)。
2.2 区域候选网络
RPN使用特征提取网络的特征Fi,产生相应的候选区域。可由式(3)表示:
其中:RPN表示区域候选层对FPN各层特征Fi和anchors的处理过程。然后使用非极大值抑制(Non-Maximum Suppression,NMS)对class中前景类别的置信度为依据对候选框排序并取前M个作为最终输出的RoI。形式化如式(4)所示:
2.3 递进式RoI检测分支
递进式RoI检测分支包括Box1、Box2和Mask分支。Box1对RPN输出的上千个RoI进行匹配筛选,以0.5的IoU阈值为目标对候选框进行边框回归,同时输出对图像的二分类检测结果。Box2分支在Box1二分类结果的基础上,进行多类别分类,以0.6的IoU阈值为目标对候选框进行边框回归,从而得到更为准确的结果。最后Mask分支在Box2多分类结果的基础上进行语义分割,得到损伤的实例分割结果。实现细节如下:
从RoI分支输入输出的角度考虑,用于两分类的Box1、多分类检测的Box2分支和用于分割的Mask分支(以下简记为Box分支),依次将RoI-Align操作输出的特征作为输入。RoIAlign通过双线性插值将候选区域映射回对应区域在指定特征图中的大小(提取出边框对应区域的特征称为RoI特征)如式(5)、(6)和(7)所示:
其中:B1和B2分别表示Box1和Box2分支对候选框的重采样和匹配过程;Mp表示Mask分支对候选框的正例筛选过程;RoIBox1、RoIBox2和RoIMask分别表示Box1、Box2和Mask分支对候选框的优化结果;Align即RoI-Align的池化操作。在RPN部分对候选区域粗略的前景背景二分类的基础上,Box1分支和Box2分支分别依据对应的RoI特征对前景候选区域进行二分类和多分类,然后进行检测框回归和非极大值抑制,如式(8)和(9)所示:
其中,Box1和Box2分别表示Box1分支和Box2分支对RoI特征进行前述的处理过程。Mask分支处理Box2的输出特征,得到每一个目标的二值Mask结果,如式(10)所示:
Mask_FCN表示Mask分支对FMask特征的语义分割过程。
2.4 损失函数
在Box分支中包括分类和回归两种类型的损失函数,其中分类采用交叉熵损失函数,回归使用sommth_L1损失函数。分类损失定义如式(11)、(12)和(13)所示:
回归损失定义如式(14)、(15)和(16)所示:
其中LBB1和LBB2分别表示Box1和Box2的回归损失;RIoU=0.5和RIoU=0.6分别表示Box1和Box2的回归器;b=(bx,by,bw,bh)是单个子图像块RoI的检测框坐标,g为真值的坐标。
网络的整体损失函数是区域候选损失LBB、区域分类损失LC和Mask分割损失LM之和:L=LC+LBB+LM。
3 孔探图像数据
本文使用的原始数据来自在多型航空发动机的孔探检查过程中的损伤报告,其中孔探图像使用多型孔探仪在各自配套的孔探光源下拍摄,涵盖了发动机中不同部位、不同类型的损伤。依据发动机诊断检测手册,利用开源标注工具Labelme,标注图像中多类损伤区域,最终形成一个包含1 315张孔探图像具有热障涂层丢失(missing thermal barrier coating,missing_tbc)、烧蚀与凹坑(burn and dent,b&d)、裂纹(crack)、氧化变色(oxidation and discoloration,o&d)、叶边缺口(nick)、磨 损(worn)、叶 边 卷 曲(curl)和 材 料 丢 失(missing_material)共计8种损伤类型的数据集。孔探数据中不同发动机部位的图像数量分布如表1所示。
表1 孔探数据中不同发动机部位的图像数量分布Tab.1 Imagenumber distribution of different engine components in borescope data
由于每一类损伤的图像数量分布不均衡,且单张孔探图像上可能存在多类损伤,同一发动机部位中的损伤分布大致相近,因此在不同发动机部位拍摄的孔探图像中分别随机采样85%作为训练集,总计1132张图像,其余部分作为测试图像。
由于数据集中752×576图像的分辨率的图像占92.3%,768×576的图像占5%,实验中统一限制图像最长边为752,最大限度保持原有数据的信息。在输入到网络中进行计算之前,使用式(17)对训练集中的图像进行归一化操作:
其中:均值μR=94.02,μG=91.69,μB=85.92和方差σR=54.03,σG=54.15,σB=56.09是由训练数据的统计所得,xR、xG和xB分别表示单张图像像素的R、G、B值。
4 实验
4.1 实验设置
硬件环境:Intel Core i7-9700K@3.6 GHz CPU,16 GB RAM,NVIDIA RTX 2080Ti 11 GB GRAM GPU。软件环境:CUDA 10.0.130,cuDNN 7.6.3,Python 3.6.7,Pytorch 1.0.0,Ubuntu 16.04.6 LTS。
本文方法的实验加载了在ImageNet数据集[20]上预训练得到的模型权重,学习率为固定值5E-3,权重衰减值为1E-4,动量值为0.9。在17 500和22 500次迭代时分别调整学习率为5E-4和5E-5,总迭代次数为30 000。
4.2 对比方法
本文使用Faster R-CNN、Mask R-CNN、YOLO(You Only Look Once)[21]以及本文方法的另一种网络模型(变种形式)作为对比。其中变种形式是在本文方法Box1分支后额外构造二分类Mask分支所组成,Box1分支与二分类Mask分支之间的结构关系与本文方法中Box2分支与多分类Mask分支之间的相同。对比方法中YOLO采用与本文方法相似的训练策略,经过充分训练收敛后取最高结果作为对比,其他方法使用与本文方法相同的训练策略分别训练了二分类和多分类的检测模型。实验结果如表2、3所示。
4.3 评价指标
在目标检测及实例分割的性能度量中,使用单类目标的真值标注区域与检测结果区域的重叠程度为评价指标,对单次检测结果(Eval)进行评价,如式(18)所示:
其中,认为标注真值GT(Ground Truth)与检测区域(Detection Area,DA)的交并比IoU(Intersection over Union)超过thpos的匹配是正确的匹配,将匹配正确的数量记为TP(True Positive),交并比低于thneg且大于零的DA数量记为FP(False Positive),标注真值的数量记为AGT(All Ground Truths)。查准率(Precision,P)和查全率(Recall,R)的计算如式(19)所示:
作为目标检测及实例分割任务中对单类目标实例的评价指标,平均精度(Average Precision,AP)的精确定义为查准率-查全率曲线(Precision-Recall curve)与坐标轴包围的面积,如式(20)所示:
实际应用场景中样本数量有限,查准率-查全率曲线并不光滑,在实际计算过程中通常使用求和代替上式的积分。取置信度降序下101个查全率与其对应查准率乘积的平均值,即101点插值平均精度(101-point interpolated AP)作为计算平均精度的依据,如式(21)所示:
前述的IoU阈值thpos和thneg决定了训练过程中真值与检测结果的匹配程度,不同的IoU阈值将给出相差甚远的评价结果。MSCOCO(MicroSoft Common Objects in COntext)数 据集[22]中选取thpos=thneg∈[0.5,0.55,0.6,…,0.95]十个级别AP的平均值,称之为AP[0.5:0.95],简记为AP。如式(22)所示:
AP对应的平均查全率记为AR(Average Recall)。考虑到部分发动机损伤边界模糊,真值的标注过程受主观经验的影响其误差不可避免,本文采用MSCOCO数据集的AP、AP50、AP75、AR作为检测和分割结果的评价指标,其中模型对损伤的检测结果依据区域形状分为目标检测的包围框(bounding box,bbox)结果和实例分割的掩膜(Mask)结果,在文中以在对应评价指标加上标的形式进行区分。
4.4 定性分析
图3分别给出了五张孔探图像的原始图像及其检测分割结果,其中第二列子图中轮廓线为真值标注,第四列子图中虚线矩形框为本文方法中Box1得到的二分类预测结果,实线矩形框为Box2得到的多分类预测结果,检测框内部的轮廓线为Mask分支得到的实例分割结果,其中检测的类别、置信度位于检测框左上角。
图3 可视化结果对比Fig.3 Comparison of visualization results
图3第一行的图像中,右侧边缘处的涂层丢失有多层边界,内部纹理不均,且光照较暗,区域内特征与磨损相似;图3第二行的图像中,上方边缘处的涂层丢失位于失焦区域,图像边缘模糊,识别难度较大;图3第三行的图像中,下方存在大块涂层丢失,该损伤左侧与背景相似程度较高,边缘处与背景融为一体不易区分;图3第四行的图像中,裂纹延伸后在图像中呈现扭曲变细的特点,占据像素数量较少;图3第五行的图像中,下方情况类似第一行图像。上述五例区域被Mask RCNN及本文方法的Box2归为背景,而被本文方法的Box1检测为损伤。由图3可知,本文方法可以同时给出有无损伤的二分类检测结果和具体类别的多分类检测结果,其中二分类结果更具鲁棒性,在实际应用中可作为多分类结果的补充和参考。
4.5 定量分析
表2给出了本文方法及其变种形式在发动机孔探图像数据集上的量化结果。变种形式相对于原有方法在Box1部分额外添加了Mask分支,提升了二分类检测结果的各项指标,而多分类检测结果下降明显。损伤类型种类数“1”表示仅区分有损/无损,输出结果中仅包含有损部分,表示无损和有损二分类;“8”表示区分8种损伤类型,输出结果中包含8类损伤部分,表示无损和8种损伤的9分类。
表2 本文方法与其变种形式在孔探数据集中的AP和ARTab.2 APand AR of the proposed method and one variant of it in borescope dataset
表3给出了Faster R-CNN、Mask R-CNN和YOLO分别训练二分类和多分类检测模型的结果。其中本文方法Box1与使用Mask R-CNN单独训练两类数据得到的各项精度相近,并高于其他对比方法。本文方法Box2的AP比Faster R-CNN、Mask R-CNN和YOLO的多分类检测AP分别提升13.58%、3.34%和62.63%。
表3 多种对比方法在孔探数据集中的AP和ARTab.3 APand AR of multiplemethods in borescope dataset
本文方法的缺点在于Box1的二分类检测AP略低于对比方法中Mask R-CNN的二分类结果。在本文方法的Box2结果中,可以发现AP75对AP的提升贡献较大,而AP50和AR比Box1有所降低,相较于Box2,Box1的AR较高,保证了Box2有较多的高质量训练样本。本文方法在Box1基础上递进地由Box2进行边框精调和类别细分,即使Box2丢失了部分检测结果,AP仍然有所提升。注意到,Mask R-CNN在现有实验条件下训练二分类和多分类检测器分别用了5.2 h和5.3 h,而本文方法仅使用了5.9 h即达到了训练两次Mask R-CNN的效果,且多分类AP提升3.34%。
综合定性和定量分析可知,本文方法优于对比方法。
5 结语
本文基于Mask R-CNN提出了航空发动机损伤图像的二分类到多分类递进式检测网络,对孔探图像中的损伤进行检测和识别。通过在Mask R-CNN的RPN和检测分支之间增加二分类检测分支,与原始的多分类检测分支形成二分类到多分类递进式的检测器,以提高模型对损伤区域的检测和识别精度。二分类检测器以较高的查全率检测孔探图像中出现的损伤,多分类检测器基于二分类检测器的结果进一步优化损伤的位置并确定损伤类型。二分类与多分类检测结果互为补充和参考。为了验证本文方法的有效性,构建了一个包含1 315张孔探图像,具有8种损伤类型的数据集。在该集合上,本文方法以较少的训练时间,实现同时对两类和多类的损伤检测,并在多类损伤检测的AP上高于各对比方法,有效地缓解了孔探图像背景复杂、模型可检测类别少的问题。本文方法可一定程度上扩展至YOLO系列[23]等用于目标检测的框架中。在未来的工作中,研究将本文方法扩展至孔探视频数据,利用视频帧之间的连续性检测发动机损伤。