李彬,汪誠,丁相玉,巨海娟,郭振平,李卓越
(空軍工程大學(xué) 基礎(chǔ)部,西安 710038)
飛機在飛行過程中,航空發(fā)動機長時間處于高溫、高壓和高轉(zhuǎn)速的條件下,工作環(huán)境十分惡劣,極易出現(xiàn)發(fā)動機葉片打傷、燃燒室裂紋等故障[1]。另外,飛行過程中發(fā)生的外物撞擊(如鳥類撞擊、冰雹撞擊等)也會造成發(fā)動機零部件的結(jié)構(gòu)損傷[2],這些損傷給飛機的飛行安全構(gòu)成了嚴(yán)重威脅。因此,針對航空發(fā)動機部件表面進行有效的檢測對保障飛行安全具有重要意義。
目前,常規(guī)的檢測方法主要有磁粉檢測、滲透檢測、渦流檢測、孔探法檢測、超聲紅外熱成像檢測等,其中孔探法檢測是發(fā)動機外場檢測應(yīng)用最多的技術(shù)手段[3]。但這些方法對操作人員專業(yè)素質(zhì)要求很高,并且檢測效率較低。隨著深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)的不斷發(fā)展,以單發(fā)多框檢測(single shot multibox detector,SSD)算法[4]、YOLO 系列[5-8]等算法為代表的單階段目標(biāo)檢測算法和以Faster R-CNN算法[9]、區(qū)域全卷積網(wǎng)絡(luò)(region-based fully convolutional networks,R-FCN)[10]、Mask R-CNN[11]等算法為代表的兩階段目標(biāo)檢測算法在很多領(lǐng)域得到了廣泛應(yīng)用。文獻[12]在YOLOv3-Tiny 算法基礎(chǔ)上增加特征映射模塊,同時在特征提取網(wǎng)絡(luò)中引用殘差網(wǎng)絡(luò),能有效用于遙感圖像艦船檢測。文獻[13]提出了一種殘差網(wǎng)絡(luò)與膨脹卷積相融合的SSD 改進算法,用于航空發(fā)動機安裝工位時的定位檢測。此外,不少學(xué)者也將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用到航空發(fā)動機表面缺陷檢測領(lǐng)域。文獻[14]使用Faster R-CNN和SSD 模型對航空發(fā)動機缺陷樣本進行訓(xùn)練,為發(fā)動機缺陷檢測提供了檢測平臺。文獻[15]將改進先驗框后的R-FCN 用于航空發(fā)動機葉片裂紋檢測,并將改進特征金字塔后的YOLOv3 用于裂紋識別。文獻[16]對SSD 模型進行了先驗框聚類方法和使用底層卷積特征提取的改進,用于航空發(fā)動機凸臺缺陷的檢測。以上文獻雖然使用了深度學(xué)習(xí)的方法來檢測航空發(fā)動機表面缺陷,但仍存在檢測精度不足、檢測速度不快的問題。
對此,本文將航空發(fā)動機部件表面常見的4 類缺陷(裂紋、缺口、凹坑、劃痕)作為檢測目標(biāo),采用YOLOv4 算法作為基礎(chǔ)模型,在路徑聚合網(wǎng)絡(luò)(path aggregation network,PANet)結(jié)構(gòu)中融合淺層特征與深層特征,增大特征檢測尺度,同時去除自下而上的路徑增強結(jié)構(gòu),提高小目標(biāo)檢測精度和整體檢測速度,再將參數(shù)優(yōu)化后的聚焦損失(focal loss)代替分類誤差中的交叉熵損失函數(shù),降低樣本不平衡和難易樣本對檢測精度的影響,提高整體檢測精度,從而有效檢測航空發(fā)動機部件表面的缺陷。
YOLOv4 算法屬于單階段目標(biāo)檢測算法,其將目標(biāo)分類和目標(biāo)定位集成在同一個網(wǎng)絡(luò)中進行預(yù)測,實現(xiàn)了“端到端”的檢測。YOLOv4 算法的網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。主干特征提取網(wǎng)絡(luò)采用CSPDarknet53[17],CSPDarknet53 是在Darknet53[7]基礎(chǔ)上改進的,其在殘差單元結(jié)構(gòu)中使用了跨階段局部網(wǎng)絡(luò)(cross stage partial network,CSPNet)[17],進一步增強網(wǎng)絡(luò)的學(xué)習(xí)能力,在保證精度的前提下降低內(nèi)存成本和計算瓶頸,同時也使用了Mish[18]激活函數(shù)代替原有的Leaky ReLU[19]激活函數(shù)。Mish 激活函數(shù)在負值區(qū)比Leaky ReLU 更為平滑,有利于梯度的計算和更新,能獲得更好的準(zhǔn)確性和泛化能力。主干特征提取網(wǎng)絡(luò)之后引入了空間金字塔池化(spatial pyramid pooling, SPP)結(jié)構(gòu)[20],SPP 結(jié)構(gòu)利用不同的最大池化層結(jié)合進行處理,池化核大小分別為1×1、5×5、9×9、13×13,能有效增加感受野,分離出顯著的上下文特征。PANet[21]是在特征金字塔網(wǎng)絡(luò)(feature pyramid network, FPN)[22]基礎(chǔ)上增加自下而上的路徑增強(bottom-up path augmentation)結(jié)構(gòu),縮短低層特征到高層特征的信息路徑,加快低層信息流通。檢測頭部YOLO Head 沿用了YOLOv3中的Head,由3×3 和1×1 卷積層組成,對PANet 處理后輸出的特征層進行結(jié)果預(yù)測。
圖1 YOLOv4 網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 YOLOv4 network structure
YOLOv4 算法的損失誤差包括置信度誤差Lconf、分類誤差Lcls和回歸框預(yù)測誤差Lloc。其中,置信度誤差和分類誤差沿用了YOLOv3 算法中的損失函數(shù),具體如式(1)和式(2)所示。而在回歸框預(yù)測誤差中采用完整交并比(complete intersection over union,CIoU)損失,CIoU 損失是在交并比(intersection over union,IoU)損失[23]、泛化交并比(generalized intersection over union,GIoU)損失[24]、距離交并比(distance-intersection over union,DIoU)損失[25]上進一步改進的,既考慮到檢測框和目標(biāo)重疊面積,解決了邊界框不重合時的問題,也考慮到邊界框中心點距離和寬高比的尺度信息,提高了預(yù)測回歸的精度和速度,具體如式(3)和式(4)所示。
相比之前版本的YOLO 系列算法,YOLOv4 使用的PANet 結(jié)構(gòu)可對不同特征層的語義信息進行融合補充,適合檢測不同尺寸的目標(biāo)。通過PANet處理,輸出的特征層大小分別為原始輸入圖像的1/32、1/16、1/8。例如,輸入圖像尺寸大小為416×416,獲得的特征層大小分別為13×13、26×26 和52×52,這在一定程度上可以滿足不同尺寸目標(biāo)的檢測。但由于航空發(fā)動機部件表面存在許多微小缺陷,缺陷目標(biāo)在圖像中像素占比較少,但數(shù)量占比較多,原有的PANet 結(jié)構(gòu)對微小缺陷目標(biāo)仍缺乏有效的檢測。因此,本文在原有特征層基礎(chǔ)上繼續(xù)融合淺層特征與深層特征,增大特征檢測尺度,形成一個新的特征檢測層。特征層大小為輸入圖像的1/4,即104×104。增加新的特征檢測層會導(dǎo)致網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)量的增加,且自下而上的路徑增強結(jié)構(gòu)在小目標(biāo)居多的情況下發(fā)揮的作用有限,因此為減少參數(shù)冗余,保證足夠的檢測速度,去除PANet 中自下而上的路徑增強結(jié)構(gòu)。改進后的PANet 結(jié)構(gòu)如圖2藍色虛線框所示。改進后的PANet 在結(jié)構(gòu)上與FPN 相似,但在特征融合過程中使用相鄰層拼接(concat)代替相鄰層相加(add),可達到更好的融合效果。改進后的結(jié)構(gòu)不僅繼承了原有結(jié)構(gòu)的特征融合效果,而且能在降低網(wǎng)絡(luò)參數(shù)的同時獲取更淺層的特征,提高小目標(biāo)的特征提取能力。
圖2 改進的YOLOv4 結(jié)構(gòu)Fig.2 Improved YOLOv4 structure
在YOLOv4 中,當(dāng)輸入圖像大小為416×416時,3 個特征層共會生成10 647 個先驗框。本文訓(xùn)練集中每張圖像約包含2.3 個目標(biāo),絕大多數(shù)先驗框中不包含目標(biāo),容易導(dǎo)致訓(xùn)練時正負樣本不平衡。YOLOv4 分類誤差中采用的交叉熵損失函數(shù)難以解決樣本不平衡的問題,而聚集損失[26]具有調(diào)節(jié)樣本不平衡和挖掘困難樣本(即難以學(xué)習(xí)的樣本)的作用,聚焦損失函數(shù)如下:
式中:p∈[0,1]表示樣本預(yù)測的概率;α 為用于控制正負樣本對總損失影響的平衡參數(shù),可調(diào)節(jié)樣本不平衡對損失的影響,α∈(0,1),當(dāng)正樣本占比更少時,可減小α 的取值,加大樣本預(yù)測錯誤時的懲罰;γ 為用于控制難易樣本對總損失的聚焦參數(shù),當(dāng)γ>1時,可降低簡單樣本的損失,使得模型更關(guān)注學(xué)習(xí)難分辨的樣本。
雖然聚焦損失可以起到一定的平衡正負樣本和難易樣本對總損失影響的作用,但在航空發(fā)動機部件表面缺陷訓(xùn)練集中,各類缺陷數(shù)量不同,檢測難度也不同,僅設(shè)定恒定不變的參數(shù),難以做到對各類缺陷進行針對性訓(xùn)練。為提升模型訓(xùn)練效果和檢測精度,本文采用聚焦損失代替交叉熵損失函數(shù)應(yīng)用于分類誤差,并在其基礎(chǔ)上根據(jù)各類缺陷數(shù)量對平衡參數(shù)α′進行優(yōu)化,同時增加權(quán)重因子βt,改進方法如下:
式中:α0和β0分別為平衡參數(shù)和權(quán)重因子的初始化系數(shù);ni為第i 類缺陷的目標(biāo)數(shù)量;N 為所有缺陷的目標(biāo)總量。α′可根據(jù)缺陷數(shù)量不同而動態(tài)調(diào)整缺陷預(yù)測正確和錯誤時的損失權(quán)重。
當(dāng)某類缺陷數(shù)量較少,其預(yù)測正確時損失權(quán)重會較低,但預(yù)測錯誤時損失權(quán)重則會較高,從而增大對該類缺陷預(yù)測錯誤的懲罰。βt可根據(jù)缺陷數(shù)量不同而動態(tài)調(diào)整其整體損失在總損失中的權(quán)重,當(dāng)某類缺陷數(shù)量較少,其整體損失權(quán)重就會更大,這樣能使得模型更好地學(xué)習(xí)小數(shù)量樣本的特征。γ 可用于調(diào)整難易樣本對總損失的影響,本文γ 設(shè)為3,可放大低置信度樣本的損失值,使得模型更關(guān)注難分辨的樣本。綜合使用α′、βt和γ 三種損失調(diào)節(jié)參數(shù),可有效提高模型的檢測精度。
本文在Windows 10 系統(tǒng)中采用PyTorch 深度學(xué)習(xí) 框架搭建網(wǎng)絡(luò),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。
實驗設(shè)置的輸入圖像大小為416×416,采用COCO 預(yù)訓(xùn)練模型進行參數(shù)初始化。整個訓(xùn)練過程為200 輪epoch,num_workers 設(shè)置為8,權(quán)重衰減系數(shù)為0.000 5。前100 輪epoch 的學(xué)習(xí)率設(shè)置為0.001,batch size 設(shè)置為8,后100 輪epoch 的學(xué)習(xí)率設(shè)置為0.000 1,batch size 設(shè)置為4。同時,在每一輪epoch訓(xùn)練過程中同時開啟mosaic 數(shù)據(jù)增強和random 數(shù)據(jù)增強,提高網(wǎng)絡(luò)的訓(xùn)練效果。
本文采用的實驗數(shù)據(jù)是航空發(fā)動機部件表面缺陷圖像,包括裂紋、缺口、凹坑、劃痕4 種缺陷,如圖3 所示。
圖3 缺陷類型Fig.3 Defect types
由于采集的圖像數(shù)量有限,在訓(xùn)練前采用目標(biāo)裁剪、水平翻轉(zhuǎn)、曝光度調(diào)整和添加噪聲(高斯噪聲、椒鹽噪聲)的方式進行數(shù)據(jù)增強。數(shù)據(jù)增強后的圖像數(shù)量為3 700 張,隨機抽取圖像分配給訓(xùn)練集、驗證集和測試集,比例為6∶2∶2,即訓(xùn)練集2 220張,驗證集740 張,測試集740 張。表1 顯示了各數(shù)據(jù)集的目標(biāo)數(shù)量,其中,裂紋、劃痕的數(shù)量較多,缺口、凹坑的數(shù)量較少。
表1 數(shù)據(jù)集中的目標(biāo)數(shù)量Table 1 Number of targets in dataset
采用K-means 算法對目標(biāo)框進行聚類,圖4 為聚類中心為12 的聚類結(jié)果??芍?,大多數(shù)缺陷都分布在尺寸較小的區(qū)域,獲得的先驗框可覆蓋大部分的缺陷目標(biāo),能滿足不同特征層的檢測。
3.3.1 評價準(zhǔn)則
本文以預(yù)測框與目標(biāo)框的IoU 大于0.5 作為評判成功檢測到目標(biāo)的依據(jù)。采用平均精度均值(mean average precision, mAP)和加權(quán)調(diào)和平均(Fβ)作為模型檢測精度的評估指標(biāo),mAP 和Fβ值越大,表明檢測精度越高;采用單位時間內(nèi)檢測的圖像數(shù)量(Speed)作為模型檢測速度的評估指標(biāo),Speed 越大,表明檢測速度越快。定義如下:
式中:P 為準(zhǔn)確率;R 為召回率;為減少出現(xiàn)缺陷漏檢的情況,保證召回率的重要程度,本文的β 值設(shè)定為1.2;AP 為平均精準(zhǔn)度;K 為缺陷類別數(shù);TotalTime為檢測的總時間;NumFigure 為檢測的圖像數(shù)量。
3.3.2 性能對比
為驗證改進PANet 結(jié)構(gòu)和改進聚焦損失的檢測效果,本文在實驗中設(shè)置原始PANet 結(jié)構(gòu)+交叉熵損失函數(shù)(YOLOv4)、改進PANet 結(jié)構(gòu)+交叉熵損失函數(shù)(YOLOv4-A)、改進PANet 結(jié)構(gòu)后+改進的聚焦損失(YOLOv4-B)3 組實驗進行對比,每種模型訓(xùn)練結(jié)束后選取最后3 個epoch 的訓(xùn)練權(quán)重進行測試,并將平均結(jié)果作為最終檢測結(jié)果。
在YOLOv4-B 中,選取不同的平衡參數(shù)α0和權(quán)重因子β0會帶來不同的訓(xùn)練效果,進而影響最終的檢測精度。表2 為不同參數(shù)組合下的檢測精度對比情況??芍?,當(dāng)α0為0.20 時,β0越大,mAP 值就越大;當(dāng)α0為0.25 時,β0越大,mAP 值先增大后減小;當(dāng)α0為0.30 時,β0越大,mAP 值就越小。這是因為α0和β0直接影響改進后的聚焦損失對不同類型缺陷的損失權(quán)重,選取合適的參數(shù)組合才能有效提高其調(diào)節(jié)損失的效果。對比不同參數(shù)組合下的mAP 值可知,選取α0為0.25、β0為3.00 的參數(shù)組合時檢測精度最高。
表2 不同參數(shù)組合下的檢測精度對比Table 2 Comparison of detection accuracy under different parameter combinations
本文選取最佳參 數(shù)組合(α0=0.25,β0=3.00)的YOLOv4-B 作為標(biāo)準(zhǔn)與其他模型進行檢測性能對比,對比結(jié)果如表3 所示。
表3 不同模型的檢測性能對比Table 3 Comparison of detection performance of different models
使用改進的PANet 結(jié)構(gòu)后,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%。這是因為使用的航空發(fā)動機部件表面缺陷數(shù)據(jù)集中存在較多像素占比小的缺陷,特別是發(fā)動機葉片容易產(chǎn)生小凹坑,機匣表面容易出現(xiàn)小劃痕,使用改進的PANet 結(jié)構(gòu)提升了模型對小目標(biāo)的檢測精度。而裂紋這類缺陷在所有缺陷中數(shù)量占比較多,且形狀多為細長型,部分目標(biāo)標(biāo)注時目標(biāo)框較大,增加新特征層帶來的參數(shù)冗余導(dǎo)致這類缺陷檢測精度略有下降。各類模型的Fβ結(jié)果對比如圖5 所示。圖5 中的Fβ值變化規(guī)律與AP 值類似,說明改進PANet 結(jié)構(gòu)整體上提高了檢測精度,且缺陷遺漏率也有所降低。
圖5 不同模型的Fβ 對比Fig.5 Comparison of Fβ of different models
改進PANet 結(jié)構(gòu)后檢測速度由23.24 fps 提升到24.94 fps,提升了1.70 fps。去除自下而上的路徑增強結(jié)構(gòu)降低了網(wǎng)絡(luò)結(jié)構(gòu)的參數(shù)量,從而提高了檢測速度。具體的參數(shù)變化如表4 所示。原始YOLOv4 網(wǎng)絡(luò)中總參數(shù)量為63 953 841,參數(shù)容量為243.96 MB;改進后總參數(shù)量為48 971 468,參數(shù)容量為186.81 MB,總參數(shù)量相比減少了23.43%,參數(shù)容量相比也降低了23.43%。
表4 不同模型的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)量對比Table 4 Comparison of network structure parameters of different models
對比YOLOv4-A 和YOLOv4-B 的結(jié)果可知,采用改進的聚焦損失作為分類誤差的損失函數(shù)后,進一步提升了mAP 值,從89.61%提升至90.10%,提升了0.49%。其中,裂紋、凹坑這2 類缺陷AP 值均有提高,裂紋AP 值提升了0.73%,凹坑AP 值提升較大,提升了3.55%。由于裂紋這類缺陷中包含部分像素模糊的目標(biāo),檢測較為困難,聚焦參數(shù)γ 會增大這些困難樣本的損失值,使得模型更專注于學(xué)習(xí)這些困難樣本;凹坑這類缺陷目標(biāo)較小,不易分辨,而且數(shù)量相對也較少,平衡參數(shù)α′會增大其預(yù)測錯誤時的損失,同時權(quán)重因子βt會進一步增大其整體損失占總損失的比重,二者綜合提高了這類缺陷的檢測精度。劃痕的AP 值略有下降,缺口的AP 值有一定的下降,主要是因為采用改進的聚焦損失后,各類缺陷的損失在總損失中的占比進行了調(diào)整,而數(shù)據(jù)集中劃痕數(shù)量最多,缺口的特征較易分辨,使得其損失權(quán)重相比交叉熵損失函數(shù)有所下降,進而對AP 值有一定的影響??傮w而言,采用改進的聚焦損失后,各類缺陷的AP 值相對更為平衡。同時,各類缺陷的Fβ均有所提升,說明模型的總體檢測精度進一步提升,各類缺陷漏檢量也有所減少。在檢測速度方面,YOLOv4-A 和YOLOv4-B檢測速度基本一致。如表4 所示,使用改進的聚焦損失后并不影響網(wǎng)絡(luò)結(jié)構(gòu)的總參數(shù)量和參數(shù)容量。圖6 為各類缺陷樣本的檢測結(jié)果。其中,測試圖片是測試集中選取的缺陷圖像,測試結(jié)果包括缺陷的位置、類型和置信度。
圖6 各類缺陷樣本的檢測結(jié)果Fig.6 Test results of various defect samples
表5 為不同算法在航空發(fā)動機部件表面缺陷數(shù)據(jù)集下的檢測性能對比。SSD、YOLOv3 是常見的單階段目標(biāo)檢測算法,EfficientDet[27]是谷歌大腦于2019 年提出的目標(biāo)檢測算法,采用Efficient-Net[28]作為主干特征提取網(wǎng)絡(luò),包括D0 至D7 共8 種結(jié)構(gòu),本文采用D0、D1、D2 三種結(jié)構(gòu)進行對比。YOLOv4-Tiny 是YOLOv4 的簡化版,僅使用2 個特征層進行分類與回歸預(yù)測。
表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 的主干特征提取網(wǎng)絡(luò)分別為VGG 和Darknet53,其參數(shù)量均低于YOLOv4,YOLOv4-Tiny 是YOLOv4 的簡化版,其參數(shù)量也遠低于YOLOv4,因此在檢測速度上更有優(yōu)勢。但考慮到航空發(fā)動機部件缺陷檢測對精度的要求,綜合來說,YOLOv4-B 檢測性能要優(yōu)于其他算法。
本文提出了一種改進YOLOv4 的表面缺陷檢測算法,以航空發(fā)動機部件表面缺陷作為檢測對象,并與其他常用算法進行性能對比,驗證了該算法的有效性。結(jié)論如下:
1) 通過在PANet 結(jié)構(gòu)中融合淺層特征與深層特征,增大特征檢測尺度,同時去除自下而上的路徑增強結(jié)構(gòu),mAP 值由87.93%提升至89.61%,提升了1.68%。其中,凹坑和劃痕的檢測精度提升最大,二者AP 值提升均超過3%。檢測速度由23.24 fps提升至24.94 fps,提升了1.70 fps。
2) 采用參數(shù)優(yōu)化后的聚焦損失代替分類誤差中的交叉熵損失函數(shù)后,降低了樣本不平衡和難易樣本對檢測精度的影響,mAP 由89.61%提升至90.10%。其中,凹坑AP 值提升了3.55%,裂紋AP 值提升了0.73%。
3) 在檢測精度方面,改進后的YOLOv4 算法檢測 的mAP 值 高 于SSD、EfficientDet、YOLOv3 和YOLOv4-Tiny 算法,更適合用于檢測航空發(fā)動機部件表面缺陷。