武文博
(廣西科技大學(xué)電氣與信息工程學(xué)院,廣西柳州 545616)
約束和規(guī)范司機駕駛行為作為提高駕駛安全性的必經(jīng)之路,是道路交通安全和車輛駕駛安全的關(guān)鍵所在。隨著我國經(jīng)濟水平和生產(chǎn)力的高速發(fā)展,國民生活水平得到較大提升,民用車輛保有量逐年上升。國家統(tǒng)計局發(fā)布的統(tǒng)計數(shù)據(jù)顯示2020年全國民用汽車保有量比上年末增加1937萬輛,其中私人轎車增長比率為6.63%[1]。如此數(shù)量的汽車保有量下,如何保障交通安全成為不可忽視的問題。當(dāng)前,最新升級的交通探頭可以識別駕駛員的安全帶佩戴情況,但這單一的功能不能滿足日益復(fù)雜的路況條件。通過交通警察來約束司機的分心駕駛行為效果有限,造成極大的人力浪費。隨著深度學(xué)習(xí)的技術(shù)迭代與發(fā)展,學(xué)者看到了通過計算機視覺技術(shù)來識別駕駛行為的可能性。通過實時采集駕駛員的圖像,借助行車電腦部署的模型,可以實現(xiàn)低成本、高效率的駕駛行為識別。因此,開展駕駛行為識別算法的研究,具有較強的現(xiàn)實意義與應(yīng)用價值。
在計算機視覺研究初期,學(xué)者通過機器學(xué)習(xí)的算法來完成識別和分類任務(wù)[2-4],這要通過手動計算和提取圖像特征如HOG特征等,并需要結(jié)合相應(yīng)分類器如SVM、隨機森林算法等完成。文獻[5]通過擴展圖像數(shù)據(jù)的方向梯度直方圖的描述符,建立一種基于姿態(tài)基礎(chǔ)元的行為識別算法。由于依賴人工特征提取的算法處理方式繁瑣,識別響應(yīng)較慢,無法達到實時性和穩(wěn)定性的要求。隨著卷積神經(jīng)網(wǎng)絡(luò)的提出,深度學(xué)習(xí)由于其能夠自發(fā)學(xué)習(xí)特征的能力,被廣泛使用在圖像識別領(lǐng)域。在之后的研究中,Inception Net[6]、VGG Net[7]等高效的深度網(wǎng)絡(luò)被提出,它們大幅提高了圖像識別和分類的精度。文獻[8]提出一種基于級聯(lián)卷積網(wǎng)絡(luò)的疲勞駕駛檢測模型,通過構(gòu)建多級卷積神經(jīng)網(wǎng)絡(luò)來學(xué)習(xí)人眼的圖像特征,連續(xù)監(jiān)測多張眼部圖像數(shù)據(jù),結(jié)合其特征點定位判斷駕駛員是否疲勞。文獻[9]結(jié)合遺傳算法和卷積神經(jīng)網(wǎng)絡(luò),通過定位人臉和手部來對駕駛員行為進行分類,達到84.64%的準確率?,F(xiàn)有的駕駛行為識別算法能夠識別的駕駛種類較少,多數(shù)研究關(guān)注于司機使用電話的情況。本文提出一種基于深度殘差網(wǎng)絡(luò)的識別方法,提高了模型在更多類別的行為識別任務(wù)的正確率。
在深度卷積神經(jīng)網(wǎng)絡(luò)的研究初期,學(xué)者通過不斷加深網(wǎng)絡(luò)層次來強化模型的特征提取與學(xué)習(xí)能力。文獻[10]所設(shè)計的LeNet是卷積神經(jīng)網(wǎng)絡(luò)里程碑式的成果,使用卷積層、池化層和全連接層級聯(lián)構(gòu)建模型,網(wǎng)絡(luò)層次較淺且結(jié)構(gòu)簡單,故而對于較為復(fù)雜的分類任務(wù)力不從心。LeNet未能得到廣泛應(yīng)用的原因是當(dāng)時的計算機性能不足,而數(shù)據(jù)量在機器學(xué)習(xí)如隨機向量機的承受能力之下,卷積神經(jīng)網(wǎng)絡(luò)的表現(xiàn)并不出色。該模型的結(jié)構(gòu)如圖1所示。
圖1 LeNet結(jié)構(gòu)圖Fig.1 LeNet structure diagram
20世紀初,計算機性能爆炸式的提升對深度學(xué)習(xí)的研究進展提供了強有力的支持。2012年,Alex Krizhevsky憑借其設(shè)計的深層卷積網(wǎng)絡(luò)模型[11]取得了ILSVRC(ImageNet Scale Visual Recognition Challenge)大賽的冠軍。文中使用隨機丟棄法(Dropout)將上層神經(jīng)元提取的特征隨機置0來阻止過擬合,同時還提出局部歸一化技術(shù)LRN(Local Response Normalization)來強化網(wǎng)絡(luò)對于特征的擬合能力。與LeNet不同的,AlexNet還將激活函數(shù)更換為ReLU函數(shù),并且驗證其性能優(yōu)于sigmoid激活函數(shù),間接地解決了深層卷積時出現(xiàn)的梯度消失問題。
在前期的諸多研究中,學(xué)者通過不斷加深網(wǎng)絡(luò)層數(shù)和提高網(wǎng)絡(luò)復(fù)雜程度以達到提升模型對特征的提取能力,但這也導(dǎo)致梯度爆炸和消失的問題,網(wǎng)絡(luò)雖然能夠更好的提取數(shù)據(jù)特征但是卻不能很好的自發(fā)學(xué)習(xí)這些特征。為了解決這一問題,文獻[12]提出一種新穎的網(wǎng)絡(luò)結(jié)構(gòu)并且將運用這種結(jié)構(gòu)的深度卷積網(wǎng)絡(luò)模型命名為ResNet模型,殘差模塊結(jié)構(gòu)如圖2所示。卷積網(wǎng)絡(luò)在訓(xùn)練時,每層都會產(chǎn)生新的特征圖,而訓(xùn)練的目的就是讓模型自發(fā)地去學(xué)習(xí)不同特征圖之間的權(quán)重。通常地,一個輸入a經(jīng)過卷積層,形成新的輸出,這就是普通映射H(a)。而對于殘差模塊,經(jīng)過卷積后的映射就成為。相較于使用多層卷積去近似接近H(a),其效果不如去近似接近殘差,如式1所示:
圖2 殘差模塊結(jié)構(gòu)圖Fig.2 Structure diagram of residual module
基于上述技術(shù)背景,使用殘差模塊構(gòu)建不同的深度殘差網(wǎng)絡(luò)模型,對比其性能以確定哪種結(jié)構(gòu)的深度殘差網(wǎng)絡(luò)模型對司機行為識別這一任務(wù)的完成度較好。按照搭建的網(wǎng)絡(luò)結(jié)構(gòu)層數(shù),分別稱其為Res-34、Res-50和Res-101,其中,34和50層結(jié)構(gòu)的深度殘差網(wǎng)絡(luò)使用雙層殘差模塊而101層的深度殘差網(wǎng)絡(luò)使用三層殘差模塊。其網(wǎng)絡(luò)結(jié)構(gòu)描述如下:三個模型都在卷積層使用7×7的卷積核,通道數(shù)為64;其中Res-34在后續(xù)模塊中的殘差塊數(shù)為[2,2,2,2],通道數(shù)分別為64×2,128×2,256×2,512×2;Res-50在后續(xù)模塊中的殘差塊數(shù)為[3,4,6,3],通道數(shù)分別為64×2,128×2,256×2,512×2;Res-101在后續(xù)模塊中的殘差塊數(shù)為[3,4,6,3],通道數(shù)分別為64×2,256,128×2,256×2,1024,512×2,2048。
構(gòu)建的基于深度殘差網(wǎng)絡(luò)的駕駛行為識別模型結(jié)構(gòu)如圖3所示,先將圖像數(shù)據(jù)輸入模型,對其進行數(shù)據(jù)預(yù)處理操作,將處理后的圖像數(shù)據(jù)送入模型進行特征提取,并且訓(xùn)練模型使其與數(shù)據(jù)擬合,最后將預(yù)測的數(shù)據(jù)經(jīng)過分類概率函數(shù)進行分類,輸出識別到的行為類別。
圖3 基于深度殘差網(wǎng)絡(luò)的識別模型結(jié)構(gòu)圖Fig.3 Structure diagram of recognition model based on deep residual network
本文采用凱格勒平臺公開的駕駛行為識別競賽數(shù)據(jù)集[13]進行實驗,該數(shù)據(jù)集包含10種駕駛行為:安全駕駛、右手玩手機、右手通話、左手玩手機、左手通話、調(diào)節(jié)面板、喝水、向后伸手、整理頭發(fā)和與乘客交談。10個類別共計23500張圖像數(shù)據(jù),圖片大小為640×480。為驗證模型訓(xùn)練后真實的駕駛行為識別能力,將數(shù)據(jù)集的20%單獨劃分為驗證集和測試集。
本文所使用的實驗環(huán)境如表1所示,使用英偉達公司的GTX Titan XP計算卡,配合spyder編譯器搭建基于Python的深度學(xué)習(xí)運行環(huán)境。同時使用Pytorch深度學(xué)習(xí)框架,它具有使用GPU加速張量計算的強大功能,還可以對梯度進行自動求導(dǎo),提供多種深度學(xué)習(xí)工具的API接口。
表1 實驗環(huán)境配置表Tab.1 Experimental environment configuration table
駕駛行為數(shù)據(jù)集的初始圖像尺寸在經(jīng)過數(shù)據(jù)增強處理后會出現(xiàn)大小不一致的情況,為滿足模型輸入通道的需求,將圖像統(tǒng)一進行resize操作使其大小都為224×224,這在一定程度上還可以降低模型的計算量,提升模型運行速度。
訓(xùn)練深度卷積神經(jīng)網(wǎng)絡(luò)模型時,網(wǎng)絡(luò)參數(shù)的初始化對于模型的訓(xùn)練速度和最后的收斂效果有較大影響,對于本文所設(shè)計較為深層的卷積神經(jīng)網(wǎng)絡(luò)而言,理想化的初始化模型參數(shù)可以使其梯度求導(dǎo)較為迅速,而較差的初始化參數(shù)會使模型陷入局部收斂無法優(yōu)化或者最終收斂效果不好。因此在訓(xùn)練模型時本文使用何凱明博士在2015年ICCV大會提出的Kaiming初始化方法,文獻[14]中其表現(xiàn)優(yōu)于其他初始化方法。
訓(xùn)練深度卷積神經(jīng)網(wǎng)絡(luò)時,學(xué)習(xí)率是另一個重要的超參數(shù),學(xué)習(xí)率設(shè)置的過大會導(dǎo)致模型不斷跳過最優(yōu)點無法收斂,而學(xué)習(xí)率設(shè)置過小會導(dǎo)致模型迭代過慢,訓(xùn)練過程漫長無比。因此本文在實驗中使用自我衰減的學(xué)習(xí)率
設(shè)置策略,配合Adam優(yōu)化器,每10代進行一次衰減,衰減系數(shù)為0.5。
此外,考慮到內(nèi)存大小和顯卡性能的限制,模型每次載入的小批量數(shù)據(jù)為64。完成訓(xùn)練后,載入測試集對模型性能進行測試,模型的acc曲線如圖4所示,將模型Loss和Acc結(jié)果整理于表2。對比實驗結(jié)果可以確定Res-101模型的識別正確率最高,為83.18%。
表2 實驗結(jié)果Tab.2 Experimental results
圖4 模型Acc曲線Fig.4 Model Acc curve
針對私家車保有量越來越高而人力和無力較為不足的情況,設(shè)計出一種可以快速識別駕駛員分心行為的模型,根據(jù)識別模型的提醒,可以有效約束駕駛員,進而提高駕駛安全性和避免交通事故的發(fā)生。通過實驗驗證文中設(shè)計的模型高效且準確,為后續(xù)研究做出鋪墊。