詹潤哲,姜 飛
宿州學院信息工程學院,宿州,234000
疲勞駕駛是交通事故的重要成因之一。根據美國汽車協會(AAA)交通安全基金會的調查數據顯示,疲勞駕駛在美國的交通事故死亡事件中占據21%的比例,每年約6 400人因此喪生。檢測駕駛員的疲勞度,并在其超過一定閾值時報警,是智能交通領域、智能輔助駕駛的一項關鍵技術。
近年來,國內外研究者對駕駛員疲勞檢測技術進行了深入研究[1]。檢測方法主要分為兩大類:一是根據外部硬件設備的受控表現,判斷駕駛員行為是否為疲勞駕駛,如通過傳感器獲取車輛在行駛過程中的參數(道路線檢測、速度變化、車輛間距離)判斷異常情況[2];二是通過駕駛員自身的生理特征檢測駕駛員是否構成疲勞駕駛,如通過心、腦、眼電圖取得駕駛過程中的變化數據綜合判斷[3],通過駕駛員正常與疲勞狀態下的視覺特征不同,采用模式識別的方法進行判別[4]。
以硬件傳感器為主的方法其準確性與檢測儀器的精度和相關參數有較大關系,且接觸式檢測對駕駛員操作構成了障礙。本文基于機器視覺技術進行疲勞檢測,主要是對疲勞特征的挖掘、提取以提高檢測的實時性和準確性。
本文以非侵入的方式為出發點,采用面部特征的融合作為疲勞檢測的主要指標。所提出的算法流程由四個階段組成,即人臉檢測、關鍵區域分割、疲勞參數計算和判定預警。首先,對視頻圖像進行濾波等圖像預處理,使用優化的類Haar特征檢測算法進行人臉檢測。然后,進行人臉關鍵點定位,劃分出關鍵區域,通過關鍵點位特征值的計算,得出駕駛員的眨眼頻率以及打哈欠狀態,進一步作為疲勞參數計算的重要指標,以此實時綜合分析檢測結果。最終,當疲勞參數超越設定閾值時給予疲勞警告。關鍵點特征融合的疲勞檢測方法的算法流程圖,如圖1所示。

圖1 疲勞檢測方法設計
Viola-Jones檢測算法使用類Haar特征,能進行穩健高速的人臉檢測[5],如圖2(a)-圖2(e)為五類Harr特征,對于一張大小N×N的灰度圖像I,其特征區域為S,則特征Feature計算方式為白色區域內的像素和減去黑色區域內的像素和:


圖2 類Haar特征及其計算
為了能夠達到實時檢測人臉的需求,需要使用積分圖進行加速計算。在積分圖中,每個點(x,y)存儲了其左上方所有像素的和,計算方式為:∑x′ 對于訓練樣本來說,數個類Haar特征的組合最終將產生較大數量級的特征集,需要采用AdaBoost算法進行特征的選擇與弱分類器的訓練。AdaBoost算法的基本思想為首先選取相應的特征構建不同的弱分類器,然后在每次弱學習后調整樣本空間中正確分類與錯誤分類的權重分布,并重點關注錯誤分類樣本,最終將這些弱分類器集合構成一個強分類器。這一系列強分類器經過閾值調整級聯,形成最終的人臉檢測分類器,如圖3所示。 圖3 人臉檢測分類器訓練流程 在前述算法完成人臉檢測后,為了能夠實現對疲勞特征區域進行計算,需要對人臉面部特征點進行提取。Dlib視覺計算庫中提供了一種基于梯度提高學習的回歸樹人臉對齊算法[6],通過級聯一系列殘差回歸樹,疊加對應葉子節點上的殘差回歸量,使當前的形狀回歸到Ground Truth上。利用iBUG 300-W人臉特征點數據集[7]上訓練得出的68個特征點模型及GBDT算法應用在人臉關鍵點定位上,如圖4所示。 圖4 GBDT算法計算68個人臉關鍵點 在人臉關鍵點定位算法得到的分割結果中,為了能夠選取對實際問題有較大參考意義的視覺特征參數,重點關注在嘴部與眼部區域的特征。如圖4中所定位的68個關鍵點中,眼部的關鍵點為P37~P42(左眼),P43~P48(右眼),嘴部的關鍵點為P49~P68。疲勞參數計算的基準主要為在一定的連續幀數內,眨眼的頻率與打哈欠的狀態。 經過實驗,眼部在睜開與閉合狀態時,由于豎直方向上眼瞼關鍵點之間的距離變動,其寬高方向上的比值會出現明顯變化,能夠通過特征點坐標數值動態計算得出。以左眼為例,距離計算函數Distance為圖像兩像素點間的歐式距離,則: 在實際測量中,當Ratio(Eye)小于0.2時,人眼為閉合狀態。同理,在打哈欠時嘴巴張開幅度較大,嘴部選取的寬高方向上的關鍵點在比值上同樣具有較明顯的變化,計算方式為: 在實際測量中,當Ratio(Mouth)大于0.75時,則可判斷該幀嘴部有較大張幅。 在眼部和嘴部狀態能夠以一定閾值判別的情況下,根據狀態信息可在一定幀數內實現融合疲勞參數的計算。計算方式為在循環讀入視頻流的N幀內,當3.2中所述Ratio值在當前處理幀數內達到限定閾值,則對應計數器n增加一次,N幀后計數器對應清零。則眼部與嘴部疲勞頻度為: 由于Ratio(Mouth)的值受外界影響較大,如行車交談等也會影響到該值變化,故在判別中作為眼部疲勞的輔助判別參數,當fMouth超過規定頻度時,若feye并沒有超過該占比則不做疲勞判定。 圖5 不同狀態下關鍵區域劃分結果 實驗程序采用Python語言下的OpenCV 3.3.0與Dlib 19.6.0框架進行編寫并測試,操作系統為macOS,CPU為Intel Core i7-4770HQ@2.2GHz,內存16G。測試用視頻序列分辨率為800×460。 PERCLOS(Percentage of Eyelid Closure over the Pupil over Time)疲勞計量方法被認為是最有效的、車載、實時駕駛疲勞測評方法,其定義為單位時間內眼睛閉合所占的時間比例[8]。在測量周期t1-t4內,t2-t3為閉合時間,則度量值的計算方式為(采用P80-PERCLOS計算方式): PERCLOS疲勞計量方法作為對比組,與本文所敘述的關鍵點特征融合的方式進行對比,實驗前預先統計測試視頻序列中出現的疲勞次數,與實際檢測出疲勞次數對比,算法對比的實驗結果如表1所示。 表1 檢測算法對比實驗結果 在同一算法下,根據受試者眼部是否佩戴眼鏡的狀態,進行檢測對比,實驗對比結果如表2所示。 表2 面部關鍵點特征-佩戴眼鏡對比實驗結果 實驗表明,面部關鍵點融合特征算法能夠檢測出較多的疲勞情況,正確率較高。但是由于本算法涉及多個疲勞因素與判定方式,在定值判定的情況下容易發生誤檢測的情況;PERCLOS疲勞計量方法采用單一因素進行檢測,故誤檢發生不頻繁。與此同時,不同受試者的疲勞判定關鍵區域情況不盡相同,如在佩戴眼鏡的情況下,由于模型訓練多為不佩戴眼鏡的樣本,故檢測過程中時有檢測丟失的情況發生,檢測能力也較不佩戴眼鏡情況弱。 以視覺方法為基礎的疲勞駕駛檢測方法在實際應用過程中設備限制低,也不會給駕駛員活動帶來障礙。且得益于積分圖加速、人臉關鍵點定位等方法在前期工作中的應用,保證了實時性,基于面部關鍵點特征融合的疲勞檢測方法在上述測試中也取得了較好的精度,具有易于部署的特點且在嵌入式平臺上也能夠保證一定速度。
3 人臉關鍵點及疲勞區域參數計算
3.1 人臉關鍵點定位

3.2 關鍵區域參數計算
3.3 疲勞參數計算

4 實 驗
4.1 實驗環境
4.2 實驗結果


4.3 結果分析
5 結 論