鄧樂武,成金濤,曾蘇凡
(航空工業成都飛機工業(集團)有限責任公司,四川 成都 610091)
目前,飛機進行飛行前檢查時通常采用唱檢的方式,依據檢查單內容,檢查飛機座艙開關、關鍵部位保險銷、起落架等是否符合放飛要求。以座艙開關為例,機務人員需確認座艙上所有開關的狀態是否正確。由于開關較小、數目過多,部分外觀又大體相同,且排列較為緊密(如圖1所示),人為檢查非常容易出現錯、漏檢的情況,進而引發飛行安全問題。所以,用機器來代替人工進行檢查是必然趨勢,能有效降低人為出錯率,保障飛機放飛的安全性。

圖1 典型飛機座艙開關
目前常見的基于深度學習的目標檢測方法有 CNN(Convolutional Neural Networks)、R-CNN(Region-CNN)、Fast R-CNN、Faster R-CNN、YOLO算法(You Only Look Once:Unified,Real-Time Object Detection)等。典型算法Faster R-CNN雖然在目標檢測應用領域(如行人、車輛識別[1]等)具有不錯的識別準確率。但座艙開關圖像中開關具有目標較小、數量多、背景復雜且存在部分遮擋等特點,若直接應用Faster R-CNN算法識別座艙開關狀態,識別效果不穩定,易出現部分遮擋開關漏檢或開關狀態誤檢等情況。
針對提取的特征網絡可能影響開關檢測及狀態識別準確率問題,以Faster R-CNN算法為基礎,以座艙開關為具體檢測對象,針對座艙開關狀態識別的特殊環境和需求,對Faster R-CNN算法相關部分進行改進,并設計相關的實驗驗證改進后的Faster R-CNN算法的可行性和準確率。
傳統機器視覺的目標檢測方法一般先從圖片中提取候選區域,然后用方向梯度直方圖(Histogram of Oriented Gradient,HOG)[2]等提取特征,最后用支持向量機(Support Vector Machines,SVM)[3]、Adaboost[4]等分類器進行分類。這些檢測方法雖然省去了大量重復性的人工檢查,但準確率并不高。近年來,隨著深度學習的興起及其在圖像分類中的優異表現,出現了很多基于深度學習的目標檢測算法,其精度與傳統方法相比有了質的飛躍。其基本思想是:假設邊界框,并對每個框的像素或特征進行重新采樣,最后用高質量分類器進行分類,代表性算法有Faster R-CNN[5]。為減少計算量,YOLO[6]只設計單個網絡,用網格將候選區域縮小,直接在輸出層進行多目標的矩形框回歸和類別判定,該方法雖然精度不如Faster R-CNN,但計算量較前者大大降低。SSD(Single Shot MultiBox Detector)[7]針對YOLO缺點,使用小卷積核來預測目標類別的目標矩形框的偏移,且網絡設計結合了CNN中不同分辨率的多個特征層來解決不同尺寸目標的檢測問題,因此該模型在相對低分辨率的輸入下也能夠獲得比較高的準確率。雖然對于一般物體的檢測而言,SSD能夠勝任,但由于SSD沒有用到比較低層的特征,而這些低層的特征對于檢測小物體是非常重要的,所以SSD對小物體的檢測效果并不理想。
為了提高物體檢測識別的精度,VGG(Visual Geometry Group)、Inception等網絡都在增深或增寬網絡,雖然深度和寬度是衡量模型的重要指標,但隨著網絡深度的增加,可能會導致梯度彌散等情況發生,最終使訓練困難,精度也無法提高。故一般選用深度殘差神經網絡(Deep Residual Network,ResNet)[8]來提升所提取特征的表征力。
傳統的Faster R-CNN算法其網絡結構是將特征提取、候選區域提取、邊框回歸和分類全部整合到一個網絡中,該算法提出了區域生成網絡(Region Proposal Network,RPN),代替了之前 R-CNN 和 Fast R-CNN 中的選擇性搜索方法,使得其目標檢測的綜合性能有了較大提高。Faster R-CNN 網絡結構[9]如圖2所示。

圖2 Faster-R-CNN網絡結構
針對飛機飛行前檢查的主要檢測場景,例如飛機座艙開關、斷路器開關的目標檢測,其主要特點是待檢測開關尺度較小,分布也較為密集,并且同一開關有多種狀態需要進行區分。傳統的Faster R-CNN算法在進行目標檢測時,雖能較好地識別開關,但是開關位置的識別比較粗略。這主要是因為Faster R-CNN僅采用頂層特征做預測,雖然通過在高層特征圖上提取語義信息豐富的特征有利于目標識別,但卻不利于目標定位,尤其不利于小目標定位。
而在飛機座艙場景中,待檢測的開關普遍較小,如果只用頂層特征進行預測,就會導致檢測結果不理想。所以這里既要利用高層的強語義特征,同時也要利用低層的高分辨率特征,這樣才能有效提升開關檢測率。
為保證檢測精度,先對基礎網絡從低到高抽取不同尺度的特征層,經過多次上采樣融合特征到最后一層,用最后生成的特征做預測,如圖3所示。這樣便能夠將低分辨率、強語義的特征和高分辨率、弱語義特征結合在一起,繼而盡可能體現不同尺度特征圖的價值。

圖3 特征融合方式
基于特征融合的改進 Faster R-CNN網絡結構(Faster R-CNN*)如圖4所示。在原 Faster R-CNN 網絡的基礎上,以 VGG16 網絡作為基礎特征提取網絡[10],并針對座艙開關的特點,融合了4個卷積層提取出的特征,形成新的特征;接著將融合后的特征送入 RPN中生成候選區域,為了避免候選區域建議框之間的重疊或覆蓋,使用軟化非極大值抑制(Soft Non-Maximun Suppression,Soft-NMS)算法代替非極大抑制(Non-Maximun Suppression,NMS)算法,減少假陽性樣本的數量。ROI(Region of Interest)池化層將 RPN獲取的區域候選框與卷積特征圖整合起來,提取建議特征圖,送入后續全連接層判定目標類別和獲取檢測框位置。

圖4 基于特征融合的改進 Faster R-CNN網絡結構
基于特征融合的改進 Faster R-CNN網絡的特征融合如圖5所示,這里抽取基礎網絡的4層特征進行融合,這4層特征圖大小分別為56×56,28×28,14×14和7×7;之后對4層特征圖分別用1×1卷積都統一降維到128,并用上采樣卷積將其3層較小尺寸的特征圖分別擴大到與被選擇融合的最低層特征圖一樣的尺寸大小(即56×56),然后將維度和尺寸統一后的4層特征圖進行Concat連接生成新的特征圖送入RPN。

圖5 基于特征融合的改進 Faster R-CNN網絡的特征融合
表1為Faster R-CNN和Faster R-CNN*的對比實驗,基礎網絡為VGG16,實驗數據為大約2300張座艙開關樣本,其中1900張用于訓練,其余用于測試。由表1可知,對于座艙開關這一小目標的檢測場景而言,Faster R-CNN*的方法明顯要比Faster R-CNN的檢測效果好,這主要得益于其融合了低層高分辨率的特征。

表1 Faster R-CNN和Faster R-CNN*座艙開關檢測效果對比
在圖5中,選擇了4層特征進行融合,同時選取5層(112×112,56×56,28×28,14×14和7×7)和3層(56×56,28×28和14×14)特征進行融合,并針對座艙開關檢測場景進行對比實驗,對比效果如表2所示。由表2可知,當融合的特征層數變多(5層,增加112×112特征層),性能卻并沒有提升,這是因為層數雖然變多且包含分辨率更大的低層特征信息,但其語義信息較弱,所以即便定位精度有所提升,而其識別精度卻會有所降低;當層數減少(只有3層特征進行融合)時,檢測性能也隨之下降。綜上所述,確定用4層特征進行融合。

表2 3~5層特征融合識別效果對比
對開關類小目標的檢測進行了網絡算法構造,但這種特征融合雖然對小物體檢測提升較為明顯,但同時又輕微降低了對一般大小目標的檢測效果,并且犧牲了不同尺度下的特征一致性。針對該問題,重新對物體的感受野進行思考,一般對于檢測而言,除了基礎網絡的深度和寬度,感受野也會影響最終檢測性能。這里認為感受野體現在卷積核的尺度上,用卷積核的膨脹系數(空洞卷積[11])控制感受野的區域。
在設計網絡時既要考慮一般大小物體的同時又要考慮小物體的檢測,所以通過改變基礎特征提取網絡VGG16中第2~5段卷積層的3×3卷積的膨脹系數來生成兩個分支[12],其結構如表3所示。

表3 VGG16結構
在表3中第2~5段卷積層共有11個卷積層,每段結尾連接一個最大池化層用于縮小圖片尺寸。改變這11個3×3卷積的膨脹系數,生成兩個分支,分別對應小目標和一般大小目標,這兩個分支的膨脹系數分別設為1和2。兩個分支對應不同大小的感受野,因為較大的感受野對大目標較為敏感,反之小感受野與小目標相關性更好。
基于特征融合的多分支Faster R-CNN網絡結構(Faster R-CNN**)如圖6所示。基礎特征提取網絡分為感受野不同的兩個分支,再分別進行特征融合,分別送入RPN進行預測,再用Soft-NMS結合兩個分支的區域建議,送入后續的ROI池化層和全連接層。這兩個分支除了卷積核的膨脹系數不同外,共享其他的參數權重。需要注意的是,多分支所用的卷積膨脹系數也包括特征融合時的上采樣階段。

圖6 基于特征融合的多分支Faster R-CNN網絡結構
表4為Faster R-CNN*和Faster R-CNN**的對比實驗結果。由表3可知,多分支結構對檢測性能的提升是明顯有效的。原因在于對卷積核進行不同程度的膨脹,使不同尺度下特征表達能力比較一致,兼顧了小目標和一般大小目標的檢測效果。

表4 Faster R-CNN*和Faster R-CNN**座艙開關檢測效果對比
本文就飛機放飛前檢查存在的一系列問題做了簡要分析,將現有的基于深度學習目標檢測算法進行梳理,再結合實際場景進行應用。針對飛機放飛前座艙開關狀態檢測這一實際場景,在現有算法基礎上做了一些改進和構造,改進后的算法在實驗中表現良好,開關狀態檢測效果較原算法有了明顯提高。
實驗證明,將深度學習方法應用在飛機維護領域是有效的,其精度和速度都較傳統的人工檢查有大幅提升。限于時間和資源,算法改進尚有不足,例如對于微小物體的檢出(放飛前保險絲檢查)和一般大小物體同時檢出(放飛前檢查場景多、目標大小不一)等情況,還待改進和研究。這也將是以后針對飛機裝配過程中使用人工智能技術進一步提高裝配效率、保證裝配質量的重要研究方向。針對網絡過深或者模型參數量過大的問題,為了減小存儲計算開銷和拓展CNN在某些低功耗領域的應用,今后會考慮MobileNet系列等其他算法。