張江勇 周一林 陳金皖
(中國直升機設計研究所,江西 景德鎮(zhèn) 333000)
隨著航空工業(yè)的快速發(fā)展,飛機的生產(chǎn)量和保有量都得到極大的增長,越來越多的人選擇飛機作為長距離出行的交通工具。雖然飛機是目前安全系數(shù)最高的出行方式,但是飛機一旦發(fā)生事故,乘客基本無法逃生,還會造成大量的經(jīng)濟損失。目前,人們在提升飛機的安全性上付出了巨大努力,但是飛機飛行仍然存在極大的安全隱患。根據(jù)已知事實,引起飛機事故的原因主要包括飛行員失誤、機械故障以及天氣問題等。由飛機性能缺陷引發(fā)墜機事故的比例逐漸下降,而飛行員不佩戴安全帶、疲勞駕駛等違規(guī)行為是造成飛行員失誤的重要原因,這些違規(guī)行為造成的危害是巨大的,因此,該領域?qū)ψ詣訖z測飛行員違規(guī)行為有很大的需求。
目前,國內(nèi)外對飛行員違規(guī)行為的研究非常少,對汽車駕駛員違規(guī)行為的研究要稍多一些,這些研究多采用傳統(tǒng)目標檢測算法對其進行檢測[1]。傳統(tǒng)的目標檢測方法需要先進行極其復雜的特征提取工作,而且根據(jù)研究對象的不同,要獲取不同的特征。該方法對圖像預處理的專業(yè)性有極高的要求,需要大量的時間成本,而且在實際應用中誤測和漏測的情況比較多,檢測速度也不快。
近年來,深度學習[2]因其強大的學習能力在計算機視覺領域取得了巨大的發(fā)展。作為計算機視覺的1個重要分支,目標檢測算法也從基于手工特征的傳統(tǒng)算法轉(zhuǎn)向了基于神經(jīng)網(wǎng)絡的檢測技術。與傳統(tǒng)方法相比,基于深度學習的目標檢測算法全面提升了檢測的精度和檢測的速率[3]。飛行員行為監(jiān)控實質(zhì)上也是1個目標檢測問題,為了適應機載硬件環(huán)境,該文基于YOLO算法進行改進,在電腦上進行訓練,將訓練后的模型導入Atlas500智能小站進行預測。實驗表明,通過改進較大地提高了算法的精度和檢測的速度。
目前,基于深度學習的目標檢測算法主要分為以下2種:1) 需要分成2步的檢測算法,先獲取候選區(qū)域,再進行分類。2) 將目標檢測統(tǒng)一為1個回歸問題,將整張圖片作為網(wǎng)絡的輸入,直接在輸出層對分類框的位置和類別進行回歸,例如YOLO算法。由于YOLO算法在檢測精度和檢測速度上都有優(yōu)勢,因此該文將采用YOLO作為算法框架,基礎結構如圖1所示。
圖1中,Conv.Layer為卷積層,Maxpool Layer為最大池化層,Conn.Layer為全連接層。其中,特征提取網(wǎng)絡是整個結構中最重要的部分,在YOLO中使用的GoogleNet,共包括16個卷積層。實驗證明,在一定范圍內(nèi)增加卷積神經(jīng)網(wǎng)絡的深度會提升網(wǎng)絡模型的性能,隨著網(wǎng)絡越來越深,模型訓練也會越來越困難,并且網(wǎng)絡模型的性能反而會下降。但是通過殘差模塊成功訓練出了152層的深度網(wǎng)絡,在ImageNet比賽top5上的分類誤差僅為3.57%,一般來說,在圖像分類任務中表現(xiàn)越好,其特征提取能力和網(wǎng)絡性能也越好。1個基本的殘差模塊如圖2所示。
在圖2中,F(xiàn)(x)為訓練目標,ReLU(線性整流函數(shù))為激活函數(shù)。輸入為x,期望輸出為H(x),如果在一般的神經(jīng)網(wǎng)絡中,會直接訓練得H(x),而在殘差模塊中建立了1條輸入輸出的通道,訓練目標變成了F(x)=H(x)-x,即殘差,中間層只需要學習輸入和輸出之間的殘差,因此擬合殘差變得更加容易。殘差網(wǎng)絡參與訓練的參數(shù)越少,圖像分類的性能就越優(yōu)秀,因此將殘差網(wǎng)絡作為目標檢測的特征提取網(wǎng)絡會取得更好的效果。
雖然殘差模塊可以提高網(wǎng)絡的性能,但殘差網(wǎng)絡仍然有很大的計算量,有限的機載硬件并不能滿足其所需要的計算力,因此需要進一步降低網(wǎng)絡的計算量。網(wǎng)絡模型預測計算量過高的1個重要原因是網(wǎng)絡優(yōu)化中的梯度信息重復,該文通過將梯度變化從頭到尾地集成到特征圖中,在一定程度上可以解決該問題,該處理思想與殘差模塊相結合可以得到CSP-ResNet基本模塊,如圖3所示。
該文將上層的特征圖分成2個部分,一部分不執(zhí)行卷積操作,一部分通過殘差模塊執(zhí)行卷積操作,通過該方式增加梯度路徑,另外設計局部過渡層使梯度組合差異最大化。部分過渡層是1種層次化的特征融合機制,它采用截斷梯度流的策略來防止不同層出現(xiàn)學習重復的梯度信息。
圖1 YOLO網(wǎng)絡結構
圖2 ResNet基本模塊
圖3 CSP-ResNet模塊
該文采用ResNet101網(wǎng)絡作為基準網(wǎng)絡,使用CSPResNet模塊代替原本的殘差模塊,該網(wǎng)絡可以在減少了計算量的同時保證計算的準確率。
要設計1個好的卷積神經(jīng)網(wǎng)絡,僅搭建好網(wǎng)絡結構是不夠的,如果沒有對網(wǎng)絡進行優(yōu)化,即使是1個很好的結構,其優(yōu)勢也很難發(fā)揮出來。
在訓練神經(jīng)網(wǎng)絡時,往往會因網(wǎng)絡模型而對樣本數(shù)據(jù)的過度學習造成過擬合,具體表現(xiàn)為隨著迭代次數(shù)的增多,訓練誤差不斷下降,但是其在驗證集上的誤差反而先降低后升高。目前,絕大部分目標檢測算法使用Droupout方法,即通過隨機減少神經(jīng)元數(shù)量解決該問題。但是卷積層對這種隨機丟棄并不敏感,卷積層仍然可以從相鄰的激活單元學習到相同的信息。因此,在全連接層上效果很好的Dropout,在卷積層上效果并不好。該文隨機對每層特征圖的局部區(qū)域進行刪減丟棄,對網(wǎng)絡的正則化過程進行了全面改進。
除此之外,該文還使用了Mish激活函數(shù),在ImageNet數(shù)據(jù)集上做分類任務時,使用了Mish激活函數(shù)的Top-1和Top-5的精度比沒有使用時都要高一點。
根據(jù)規(guī)定,飛行員在飛行中除非為了履行職責和生理需求,必須系好安全帶。在四川航空8633號班機事故中,風擋碎裂的瞬間,產(chǎn)生的吸力非常大,副駕被吸出艙外,但是安全腰帶勾住了他,才避免了發(fā)生更嚴重的事故。系好安全帶能夠增加安全的保障,因此檢測飛行員是否系安全帶是十分必要的。另外,如果飛行員在飛行中有抽煙、玩手機等危險駕駛行為,會分散飛行員的注意力,嚴重影響飛行員的正常操作,存在極大的安全隱患,因此及時監(jiān)控到這些危險駕駛行為也十分重要。
深度卷積神經(jīng)網(wǎng)絡的訓練需要大量的樣本數(shù)據(jù),否則很難訓練出1個性能良好的網(wǎng)絡模型。以用于國際計算機視覺競賽的Pascal VOC數(shù)據(jù)集為例,訓練集、測試集和驗證集加起來總共11530張圖片,其中包括了20類常見物體。由于該文討論的是基于深度學習的飛行員行為檢測,因此準備了1份飛行員違規(guī)行為數(shù)據(jù)集,包括飛行員不系安全帶違規(guī)行為圖片500張和飛行員抽煙違規(guī)行為圖片300張,共800張。
深度卷積神經(jīng)網(wǎng)絡的訓練屬于監(jiān)督學習,因此需要給圖像數(shù)據(jù)添加標簽。該文使用LabelImg作為標注工具,導入樣本數(shù)據(jù),直接手動標注飛行員違規(guī)行為并保存。保存經(jīng)過標注的數(shù)據(jù)集會生成XML文件,該文件包括了實現(xiàn)目標檢測訓練的重要基礎信息,包括標注的圖像的像素、通道數(shù)以及標注框內(nèi)部對象的類別及其坐標信息。
深度學習網(wǎng)絡模型的訓練要求是將樣本數(shù)據(jù)隨機分為訓練集、驗證集和測試集。訓練集主要用來訓練網(wǎng)絡模型,通過反向傳播算法擬合網(wǎng)絡模型的最優(yōu)參數(shù)。測試集主要用來評估最終網(wǎng)絡模型的泛化能力,一般主要根據(jù)測試集在網(wǎng)絡模型上的誤差判斷它的優(yōu)劣。驗證集的作用是對網(wǎng)絡模型進行初步評估,它被輸入模型訓練中,但是并不參與訓練,例如模型在訓練集上的準確值是0.9,而在驗證集上的準確值只有0.4,就可以知道網(wǎng)絡模型發(fā)生過擬合。這樣在訓練中就可以對模型做初步評估,與訓練完再在測試集上評估相比,該方法節(jié)省大量時間。
因為該文樣本數(shù)據(jù)集有限,所以需要更大比例的訓練集,因此只在每種違規(guī)行為中取30個作為測試集,30個作為驗證集。完成上面所有步驟后就完成了數(shù)據(jù)集的制作,可以直接將該數(shù)據(jù)集輸入卷積神經(jīng)網(wǎng)絡中進行訓練和測試。
深度學習模型的運算主要依靠計算機的GPU來完成,要對飛行員的行為監(jiān)控進行實時檢測,就需要GPU有足夠的算力,一般GPU的性能越好,需要的主機體積也越大。但是由于機載環(huán)境有限,不能使用占用空間很大的主機來運行深度學習模型。Atlas 500 智能小站是華為面向廣泛邊緣應用場景的輕量邊緣設備,具有超強計算性能、大容量存儲、配置靈活、體積小、支持溫度范圍寬、環(huán)境適應性強以及易于維護管理等特點。Atlas 500 智能小站滿足機載環(huán)境區(qū)域的應用,符合該文實驗的硬件要求,因此該文使用該設備作為實驗平臺。
Atlas 500Host側的CPU使用的是Hi3559A,Hi3559A是Armv8-a架構的64位CPU。由于Atlas 500沒有可以在Hi3559A上運行的編譯工具,因此在編譯程序時,需要先在x86平臺上進行交叉編譯,再將編譯后的軟件拷貝到Atlas 500的Hi3559A上運行。開發(fā)機配置見表1。
表1 實驗訓練環(huán)境
由于該文數(shù)據(jù)集有限,因此在輸入端使用了Mosaic數(shù)據(jù)增強方法,即隨機使用4張圖片,隨機縮放,再隨機分布進行拼接,大大豐富了檢測數(shù)據(jù)集,而且隨機縮放增加了許多小目標,增強了檢測小目標的能力,讓網(wǎng)絡的魯棒性更好。
實驗結果見表2。網(wǎng)絡模型的訓練都設置了60000次迭代,使用Mini-Batch梯度下降法,初始學習率設為0.01。
表2 飛行員違規(guī)行為數(shù)據(jù)集在不同網(wǎng)絡模型上的運行結果比較
由表2可以看出,與GoogleNet基礎網(wǎng)絡相比,ResNet101基礎網(wǎng)絡的檢測精度和檢測速度都有很大的提升;另外,該文提出的CSP-ResNet101網(wǎng)絡可以大幅減少計算量,同時大幅提升檢測速度,但是檢測準確率保持不變或者略有提升,每秒傳輸幀數(shù)只有58,達到了實時檢測的要求。綜上所述,該文所提出的基礎網(wǎng)絡優(yōu)化方法提升了飛行員行為檢測的準確性和速度,可以實現(xiàn)監(jiān)控飛行員的功能。
該文對于飛行員行為監(jiān)控方法進行了深度研究,提出了1種基于深度學習的檢測方法,其在基于YOLO算法的框架下,針對基礎網(wǎng)絡進行改進,利用殘差模塊擬合殘差,將網(wǎng)絡的深度提升至101層,大幅提升了網(wǎng)絡的性能,并提出將梯度的變化從頭到尾地集成到特征圖中,避免了大量的信息重復,進一步減少了計算量。另外,為了滿足機載使用,該文在體積很小的Atlas500智能小站上進行實驗,實驗結果證明,該算法能夠有效、實時檢測到飛行員的違規(guī)行為,通過提醒飛行員,可以在一定程度上避免飛行事故的發(fā)生。