杜虓龍,余華平
(長江大學(xué) 計算機科學(xué)學(xué)院,湖北 荊州 434000)
近年來,隨著家用汽車的日益普及,行車安全問題也與日俱增。根據(jù)美國國家公路交通局發(fā)布的調(diào)查數(shù)據(jù)顯示,其中有30%的車禍主要原因為駕駛員駕駛時分心[1]。中國作為發(fā)展中強國,人民經(jīng)濟水平不斷提高,汽車普及率也以極快的速度進行增長,所以對駕駛員進行實時監(jiān)控,快速準確地識別駕駛時的分心行為對解決交通安全問題來說變得尤為重要。
為解決這一問題,國內(nèi)外眾多學(xué)者主要通過3種方式:基于傳感器,基于計算機視覺以及基于兩者結(jié)合的方法[2]。不過,基于計算機視覺的解決方法還是占據(jù)主流位置,李振龍[3]提出了基于反向雙目的識別方法,通過Hough算法對駕駛車輛的車道偏移率進行計算,再結(jié)合車內(nèi)對駕駛員頭部姿態(tài)的識別分析,對兩者進行融合分析來進行識別,分析是否出現(xiàn)了分心現(xiàn)象。Ren[4]等提出通過Faster-RCNN網(wǎng)絡(luò)來識別駕駛員手中是否有手機來判斷是否為分心駕駛。陳軍等[5]提出了使用級聯(lián)卷積神經(jīng)網(wǎng)絡(luò)對駕駛員分心行為進行檢測的方法,通過構(gòu)建兩級神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)進行先粗略提取特征后精確識別的方法,使網(wǎng)絡(luò)檢測成功率相較于主流單模型檢測方法有了明顯提升。徐蓮等[6]提出了基于遷移學(xué)習(xí)的眼睛狀態(tài)識別網(wǎng)絡(luò),先利用級聯(lián)網(wǎng)絡(luò)對人臉進行識別,再利用GL-CNN對單個眼球進行開閉識別,再根據(jù)PERCLOSE準則對駕駛員進行疲勞判斷。
以上方法都基本解決了分心駕駛問題,但是存在計算的參數(shù)量過大,檢測類型過少等問題。
為解決上述問題,實現(xiàn)多種類分心識別,減少網(wǎng)絡(luò)參數(shù),加快網(wǎng)絡(luò)運行速度,本研究提出了通過改進后的Mobile Net-SSD[7]輕量級目標檢測網(wǎng)絡(luò),對駕駛員在駕駛時的正常駕駛、非正常駕駛、打電話、玩手機、喝水、調(diào)整收音機和手伸向后排這7種動作進行識別。其中,正常駕駛為無分心動作的駕駛行為,非正常駕駛為本研究新添加的類,原數(shù)據(jù)集中并沒有此類,在此主要作為手伸到后排、調(diào)整收音機和玩手機類的干擾類,并不作為主要分心動作進行檢測,主要用來檢測網(wǎng)絡(luò)在識別特征較為相近的不同類別時能否有效區(qū)分。
Single Shot MultiBox Detector(SSD)[8]目標檢測算法是近年來優(yōu)秀的one-stage目標檢測算法,該算法可以同時實現(xiàn)目標檢測[9]和分類[10]兩種任務(wù)。該算法利用卷積神經(jīng)網(wǎng)絡(luò)對圖片進行特征提取后,均勻地在圖片的不同位置進行抽樣,在抽樣時抽取不同特征尺度,增加多樣性,再將分類與預(yù)測同時進行,整個過程快速、準確。SSD算法精度和速度都優(yōu)于同類型的R-CNN系列和YOLO系列[11],但SSD網(wǎng)絡(luò)中大約有80%應(yīng)用于基礎(chǔ)網(wǎng)絡(luò)(VGG16),這導(dǎo)致網(wǎng)絡(luò)整體準確性不高。為此裴偉等[12]使用Restnet50替換VGG16主干網(wǎng)絡(luò),在引入特征融合機制后,使網(wǎng)絡(luò)準確性得到提高,但殘差網(wǎng)絡(luò)的網(wǎng)絡(luò)計算量較大,檢測時網(wǎng)絡(luò)運行時間較長。所以本研究使用更為輕便的Mobile Net網(wǎng)絡(luò)對VGG16網(wǎng)絡(luò)進行替換。替換后的網(wǎng)絡(luò)主要由深度可分離卷積和常規(guī)卷積組成,如圖1所示。
圖1 Mobile Net-SSD主要網(wǎng)絡(luò)結(jié)構(gòu)
深度可分離卷積將常規(guī)卷積操作拆分為深度卷積(Dw)操作和逐點卷積(Pw)操作。深度可分離卷積與常規(guī)卷積的對比圖如圖2所示。
圖2 卷積對比圖
其中,Dw使用Dk×Dk內(nèi)核的卷積層,在執(zhí)行操作時卷積核的數(shù)量與通道數(shù)相同,每個卷積核單獨對應(yīng)一個通道,且該通道不能與其他卷積核進行卷積運算。該操作結(jié)束后生成的特征圖數(shù)量與通道數(shù)相同。但是,Dw對每個通道進行單獨運算會導(dǎo)致無法有效利用相同空間信息,所以需要Pw操作來彌補此缺陷。Pw則為1×1×M尺寸的卷積,其中M為通道數(shù),Pw會將Dw生成的特征圖進行深度方向的加權(quán)操作,并輸出本階段特征圖。深度可分離卷積極大減少了計算參數(shù)量,優(yōu)化了分心駕駛檢測時出現(xiàn)冗余表達頻率較高的現(xiàn)象。
經(jīng)過深度可分離卷積得到特征圖,隨后通過批量歸一化(BN)和Rule6激活函數(shù)處理,BN層主要為防止梯度爆炸和發(fā)生過擬合,Rule6為非線性函數(shù),在輕量級神經(jīng)網(wǎng)絡(luò)中具有更好的魯棒性[13]。Rule6函數(shù)見式(1)。
y=min[max(z,0),6]。
(1)
傳統(tǒng)Mobile Net-SSD網(wǎng)絡(luò)將輸入圖片處理為多尺度圖片,提取出多尺度特征圖,再對目標進行檢測,分別檢測不同的特征細節(jié),該方法雖然有效,但Mobile Net網(wǎng)絡(luò)為輕型網(wǎng)絡(luò),存在較為明顯的缺陷,檢測準確度較差。并且由于網(wǎng)絡(luò)簡單,一些細節(jié)可能存在漏檢誤檢。這些問題經(jīng)過反復(fù)研究主要在淺層特征提取層中存在,為了解決上述問題,本研究提出一種新型MH-SSD網(wǎng)絡(luò)模型,見圖3。
圖3 MH-SSD模型
由圖1可知,傳統(tǒng)Mobile Net-SSD網(wǎng)絡(luò)取其中6層作為有效特征層進行檢測,分別為19×19,10×10,5×5,3×3, 2×2, 1×1。前3層由于特征圖較大會出現(xiàn)漏檢特征問題,本研究在這3層中加入混合空洞卷積(HDC)[14]擴大感受野,使得該3層的特征提取更加準確。后3層由于特征圖較小并不適用于HDC,所以不做改變,僅用1×1卷積進行降維處理。最后使用Concat函數(shù)對6個特征層進行疊加操作,融合不同尺度提取出的圖片特征,通過下采樣形成新的特征金字塔[15],在不同尺度上對分心駕駛進行預(yù)測。本方法解決了Mobile Net-SSD網(wǎng)絡(luò)的漏檢和特征丟失問題。
本研究也嘗試將后3層進行HDC處理,但結(jié)果并沒有前3層處理效果好,后續(xù)會在文中展示兩者處理后的不同結(jié)果。
本研究訓(xùn)練數(shù)據(jù)來自公開數(shù)據(jù)集State Farm Distracted Driver Detection[16],該數(shù)據(jù)集是將車內(nèi)的駕駛員動作進行拍攝并且對其進行分類,駕駛員為左邊駕駛,與國內(nèi)駕駛習(xí)慣一致,所以可以使用。本研究在對數(shù)據(jù)集進行研究后將數(shù)據(jù)集分成7類常見分心駕駛動作,分別為打電話、玩手機、手伸到后排、調(diào)整收音機、喝水、正常和非正常。非正常類與喝水類和打電話類共用數(shù)據(jù)集。原數(shù)據(jù)集將手機相關(guān)的類分為發(fā)送短信與打電話兩類,考慮到目前手機不僅有發(fā)送短信這一個功能,本研究將發(fā)送短信改為玩手機。
試驗數(shù)據(jù)總共使用11 060張圖片進行訓(xùn)練,圖片尺寸為300 pixel×300 pixel,對選取出來的圖片利用LabelImg軟件處理為標準PASCAL VOC數(shù)據(jù)集格式。在對圖片進行標注時,非正常類與喝水類和打電話類使用同張圖片。按照9∶1的比例將數(shù)據(jù)集切分為訓(xùn)練集和驗證集,測試集則另外挑選1 000張圖片用于測試網(wǎng)絡(luò)性能,如表1所示。
表1 數(shù)據(jù)集分類
MH-SSD網(wǎng)絡(luò)提取不同尺度分心特征,并通過事先設(shè)置好的先驗框?qū)俗^(qū)域進行檢測,網(wǎng)絡(luò)使用不同尺度特征圖對不同區(qū)域進行特征檢測。在淺層網(wǎng)絡(luò)特征圖尺度較大,可提取特征量較為豐富,又通過HDC進行感受野擴大,可在網(wǎng)絡(luò)前期有效提取特征關(guān)鍵信息點,進入深層網(wǎng)絡(luò)后,會使用步長為2的卷積方式調(diào)整特征圖的大小,進一步對特征進行提取操作。
網(wǎng)絡(luò)中6個有效特征層的先驗框個數(shù)為4,6,6,6,6,6,每個先驗框長寬比均不同,將每個網(wǎng)絡(luò)層的先驗框設(shè)為k,將特征圖尺寸設(shè)為n×n,則每個特征圖先驗框數(shù)量為k×n×n。由于數(shù)據(jù)集為人工標注,先驗框會與標注的目標產(chǎn)生位置、類別的誤差,所以根據(jù)Ground Truth匹配合適的先驗框進行數(shù)據(jù)訓(xùn)練,最后通過損失函數(shù)[17](見式2),執(zhí)行端對端前向傳播,確定最佳分心類別及先驗框位置坐標,見圖4。
圖4 網(wǎng)絡(luò)檢測過程
(2)
式中,N為正負樣本之和;c為預(yù)測類別置信度;l為邊界框的先驗框位置;α為調(diào)整兩個誤差的比例,默認為1。Lconf為置信度損失;Lloc為位置損失;x為真實邊框與預(yù)測邊框的匹配標識;g為真實邊框的坐標。
系統(tǒng):Window10
處理器:Intel(R) Core(TM) i7-8750H CPU @ 2.20 GHz 2.21 GHz
內(nèi)存:32 GB
GPU 型號:NVIDIA GeForce RTX 2080
Python 環(huán)境:Python3.7
TensorFlow 和 Keras 環(huán)境:TensorFlow-GPU==1.14.0,Keras==2.2.0
CUDA版本:CUDA==10.0
初始學(xué)習(xí)率設(shè)置為5e-4,并在訓(xùn)練時使用自適應(yīng)學(xué)習(xí)率調(diào)節(jié)算法對學(xué)習(xí)率進行實時調(diào)整。
本研究使用遷移學(xué)習(xí)[18]的方法對網(wǎng)絡(luò)進行訓(xùn)練,在對網(wǎng)絡(luò)結(jié)構(gòu)進行分析后可知本網(wǎng)絡(luò)前81層均為特征提取層,所以先將網(wǎng)絡(luò)特征提取層進行凍結(jié),使用預(yù)訓(xùn)練權(quán)重對后續(xù)網(wǎng)絡(luò)進行粗略訓(xùn)練,提取適應(yīng)分心檢測特征,再將特征提取層解凍,進行完全訓(xùn)練,這樣做可以在數(shù)據(jù)量無法達到類似Voc2017數(shù)據(jù)集的情況下,訓(xùn)練出泛化能力足夠強的深度神經(jīng)網(wǎng)絡(luò),減少了網(wǎng)絡(luò)的訓(xùn)練時間。
檢測類別及對應(yīng)準確率如表2所示。由檢測結(jié)果表2可知,改進后的網(wǎng)絡(luò)可以準確識別不同分心種類。
表2 模型檢測結(jié)果
為檢驗網(wǎng)絡(luò)的魯棒性與特征提取能力,對正常圖片進行模糊處理后再利用網(wǎng)絡(luò)進行檢測。檢測后的準確率如表3所示。
表3 模糊檢測結(jié)果
由表3可知,改進后的網(wǎng)絡(luò)可以對模糊處理后的分心動作做出準確識別,證明MH-SSD網(wǎng)絡(luò)的特征提取能力較強,魯棒性較好。
網(wǎng)絡(luò)訓(xùn)練中的學(xué)習(xí)率變化和損失率變化如圖5所示。其中,損失率隨著學(xué)習(xí)率的下降逐漸收斂,在80個epoch后趨于穩(wěn)定,最終達到最優(yōu)。
圖5 訓(xùn)練中數(shù)據(jù)變化情況
本次為輕量級目標檢測網(wǎng)絡(luò)的改進研究,使用平均準確率mAP(mean Average Precision)[19]和基于視頻流的實時檢測來評價網(wǎng)絡(luò)性能的優(yōu)劣。mAP是每一類AP取平均值求和除以類別總數(shù)得來,AP由每一類精確率(Precision)/召回率(Recall)曲線下的面積得來,具體計算公式如式(3)~(5)所示。
(3)
(4)
(5)
式中,TP為成功分類的正樣本;FP為錯誤分類的正樣本;FN為錯誤分類的負樣本。式(5)中p為Precision;r為Recall。
本網(wǎng)絡(luò)與SSD(VGG16)網(wǎng)絡(luò),Mobile Net-SSD網(wǎng)絡(luò),MH2-SSD網(wǎng)絡(luò)AP與mAP對比圖如圖6所示。
圖6 mAP對比圖與AP對比圖
其中,MH2-SSD網(wǎng)絡(luò)為后3層加入HDC處理網(wǎng)絡(luò),MH-SSD為前3層加入HDC處理網(wǎng)絡(luò)。從圖6的mAP對比圖中可以看出,在加入HDC處理網(wǎng)絡(luò)后,相較于傳統(tǒng)Mobile Net-SSD網(wǎng)絡(luò),改進后的網(wǎng)絡(luò)性能顯著增強。由圖6中AP對比圖可知,改進后的網(wǎng)絡(luò)每個AP值都優(yōu)于原始的Mobile Net-SSD網(wǎng)絡(luò)。MH-SSD網(wǎng)絡(luò)在識別Drinking類時效果遠高于MH2-SSD網(wǎng)絡(luò),這表示在小目標的特征提取上前3層加入HDC處理模塊的效果優(yōu)于后3層。由于本次研究使用輕量級網(wǎng)絡(luò),相較于成熟性高,網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜的SSD(VGG16)網(wǎng)絡(luò)性能略有損失。在網(wǎng)絡(luò)大小上,SSD(VGG16)為97 MB,Mobile Net-SSD為30 MB,MH-SSD為41 MB,MH2-SSD為43 MB。綜上所述,改進后的MH-SSD網(wǎng)絡(luò)在性能上相較于同類型的輕量級網(wǎng)絡(luò)具有顯著優(yōu)勢,在網(wǎng)絡(luò)大小上相較于SSD(VGG16)網(wǎng)絡(luò)占用更少的空間。
另外,由圖6中AP對比圖可知,打電話類別在4個網(wǎng)絡(luò)中的AP值均低于85%。通過對網(wǎng)絡(luò)及數(shù)據(jù)集的研究判斷,造成此結(jié)果的原因可能為,打電話的不同人員因手持電話露出的大小不同,導(dǎo)致網(wǎng)絡(luò)無法準確判斷手機是否存在,僅僅只能依靠人物動作進行判斷,而人物動作判斷又會被非正常駕駛行為干擾,導(dǎo)致出現(xiàn)誤判現(xiàn)象。
為檢測MH-SSD網(wǎng)絡(luò)是否具有實時檢測功能,本研究使用幾組自制短視頻對網(wǎng)絡(luò)進行檢測。
自制短視頻被分為a,b和c這3組,每組的光照強度及人員身著顏色不同。其中,a組與c組為同一人,為檢測光照條件不同情況下檢測情況;b組與c組光照相同,為檢測人員衣著與車內(nèi)顏色相近時的檢測情況。
通過不同網(wǎng)絡(luò)對3段視頻檢測后發(fā)現(xiàn),在衣服與車內(nèi)顏色相近時手伸向后排的動作會被誤判為非正常行為的概率有明顯提高現(xiàn)象,其中MH-SSD誤判率為5.3%,Mobile Net-SSD誤判率為8.3%,SSD(VGG16)誤判率為4.3%。這表明駕駛員衣著顏色對網(wǎng)絡(luò)檢測會產(chǎn)生影響。
在對光照不同的a,c兩組視頻進行檢測后發(fā)現(xiàn),僅Mobile Net-SSD對手伸向后排與打電話這兩類的分心動作出現(xiàn)誤判現(xiàn)象,且誤判率為5.2%。文中其他網(wǎng)絡(luò)誤判率均低于3%,這表明不同光照對網(wǎng)絡(luò)影響較小。
經(jīng)過試驗可知,Mobile Net-SSD在提取特征時受到了非正常類的干擾,相較于其他網(wǎng)絡(luò)并不能有效檢測特征較為相近的不同類別。
本研究提出了一種基于輕量級網(wǎng)絡(luò)的分心駕駛檢測方法,本研究通過在Mobile Net網(wǎng)絡(luò)的淺層網(wǎng)絡(luò)引入HDC處理模塊的方法,解決了傳統(tǒng)Mobile Net-SSD網(wǎng)絡(luò)在淺層網(wǎng)絡(luò)提取特征時容易出現(xiàn)對特征誤檢漏檢的缺陷,建立了MH-SSD駕駛員分心檢測網(wǎng)絡(luò)模型。主要研究結(jié)論如下。
(1)本研究通過對比在淺層網(wǎng)絡(luò)和深層網(wǎng)絡(luò)進行網(wǎng)絡(luò)改進的不同結(jié)果,得出淺層網(wǎng)絡(luò)改進優(yōu)于深層網(wǎng)絡(luò)改進的結(jié)論。
(2)通過改進后的MH-SSD網(wǎng)絡(luò)與另外3種網(wǎng)絡(luò)的mAP值對比。其中,MH-SSD為94.01%,Mobile Net-SSD為91.82%,說明改進后的網(wǎng)絡(luò)優(yōu)于傳統(tǒng)的Mobile Net-SSD網(wǎng)絡(luò)。
(3)文獻[5]中試驗數(shù)據(jù)與本研究試驗數(shù)據(jù)一致,均來自同一數(shù)據(jù)集。通過本研究改進后的MH-SSD網(wǎng)絡(luò)檢測平均準確率與文獻[5]中的級聯(lián)卷積神經(jīng)網(wǎng)絡(luò)試驗結(jié)果中的準確率對比可知,前者高于后者,得出MH-SSD網(wǎng)絡(luò)可以有效提高檢測準確度的結(jié)論。
(4)通過自制短視頻對MH-SSD網(wǎng)絡(luò)進行驗證,由驗證結(jié)果可知,網(wǎng)絡(luò)運行時畫面幀數(shù)平均為25幀,除打電話類別外,其余類別均在90%以上。得出MH-SSD網(wǎng)絡(luò)可以滿足實時檢測的結(jié)論。
綜上所述,本研究提出的MH-SSD駕駛員分心行為檢測網(wǎng)絡(luò)模型,可以實現(xiàn)對駕駛員分心行為的準確檢測,并且網(wǎng)絡(luò)準確率更高,網(wǎng)絡(luò)計算參數(shù)更少,有助于將該網(wǎng)絡(luò)部署于移動端實現(xiàn)車內(nèi)檢測。
下一步工作將針對打電話時準確率低的情況和衣服顏色與車內(nèi)裝飾顏色相近時誤檢率高的情況進行進一步研究,并考慮加入單獨識別手機模塊和顏色識別模塊來進行輔助識別。本研究因為圖片拍攝角度問題,沒有進行疲勞駕駛等類別的識別,日后將加入此項類別的識別。