基于Tree-CNN的飞机腐蚀铆钉分类
2020-04-23王从庆
唐 露,王从庆
(南京航空航天大学 自动化学院,南京 210016)
0 引 言
随着当前航空领域的飞速发展,大型飞机的飞行安全显得日益重要。铆钉作为飞机主要使用的装配手段[1-3],对其飞行安全至关重要。据统计,波音-747有铆钉200万个,伊尔-86有铆钉148万个,空中客车A-300和MD-90皆有100万个连接件[4]。面对如此庞大的铆钉数量,对飞机表面蒙皮的半自动化乃至全自动化的健康监测显得尤为重要。文献[5]提出了一种基于铆钉形态特征的铆钉周围飞机蒙皮腐蚀无损检测方法,该方法主要利用了健康铆钉和腐蚀铆钉在周长、面积和质心等方面的差异,区分腐蚀铆钉与健康铆钉。文献[6]提出了一种2分类铆钉检测方法,利用铆钉的形态学特征进行分类。文献[7]则使用多尺度边缘分析框架检测表面裂纹,并使用神经网络对检测出的铆钉进行分类。这些铆钉的分类方法使铆钉检测不再依赖于人眼检测,但大部分方法仅对铆钉的健康状态进行了2分类[6-7]且分类精度有限,无法实际应用。
笔者首先在文献[8-9]基础上将铆钉按照腐蚀状况分为3类。其次,根据铆钉的种类不同,又将每种铆钉分为2个类别。考虑到实际采集中,有一种类型铆钉存在数量稀少且对维护影响较小,故共将铆钉分为5类。为提高对腐蚀铆钉分类的准确度,笔者根据CNN(Convolutional Neural Networks)得到的混淆矩阵确定了Tree的结构,进而改善了CNN的分类准确率。笔者搭建了用于判别蒙皮表面铆钉健康状态的Tree-CNN模型,并与基于灰度共生矩阵的SVM(Support Vector Machine)方法和普通CNN方法进行了实验分析对比。
1 铆钉图像采集以及铆钉腐蚀损伤分类
由于缺乏公开的飞机蒙皮表面铆钉腐蚀图像,笔者使用无线CCD(Charge-Coupled Device)摄像机对轰五、歼十二等机型表面进行拍摄,获得原始飞机蒙皮表面图像,并在此基础上取得铆钉腐蚀图像(见图1)。在轰五、歼十二等机型上,CCD采集原始飞机蒙皮典型图片如图2所示。
图2 各种机型上采集到的原始飞机蒙皮表面图像
根据文献[8-9],将与当量日历年5年的铆钉试件表面出现气泡特征相符的铆钉定义为轻微腐蚀铆钉;将与当量日历年10年的铆钉孔有腐蚀产物析出特征相符的铆钉定义为严重腐蚀铆钉;将腐蚀状态优于当量日历年5年特征的铆钉定义为未腐蚀铆钉。对轻微腐蚀铆钉,建议进行简单清理后继续投入使用;对严重腐蚀铆钉,建议执行更换等操作后投入使用;而对无腐蚀铆钉,无需额外护理操作,即可继续使用。
考虑到飞机上铆钉形式多样,笔者共采集了飞机上使用频率较高的表面形状为圆形和一字形的两种铆钉腐蚀图像。据此,可将上述3种铆钉类别再细分为圆形轻微腐蚀、严重腐蚀和未腐蚀铆钉;一字型轻微腐蚀、严重腐蚀和未腐蚀铆钉。由于在实际采集中一字型轻微腐蚀铆钉的数量远远少于其他类别铆钉,可认为此类别铆钉在实际飞机腐蚀铆钉中出现概率较小,对飞机的安全性虽有影响但不会直接导致飞机事故,故不将其纳入考虑范围。实际分类如表1所示,5种类型铆钉的典型图像如图3所示。
图3 5种类型铆钉的典型图片
笔者共采集了553张飞机蒙皮原始图片,共获得456张圆形严重腐蚀铆钉图片、603张圆形未腐蚀铆钉图片、632张圆形轻微腐蚀铆钉图片、595张一字型严重腐蚀铆钉图片和455张一字型未腐蚀铆钉图片。每种类别的铆钉图片中80%用于构建训练集,其余20%用于构建测试集。
表1 5种类别铆钉示意表
2 铆钉腐蚀损伤分类方法
对飞机表面的铆钉损伤分类,主要由图4所示的几个步骤组成。笔者主要研究铆钉的分类模型,并分别使用基于灰度共生矩阵的SVM方法、基于普通结构的CNN方法和基于Tree结构的CNN网络方法建立了铆钉分类模型,并按照图4的步骤对测试铆钉图片进行识别。
图4 铆钉分类的主要步骤
2.1 基于灰度共生矩阵的SVM分类方法
2.1.1 支持向量机
支持向量机是一种以监督学习方式对数据进行二元分类的广义线性分类器[10]。对线性二分类问题,假设有训练集T={(x1,y1),(x2,y2),…,(xN,yN)},其中样本xi可以为多维向量,类别yi∈{0,1},则通过学习可获得分离超平面
ω·xi+b=0
(1)
其中ω是分离超平面的法向量,b是分离超平面的位移量。
其对应的分类决策函数为
f(x)=sign(ω·xi+b)
(2)
为使距离超平面最近的两个不同类别的样本点之间的距离最大,可得线性分类的目标函数和约束条件
(3)
yi(ω·xi+b)≥1-ξi
(4)
其中C是惩罚函数,ξi≥0。当ξi=0且C=0时,此问题变为线性可分问题。
通过对式(3)和式(4)构造拉格朗日函数求偏导,可得对应的目标函数和约束条件的对偶表达式
(5)
(6)
对非线性问题,可通过将低维空间映射到高维空间(x→φ(x)),将其转化成线性可分问题,再通过核函数,将高维空间内积转换成低维空间函数
K(x,z)=φ(x)·φ(z)
(7)
将式(7)代入式(5)中,则得非线性SVM的目标函数和约束条件
(8)
(9)
通过一对一、一对多等方法[11],支持向量机还可实现多元分类。实验部分主要采用一对一方法实现多元分类。
对于SVM一对一方法,假设类别数为k,则∀i,j∈{1,2,…,k|i≠j},生成一个i,j2分类器,则总共生成k(k+1)/2个2分类器。将未知样本代入该k(k+1)/2个分类器中,每个分类器对该未知样本的类别进行判断后,出现次数最多的类别即为未知样本的类别。
2.1.2 灰度共生矩阵
灰度共生矩阵是一种通过灰度的空间相关特性描述纹理的常用方法[12]。相较于通过人为指定的特征计算方式,灰度共生矩阵可避免过多的人为干预,并更好地发现一些人工难以准确描述的特征。
具体地,灰度共生矩阵M是一个L×L矩阵,M(i,j)是图片中p(x,y)=i且p(x+a,y+b)=j的点对出现的概率,其中L为图像的灰度级,p(x,y)为图像中位置(x,y)的像素值,a,b是非负整数。
基于灰度共生矩阵可得各种统计量,可将其作为图片的特征量。实验考虑了对比度C,熵E,角2阶矩A和逆方差I4种统计量。4种统计量的计算公式分别为
其中p(i,j)是灰度共生矩阵中(i,j)处的概率值。
基于灰度共生矩阵的SVM分类方法利用灰度共生矩阵提取图像特征,利用SVM对提取的特征进行分类。
2.2 基于Tree结构的CNN网络方法
2.2.1 CNN深度网络
相较于普通的分类网络,当数据量合适时,具有更多层网络结构的深度学习模型可获得更好的分类效果[13]。在图像分类领域中,CNN是一种比较常见的深度网络。CNN深度是一种层级网络,主要由数据输入层、卷积计算层、ReLu激励层、池化层以及全连接层组成[14]。CNN深度网络的典型结构如图5所示,原始数据首先传入数据输入层,经过若干个卷积计算层、激励层和池化层得到特征映射图,随后再经过全连接层实现向量化转换,最终将得到的向量送入传统神经网络进行训练。
图5 CNN网络的典型结构图
具体地,数据输入层接收原始图像,并对原始图像进行去均值、归一化和PCA(Principal Component Analysis)/白化等操作,使原始数据以低维度、去噪后的形式进入后续步骤,降低后续网络的计算开销并提高精度;卷积计算层的每个滤波器都着重于某种特定特征,多个滤波器组合下,可关注到具体的物体特征;ReLu激励层则对卷积层得到的数据进行非线性映射,提升了网络的表达能力;池化层则进一步减小参数数量,从而减小过拟合的可能。
在CNN网络中,高层特征更关注语义信息而较少关注细节信息,而低层特征包含更多细节信息,但与背景混乱和语义歧义问题相关。通过CNN网络的低层次特征映射图可得到图像更多的细节信息[15]。
2.2.2 基于Tree结构的CNN深度网络
虽然CNN网络可较好地完成图像分类任务,但对具有高度相似性的类别进行分类时,普通的CNN网络仍有其局限性。由于普通的CNN网络使用单一网络对所有类别进行分类,经过所有样本的网络流是相同的,致使CNN网络在面对不同类间差异类别时采取相同的训练方法,进而产生较大误差[16]。为解决该问题,除使用更深的CNN网络外,使用拓宽CNN也是一种有效方法[17]。Tree结构的CNN网络一般由多个CNN网络组成,可视为一种拓宽CNN网络,包括了一个主干CNN网络和若干分支CNN网络。树形网络结构如图6所示。
Tree结构的CNN网络应用广泛。文献[16]使用Tree-CNN网络对图像进行分类,同时还提出可用其解决训练图片数量不平衡的问题;文献[18]利用其对语句进行编码,提高了关系抽取任务的准确率;文献[19]则利用其对大像素图片进行分类。
图6 典型树形网络结构图
根据Tree的主干部分分类情况,基于Tree结构的CNN深度网络有两种粗分-细分模式。一种是从细分类到粗分类的结构,另一种是从粗分类到细分类的结构。但从细分类到粗分类的Tree型结构可能导致测试图像开始就被错误分类[20]。从粗分类到细分类的Tree型结构通过对输入数据进行一次粗分和数次细分完成训练任务。粗分CNN用于对所有类别进行粗分类,而细分CNN则在上一层粗分或细分的基础上,对不同类别分别进行再分类。
由Tree的结构可知,Tree结构的CNN深度网络的分类正确率与主干和分支CNN网络的分类正确率均有关,其具体关系为
Ptree(t)=P(ci,f)P(xt,l)
(14)
其中Ptree(t)表示输入数据经Tree结构的CNN网络后被正确分类为最终类别t的概率,P(ci,f)表示经Tree结构的主干部分时被正确分类为初类别i的概率,P(xt,l)表示经过Tree结构的枝叶部分时被正确分类为最终类别t的概率。
普通结构的CNN深度网络的分类正确率
P(t)=P(xt,f)
(15)
其中P(xt,f)表示输入图象经过普通网络被直接正确分类为细类t的概率。
在从粗分类到细分类的Tree型结构中,主干分类网络用于分类较易区别的类别[21]。所以可认为
P(ci,f)≈1
(16)
另外,Tree型结构设计用于区分最终类别t和其他类别,所以可假设
P(xt,l)≥P(xt,f)
(17)
由式(14)~式(17),可得
Ptree(t)≥P(t)
(18)
由式(18)可知,从粗分类到细分类的Tree型结构可提高普通CNN网络的分类准确率。
3 实验结果分析
召回率c0,c1,c2,c3,c4为各个类别预测正确的样本数量占该类总样本数量的比例
(19)
3.1 基于灰度共生矩阵的SVM铆钉腐蚀分类
当取灰度级L=16时,图3中的0类图像通过计算得(a,b)=(1,0)组合下的归一化灰度共生矩阵如图7所示。
图7 以频数表示的灰度共生矩阵
对图3中的5张铆钉图像,在(a,b)=(1,0)时,C,E,A,I值如表2所示。
表2 灰度共生矩阵特征值
当(a,b)=(1,0)时,SVM对2 194张训练图片的训练准确率是0.63。利用训练模型对547张测试图片进行预测,得混淆矩阵如表3所示。
表3 基于灰度共生矩阵所得的混淆矩阵
3.2 基于普通结构CNN网络的铆钉腐蚀分类
由于笔者所采集的数据量有限,在实验中选择了层数相对较小的网络结构训练适用于铆钉腐蚀分类的模型,使用的CNN网络构架如图8所示。
图8 简单CNN网络构架
深度学习中超参数的取值对模型的性能有较大的影响。经过实验比较,笔者设定固定学习率为0.000 1,批大小为25,迭代次数设置为8 000次,优化模型选用AdamOptimizer。
利用2 194张训练图片训练CNN网络模型,再对547张测试图片进行预测,得混淆矩阵如表4所示。
表4 基于普通结构CNN网络的混淆矩阵
3.3 基于Tree-CNN网络的铆钉腐蚀分类
Tree-CNN可认为是对普通CNN的一种改进,笔者提出的Tree-CNN以3.2节中CNN结构为基础,其中单个CNN网络均与图8中的CNN网络结构一致。
考虑到铆钉的实际类别情况,共拟定两种深度为3的Tree型结构。第1种Tree型结构的第1层网络用于区分铆钉形状;第2种Tree型结构的第1层网络用于区分铆钉腐蚀程度。
根据表4,分别计算得普通CNN网络对按铆钉形状分类和按腐蚀程度分类的混淆矩阵(见表5、表6)。
表5 按铆钉形状分类得到的混淆矩阵
表6 按铆钉腐蚀程度得到的混淆矩阵
由表5和表6可知,按照形状分类的类间相似度和按照腐蚀状态分类的类间相似度分别为16.2%和18.1%。为提高Tree-CNN的总体分类准确度,笔者选择以较小类间相似度对铆钉进行第1层分类,Tree-CNN的结构图如图9所示。
图9 用于铆钉腐蚀分类的Tree-CNN结构图
对2 194张训练图片,利用训练的Tree-CNN网络模型对547张测试图片进行预测,得混淆矩阵如表7所示。
3.4 结果对比及分析
根据表3、表4和表7计算得3种方法的准确率a和召回率ci如表8所示。
通过对比SVM和普通CNN的a可知,对于铆钉腐蚀分类问题,虽然笔者使用的深度网络结构较为简单,但相比于普通的SVM分类方法,CNN分类网络在分类准确度上有较大提升,整体的准确率由63.4%提升到了79.3%。相比利用灰度共生矩阵提取人为指定的图像特征,CNN网络以“黑箱”方式完成了对不同铆钉类别的特征提取工作,该方式可更好地提取铆钉腐蚀分类问题中的未知特征;同时,相比于SVM,通过反复学习,CNN网络可处理更复杂的铆钉特征与铆钉类别之间的关系。
表7 基于Tree结构的CNN网络的混淆矩阵
表8 3种方法的分类结果
通过对比SVM和普通CNN的ci可知,对于铆钉腐蚀分类问题,虽然CNN网络在“0”类,“2”类,“3”类以及“4”类上效果大幅好于SVM,但在“1”类上分类效果稍逊。具体观察表4可知,CNN网络对“1”类和其余“0字形”类别(“0”类和“2”类)之间的分类成功率较低,可认为普通CNN网络对“1”类和其余“0字形”类别(“0”类和“2”类)之间的分类特征提取能力略弱于SVM。
通过对比普通CNN和Tree-CNN的a可知,对于铆钉的腐蚀分类问题,即使使用同样的基础网络,Tree结构的CNN网络比普通结构的CNN可获得精确度更高的分类模型。Tree结构的CNN可自动改变网络对所有类别的“无差别”计算,在面对类间差异较小的分类问题时,Tree结构的CNN对网络精度的提升会十分显著。
通过对比CNN和Tree-CNN的ci可知,对于铆钉腐蚀分类问题,Tree结构的CNN网络除了在“1”类的召回率没有变化外,在其余各个类别都有更高的召回率。具体观察表7可知,CNN网络对“1”类和其余“0字形”类别(“0”类和“2”类)之间的分类成功率较低。可以认为,相对于普通的CNN网络,笔者树形结构CNN虽然可大幅提高“0”类和“4”类的区分成功率,但对区分“0”类和其余“0字形”类别却没有贡献。
4 结 语
笔者提出了将CNN深度学习网络应用于铆钉损伤识别,实现了对腐蚀损伤铆钉的分类,并在此基础上将普通的CNN网络扩展成Tree结构的CNN网络,以解决部分铆钉类别间相似性较高的问题,最终对铆钉损伤的分类精度达到了86.5%。
笔者设计的CNN网络以及在此基础上拓展出的Tree结构CNN网络相较于传统的SVM方法,在对腐蚀铆钉的分类精度上有较大提升,使用的分类标准相较于其他铆钉分类方法,对铆钉分类更具现实指导意义。利用该铆钉损伤检测方法,可更准确地对飞机铆钉损伤进行分级,为铆钉的维护或更换提供指导。