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