吳 軍,單騰飛,黃 碩,張曉瑜,陳玖圣,郭潤夏
(中國民航大學,天津 300300)
飛機蒙皮損傷檢測對于保障飛行安全至關重要。目前,飛機蒙皮損傷常用檢測方法是人工目視檢測[1],但其效率低下,受人為因素影響較大,存在錯檢和漏檢的情況[2]。隨著深度神經網絡的發展,卷積網絡 (Convolutional neural networks,CNN) 已經廣泛應用于目標檢測和圖像分類。許多主流目標檢測模型及其改進算法被提出,并應用于飛機蒙皮損傷檢測任務,例如SSD、Faster R–CNN、YOLO系列算法等[3–7]。
陳從翰[8]把YOLOv3引入飛機蒙皮表面損傷檢測,通過與Faster R–CNN對比,發現YOLOv3檢測更加迅速,但是精度低于Faster R–CNN。李慧[9]通過收集與人工標注制作了飛機蒙皮損傷圖像數據集,并搭建了Faster R–CNN、YOLO和SSD目標檢測模型,主要解決飛機蒙皮損傷數據集樣本不均衡、檢測目標的形狀不規則而難以分類和定位的問題,最后將損失函數替換成焦點損失函數(Focal loss),借鑒傾斜預測框機制并做出調整,以改善檢測結果。農昌瑞等[10]將YOLOv4改進算法應用于飛機蒙皮損傷檢測,主要解決YOLOv4對小目標難識別、原有先驗框尺寸與真實框不匹配,以及正負樣本不能自動劃分等問題。王童等[11]提出基于BBAVectors改進的旋轉目標檢測方法,主要解決其制作的飛機蒙皮損傷數據集存在大量背景噪聲和蒙皮損傷分布方向任意等問題。但是,以上這些工作都沒有關注到飛機蒙皮損傷數據集背景單一的特點,并且所用的目標檢測模型存在檢測速度慢、參數量大、檢測精度低等缺點。
相較于COCO等背景復雜的數據集,飛機蒙皮損傷數據集存在背景單一的特點,圖像中其他部分對目標的干擾較小。在物體檢測過程中,圖像通道表征的是目標物體不同維度的信息,通道數越多描述目標物體的維度越多,即有更多的信息去描述目標與圖片中其他部分之間的聯系。這種多維的目標信息描述,對于飛機蒙皮損傷數據集等圖片背景單一的數據集是冗余的。在相同體量下,YOLOv7模型的檢測精度和檢測速度均超過之前所有的檢測器,因此可選用YOLOv7作為基礎的檢測模型。
本文針對飛機蒙皮數據集圖片背景單一的特點,提出增強型頸部特征融合改進算法;針對主干特征提取過程中卷積通道冗余的情況,提出主干特征提取網絡輕量化改進,即將P–PWConv模塊融入YOLOv7主干特征提取網絡[12],在顯著降低模型計算量的同時,減少頻繁的內存訪問,有效提高了模型的特征提取能力。
因具有其較高的精度和較快的速度[7],YOLOv7目標檢測模型被廣泛應用于系統的實時檢測。根據發布代碼的運行設備不同 (邊緣GPU、普通GPU和云端GPU),相應設置3種基礎模型,即YOLOv7–tiny、YOLOv7和YOLOv7–W6。本文選擇YOLOv7作為飛機蒙皮損傷檢測的基礎模型,其模型結構如圖1所示。

圖1 YOLOv7目標檢測模型框架Fig.1 Framework of YOLOv7 object detection model
YOLOv7包括輸入部分(Input)、主干部分 (Backbone)、頸部 (Neck)和頭部 (Head)模塊。首先,圖片經過數據增強等操作進行預處理,被送入主干部分;接著主干特征提取網絡對輸入的圖片數據進行特征提取;隨后提取到的特征經過頸部進行特征融合,得到包含不同尺度信息的3個特征層;最后將這3種不同尺度的特征送入檢測頭進行檢測,得到預測結果。
主干部分主要由E–ELAN(Extended–ELAN)模塊、MPConv(Maxpooling Conv)模塊和SPPCSPC模塊構成,激活函數是Silu。E–ELAN模塊以ELAN為基礎,不改變原來的過渡層結構,保留了原來的梯度,以此增強網絡的學習能力。在主干網絡部分第24、37層和50層,分別輸出8倍、16倍、32倍的下采樣,輸出3個不同大小的特征信息;頸部采用Concat融合方式,采用鄰近插值的上采樣方式;Head部分包含重參數化結構REP[13],會輸出3個不同的預測結果,方便后面的算法部署。
本研究提出YOLOv7通道冗余改進算法,以降低飛機蒙皮損傷檢測應用場景下的模型計算復雜度,并提高檢測精度。改進部分主要包括增強型頸部特征融合改進算法和Backbone輕量化兩部分,YOLOv7改進的框架如圖2所示。改進部分見圖2中紅色虛線框,首先在Backbone部分使用P–PWConv替換部分E–ELAN模塊中卷積核為3的常規卷積,其次在頸部應用增強型頸部特征融合算法。

圖2 改進之后的YOLOv7目標檢測算法框架圖Fig.2 Improved framework of YOLOv7 object detection algorithm
1.2.1 增強型頸部特征融合改進算法
Add和Concat是常用的特征融合操作[14–19],兩者都可以整合特征層的信息,但是Add操作比Concat更加節省計算量,其簡易過程如圖3所示。

圖3 特征層融合操作Add和Concat原理對比圖Fig.3 Schematic comparison diagram of feature layer fusion operation for Add and Concat
Add特征融合方式是將特征層對應像素的值進行相加,豐富了描述圖像自身特征的信息,但是不改變描述圖像的維度信息;而Concat特征融合方式是將圖像特征層在通道維度進行堆疊,這種方式不易造成信息丟失,但是對于背景單一的數據應用場景會存在信息冗余。另外,Add特征融合方式的計算量比Concat操作少,假設有兩路通道數相同的輸入,并且特征融合操作后都帶有卷積,則Add操作相當于Concat操作后的對應通道共享一個卷積核。
對飛機蒙皮損傷等單一背景數據集的特征層進行逐像素相加,可以增加通道的信息量,使模型進一步聚焦前景目標,降低模型的參數量。因此針對飛機蒙皮損傷等背景單一數據集,提出增強型頸部特征融合改進算法,即將YOLOv7模型中頸部的PANet結構中Concat圖像特征融合方式換成Add方式[20]。頸部其他模塊按照原來各特征層輸出形狀進行適當調整,改進后的模型框架如圖4所示。由于Add操作不會改變特征層的通道數,僅將Concat換成Add之后,會破壞YOLOv7原來的頸部結構,經過不斷試驗將YOLOv7原有的ELAN–W結構換成YOLOv7中最基本的CBS結構,并且適當調整各個特征層輸出的形狀。

圖4 基礎頸部框架與增強型頸部特征融合改進算法原理圖Fig.4 Basic neck frame and framework of improved algorithm for enhanced neck feature fusion
為了進一步說明增強型頸部特征融合改進算法在單一背景的數據集具有良好的應用優勢,增加該改進點的可解釋性,本文在飛機蒙皮損傷數據集上,使用Grad–CAM算法對僅使用增強型頸部特征融合改進算法的模型,進行特征層可視化。可視化位置如圖4中的位置1~4。Grad–CAM特征層可視化如圖5所示,其中的線框標注為掉漆損傷,可以看出,改進之后的模型在目標區域的顏色更深,即在目標部分的權重值更大,其他部分的權重值較小,即僅使用增強型頸部特征融合改進算法更關注目標物體區域內的像素。同時相比于Concat操作,Add使模型描述目標物體的通道數更少,同時增加了對應通道內目標的權重。在模型檢測過程中,過多的目標信息描述對于飛機蒙皮損傷數據集等圖片背景單一的數據集是冗余的。因此在YOLOv7模型頸部特征融合時,Add特征融合方式更加適用,驗證了增強型頸部特征融合改進算法的有效性。

圖5 飛機蒙皮損傷數據集改進前后Grad–CAM特征層可視化對比Fig.5 Visualization and comparison of Grad–CAM feature layers before and after improvement of model for aircraft skin damage dataset
1.2.2 Backbone輕量化
由于在特征提取網絡的卷積運算過程中,不同通道的特征層具有很高的相似性。部分卷積PConv利用了特征圖中的通道冗余[21–23],僅在一部分輸入通道上應用常規卷積,同時不影響其他通道的信息傳遞。因此PConv可以在降低FLOPs(Floating point of operations)的情況下,保持高FLOPS(Floating-point operations per second)[12]。
為了充分有效地利用所有通道的信息,在部分卷積PConv模塊后附加一個逐點卷積PWConv,將它們組合成P–PWConv,作為一個獨立的模塊融入YOLOv7主干特征提取網絡的E–ELAN。改進之后的主干特征提取網絡如圖6所示。

圖6 Backbone輕量化結構圖Fig.6 Diagram of backbone lightweight structure
由于PConv的卷積核大小是3×3,步長為1,因此把部分E–ELAN結構中有相同大小卷積核和步長的常規卷積,替換成P–PWConv,并將PConv中的部分卷積通道比例設置成4。為了不犧牲檢測精度,盡可能地減少模型的參數量,同時考慮到主干特征提取網絡的淺層部分通道數較少不適合使用P–PWConv,通過不斷試驗,最終確定將P–PWConv應用在深層的特征提取網絡中,即應用于主干特征提取網絡后3個E–ELAN模塊。
該項目所使用的是雙卡GPU,單卡配置是NVIDIA RTX3090渦輪版,具有24 GB顯存和10496個CUDA核心,CPU使用的是Intel(R) Xeon(R)W–3245,3.2 GHz主頻,128 GB內存。操作系統是Ubuntu20.04,Pytorch1.8.0,Python3.7版和CUDA11.1版。試驗過程使用的超參數見表1。

表1 試驗超參數Table 1 Experimental hyperparameters
飛機蒙皮損傷數據集包含了5類常見的蒙皮損傷,為腐蝕損傷(Rust)、鉚釘損傷 (Rivet_damage)、劃痕 (Scratch)、變形損傷 (Deform)和掉漆損傷 (Paint_peel),共2401張圖片。數據集所有圖片都是在中國民航大學停機坪上拍攝的,要求手持設備離飛機蒙皮表面約1 m進行拍攝,同時進行多尺度和多角度拍攝,即對于同一個損傷會采集不同角度和尺度的圖片,約5張。把數據集以訓練集:驗證集為9∶1的比例進行劃分。實物照片如圖7所示。

圖7 飛機蒙皮損傷數據集損傷類別實物圖Fig.7 Physical map of damage categories for aircraft skin damage dataset
用于目標檢測的常用度量指標是交并比 (Intersection over union)、準確率 (Precision)、召回率 (Recall)、平均精度AP (Average-precision),以及更加重要的mAP(Mean average precision)、FPS(Frames per second)、模型參數量等。IOU用于度量目標預測框和目標真實框之間的重疊程度,計算方法是檢測結果與目標真實值之間的交集和并集比率,計算公式為
在試驗時,通常會設置一個閾值。當IOU值大于該設置的閾值時,預測結果會被認為是真陽性 (TP),表示目標識別是準確的;當IOU值小于該設置閾值時,預測結果會被認為是假陽性 (FP),即表示錯誤的識別;沒有檢測到的目標的數量,被稱為假陰性 (FN),即沒有對應匹配檢測結果的真實目標數量。
準確率也叫查準率,定義為在圖像的目標檢測中真陽性的比例,計算公式為
召回率也叫查全率,是在所有測試集樣本中所有陽性樣本識別正確的比例,計算公式為
準確率反映了模型區分陰性樣本的能力。精度越高,模型區分陰性樣本的能力越強。召回率表示目標檢測算法準確找回陽性樣本的能力。召回率越高,模型識別陽性樣本的能力越強。
平均精度表示在每個召回條件下最高精度的平均值,計算公式為
在目標檢測中,模型通常檢測許多類別的目標,每個類別都可以計算一個AP值。mAP由所有類別的AP求均值得來,計算公式為
式中,n為模型預測類別數量。
除了檢測準確度,模型檢測速度和模型參數量也是目標檢測算法非常重要的評估指標。FPS值越大,模型檢測速度越快。浮點運算次數FLOPs用來衡量模型的算法復雜度。
相比于特征層Concat操作,Add操作可以豐富特征層的信息,同時減少通道數。直接將YOLOv7頸部特征金字塔Concat特征融合方式替換成Add,會破壞YOLOv7原有ELAN–W結構的輸入輸出通道數。為了探究更適合的模型改進策略,在飛機蒙皮損傷數據集上,對增強型頸部特征融合改進算法的各個改進策略進行測試。各模型改進結構如圖8所示。具體改進辦法是將Concat操作替換為Add,并且適當調整YOLOv7頸部其他模塊結構,且各組試驗的參數設置完全相同。

圖8 增強型頸部特征融合改進算法對比圖Fig.8 Comparison chart of improved algorithm for enhanced neck feature fusion
圖8中“改進Ⅰ”將頸部特征融合部分的Concat操作替換成Add,改變了ELAN–W模塊的輸出通道數比例,其他部分未變;“改進Ⅱ”在“改進Ⅰ”的基礎上,將第1個上采樣后的ELAN–W舍棄,將后續的ELAN–W替換成CBS模塊,其卷積核大小是3×3,步長為1;“改進Ⅲ”僅僅改變特征融合金字塔的特征融合方式,不改變頸部其他結構的輸入輸出通道數比例。不同模型對比試驗結果見表2,組別1~4分別對應圖8(a)~(d);第2組破壞了頸部ELAN–W模塊的輸入輸出通道數比例,取得mAP0.5分數負增長,參數量增加了1.8%;第3組取得的mAP0.5分數提高了1.9%,參數量減少了20.49%;第4組mAP0.5分數提高了0.6%,參數量減少了34.67%;綜上所述,選擇第3組改進模型作為增強型頸部特征融合改進算法。Parameters表示模型的參數量,試驗結果均是在輸入圖像大小為640×640像素下計算得到。FLOPs只和模型有關,衡量模型/算法復雜度,表示模型的計算量大小。

表2 不同增強型頸部特征融合改進算法在飛機蒙皮損傷數據集上的試驗結果Table 2 Experimental results of various improved algorithms for enhanced neck feature fusion on aircraft skin damage datasets
為了驗證本文所提出的各項改進的有效性,在飛機蒙皮損傷數據集上進行了3組消融試驗。消融試驗結果如表3所示。可以看出,第1組試驗是YOLOv7基準模型,其在飛機蒙皮損傷數據集上的檢測精度是61.7%,模型FPS值是125 f/s;第2組試驗應用了增強型頸部特征融合改進算法,參數量減少了20.49%,模型檢測速度增加了13.9 f/s,檢測精度提升了1.9%;第3組試驗在原始模型上增加了Backbone輕量化,參數量減少了13.64%,FPS增加了6.6 f/s;第4組試驗是最終改進后的YOLOv7模型,參數量減少了34.13%,模型檢測精度提升了2.3%,檢測速度增加了22.1 f/s。

表3 不同方法在飛機蒙皮損傷數據集上的消融試驗結果Table 3 Results of ablation experiments with different methods for aircraft skin damage dataset
為了驗證YOLOv7通道冗余改進算法的先進性,在飛機蒙皮損傷數據集上比較了現有的主流目標檢測模型。為了公平起見,試驗采用相同的訓練和測試方案。試驗結果如表4所示,相比于YOLOv5(L)模型,改進之后的YOLOv7模型mAP提高了3.6%,檢測速度提高了124.93 f/s;相比于YOLOv7–e6模型,改進后的模型mAP提高了0.1%,FPS提高了47.1 f/s。由此可見改進之后的YOLOv7模型具有更好的性能。

表4 不同檢測器試驗對比Table 4 Comparative experiments with different detectors
本文針對飛機蒙皮損傷數據集等單一背景的特點,以及主干特征提取網絡中卷積運算通道冗余的問題,對YOLOv7目標檢測模型進行了改進,使模型適用于飛機蒙皮損傷檢測等應用場景。
(1)提出增強型頸部特征融合改進算法,提高背景單一數據集的損傷識別精度和檢測速度。
(2)針對卷積運算通道冗余的問題,引入P–PWConv模塊,提出Backbone輕量化,以進一步減少模型的參數量,提高損傷的識別效率。
(3)設計了基于不同增強型頸部特征融合改進策略的飛機蒙皮損傷數據集驗證試驗、YOLOv7通道冗余改進算法消融試驗及不同檢測器對比試驗,驗證了改進后的YOLOv7在飛機蒙皮損傷數據集上的性能優于原YOLOv7模型。
未來將會針對現有的飛機蒙皮損傷數據集存在的長尾問題和過多的模型參數量進行改進,并將改進的算法應用到實際工作任務中。