吳士力,唐振民 ,劉 永
1.南京理工大學 計算機科學與工程學院,南京 210094
2.南京交通職業(yè)技術(shù)學院 汽車工程學院 長安福特實驗室,南京 211188
疲勞駕駛是一種非常嚴重的危險駕駛行為。據(jù)美國國家公路交通安全管理局估計,每年因疲勞駕駛導致的交通事故數(shù)占總體的20%,死亡率占總體的80%以上。疲勞駕駛識別方法主要有接觸式和非接觸式兩類。其中,基于腦電波等生理信息分析的接觸式方法雖然精度高,但應用成本較高,對駕駛員約束大,目前難以大范圍推廣[1]。非接觸式方法也可以分為兩種,一種是對車輛的行駛特征(如加減速、方向盤操控狀況與軌跡等)進行分析[2-5]。該類方法實現(xiàn)成本低,但復雜多變的交通環(huán)境會明顯影響其有效性。另一種是基于機器視覺技術(shù)對駕駛員頭部圖像進行分析。得益于機器視覺等人工智能技術(shù)的快速發(fā)展,該類方法的進步空間大、應用成本相對較低,已經(jīng)成為該領(lǐng)域的研究熱點。Naz等根據(jù)人臉視頻中眼睛、嘴和頭部運動特征來識別駕駛員的疲勞狀態(tài)[6]。Mandal 等提出使用PERCLOS(單位時間內(nèi)眼睛閉合所占比例)指標對駕駛員的眼睛狀態(tài)進行跟蹤分析,使用自適應整合算法評估疲勞駕駛的程度[7]。Omidyeganeh 等通過Viola-Jones 算法對視頻中駕駛員的人臉和嘴部進行檢測,然后使用反投影理論對駕駛員嘴巴運動特征進行提取分析來識別哈欠[8]。郭慧利等基于Adaboost算法對CCD攝像頭采集的圖像進行人臉檢測,采用灰度積分投影定位駕駛員的眼和嘴,并對其局部狀態(tài)進行監(jiān)測,基于改進的D-S信息融合算法綜合判斷疲勞駕駛狀態(tài)[9]。劉明周等基于Adaboost 算法定位駕駛員面部和手部區(qū)域,通過尺度不變特征變換提取區(qū)域的SIFT特征點,將生成的特征向量輸入三層BP神經(jīng)網(wǎng)絡(luò)模型對疲勞駕駛狀態(tài)進行分級[10]。上述方法具有較好的疲勞駕駛識別精度,但在實際運用時會受到光線、穿戴物遮擋等因素的干擾[11],影響其實際運用效果。
綜上所述,車輛操控行為分析和視頻分析各有優(yōu)缺點,而如能將上述兩種方法進行有效融合,彌補各自缺陷,對提高疲勞駕駛分析與識別效果有積極意義[12]。本文嘗試在現(xiàn)有技術(shù)基礎(chǔ)上對駕駛員臉部狀態(tài)和車輛行駛狀態(tài)進行疲勞特征提取,通過改進的隨機森林算法對兩類特征進行融合建模,從而提高疲勞駕駛識別的準確率,并在真實道路環(huán)境下進行實驗以驗證其運行效果。
基于人臉特征點對瞇眼和哈欠進行檢測是識別疲勞狀態(tài)的有效手段[13-15]。機器學習工具箱軟件Dlib提供了常用的機器視覺分析開源庫函數(shù)(API)[16-17]。使用Dlib相關(guān)API可以實時提取人臉68個輪廓特征點(如圖1所示)及其坐標值。
圖1 人臉輪廓特征點位置
瞇眼一般意義上是指眼部在一段時間內(nèi)保持閉眼狀態(tài)的行為。PERCLOS 值是識別瞇眼的常用指標,但其準確率對圖像的分辨率依賴性較強,其適用性還不夠理想[18]。Soukupová 提出了使用眼睛縱橫比值(EAR)來判斷眼睛的開閉狀態(tài)[19]。該方法基于眼部6個特征點的坐標來實現(xiàn),式(1)為圖1 中左眼EAR 值的計算過程。
該方法只依賴圖像中的眼睛輪廓信息,計算過程簡潔。
由于疲勞時兩眼的動作基本保持一致,所以取左右眼EAR值的均值作為人眼的EAR值。圖2所示的是某視頻樣本中EAR值(歸一化后)的變化情況。
圖2 眼部行為的EAR值
觀察圖2可知,人眼在各種狀態(tài)下的EAR值都存在明顯波動,這是由人眼眼皮的生理特征導致的。樣本中睜眼時EAR 值大約在0.5~0.9 范圍內(nèi)波動,瞇眼時EAR值大約在0~0.3 范圍內(nèi)波動,其差別較為明顯。雖然眨眼時EAR值的波動范圍(大約為0.1~0.4)和瞇眼時EAR均值的波動范圍有部分重疊,但眨眼的持續(xù)時間(大約為2~3 個樣本點)明顯小于瞇眼時間(大約為50 個樣本點)。因此需要從EAR 值的幅值(縱向)和時間(橫向)兩個維度去分析眼部狀態(tài)。由于在駕駛過程中EAR值是以數(shù)據(jù)流的形式存在,為了簡化計算過程,本文將單個時間窗內(nèi)所有EAR值的均值來表征相應時域內(nèi)EAR值的大小情況。時間窗的長度一般根據(jù)經(jīng)驗和分析要求來設(shè)定,如時間窗長度太小容易造成把正常眨眼誤識別為瞇眼;時間窗長度太大會降低瞇眼識別的敏感度和實時性。圖3 所示的是對圖2 中EAR 值取時間窗長度為20個樣本點時的EAR均值情況。
圖3 眼部行為的EAR均值
由圖3 可知,瞇眼狀態(tài)對應的連續(xù)兩個時間窗(范圍為第81~120 個樣本點)內(nèi)的EAR 均值都低于0.3,而睜眼和眨眼時的EAR均值均遠大于0.3。
圖4 所示的是某視頻樣本中嘴部行為的MAR 值(歸一化后)變化情況。
哈欠最主要的外觀特征是嘴部保持一定時間的大幅度張開狀態(tài)[20]。鑒于嘴部和眼部輪廓運動狀態(tài)的相似性,本文嘗試將瞇眼識別方法用于哈欠行為識別,得到MAR值。
圖4 嘴部行為的MAR值
取20 個樣本點為滑動時間窗長度,則圖4 中MAR值的均值情況如圖5所示。
圖5 嘴部行為的MAR均值
觀察圖5 可知,哈欠時MAR 均值在連續(xù)兩個時間窗內(nèi)(范圍為第241~280 個樣本點)大于0.9,明顯高于說話與唱歌時的MAR均值。
相關(guān)研究結(jié)果表明,駕駛員在疲勞駕駛狀態(tài)下的變速和轉(zhuǎn)向操控活躍程度會出現(xiàn)間斷性大幅下降的情況[21],因此本文提取車輛加減速和轉(zhuǎn)向行為的活躍度作為疲勞駕駛行為特征值。為了降低正常駕駛狀態(tài)下車控數(shù)據(jù)正常波動產(chǎn)生的干擾,采用先求取車控數(shù)據(jù)流的局部變化趨勢,再計算活躍度的辦法。實現(xiàn)思路是基于線性擬合提取數(shù)據(jù)流的變化趨勢,然后根據(jù)擬合線段的斜率變化情況以及各樣本點與擬合線段間的殘差和,計算相應的車控行為活躍度值。
基于分段線性表示的殘差累計算法(Cumulative Sum of Errors,CUSUM)是數(shù)據(jù)流線性擬合的有效方法[22-23],其基本思路是將數(shù)據(jù)流T={yt1,yt2,…,ytn}按時間順序分割成k(k<n) 個彼此相連的子段Si={ytx,ytx+1,…,ytx+l},l<n-x,i=1,2,…,k,即T={S1,S2,…,Sk},Si∩Sj=?,i≠j,i,j=1,2,…,k;然后使用最小二乘法對各子段進行線性擬合,通過擬合過程中累積的殘差值來評估擬合線段的有效性,其過程如下。
設(shè)ti時刻信號yti的線性擬合值為:
其中,ks是當前擬合線段的斜率,ts是該線段的起始時間,bs是ts時刻該線段在y軸上的截距,則ti時刻擬合分段的殘差為eti=yti'-yti,則ti時刻的累積殘差為在任意時刻ti,將累積殘差值cusumti和閾值th1 和th2(通常設(shè)th2=3th1)進行比較:
若|cusumti|≤th1,則認為當前擬合分段合理;
若th1 <|cusumti|<th2,則把ti時刻以后產(chǎn)生的數(shù)據(jù)存儲在緩存中;
若|cusumti|≥th2,則需要對緩存中的數(shù)據(jù)進行重新擬合,然后將cusumti重置為0,并清空緩存。
基于所得擬合線段yt',通過式(4)獲得數(shù)據(jù)流T在某時域內(nèi)(樣本點數(shù)量為p)的活躍度AT:
其中,c為時域內(nèi)擬合線段的個數(shù),km為某擬合線段的斜率,為時域內(nèi)所有擬合線段斜率的均值。AT值越大表明時域內(nèi)數(shù)據(jù)流的活躍度越大,反之越小。將上述算法分別應用于油門踏板位置信號與方向盤轉(zhuǎn)角信號數(shù)據(jù)流(其采用等間隔采樣方式生成,采樣頻率為10 Hz),由式(4)得到油門操控活躍度Aap和方向盤操控活躍度Asw。圖6所示的是某測試樣本的活躍度變化情況。
圖6 操控活躍度計算過程
觀察圖6(a)可知,駕駛員分別在樣本點 36~60 和85~165 區(qū)域內(nèi)進行了加速操作,樣本點時域 30~50 和140~160 區(qū)域內(nèi)的活躍度值A(chǔ)ap分別達到了75.5 和93.6,而在樣本點區(qū)域60~80 內(nèi)駕駛員沒有任何油門動作,所以活躍度值A(chǔ)ap為0。觀察圖6(b)可知,駕駛員在樣本點時域70~90范圍內(nèi)沒有明顯的轉(zhuǎn)向操作,活躍度值A(chǔ)sw為0.3,明顯低于轉(zhuǎn)向操作期的活躍度值。此外,由于車輛上普遍采用制動開關(guān)來獲取駕駛員的制動行為,而其信號類型為開關(guān)量,所以不需進行線性擬合。
基于上述工作生成表征駕駛員疲勞駕駛狀態(tài)的10維特征向量,其物理意義如表1所示。
表1 疲勞駕駛行為特征
表1 中的SWP(Sleep Wake Predictor)是衡量駕駛員生理疲勞狀態(tài)的重要特征之一,其值基于人在每天各時段的清醒狀態(tài)圖來計算[24],具體的計算方法為:
為了降低交通環(huán)境對疲勞駕駛識別的干擾,并降低系統(tǒng)計算量,采用兩階段模式生成疲勞特征向量。第一階段只監(jiān)測駕駛員人臉疲勞部分特征,當檢測到疑似疲勞時才進入第二階段,該階段生成時域內(nèi)所有疲勞駕駛特征,并調(diào)用指定模型實現(xiàn)疲勞駕駛識別,整個算法過程為:
其中th_ear和th_mar分別為瞇眼和哈欠閾值。
疲勞駕駛是一種狀態(tài)的漸變過程,一般可以根據(jù)其程度分為清醒、輕度疲勞、重度疲勞三種狀態(tài)。因此,疲勞駕駛識別本質(zhì)上是一個分類問題。文獻[25]對現(xiàn)有主流分類器在疲勞駕駛領(lǐng)域的應用性能進行了研究,發(fā)現(xiàn)隨機森林算法的準確率、魯棒性較好,計算效率高,且能夠適應小樣本的訓練環(huán)境。
隨機森林在結(jié)構(gòu)上由若干決策樹組成,決策樹的質(zhì)量和數(shù)量都對其性能有重要影響。決策樹的常用訓練思路是采用Bootstrap算法生成樣本集,再隨機抽取出特征子集,然后基于信息熵對節(jié)點進行分裂。應用隨機策略雖提高了模型的泛化能力,但沒有考慮特征的重要性,使得重要性較小的特征也可能被優(yōu)先選中,從而會影響建模精度[26]。文獻[27]提出了通過增加重要特征被選中的機率來提高隨機森林性能的方法,但是該方法會減少待選特征的數(shù)量,不利于準確率的提高。而對于隨機森林的規(guī)模問題,合適的決策樹數(shù)量能讓隨機森林在準確率和計算效率間取得較好的平衡,樹的數(shù)量太少會降低隨機森林的分類精度,過多會影響識別效率,一般依賴經(jīng)驗和反復實驗來確定[28]。
本文提出一種基于特征權(quán)重的隨機森林構(gòu)建方法(Random Forest based Weights of Features,RFWF),該方法基于特征在森林中的權(quán)重來控制樹的構(gòu)建和數(shù)量,以此提高疲勞駕駛狀態(tài)識別的有效性。
設(shè)疲勞駕駛特征向量ti=(tij),j=1,2,…,w,由表1取w=10 。其組成的樣本集T={(ti,ci)},i=1,2,…,m,ci為ti對應的疲勞駕駛狀態(tài)類別,用tij對應隨機森林中樹τ上的節(jié)點nj,則是該節(jié)點相對于疲勞駕駛狀態(tài)類別c的先驗概率。其中Nc是類別為c的樣本總數(shù),Nd為符合tij>Tha的疲勞樣本數(shù)量,Tha為閾值?;趐i(c)可得節(jié)點ni的熵為:
若用tij分裂節(jié)點nk,其左右孩子的熵分別為El和Er。定義Q(i,k)=e-(El+Er)描述特征tij分裂節(jié)點nk的可行性(Q(i,k)值越大則可行性越大)。定義特征tij的初始權(quán)重為:
其中,Nt是樹τ中的節(jié)點數(shù)量。顯然,wτ(tij)值越大則表明用特征j進行分裂的效果越好。設(shè)δτ為用袋外數(shù)據(jù)(Out of Bag,OOB)在樹τ上的分類錯誤率,通過:
來衡量樹τ的分類效果,γτ值越大表示樹τ的分類錯誤越少。疲勞駕駛特征tij在隨機森林中的全局權(quán)重為:
基于ω(tij)對特征tij的重要性進行評估。通過閾值Thω將所有特征分為重要特征集合和非重要特征集合兩部分,別為其基數(shù)。在構(gòu)建樹的迭代過程中對兩個集合進行更新,第n次迭代后可得特征集合其基數(shù)分別為則認為tj對節(jié)點的分裂是合適的。易知,獲得該合適分裂的最小概率就是從中挑選出至少一個特征的概率,并將其記為q,則r=1-q為中不包含特征的概率。由于在樹的構(gòu)建過程中中也可能包含非重要特征,所以r的最大值為對于一個包含B棵樹的隨機森林F,令,則有:
設(shè)一棵有Nav個節(jié)點的樹τ,其所有節(jié)點都被合適分裂的概率為,定義:
來表征F中至少一棵樹τ中所有節(jié)點都被合適分裂的概率。則F中任一樹對(τx,τy)所有的Nav對節(jié)點中至少有一個疲勞駕駛特征tij在中的概率為:中隨機選擇的特征集合,如滿足特征
顯然ρ?1,則可得樹對(τx,τy)中至少有一對節(jié)點特征在中的概率為:
鑒于樹τ中節(jié)點被有效分裂的概率越高(即φF值越大),且非重要特征被分類的概率越低(即φp值越大),則森林F的分類精度越高。定義隨機森林F對疲勞駕駛狀態(tài)分類的準確率為:
其中ε為常數(shù)因子。
記 ΔB為隨機森林F中B的變化量,有 dφ≈由上述分析可知qu>0,qv<0,l>0,Δv<0,則只需使Δu≥0 ,且滿足成立,從而保證隨機森林F的分類正確率在訓練中不斷提高。
基于上述分析,RFWF算法的基本流程如下:
上述算法生成的隨機森林可以對采集的疲勞駕駛樣本進行狀態(tài)識別。
實驗平臺主要由中央控制單元、攝像頭和CAN 總線電纜等設(shè)備組成,其在實驗車上的安裝位置如圖7所示。
圖7 實驗平臺安裝位置
圖7 中,中央控制單元采用了英偉達Tx2 開發(fā)板平臺,攝像頭采用了500 萬像素紅外單目攝像頭,CAN 總線電纜與OBD接口相連。Tx2開發(fā)板通過USB接收攝像頭采集的駕駛員頭部圖像,采樣速率為10 幀/s;通過CAN總線讀取相關(guān)車輛行駛數(shù)據(jù)(如車速、油門踏板角度、方向盤轉(zhuǎn)角、制動狀態(tài)、行車時間等),采樣速率為10 Hz。為了便于測試和監(jiān)控系統(tǒng)的疲勞駕駛識別效果,設(shè)計了圖形界面來展示系統(tǒng)工作過程,如圖8所示。
圖8 系統(tǒng)運行狀態(tài)顯示界面
圖8 中分別顯示了人臉特征點的實時提取效果以及車速、轉(zhuǎn)向角度和制動狀態(tài)(綠色表示無制動操作,紅色表示制動操作)共三種車輛行駛狀態(tài)信息。
招募了62 名駕駛員志愿者(男43 名,女19 名),年齡范圍為21~45 歲。實驗地點位于南京市江寧大學城福英路部分空曠路段??紤]到安全性,疲勞狀態(tài)采用人為模擬方式,共采集了900個清醒駕駛樣本(含450個干擾樣本,其中包含了唱歌、交談、揉眼睛等場景)、650個輕度和550 個重度疲勞駕駛樣本(參數(shù)如表2 所示),單個疲勞樣本的持續(xù)時間范圍為3~8 min。,可使 dφ>0
表2 疲勞樣本參數(shù)
閾值th_ear 和th_mar 取所有疲勞樣本中瞇眼狀態(tài)和哈欠狀態(tài)下的均值。分別用數(shù)字“0”“1”“2”作為清醒、輕度疲勞和重度疲勞三類樣本的標簽值。
按5∶1 比例隨機生成訓練樣本集和測試樣本集。圖9所示是某次訓練生成的任一單棵決策樹的結(jié)構(gòu),其中顯示了每個節(jié)點對應的特征及其閾值范圍。
圖9 決策樹結(jié)構(gòu)
觀察圖9可知,人臉疲勞特征的重要性高于車輛操控行為特征,導致其對應節(jié)點先于后者分裂。
將RFWF 的準確率和樹的數(shù)量之間的對應情況與傳統(tǒng)隨機森林(RF)進行比較。為了便于分析多特征融合對疲勞駕駛識別的影響,使RF 中樹的數(shù)量與RFWF保持一致,將基于10維疲勞駕駛行為特征向量(見表1)生成的樣本輸入RFWF 和RF,得到的準確率值分別記為RFWF(10)和RF(10);從上述樣本中去除特征Aap、Asw、BS和SWP后得到6維駕駛行為特征向量樣本,輸入RFWF 和RF 后得到的準確率值分別記為RFWF(6)和RF(6),實驗結(jié)果如圖10所示。
圖10 RFWF與RF比較結(jié)果
觀察圖10 可知,基于10 維特征向量的疲勞駕駛識別精度明顯高于基于6維人臉疲勞特征的識別精度,這表明了多特征融合策略在疲勞駕駛識別領(lǐng)域的有效性。在10維特征向量樣本集上,RFWF的準確率隨著樹的數(shù)量的增加而提高,當樹的數(shù)量為74棵時,準確率達到最高值(91.7%)。RF 的準確率雖然也隨著樹的數(shù)量的增加而提高,但在達到90.1%后(65 棵)出現(xiàn)了下降,這主要是因為特征的隨機選取以及樹的數(shù)量的不確定性影響了其準確率。
按五折交叉法將RFWF 的運行性能和傳統(tǒng)隨機森林(RF)、SVM、徑向基神經(jīng)網(wǎng)絡(luò)(RBF)、貝葉斯分類(BC)等模型進行比較。其中,RF模型采用的是融合SVM的隨機森林算法[29],SVM模型采用的是PSO-SVM算法[30],RBF模型采用的是SOM算法[31],BC模型采用的是基于PCA 的貝葉斯模型[32]??紤]到疲勞駕駛系統(tǒng)的實時性要求,除了準確率外還有必要考察其運行時模型的單次識別過程(即第二階段中do_fatigue_analysis 函數(shù)的運行時間)的耗時情況。測試結(jié)果如表3 所示(A0 為清醒狀態(tài)的平均識別準確率、A1 為輕度疲勞狀態(tài)的平均識別準確率、A2為重度疲勞狀態(tài)的平均識別準確率、Av為上述三種狀態(tài)的平均識別準確率)。
表3 各模型的疲勞駕駛識別結(jié)果
從測試結(jié)果看,基于隨機森林算法的疲勞駕駛識別平均準確率要高于其他幾種分類模型1 個百分點左右。得益于特征選取和樹的數(shù)量控制兩方面的優(yōu)化,RFWF的平均準確率又比RF高出1.53個百分點。同時注意到,各模型對于清醒和輕度疲勞狀態(tài)的識別準確率明顯低于重度疲勞的準確率,這主要是因為重度疲勞特征較為明顯,而其余兩種狀態(tài)容易受到各種環(huán)境和事件因素干擾。從模型的運行耗時看,RFWF的運行耗時和其他分類器相比也處于較低水平,有利于疲勞駕駛識別系統(tǒng)的實時性。
本文提出一種融合了駕駛員臉部疲勞特征和車輛操控疲勞特征的疲勞駕駛識別算法。該方法對傳統(tǒng)隨機森林進行了優(yōu)化,改進了其特征選取策略和樹的數(shù)量的評估方法,提高了模型的識別效果。在實車上采集的2 100 個樣本上的平均準確率均值達到92.06%,高于其他分類模型?;谒崴惴ㄔO(shè)計的車載疲勞駕駛系統(tǒng)能夠以較低的成本安裝在實車上,具有較好的應用前景。