武文博
(廣西科技大學電氣與信息工程學院,廣西柳州 545616)
約束和規范司機駕駛行為作為提高駕駛安全性的必經之路,是道路交通安全和車輛駕駛安全的關鍵所在。隨著我國經濟水平和生產力的高速發展,國民生活水平得到較大提升,民用車輛保有量逐年上升。國家統計局發布的統計數據顯示2020年全國民用汽車保有量比上年末增加1937萬輛,其中私人轎車增長比率為6.63%[1]。如此數量的汽車保有量下,如何保障交通安全成為不可忽視的問題。當前,最新升級的交通探頭可以識別駕駛員的安全帶佩戴情況,但這單一的功能不能滿足日益復雜的路況條件。通過交通警察來約束司機的分心駕駛行為效果有限,造成極大的人力浪費。隨著深度學習的技術迭代與發展,學者看到了通過計算機視覺技術來識別駕駛行為的可能性。通過實時采集駕駛員的圖像,借助行車電腦部署的模型,可以實現低成本、高效率的駕駛行為識別。因此,開展駕駛行為識別算法的研究,具有較強的現實意義與應用價值。
在計算機視覺研究初期,學者通過機器學習的算法來完成識別和分類任務[2-4],這要通過手動計算和提取圖像特征如HOG特征等,并需要結合相應分類器如SVM、隨機森林算法等完成。文獻[5]通過擴展圖像數據的方向梯度直方圖的描述符,建立一種基于姿態基礎元的行為識別算法。由于依賴人工特征提取的算法處理方式繁瑣,識別響應較慢,無法達到實時性和穩定性的要求。隨著卷積神經網絡的提出,深度學習由于其能夠自發學習特征的能力,被廣泛使用在圖像識別領域。在之后的研究中,Inception Net[6]、VGG Net[7]等高效的深度網絡被提出,它們大幅提高了圖像識別和分類的精度。文獻[8]提出一種基于級聯卷積網絡的疲勞駕駛檢測模型,通過構建多級卷積神經網絡來學習人眼的圖像特征,連續監測多張眼部圖像數據,結合其特征點定位判斷駕駛員是否疲勞。文獻[9]結合遺傳算法和卷積神經網絡,通過定位人臉和手部來對駕駛員行為進行分類,達到84.64%的準確率。現有的駕駛行為識別算法能夠識別的駕駛種類較少,多數研究關注于司機使用電話的情況。本文提出一種基于深度殘差網絡的識別方法,提高了模型在更多類別的行為識別任務的正確率。
在深度卷積神經網絡的研究初期,學者通過不斷加深網絡層次來強化模型的特征提取與學習能力。文獻[10]所設計的LeNet是卷積神經網絡里程碑式的成果,使用卷積層、池化層和全連接層級聯構建模型,網絡層次較淺且結構簡單,故而對于較為復雜的分類任務力不從心。LeNet未能得到廣泛應用的原因是當時的計算機性能不足,而數據量在機器學習如隨機向量機的承受能力之下,卷積神經網絡的表現并不出色。該模型的結構如圖1所示。

圖1 LeNet結構圖Fig.1 LeNet structure diagram
20世紀初,計算機性能爆炸式的提升對深度學習的研究進展提供了強有力的支持。2012年,Alex Krizhevsky憑借其設計的深層卷積網絡模型[11]取得了ILSVRC(ImageNet Scale Visual Recognition Challenge)大賽的冠軍。文中使用隨機丟棄法(Dropout)將上層神經元提取的特征隨機置0來阻止過擬合,同時還提出局部歸一化技術LRN(Local Response Normalization)來強化網絡對于特征的擬合能力。與LeNet不同的,AlexNet還將激活函數更換為ReLU函數,并且驗證其性能優于sigmoid激活函數,間接地解決了深層卷積時出現的梯度消失問題。
在前期的諸多研究中,學者通過不斷加深網絡層數和提高網絡復雜程度以達到提升模型對特征的提取能力,但這也導致梯度爆炸和消失的問題,網絡雖然能夠更好的提取數據特征但是卻不能很好的自發學習這些特征。為了解決這一問題,文獻[12]提出一種新穎的網絡結構并且將運用這種結構的深度卷積網絡模型命名為ResNet模型,殘差模塊結構如圖2所示。卷積網絡在訓練時,每層都會產生新的特征圖,而訓練的目的就是讓模型自發地去學習不同特征圖之間的權重。通常地,一個輸入a經過卷積層,形成新的輸出,這就是普通映射H(a)。而對于殘差模塊,經過卷積后的映射就成為。相較于使用多層卷積去近似接近H(a),其效果不如去近似接近殘差,如式1所示:

圖2 殘差模塊結構圖Fig.2 Structure diagram of residual module

基于上述技術背景,使用殘差模塊構建不同的深度殘差網絡模型,對比其性能以確定哪種結構的深度殘差網絡模型對司機行為識別這一任務的完成度較好。按照搭建的網絡結構層數,分別稱其為Res-34、Res-50和Res-101,其中,34和50層結構的深度殘差網絡使用雙層殘差模塊而101層的深度殘差網絡使用三層殘差模塊。其網絡結構描述如下:三個模型都在卷積層使用7×7的卷積核,通道數為64;其中Res-34在后續模塊中的殘差塊數為[2,2,2,2],通道數分別為64×2,128×2,256×2,512×2;Res-50在后續模塊中的殘差塊數為[3,4,6,3],通道數分別為64×2,128×2,256×2,512×2;Res-101在后續模塊中的殘差塊數為[3,4,6,3],通道數分別為64×2,256,128×2,256×2,1024,512×2,2048。
構建的基于深度殘差網絡的駕駛行為識別模型結構如圖3所示,先將圖像數據輸入模型,對其進行數據預處理操作,將處理后的圖像數據送入模型進行特征提取,并且訓練模型使其與數據擬合,最后將預測的數據經過分類概率函數進行分類,輸出識別到的行為類別。

圖3 基于深度殘差網絡的識別模型結構圖Fig.3 Structure diagram of recognition model based on deep residual network
本文采用凱格勒平臺公開的駕駛行為識別競賽數據集[13]進行實驗,該數據集包含10種駕駛行為:安全駕駛、右手玩手機、右手通話、左手玩手機、左手通話、調節面板、喝水、向后伸手、整理頭發和與乘客交談。10個類別共計23500張圖像數據,圖片大小為640×480。為驗證模型訓練后真實的駕駛行為識別能力,將數據集的20%單獨劃分為驗證集和測試集。
本文所使用的實驗環境如表1所示,使用英偉達公司的GTX Titan XP計算卡,配合spyder編譯器搭建基于Python的深度學習運行環境。同時使用Pytorch深度學習框架,它具有使用GPU加速張量計算的強大功能,還可以對梯度進行自動求導,提供多種深度學習工具的API接口。

表1 實驗環境配置表Tab.1 Experimental environment configuration table
駕駛行為數據集的初始圖像尺寸在經過數據增強處理后會出現大小不一致的情況,為滿足模型輸入通道的需求,將圖像統一進行resize操作使其大小都為224×224,這在一定程度上還可以降低模型的計算量,提升模型運行速度。
訓練深度卷積神經網絡模型時,網絡參數的初始化對于模型的訓練速度和最后的收斂效果有較大影響,對于本文所設計較為深層的卷積神經網絡而言,理想化的初始化模型參數可以使其梯度求導較為迅速,而較差的初始化參數會使模型陷入局部收斂無法優化或者最終收斂效果不好。因此在訓練模型時本文使用何凱明博士在2015年ICCV大會提出的Kaiming初始化方法,文獻[14]中其表現優于其他初始化方法。
訓練深度卷積神經網絡時,學習率是另一個重要的超參數,學習率設置的過大會導致模型不斷跳過最優點無法收斂,而學習率設置過小會導致模型迭代過慢,訓練過程漫長無比。因此本文在實驗中使用自我衰減的學習率
設置策略,配合Adam優化器,每10代進行一次衰減,衰減系數為0.5。
此外,考慮到內存大小和顯卡性能的限制,模型每次載入的小批量數據為64。完成訓練后,載入測試集對模型性能進行測試,模型的acc曲線如圖4所示,將模型Loss和Acc結果整理于表2。對比實驗結果可以確定Res-101模型的識別正確率最高,為83.18%。

表2 實驗結果Tab.2 Experimental results

圖4 模型Acc曲線Fig.4 Model Acc curve
針對私家車保有量越來越高而人力和無力較為不足的情況,設計出一種可以快速識別駕駛員分心行為的模型,根據識別模型的提醒,可以有效約束駕駛員,進而提高駕駛安全性和避免交通事故的發生。通過實驗驗證文中設計的模型高效且準確,為后續研究做出鋪墊。