周 揚, 張瑞賓
(1.西安航空學院車輛工程學院, 西安 710077; 2.長安大學汽車學院, 西安 710064;3.桂林航天工業學院汽車與交通工程學院, 桂林 541004)
駕駛分心是導致交通事故的重要原因之一。在美國,2017年有9%的致死事故與駕駛分心相關, 3 166人因駕駛分心所導致事故而死亡[1]。在挪威, 2011—2015年發生的致死交通事故中有近1/3的事故與駕駛分心有關,其中使用手機導致了2%~4%的致死事故,而其他分心行為如交談、操控車內娛樂設施等導致了10%的致死事故[2]。因此研究駕駛分心識別對于減少交通事故、提高行車安全具有重要的意義。
為了研究方便,學者將駕駛分心分為4種基本類型[3],包括認知分心(走神)、視覺分心(駕駛人視線離開前方道路)、聽覺分心(交談、聽歌)以及動作分心(手離開方向盤)。在實際情況下,駕駛人的一種駕駛分心行為可能包括幾種分心類型,比如發短信,就包含有視覺、認知及動作分心3種分心類型。不同駕駛分心行為對行車安全會造成不同程度的影響,研究普遍認為包含視覺分心的駕駛分心行為會導致更大的行車風險。Klauer等[4]采用100輛車的自然駕駛數據統計后發現,駕駛人視覺分心超過2 s將使事故風險增加2倍;而Fitch等[5]研究發現駕駛人手持電話(主要為動作和認知分心)對行車安全不存在顯著影響。
在駕駛分心識別的相關研究中,可按照所采用特征的不同分為基于車輛特征和基于駕駛人特征2種類型。前者不直接針對駕駛人,而是間接通過駕駛人操控車輛時的績效表現來識別分心。馬艷麗等[6]采用車速、加速度、車輛橫向位移等特征構建了識別模型,對駕駛人操縱車載信息系統的判別準確率達到89.86%;Li等[7]利用實車自然駕駛數據提取的駕駛人視覺-動作分心下的兩個敏感特征建立識別模型,模型的識別準確率為93%。基于駕駛人特征識別駕駛分心是更為直接的方法。文獻[8-9]中分別采用了駕駛人眼動特征實現了駕駛人視覺分心及認知分心的識別;Liu等[10]融合駕駛人眼動及頭動特征,通過半監督學習方法訓練了認知分心識別模型;Miyaji等[11]結合了駕駛人眼動、頭動及心電特征并利用Adaboost算法建立識別模型,對駕駛人交談及做算術引發的認知分心識別準確率達到89.8%和90.3%。
上述方法雖已被證明可有效識別駕駛分心,但仍面臨以下問題:①僅能區分一種駕駛分心行為與正常駕駛,如區分視覺-動作分心行為與專注駕駛,無法對多種駕駛分心行為及正常駕駛進行分類。由于駕駛人不同的駕駛分心行為對行車安全會產生不同程度的影響,設計能夠區分多種分心行為的駕駛分心識別模型可為建立具有不同預警等級的駕駛分心預警系統提供基礎。②所依賴設備如眼動儀、生理儀較為昂貴、侵入性強[12],不易在實車條件下應用。雖然基于車輛特征的方法所依賴傳感器在當前汽車上已有裝備,但由于該方法應用的前提是駕駛人直接操控車輛,因此在當前的輔助駕駛及未來的人車共駕情景下,無法應用此方法進行駕駛分心判別。
由于駕駛人的常見駕駛分心行為具有不同的圖形特征,研究者開始利用駕駛人圖像識別駕駛分心行為。基于圖像的方法僅需在車內安裝攝像頭,易于實現,隨著近年來計算機視覺技術的發展,利用深度學習方法亦可準確地實現圖像分類。Hssayeni 等[13]對比了采用傳統人工設計特征構建的支持向量機分類模型與卷積神經網絡(convolutional neural network, CNN)模型對多種駕駛行為的識別效果,發現前者的識別準確率(27.7%)遠低于CNN模型(84.6%)。徐丹等[14]采用CNN構建駕駛人非安全駕駛行為識別模型,與先提取圖像方向梯度直方圖特征再進行分類的傳統方法相比,識別準確率平均提高了3.62%。
訓練CNN深度模型需要花費大量時間來確定模型的最佳結構、神經元數量及其他參數,一種更節省時間的方法是利用已在大型數據集中訓練及驗證的CNN模型進行遷移學習。戎輝等[15]利用遷移學習對AlexNet卷積神經網絡進行微調,實現了7種駕駛行為的識別,準確率達到97.8%。Li等[16]利用神經網絡結構YOLO(you only look once)實現了對包括駕駛人使用觸摸屏、打手機及正常駕駛3種駕駛行為的判別,模型對應的F1評分分別達到0.84、0.69、0.82。陳軍等[17]基于遷移學習方法提出了級聯神經網絡模型,針對駕駛員駕駛分心行為進行檢測,準確率可達93.3%。
CNN模型一般采用端對端的訓練方式,在給定圖片及對應類別標記的條件下,模型直接學習從圖片到類別的映射關系,其黑箱性的特點決定了其存在解釋性較差的缺陷[18]。然而,研究人員及用戶需要了解模型判定類別的依據,據此才能建立對模型的信任。尤其是針對駕駛人駕駛分心行為的識別,若模型根據圖像中無關的特征來判別駕駛分心行為,則在實際應用中可能造成大量誤判而導致駕駛人關閉系統。
對CNN模型進行可視化有助于解釋模型,近年來有大量研究采用如導向反向傳播[19]、反卷積[20]、基于梯度的類激活映射[21](Grad-Cam)等神經網絡可視化方法研究對CNN模型的分類依據進行解釋。在這些方法中,采用Grad-Cam方法可提取模型分類時的重點關注區域(模型分類時所主要依據的圖像區域),且不需要改變原模型結構。
基于上述分析,盡管已有部分研究基于CNN模型和遷移學習方法實現了駕駛行為的識別,然而現有研究中并未深入研究CNN模型的解釋,為此現基于遷移學習方法構建駕駛分心行為判別模型,為提高模型的可解釋性,將結合Grad-Cam算法提取模型識別駕駛行為類別時的重點關注區域并進行可視化,據此分析模型是否學到了駕駛分心行為判別的關鍵特征,以期為構建兼顧應用性和解釋性的駕駛分心行為識別系統提供參考。
遷移學習方法可將已在任務A中所學的知識或技能轉移以應用于新任務B中[22]。在應用遷移學習方法時,一般將已在大規模數據集上進行訓練的神經網絡模型部分層參數進行固定,而只訓練模型的最后1層或幾層參數。新模型可保留原訓練模型已具備的能力,經過訓練的新模型亦可更好地完成新的任務。
選擇遷移學習方法構建駕駛分心行為識別模型的原因在于:①訓練包含大量參數的CNN深度模型需要大規模的標注數據集,當數據集規模較小時,訓練整個模型容易產生過擬合現象;②經過預訓練的深度CNN模型如AlexNet、VGG等已具備了檢測圖像中邊緣、紋理及物體等特征的能力[23],這些能力有助于識別駕駛人的駕駛分心行為。
選擇VGG-16模型作為遷移學習源模型。VGG模型由Simonyan等[24]提出,在2014年ImageNet大規模圖像分類與定位挑戰賽(ILSVRC2014)中取得優異成績,VGG模型根據所包含CNN層數量的不同可分為8、10、13、16 4種類型。采用的VGG-16模型包含13個CNN層及3個全連接層(fully connected layer, FC)。由于原模型是識別ImagNet中所包含的1 000種類別,為識別所采用數據集中所包含的6種駕駛行為,對原模型進行如下修改:①刪除原模型中的FC層;②添加兩個新的FC層。輸出層包含6個神經元,分別輸出6種駕駛行為所對應的概率。為了研究不同數量神經元的中間FC層對模型判別效果的影響,分別建立了包含64、128、256個神經元中間層的模型結構,分別記為FC-64,FC-128、FC-256模型。
最終構建的駕駛人駕駛分心行為判別模型結構及各層參數如圖1所示,模型包含5個卷積塊(Convblock),各個卷積塊中的CNN層均采用3×3的卷積核,步長大小設為1,每個卷積塊最后均進行最大池化(Max pooling)操作,池化核大小為2×2,步長設為2。除最后1層采用Softmax函數外,其他層之間均采用Relu作為激活函數。為減少過擬合,在FC層之間增加Dropout。

圖1 駕駛人駕駛分心行為識別模型結構Fig.1 Framework of drivers’ inattentive driving behavior recognition model
利用Grad-Cam方法提取模型在判別輸入圖片所屬類別時的重點關注區域,以理解模型在分類時的主要依據,從而提高模型的解釋性。
CNN深度模型的整體結構一般可分為2部分:第1部分為所有的卷積層,它們共同構成了特征檢測器,其作用是分別檢測輸入圖像的不同層次特征,比如靠前的卷積層作用是檢測圖像的低層次特征如邊緣、紋理,而靠后的卷積層則負責檢測更高層次的特征,如物體、場景,越靠后的卷積層往往保留了更為豐富且與分類更相關的特征,這些特征會在其后的FC層中消失,因此為了對CNN模型進行解釋,一般對其最后1層卷積層的輸出特征進行可視化[25];第2部分為所有的FC層,其共同構成了分類器,作用是利用特征提取層檢測到的圖像特征進行分類。
Grad-Cam方法通過反向傳播計算模型的輸出對最后1層卷積層的導數,再進行全局平均以得出最后1層卷積層所輸出各特征圖(feature map)對于判定圖片類別的重要性。具體計算方法為
(1)

(2)

(3)

采用文獻[14]中所使用的state-farm駕駛人行為數據集進行模型訓練和驗證。該數據集共包含10種駕駛行為,總計18 466張圖片。由于原數據集中的部分駕駛行為實際上均包含了同種駕駛分心類型,如駕駛人用右手打電話與用左手打電話,這2種行為均包含了視覺、動作及認知3種分心類型,對行車安全的影響基本相似,因此可以合并為1類。對原數據集中的駕駛行為按照所包含的駕駛分心類型進行合并,具體合并方式如圖2所示。

圖2 數據集合并方式Fig.2 The way of dataset combination
在PyTorch環境下訓練模型,采用多分類常用的交叉熵損失作為目標函數,通過隨機梯度下降方法訓練模型,將學習率設為0.001,動量設為0.9,采用分段學習率衰減方法,模型訓練中每10回合將學習率衰減0.5倍。訓練批量設為32,訓練總回合數設為50。
將數據集劃分為訓練集、驗證集和測試集,劃分比例為7∶1∶2。利用訓練集對模型進行訓練,在訓練過程中,選擇驗證集中準確率最高的模型為最終模型。通過最終模型在測試集中的準確率評估模型的泛化能力。
由于數據集中的原始圖片尺寸為480×640,而所采用的遷移學習原模型VGG-16的輸入尺寸為224×224,因此需首先對數據集中圖片進行壓縮處理。另外,為了提高模型在實際應用中的魯棒性,防止模型過擬合并加速模型訓練過程,在訓練時對訓練集進行預處理,如圖3所示。

圖3 圖像預處理步驟Fig.3 Image preprocessing procedures
圖4與圖5所示分別為采用上述訓練參數及預處理方法對所構建模型進行訓練時的損失及準確率變化曲線。從圖4、圖5中可以看出,模型在訓練過程中損失逐步下降,識別準確率逐步提升,在訓練大約35回合后,模型的損失、準確率趨于穩定。對包含不同數量神經元中間層的模型分類準確率進行對比后發現,隨著神經元數量的增加,模型在訓練集中的分類準確率隨之提高,由于驗證集圖片并未進行上述的圖像預處理,因此驗證集中的分類準確率變化較小。

圖4 模型訓練中損失變化Fig.4 Change of loss during model training

圖5 模型訓練中準確率變化Fig.5 Chang of accuracy during model training
FC-64、FC-128、FC-256模型在訓練集中的最高分類準確率分別為87.25%、90.90%、92.90%,隨著中間層神經元數量的等比例增加,駕駛行為的識別準確率分別提升了3.65%及2%,可見中間層神經元數量對于模型準確率的提高程度逐步減小。由于增加神經元數量會使得模型訓練時間延長,因此未嘗試繼續增加神經元數量,而選定中間層神經元數量為256的FC-256模型為最終模型。
表1所示為選定模型在測試集中對各種駕駛行為的識別準確率。模型對6種駕駛行為的平均判別準確率為98.89%,可見模型已能夠準確地識別不同類型的駕駛分心行為。

表1 模型在測試集中的判別準確率Table 1 Classification accuracy in the test set
采用Grad-Cam分別提取了所訓練模型在識別數據集中的6類駕駛行為時的重點關注區域,如圖6所示,圖中越明亮的區域為模型確定圖片所屬類別時更加重要的區域。

圖6 模型分類時的重點關注區域Fig.6 Focused areas for classification of the model
從圖6中可以看出,所訓練模型能夠定位出各類駕駛行為的關鍵特征,模型根據這些關鍵特征判定駕駛行為所屬的類別。由圖6(a)可見,模型在判定正常駕駛時的重點關注區域為駕駛人的雙臂或雙手,從圖中可以看出,駕駛人正常駕駛與其他相比最主要的特征即在于駕駛人雙臂向前、雙手與方向盤接觸;從圖6(b)與圖6(c)可明顯看出,模型識別出了駕駛人手持手機的位置,據此判別看手機與打手機行為;在識別駕駛人取東西及調收音機行為時[圖6(d)],模型主要關注了駕駛人的手臂及面部區域,由圖中可看出駕駛人調收音機及取東西時,其主要特征為駕駛人手臂處于圖片右下側或駕駛人手臂處于左下側且面部偏向左側;在識別駕駛人化妝、喝水行為時[圖6(e)],模型識別出了該種行為的關鍵特征,即駕駛人手部的區域;當駕駛人與他人交談時,其面部會偏向一側,由圖6(f)可見,模型在識別交談行為時則主要關注駕駛人的面部區域。
需要注意的是,由于所使用的數據集圖片均為被試駕駛同一輛汽車,汽車的內飾固定,因此所訓練模型在識別某些駕駛行為時也依據了一些與該行為無關的特征,如在圖6(c)中,駕駛人用左手打手機時,由于左臂抬起,左臂對車門開關的遮擋消失,因此模型在識別駕駛人左手打手機時重點關注了左側車門開關區域。要避免模型根據此類無關特征判定駕駛分心行為,需進一步豐富駕駛行為數據集,增加車輛的多樣性,或增加不同拍攝角度的圖片。
(1)采用遷移學習方法,僅修改原模型FC層而固定卷積層參數,可保留原模型的圖像特征檢測能力,如對輪廓、物體的檢測,有助于實現駕駛分心行為的識別。
(2)采用端對端的模型訓練方式使得CNN模型解釋性下降,利用Grad-Cam方法對CNN模型最后1層卷積層輸出的重要特征圖進行可視化可有助于理解模型的分類依據。
研究中所采用的駕駛行為數據集規模有限,后期將在實車條件下采集更多不同種類、不同拍攝角度的駕駛行為圖片,以進一步提高訓練模型在實車條件下的魯棒性。