吳 軍,單騰飛,黃 碩,張曉瑜,陳玖圣,郭潤(rùn)夏
(中國(guó)民航大學(xué),天津 300300)
飛機(jī)蒙皮損傷檢測(cè)對(duì)于保障飛行安全至關(guān)重要。目前,飛機(jī)蒙皮損傷常用檢測(cè)方法是人工目視檢測(cè)[1],但其效率低下,受人為因素影響較大,存在錯(cuò)檢和漏檢的情況[2]。隨著深度神經(jīng)網(wǎng)絡(luò)的發(fā)展,卷積網(wǎng)絡(luò) (Convolutional neural networks,CNN) 已經(jīng)廣泛應(yīng)用于目標(biāo)檢測(cè)和圖像分類。許多主流目標(biāo)檢測(cè)模型及其改進(jìn)算法被提出,并應(yīng)用于飛機(jī)蒙皮損傷檢測(cè)任務(wù),例如SSD、Faster R–CNN、YOLO系列算法等[3–7]。
陳從翰[8]把YOLOv3引入飛機(jī)蒙皮表面損傷檢測(cè),通過(guò)與Faster R–CNN對(duì)比,發(fā)現(xiàn)YOLOv3檢測(cè)更加迅速,但是精度低于Faster R–CNN。李慧[9]通過(guò)收集與人工標(biāo)注制作了飛機(jī)蒙皮損傷圖像數(shù)據(jù)集,并搭建了Faster R–CNN、YOLO和SSD目標(biāo)檢測(cè)模型,主要解決飛機(jī)蒙皮損傷數(shù)據(jù)集樣本不均衡、檢測(cè)目標(biāo)的形狀不規(guī)則而難以分類和定位的問(wèn)題,最后將損失函數(shù)替換成焦點(diǎn)損失函數(shù)(Focal loss),借鑒傾斜預(yù)測(cè)框機(jī)制并做出調(diào)整,以改善檢測(cè)結(jié)果。農(nóng)昌瑞等[10]將YOLOv4改進(jìn)算法應(yīng)用于飛機(jī)蒙皮損傷檢測(cè),主要解決YOLOv4對(duì)小目標(biāo)難識(shí)別、原有先驗(yàn)框尺寸與真實(shí)框不匹配,以及正負(fù)樣本不能自動(dòng)劃分等問(wèn)題。王童等[11]提出基于BBAVectors改進(jìn)的旋轉(zhuǎn)目標(biāo)檢測(cè)方法,主要解決其制作的飛機(jī)蒙皮損傷數(shù)據(jù)集存在大量背景噪聲和蒙皮損傷分布方向任意等問(wèn)題。但是,以上這些工作都沒(méi)有關(guān)注到飛機(jī)蒙皮損傷數(shù)據(jù)集背景單一的特點(diǎn),并且所用的目標(biāo)檢測(cè)模型存在檢測(cè)速度慢、參數(shù)量大、檢測(cè)精度低等缺點(diǎn)。
相較于COCO等背景復(fù)雜的數(shù)據(jù)集,飛機(jī)蒙皮損傷數(shù)據(jù)集存在背景單一的特點(diǎn),圖像中其他部分對(duì)目標(biāo)的干擾較小。在物體檢測(cè)過(guò)程中,圖像通道表征的是目標(biāo)物體不同維度的信息,通道數(shù)越多描述目標(biāo)物體的維度越多,即有更多的信息去描述目標(biāo)與圖片中其他部分之間的聯(lián)系。這種多維的目標(biāo)信息描述,對(duì)于飛機(jī)蒙皮損傷數(shù)據(jù)集等圖片背景單一的數(shù)據(jù)集是冗余的。在相同體量下,YOLOv7模型的檢測(cè)精度和檢測(cè)速度均超過(guò)之前所有的檢測(cè)器,因此可選用YOLOv7作為基礎(chǔ)的檢測(cè)模型。
本文針對(duì)飛機(jī)蒙皮數(shù)據(jù)集圖片背景單一的特點(diǎn),提出增強(qiáng)型頸部特征融合改進(jìn)算法;針對(duì)主干特征提取過(guò)程中卷積通道冗余的情況,提出主干特征提取網(wǎng)絡(luò)輕量化改進(jìn),即將P–PWConv模塊融入YOLOv7主干特征提取網(wǎng)絡(luò)[12],在顯著降低模型計(jì)算量的同時(shí),減少頻繁的內(nèi)存訪問(wèn),有效提高了模型的特征提取能力。
因具有其較高的精度和較快的速度[7],YOLOv7目標(biāo)檢測(cè)模型被廣泛應(yīng)用于系統(tǒng)的實(shí)時(shí)檢測(cè)。根據(jù)發(fā)布代碼的運(yùn)行設(shè)備不同 (邊緣GPU、普通GPU和云端GPU),相應(yīng)設(shè)置3種基礎(chǔ)模型,即YOLOv7–tiny、YOLOv7和YOLOv7–W6。本文選擇YOLOv7作為飛機(jī)蒙皮損傷檢測(cè)的基礎(chǔ)模型,其模型結(jié)構(gòu)如圖1所示。
圖1 YOLOv7目標(biāo)檢測(cè)模型框架Fig.1 Framework of YOLOv7 object detection model
YOLOv7包括輸入部分(Input)、主干部分 (Backbone)、頸部 (Neck)和頭部 (Head)模塊。首先,圖片經(jīng)過(guò)數(shù)據(jù)增強(qiáng)等操作進(jìn)行預(yù)處理,被送入主干部分;接著主干特征提取網(wǎng)絡(luò)對(duì)輸入的圖片數(shù)據(jù)進(jìn)行特征提??;隨后提取到的特征經(jīng)過(guò)頸部進(jìn)行特征融合,得到包含不同尺度信息的3個(gè)特征層;最后將這3種不同尺度的特征送入檢測(cè)頭進(jìn)行檢測(cè),得到預(yù)測(cè)結(jié)果。
主干部分主要由E–ELAN(Extended–ELAN)模塊、MPConv(Maxpooling Conv)模塊和SPPCSPC模塊構(gòu)成,激活函數(shù)是Silu。E–ELAN模塊以ELAN為基礎(chǔ),不改變?cè)瓉?lái)的過(guò)渡層結(jié)構(gòu),保留了原來(lái)的梯度,以此增強(qiáng)網(wǎng)絡(luò)的學(xué)習(xí)能力。在主干網(wǎng)絡(luò)部分第24、37層和50層,分別輸出8倍、16倍、32倍的下采樣,輸出3個(gè)不同大小的特征信息;頸部采用Concat融合方式,采用鄰近插值的上采樣方式;Head部分包含重參數(shù)化結(jié)構(gòu)REP[13],會(huì)輸出3個(gè)不同的預(yù)測(cè)結(jié)果,方便后面的算法部署。
本研究提出YOLOv7通道冗余改進(jìn)算法,以降低飛機(jī)蒙皮損傷檢測(cè)應(yīng)用場(chǎng)景下的模型計(jì)算復(fù)雜度,并提高檢測(cè)精度。改進(jìn)部分主要包括增強(qiáng)型頸部特征融合改進(jìn)算法和Backbone輕量化兩部分,YOLOv7改進(jìn)的框架如圖2所示。改進(jìn)部分見圖2中紅色虛線框,首先在Backbone部分使用P–PWConv替換部分E–ELAN模塊中卷積核為3的常規(guī)卷積,其次在頸部應(yīng)用增強(qiáng)型頸部特征融合算法。
圖2 改進(jìn)之后的YOLOv7目標(biāo)檢測(cè)算法框架圖Fig.2 Improved framework of YOLOv7 object detection algorithm
1.2.1 增強(qiáng)型頸部特征融合改進(jìn)算法
Add和Concat是常用的特征融合操作[14–19],兩者都可以整合特征層的信息,但是Add操作比Concat更加節(jié)省計(jì)算量,其簡(jiǎn)易過(guò)程如圖3所示。
圖3 特征層融合操作Add和Concat原理對(duì)比圖Fig.3 Schematic comparison diagram of feature layer fusion operation for Add and Concat
Add特征融合方式是將特征層對(duì)應(yīng)像素的值進(jìn)行相加,豐富了描述圖像自身特征的信息,但是不改變描述圖像的維度信息;而Concat特征融合方式是將圖像特征層在通道維度進(jìn)行堆疊,這種方式不易造成信息丟失,但是對(duì)于背景單一的數(shù)據(jù)應(yīng)用場(chǎng)景會(huì)存在信息冗余。另外,Add特征融合方式的計(jì)算量比Concat操作少,假設(shè)有兩路通道數(shù)相同的輸入,并且特征融合操作后都帶有卷積,則Add操作相當(dāng)于Concat操作后的對(duì)應(yīng)通道共享一個(gè)卷積核。
對(duì)飛機(jī)蒙皮損傷等單一背景數(shù)據(jù)集的特征層進(jìn)行逐像素相加,可以增加通道的信息量,使模型進(jìn)一步聚焦前景目標(biāo),降低模型的參數(shù)量。因此針對(duì)飛機(jī)蒙皮損傷等背景單一數(shù)據(jù)集,提出增強(qiáng)型頸部特征融合改進(jìn)算法,即將YOLOv7模型中頸部的PANet結(jié)構(gòu)中Concat圖像特征融合方式換成Add方式[20]。頸部其他模塊按照原來(lái)各特征層輸出形狀進(jìn)行適當(dāng)調(diào)整,改進(jìn)后的模型框架如圖4所示。由于Add操作不會(huì)改變特征層的通道數(shù),僅將Concat換成Add之后,會(huì)破壞YOLOv7原來(lái)的頸部結(jié)構(gòu),經(jīng)過(guò)不斷試驗(yàn)將YOLOv7原有的ELAN–W結(jié)構(gòu)換成YOLOv7中最基本的CBS結(jié)構(gòu),并且適當(dāng)調(diào)整各個(gè)特征層輸出的形狀。
圖4 基礎(chǔ)頸部框架與增強(qiáng)型頸部特征融合改進(jìn)算法原理圖Fig.4 Basic neck frame and framework of improved algorithm for enhanced neck feature fusion
為了進(jìn)一步說(shuō)明增強(qiáng)型頸部特征融合改進(jìn)算法在單一背景的數(shù)據(jù)集具有良好的應(yīng)用優(yōu)勢(shì),增加該改進(jìn)點(diǎn)的可解釋性,本文在飛機(jī)蒙皮損傷數(shù)據(jù)集上,使用Grad–CAM算法對(duì)僅使用增強(qiáng)型頸部特征融合改進(jìn)算法的模型,進(jìn)行特征層可視化??梢暬恢萌鐖D4中的位置1~4。Grad–CAM特征層可視化如圖5所示,其中的線框標(biāo)注為掉漆損傷,可以看出,改進(jìn)之后的模型在目標(biāo)區(qū)域的顏色更深,即在目標(biāo)部分的權(quán)重值更大,其他部分的權(quán)重值較小,即僅使用增強(qiáng)型頸部特征融合改進(jìn)算法更關(guān)注目標(biāo)物體區(qū)域內(nèi)的像素。同時(shí)相比于Concat操作,Add使模型描述目標(biāo)物體的通道數(shù)更少,同時(shí)增加了對(duì)應(yīng)通道內(nèi)目標(biāo)的權(quán)重。在模型檢測(cè)過(guò)程中,過(guò)多的目標(biāo)信息描述對(duì)于飛機(jī)蒙皮損傷數(shù)據(jù)集等圖片背景單一的數(shù)據(jù)集是冗余的。因此在YOLOv7模型頸部特征融合時(shí),Add特征融合方式更加適用,驗(yàn)證了增強(qiáng)型頸部特征融合改進(jìn)算法的有效性。
圖5 飛機(jī)蒙皮損傷數(shù)據(jù)集改進(jìn)前后Grad–CAM特征層可視化對(duì)比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輕量化
由于在特征提取網(wǎng)絡(luò)的卷積運(yùn)算過(guò)程中,不同通道的特征層具有很高的相似性。部分卷積PConv利用了特征圖中的通道冗余[21–23],僅在一部分輸入通道上應(yīng)用常規(guī)卷積,同時(shí)不影響其他通道的信息傳遞。因此PConv可以在降低FLOPs(Floating point of operations)的情況下,保持高FLOPS(Floating-point operations per second)[12]。
為了充分有效地利用所有通道的信息,在部分卷積PConv模塊后附加一個(gè)逐點(diǎn)卷積PWConv,將它們組合成P–PWConv,作為一個(gè)獨(dú)立的模塊融入YOLOv7主干特征提取網(wǎng)絡(luò)的E–ELAN。改進(jìn)之后的主干特征提取網(wǎng)絡(luò)如圖6所示。
圖6 Backbone輕量化結(jié)構(gòu)圖Fig.6 Diagram of backbone lightweight structure
由于PConv的卷積核大小是3×3,步長(zhǎng)為1,因此把部分E–ELAN結(jié)構(gòu)中有相同大小卷積核和步長(zhǎng)的常規(guī)卷積,替換成P–PWConv,并將PConv中的部分卷積通道比例設(shè)置成4。為了不犧牲檢測(cè)精度,盡可能地減少模型的參數(shù)量,同時(shí)考慮到主干特征提取網(wǎng)絡(luò)的淺層部分通道數(shù)較少不適合使用P–PWConv,通過(guò)不斷試驗(yàn),最終確定將P–PWConv應(yīng)用在深層的特征提取網(wǎng)絡(luò)中,即應(yīng)用于主干特征提取網(wǎng)絡(luò)后3個(gè)E–ELAN模塊。
該項(xiàng)目所使用的是雙卡GPU,單卡配置是NVIDIA RTX3090渦輪版,具有24 GB顯存和10496個(gè)CUDA核心,CPU使用的是Intel(R) Xeon(R)W–3245,3.2 GHz主頻,128 GB內(nèi)存。操作系統(tǒng)是Ubuntu20.04,Pytorch1.8.0,Python3.7版和CUDA11.1版。試驗(yàn)過(guò)程使用的超參數(shù)見表1。
表1 試驗(yàn)超參數(shù)Table 1 Experimental hyperparameters
飛機(jī)蒙皮損傷數(shù)據(jù)集包含了5類常見的蒙皮損傷,為腐蝕損傷(Rust)、鉚釘損傷 (Rivet_damage)、劃痕 (Scratch)、變形損傷 (Deform)和掉漆損傷 (Paint_peel),共2401張圖片。數(shù)據(jù)集所有圖片都是在中國(guó)民航大學(xué)停機(jī)坪上拍攝的,要求手持設(shè)備離飛機(jī)蒙皮表面約1 m進(jìn)行拍攝,同時(shí)進(jìn)行多尺度和多角度拍攝,即對(duì)于同一個(gè)損傷會(huì)采集不同角度和尺度的圖片,約5張。把數(shù)據(jù)集以訓(xùn)練集:驗(yàn)證集為9∶1的比例進(jìn)行劃分。實(shí)物照片如圖7所示。
圖7 飛機(jī)蒙皮損傷數(shù)據(jù)集損傷類別實(shí)物圖Fig.7 Physical map of damage categories for aircraft skin damage dataset
用于目標(biāo)檢測(cè)的常用度量指標(biāo)是交并比 (Intersection over union)、準(zhǔn)確率 (Precision)、召回率 (Recall)、平均精度AP (Average-precision),以及更加重要的mAP(Mean average precision)、FPS(Frames per second)、模型參數(shù)量等。IOU用于度量目標(biāo)預(yù)測(cè)框和目標(biāo)真實(shí)框之間的重疊程度,計(jì)算方法是檢測(cè)結(jié)果與目標(biāo)真實(shí)值之間的交集和并集比率,計(jì)算公式為
在試驗(yàn)時(shí),通常會(huì)設(shè)置一個(gè)閾值。當(dāng)IOU值大于該設(shè)置的閾值時(shí),預(yù)測(cè)結(jié)果會(huì)被認(rèn)為是真陽(yáng)性 (TP),表示目標(biāo)識(shí)別是準(zhǔn)確的;當(dāng)IOU值小于該設(shè)置閾值時(shí),預(yù)測(cè)結(jié)果會(huì)被認(rèn)為是假陽(yáng)性 (FP),即表示錯(cuò)誤的識(shí)別;沒(méi)有檢測(cè)到的目標(biāo)的數(shù)量,被稱為假陰性 (FN),即沒(méi)有對(duì)應(yīng)匹配檢測(cè)結(jié)果的真實(shí)目標(biāo)數(shù)量。
準(zhǔn)確率也叫查準(zhǔn)率,定義為在圖像的目標(biāo)檢測(cè)中真陽(yáng)性的比例,計(jì)算公式為
召回率也叫查全率,是在所有測(cè)試集樣本中所有陽(yáng)性樣本識(shí)別正確的比例,計(jì)算公式為
準(zhǔn)確率反映了模型區(qū)分陰性樣本的能力。精度越高,模型區(qū)分陰性樣本的能力越強(qiáng)。召回率表示目標(biāo)檢測(cè)算法準(zhǔn)確找回陽(yáng)性樣本的能力。召回率越高,模型識(shí)別陽(yáng)性樣本的能力越強(qiáng)。
平均精度表示在每個(gè)召回條件下最高精度的平均值,計(jì)算公式為
在目標(biāo)檢測(cè)中,模型通常檢測(cè)許多類別的目標(biāo),每個(gè)類別都可以計(jì)算一個(gè)AP值。mAP由所有類別的AP求均值得來(lái),計(jì)算公式為
式中,n為模型預(yù)測(cè)類別數(shù)量。
除了檢測(cè)準(zhǔn)確度,模型檢測(cè)速度和模型參數(shù)量也是目標(biāo)檢測(cè)算法非常重要的評(píng)估指標(biāo)。FPS值越大,模型檢測(cè)速度越快。浮點(diǎn)運(yùn)算次數(shù)FLOPs用來(lái)衡量模型的算法復(fù)雜度。
相比于特征層Concat操作,Add操作可以豐富特征層的信息,同時(shí)減少通道數(shù)。直接將YOLOv7頸部特征金字塔Concat特征融合方式替換成Add,會(huì)破壞YOLOv7原有ELAN–W結(jié)構(gòu)的輸入輸出通道數(shù)。為了探究更適合的模型改進(jìn)策略,在飛機(jī)蒙皮損傷數(shù)據(jù)集上,對(duì)增強(qiáng)型頸部特征融合改進(jìn)算法的各個(gè)改進(jìn)策略進(jìn)行測(cè)試。各模型改進(jìn)結(jié)構(gòu)如圖8所示。具體改進(jìn)辦法是將Concat操作替換為Add,并且適當(dāng)調(diào)整YOLOv7頸部其他模塊結(jié)構(gòu),且各組試驗(yàn)的參數(shù)設(shè)置完全相同。
圖8 增強(qiáng)型頸部特征融合改進(jìn)算法對(duì)比圖Fig.8 Comparison chart of improved algorithm for enhanced neck feature fusion
圖8中“改進(jìn)Ⅰ”將頸部特征融合部分的Concat操作替換成Add,改變了ELAN–W模塊的輸出通道數(shù)比例,其他部分未變;“改進(jìn)Ⅱ”在“改進(jìn)Ⅰ”的基礎(chǔ)上,將第1個(gè)上采樣后的ELAN–W舍棄,將后續(xù)的ELAN–W替換成CBS模塊,其卷積核大小是3×3,步長(zhǎng)為1;“改進(jìn)Ⅲ”僅僅改變特征融合金字塔的特征融合方式,不改變頸部其他結(jié)構(gòu)的輸入輸出通道數(shù)比例。不同模型對(duì)比試驗(yàn)結(jié)果見表2,組別1~4分別對(duì)應(yīng)圖8(a)~(d);第2組破壞了頸部ELAN–W模塊的輸入輸出通道數(shù)比例,取得mAP0.5分?jǐn)?shù)負(fù)增長(zhǎng),參數(shù)量增加了1.8%;第3組取得的mAP0.5分?jǐn)?shù)提高了1.9%,參數(shù)量減少了20.49%;第4組mAP0.5分?jǐn)?shù)提高了0.6%,參數(shù)量減少了34.67%;綜上所述,選擇第3組改進(jìn)模型作為增強(qiáng)型頸部特征融合改進(jìn)算法。Parameters表示模型的參數(shù)量,試驗(yàn)結(jié)果均是在輸入圖像大小為640×640像素下計(jì)算得到。FLOPs只和模型有關(guān),衡量模型/算法復(fù)雜度,表示模型的計(jì)算量大小。
表2 不同增強(qiáng)型頸部特征融合改進(jìn)算法在飛機(jī)蒙皮損傷數(shù)據(jù)集上的試驗(yàn)結(jié)果Table 2 Experimental results of various improved algorithms for enhanced neck feature fusion on aircraft skin damage datasets
為了驗(yàn)證本文所提出的各項(xiàng)改進(jìn)的有效性,在飛機(jī)蒙皮損傷數(shù)據(jù)集上進(jìn)行了3組消融試驗(yàn)。消融試驗(yàn)結(jié)果如表3所示??梢钥闯?,第1組試驗(yàn)是YOLOv7基準(zhǔn)模型,其在飛機(jī)蒙皮損傷數(shù)據(jù)集上的檢測(cè)精度是61.7%,模型FPS值是125 f/s;第2組試驗(yàn)應(yīng)用了增強(qiáng)型頸部特征融合改進(jìn)算法,參數(shù)量減少了20.49%,模型檢測(cè)速度增加了13.9 f/s,檢測(cè)精度提升了1.9%;第3組試驗(yàn)在原始模型上增加了Backbone輕量化,參數(shù)量減少了13.64%,F(xiàn)PS增加了6.6 f/s;第4組試驗(yàn)是最終改進(jìn)后的YOLOv7模型,參數(shù)量減少了34.13%,模型檢測(cè)精度提升了2.3%,檢測(cè)速度增加了22.1 f/s。
表3 不同方法在飛機(jī)蒙皮損傷數(shù)據(jù)集上的消融試驗(yàn)結(jié)果Table 3 Results of ablation experiments with different methods for aircraft skin damage dataset
為了驗(yàn)證YOLOv7通道冗余改進(jìn)算法的先進(jìn)性,在飛機(jī)蒙皮損傷數(shù)據(jù)集上比較了現(xiàn)有的主流目標(biāo)檢測(cè)模型。為了公平起見,試驗(yàn)采用相同的訓(xùn)練和測(cè)試方案。試驗(yàn)結(jié)果如表4所示,相比于YOLOv5(L)模型,改進(jìn)之后的YOLOv7模型mAP提高了3.6%,檢測(cè)速度提高了124.93 f/s;相比于YOLOv7–e6模型,改進(jìn)后的模型mAP提高了0.1%,F(xiàn)PS提高了47.1 f/s。由此可見改進(jìn)之后的YOLOv7模型具有更好的性能。
表4 不同檢測(cè)器試驗(yàn)對(duì)比Table 4 Comparative experiments with different detectors
本文針對(duì)飛機(jī)蒙皮損傷數(shù)據(jù)集等單一背景的特點(diǎn),以及主干特征提取網(wǎng)絡(luò)中卷積運(yùn)算通道冗余的問(wèn)題,對(duì)YOLOv7目標(biāo)檢測(cè)模型進(jìn)行了改進(jìn),使模型適用于飛機(jī)蒙皮損傷檢測(cè)等應(yīng)用場(chǎng)景。
(1)提出增強(qiáng)型頸部特征融合改進(jìn)算法,提高背景單一數(shù)據(jù)集的損傷識(shí)別精度和檢測(cè)速度。
(2)針對(duì)卷積運(yùn)算通道冗余的問(wèn)題,引入P–PWConv模塊,提出Backbone輕量化,以進(jìn)一步減少模型的參數(shù)量,提高損傷的識(shí)別效率。
(3)設(shè)計(jì)了基于不同增強(qiáng)型頸部特征融合改進(jìn)策略的飛機(jī)蒙皮損傷數(shù)據(jù)集驗(yàn)證試驗(yàn)、YOLOv7通道冗余改進(jìn)算法消融試驗(yàn)及不同檢測(cè)器對(duì)比試驗(yàn),驗(yàn)證了改進(jìn)后的YOLOv7在飛機(jī)蒙皮損傷數(shù)據(jù)集上的性能優(yōu)于原YOLOv7模型。
未來(lái)將會(huì)針對(duì)現(xiàn)有的飛機(jī)蒙皮損傷數(shù)據(jù)集存在的長(zhǎng)尾問(wèn)題和過(guò)多的模型參數(shù)量進(jìn)行改進(jìn),并將改進(jìn)的算法應(yīng)用到實(shí)際工作任務(wù)中。