, ,, , ,
(1.天津工業(yè)大學 a.電子與信息工程學院; b.計算機科學與軟件學院,天津 300387;2.天津市光電檢測技術與系統(tǒng)重點實驗室,天津 300387)
近年來道路交通事故頻發(fā),嚴重威脅到人們的生命財產(chǎn)安全和社會的發(fā)展。美國國家統(tǒng)計和分析中心的報告[1]表明,疲勞駕駛是引發(fā)交通事故的重要原因之一,在交通事故發(fā)生前,如果駕駛員的反應可以提前0.5 s,則能夠避免60%交通事故。因此,駕駛員疲勞檢測技術的研究對于預防交通事故有著重要的意義。
作為一種非常重要的生物特征,人臉包含了豐富的信息,比如性別、身份、表情等?;谝曈X的駕駛員面部檢測是疲勞檢測的首要步驟。針對人臉檢測,國內(nèi)外學者提出了各種各樣的檢測方法。文獻[2-3]首先對原始圖像進行色彩轉(zhuǎn)換等預處理,然后對預處理后的圖像進行膚色檢測排除背景區(qū)域,最后使用Adaboost或中線定位法實現(xiàn)人臉檢測。文獻[4]設計了自適應更新參數(shù)的方法建立膚色檢測模型,結合人臉的相似度信息和灰度信息提高了膚色檢測的準確性,然后利用Adaboost對檢測得到的區(qū)域進行分類得到最終的人臉區(qū)域。文獻[5]提出一種結合Adaboost與 Clifford 代數(shù)矢量積性質(zhì)的人臉檢測方法,首先使用Adaboost檢測出人臉感興趣區(qū)域,然后使用基于知識的方法對感興趣區(qū)域進行篩選,最后使用Clifford 代數(shù)降低誤檢率。但是在實際應用中,上述方法容易受駕駛員姿態(tài)變化、遮擋等因素的影響,在復雜環(huán)境下檢測效果不佳,魯棒性差。
在基于視覺的駕駛員疲勞檢測系統(tǒng)應用中,眨眼頻率以及打哈欠狀態(tài)是疲勞檢測的重要指標。因此,眼睛和嘴部的狀態(tài)檢測是疲勞檢測中的關鍵問題,但是由于光照變化、佩戴眼鏡等情況,使得眼睛狀態(tài)識別的難度大大增加。
眼睛狀態(tài)的檢測方法有很多種,如文獻[6]采用模板匹配方法判斷眼睛狀態(tài),由于虹膜在眼瞼中位置不固定,易產(chǎn)生誤檢。采用多模板匹配,檢測效率低實時性差。文獻[7]采用眼睛虹膜區(qū)域灰度投影曲線判斷眼睛狀態(tài),在虹膜信息完善時,有較好的檢測效果,但是對光照要求較高,適用的場景少。文獻[8]在人臉檢測的基礎上,根據(jù)眼白在YCbCr空間良好的聚類性,建立高斯眼白分割模型,利用眼白面積作為眼睛開閉指標。該算法復雜度低,但對光照變化敏感。文獻[9]在紅外條件下,根據(jù)眼角角度及上下眼瞼間的高度在平面坐標上的分布特征對眼睛狀態(tài)進行分類。文獻[10]使用基于LBP與SVM結合的眼睛開閉檢測方法,該方法有較高的檢測率,但是對駕駛員佩戴墨鏡及姿態(tài)變化有一定的局限性,魯棒性差。傳統(tǒng)的分類器需要針對每種情況人為地選取合適的特征,特征選取的合適與否,成為制約分類器效果的關鍵因素。而CNN能夠自適應提取特征,避免了人工特征選取過程,且對特征有更好的表達能力,打破了圖像識別領域[11]中“先提取特征,后模式識別”的框架。
本文提出一種基于面部行為分析的駕駛員疲勞檢測方法。使用紅外采集設備對面部圖像進行采集,通過結合AdaBoost與KCF算法進行人臉檢測跟蹤;采用級聯(lián)回歸方法定位關鍵點,提取眼睛和嘴部區(qū)域;運用CNN進行眼部和嘴部狀態(tài)識別,計算疲勞參數(shù)進行疲勞檢測。
由于基于AdaBoost的人臉檢測算法在駕駛員姿態(tài)變化、光照變化及遮擋等情況下的檢測效果不佳,魯棒性較差,因此需要結合跟蹤算法增加系統(tǒng)對人臉姿態(tài)變化、遮擋等情況的魯棒性。KCF跟蹤算法[12]在循環(huán)結構檢測跟蹤算法[13]的基礎上使用HOG特征替代之前方法中的灰度值特征,結合循環(huán)矩陣及其在傅里葉變換時的特性實現(xiàn)快速實時的跟蹤。該算法對于光照變化、遮擋、姿態(tài)變化、非剛性形變、背景雜亂等跟蹤效果良好。因此,本文采用基于KCF的跟蹤算法進行駕駛員面部跟蹤,結合人臉檢測算法提高檢測的效率,減少誤檢情況。
基于面部行為分析的駕駛員疲勞檢測方法框圖如圖1所示。
圖1 基于面部行為分析的駕駛員疲勞檢測方法框圖
面部關鍵區(qū)域檢測是基于視覺特征疲勞檢測方法中的重要部分,為基于人臉圖像分析的方法提供了豐富的信息,在疲勞檢測等領域有著重要的應用。
基于級聯(lián)回歸的特征點檢測通過使用一系列弱回歸器擬合復雜的非線性的關系,學習回歸函數(shù)直接映射到檢測結果。級聯(lián)回歸的方法定位速度快、檢測精度高,本文選用基于級聯(lián)回歸的人臉特征點檢測[14]。級聯(lián)回歸模型將T個回歸器通過級聯(lián)的方法組合,通過不斷擬合進行殘差配準,其過程如下:
(1)
(2)
本文采用基于級聯(lián)回歸的方法對面部關鍵點進行檢測,根據(jù)特征點的位置進行眼部和嘴部區(qū)域的提取,如圖2所示。
圖2 基于人臉特征點的眼睛和嘴部區(qū)域提取
采用此方法可以同時提取眼睛和嘴部的區(qū)域,提取規(guī)則如下:
(3)
其中,X_e、Y_e、X_m、Y_m分別為特征點檢測中眼部和嘴部的寬、高,W_e、H_e、W_m及H_m分別為提取眼部和嘴部區(qū)域的寬、高。
CNN直接以二維圖像作為輸入,自動學習圖像特征及數(shù)據(jù)內(nèi)部的隱含關系,避免了對圖像進行復雜的預處理,具有位移、縮放和扭曲不變性的優(yōu)點。CNN的網(wǎng)絡結構包括卷積層、降采樣層和全連接層。圖3為本文使用的SR-Net網(wǎng)絡。
圖3 SR-Net網(wǎng)絡結構
卷積層是CNN的核心結構。CNN采用局部連接和權值共享的方式,提取圖像不同位置中的局部特征,對于某個神經(jīng)元來說,其提取的局部特征是不同特征圖中的相同位置[15]。其中每個卷積層含有多個特征平面,通過卷積核對上一層圖像進行卷積,加上偏置得到當前層的特征圖。不同的卷積核通過“滑動窗口”的方式提取輸入圖像不同位置的特征。通過網(wǎng)絡的訓練,卷積核可提取出某些有意義的特征。
降采樣層一般在卷積層之后,對卷積層生成的特征圖進行降維,在減小計算復雜度的同時可以保持特征不變。降采樣分為平均降采樣、最大值采樣和隨機采樣[16]。CNN中最常用的是最大值采樣,其中心思想是先將圖像分割成相互沒有交集的矩形區(qū)域,然后用每個區(qū)域的最大特征表示降采樣之后的卷積特征。
全連接層上的每一個神經(jīng)元均與上一層特征圖中的所有神經(jīng)元互相連接。與卷積層局部連接方式相比,全連接層的全連接方式會產(chǎn)生更多的網(wǎng)絡參數(shù)。通過之前的卷積層和降采樣層已經(jīng)降低了特征維數(shù),大大減小了全連接層的計算量。該層神經(jīng)元的輸出如下:
hW,b(x)=f(WTx+b)
(4)
其中,x為神經(jīng)元的輸入,hW,b(x)為神經(jīng)元的輸出,W為連接權重,b為偏置,f(·)為激活函數(shù)。
當駕駛員疲勞時,會出現(xiàn)眨眼頻率降低、眨眼次數(shù)減少、打哈欠等現(xiàn)象。僅依靠眼睛的狀態(tài)判斷疲勞存在一定的局限性,因此本文在基于CNN的狀態(tài)識別結果的基礎上,通過獲取駕駛員的眼睛、嘴部狀態(tài)計算PERCLOS、BlinkFreq、打哈欠等參數(shù)作為駕駛員疲勞判斷的標準,基于CNN的眼睛狀態(tài)的識別結果如圖4所示,其中,0.0代表閉眼,1.0代表睜眼。
圖4 眼睛睜開程度識別結果
1)PERCLOS參數(shù)
計算單位時間內(nèi)眼睛閉合狀態(tài)的總幀數(shù)n與單位時間內(nèi)總幀數(shù)N的比值,即PERCLOS值[17],計算公式如下:
(5)
2)BlinkFreq參數(shù)
在正常情況下眨眼頻率為每分鐘15次~30次,每次眨眼時間為 0.25 s~0.3 s。若駕駛員在一段時間內(nèi)的眨眼頻率過低,那么駕駛員的狀態(tài)有可能處于疲勞。
根據(jù)圖4中檢測結果進行統(tǒng)計,當眼睛狀態(tài)值由1變到0時,即認為眼睛眨動次數(shù)增加一次,以此類推,統(tǒng)計當前檢測時間內(nèi)所有的眨眼次數(shù),即可得到眨眼頻率,計算公式如下:
(6)
其中,n為當前檢測時間內(nèi)所有的眨眼次數(shù),tframe為處理每幀的時間,N為當前統(tǒng)計時間內(nèi)的總幀數(shù)。
3)打哈欠參數(shù)
人們疲勞時往往伴隨著頻繁地打哈欠。打哈欠是一個較長的過程且嘴巴張開幅度較大。當嘴巴張開持續(xù)一段時間后,可判定為打哈欠狀態(tài)。打哈欠參數(shù)的定義如下:
fMopen=n/N
(7)
其中,n為統(tǒng)計時間內(nèi)嘴巴張開狀態(tài)的總幀數(shù),N為統(tǒng)計時間內(nèi)的總幀數(shù)。當駕駛員打哈欠時,fMopen達到最大值。
紅外光可以克服佩戴墨鏡對駕駛員眼睛的遮擋問題且能滿足夜間使用的需求。本文的圖像采集系統(tǒng)使用MV-VD130SM型號的維視相機,選用主動紅外光源(850 nm)進行補光照明。同時采用850 nm的窄帶濾光片,在減少其他波長光線干擾的同時,可以穿透墨鏡,獲取紅外光譜下的眼睛圖像。
實驗環(huán)境為VS2012+Opencv2.4.9,Windows 7操作系統(tǒng)Intel(R)Core(TM)i7-6700HQ,CPUs(2.60 GHz),內(nèi)存8 GB。
通過紅外采集系統(tǒng)采集20位測試者的紅外視頻序列作為數(shù)據(jù)集,其中包括10名男性測試者和10名女性測試者。采集每位測試者在不佩戴墨鏡、佩戴近視鏡、佩戴夜視鏡及佩戴墨鏡4種情況下的視頻。以27 frame/s的幀率采集每種情況下的視頻,共采集了160段長度約為30 s的視頻,且視頻圖像大小為720像素×480像素。
5.3.1 眼部和嘴部區(qū)域檢測結果
為了檢驗本文眼部和嘴部區(qū)域提取算法的有效性,對IRF數(shù)據(jù)集下的視頻序列進行定位實驗,計算眼部和嘴部的定位準確率。本文取每個測試人員每種情況下的20張圖片進行實驗。部分測試人員的檢測結果如圖5所示,統(tǒng)計結果如表1所示。由實驗結果可知,本文提出的眼部和嘴部區(qū)域定位算法有較高的準確率。
圖5 部分檢測結果
定位區(qū)域樣本個數(shù)定位準確數(shù)定位準確率/%眼部1600155597.2嘴部1600154596.6
5.3.2 眼部和嘴部狀態(tài)識別
從嘴部和眼部提取的區(qū)域中選取20 000張圖片作為實驗訓練樣本,其中睜眼圖片7 000張、閉眼圖片5 000張、張嘴圖片4 000張以及閉嘴圖片4 000張。訓練時將正負樣本灰度化,并歸一化至36×28大小。部分樣本如圖6所示。
圖6 眼睛嘴巴部分訓練樣本
為驗證本文提出的眼部和嘴部狀態(tài)識別方法的準確性,使用SR-Net對是否佩戴眼鏡情況下的不同數(shù)據(jù)集進行測試驗證。表2為眼睛狀態(tài)測試結果,表3為嘴巴狀態(tài)的測試結果。
表2 眼睛狀態(tài)測試結果
表3 嘴巴狀態(tài)測試結果
由實驗結果可知,該網(wǎng)絡對不同環(huán)境下的眼睛和嘴巴的狀態(tài)有較高的識別率,但佩戴眼鏡的狀態(tài)識別率要低于其他情況,這主要是由于鏡片反光對一部分圖片的識別造成干擾,將一部分閉眼圖片識別為睜眼狀態(tài)。
將表2中眼睛狀態(tài)測試結果的平均識別率與基于高斯眼白模型(Sclera Gaussian model)的狀態(tài)識別方法[8]、基于多信息融合的眼睛狀態(tài)識別方法[9]、基于Gabor和SVM的眼睛狀態(tài)識別方法[18]、基于顏色相關的AdaBoost眼睛狀態(tài)識別方法[19]進行對比,結果如表4所示。
表4 不同眼睛狀態(tài)識別算法的識別結果 %
5.3.3 疲勞檢測
為驗證本文算法的準確率及速度,對紅外視頻采集系統(tǒng)獲取的9個視頻進行測試,其中包含6 844幀大小為320像素×240像素的圖像。本文算法處理一幀圖片各模塊的平均耗時如表5所示。
表5 疲勞檢測算法各模塊的平均耗時 ms
從表5的檢測結果可以看出,人臉檢測與跟蹤是算法的主要耗時模塊,眼睛和嘴部區(qū)域提取、狀態(tài)識別及疲勞判斷等模塊均有較高的檢測速率,能夠滿足疲勞檢測系統(tǒng)實時性的要求。
當駕駛員疲勞時,眨眼速度會變慢,眨眼頻率會降低,并伴隨著打哈欠。文獻[20]給出了2個閾值(0.075和0.15),把駕駛員疲勞的狀態(tài)分成3個部分:清醒,疑似疲勞,昏昏欲睡。但是也有其他的研究表明,當PERCLOS值小于0.4時駕駛員處于清醒的狀態(tài),大于0.4時駕駛員則處于疲勞的狀態(tài)。由于不同的疲勞判定方法中眼睛的閉合程度不完全相同,因此會出現(xiàn)不同的疲勞判斷閾值。
本文通過前面部分完成了人臉檢測與跟蹤、眼部和嘴部區(qū)域提取及眼睛和嘴巴狀態(tài)的識別工作,通過統(tǒng)計多名測試人員處于正常狀態(tài)及疲勞狀態(tài)下的視頻序列,計算相應的PERCLOS值,統(tǒng)計結果如圖7所示,其中data1視頻中駕駛員處于清醒狀態(tài),其他視頻中駕駛員均伴有不同程度的疲勞。
圖7 PERCLOS測試結果
通過統(tǒng)計實驗結果發(fā)現(xiàn),當駕駛員處于正常狀態(tài)時大部分PERCLOS值都小于疲勞時的數(shù)值,由于部分的誤檢或者光照的影響PERCLOS的值會略微增加,但是PERCLOS值都在0.2以內(nèi)。當PERCLOS大于0.2時已經(jīng)出現(xiàn)疲勞現(xiàn)象,為了減少誤判的情況,將PERCLOS的閾值設置為tp1=0.25,當PERCLOS值小于0.25,結合眨眼頻率和打哈欠的參數(shù)進行疲勞判定。
本文將打哈欠參數(shù)作為判定疲勞的輔助條件,通過統(tǒng)計嘴巴張開程度,確定打哈欠參數(shù)合適的閾值,圖8為部分測試結果。其中,data1~data5都存在打哈欠的行為,data6為普通情況下的嘴巴狀態(tài)。
圖8 嘴部張開程度檢測結果
由圖8可知,data6所示在正常情況駕駛員嘴巴基本處于閉合狀態(tài),fMopen的值都比較低,但是由于駕駛員有時說話時嘴巴有大幅度張開,也會影響打哈欠數(shù)值的計算。當駕駛員出現(xiàn)打哈欠現(xiàn)象時打哈欠參數(shù)基本都明顯大于正常狀態(tài)時的數(shù)值,本文選取tm=0.2作為fMopen打哈欠現(xiàn)象的閾值。
為了驗證本文方法的準確性,通過采集測試人員模擬清醒狀態(tài)及疲勞狀態(tài)的視頻,包括佩戴眼鏡及不佩戴眼鏡的情況。首先通過人工統(tǒng)計測試視頻中疲勞發(fā)生的次數(shù),然后通過本文的疲勞檢測系統(tǒng)對測試視頻進行檢測,最后對檢測結果進行統(tǒng)計,實驗結果如表6所示。
表6 疲勞實驗檢測結果
從表6可以看出,本文的疲勞檢測算法在有無佩戴眼鏡的情況下均有較高的檢測準確率。但是因為佩戴眼鏡時鏡片反光等情況會影響人臉特征點檢測,使得眼部和嘴部區(qū)域提取及識別產(chǎn)生誤檢,相對于無眼鏡的情況下準確率稍低。
本文使用基于級聯(lián)回歸的人臉關鍵點檢測方法進行眼睛和嘴巴區(qū)域圖像的提取,并采用基于CNN的方法進行眼部和嘴部狀態(tài)的識別,在此基礎上計算PERCLOS、眨眼頻率和打哈欠等參數(shù)進行疲勞判斷。實驗結果表明,本文方法具有較快的檢測速率和準確性,對眼睛及嘴部狀態(tài)識別具有較高的準確性和魯棒性,尤其在佩戴眼鏡的情況下識別率明顯提升,能夠準確檢測疲勞。本文算法只對眼睛和嘴巴的張合2種狀態(tài)進行分類識別,在實際檢測過程中也存在中間狀態(tài),這對疲勞的判斷也有十分重要的意義,因此對中間狀態(tài)的識別是下一步要研究的工作。
[1] NOBE S A,WAG F Y.An Overview of Recent Develop-ments in Automated Lateral and Longitudinal Vehicle Controls[C]//Proceedings of IEEE International Conference on Systems,Man,and Cybernetics.Washington D.C.,USA:IEEE Press,2001:3447-3452.
[2] 李明瑞,傅 明,曹 敦.基于膚色檢測的AdaBoost人臉檢測算法改進[J].計算機工程,2012,38(19):147-150.
[3] 劉在英,朱琳玲,楊 平.基于膚色模型和中線定位的人臉檢測算法[J].計算機工程,2013,39(1):200-203.
[4] 劉春生,常發(fā)亮,陳振學,等.改進的高斯膚色模型及其在人臉檢測中的應用[J].儀器儀表學報,2012,33(5):1117-1121.
[5] 楊晉吉,李榮兵.基于Adaboost與Clifford代數(shù)的人臉檢測[J].計算機工程,2013,39(9):214-217.
[6] LEE B G,JUNG S J,CHUNG W Y.Real-time Physiological and Vision Monitoring of Vehicle Driver for Non-intrusive Drowsiness Detection[J].IET Com-munications,2011,5(17):2461-2469.
[7] OMIDYEGANEH M,JAVADTALAB A,SHIRMOHAMMADI S.Intelligent Driver Drowsiness Detection Through Fusion of Yawning and Eye Closure[C]//Proceedings of IEEE International Conference on Virtual Environments Human-computer Interfaces & Measurement Systems.Ottawa,Canada:IEEE Press,2011:18-23.
[8] 曠文騰,毛寬誠,黃家才,等.基于高斯眼白模型的疲勞駕駛檢測[J].中國圖象圖形學報,2016,21(11):1515-1522.
[9] 趙 文,張 意,張衛(wèi)華,等.基于紅外圖像的眼睛開閉檢測方法[J].計算機工程與設計,2015,36(2):436-440.
[10] 姚 勝,李曉華,張衛(wèi)華,等.基于LBP的眼睛開閉檢測方法[J].計算機應用研究,2015,32(6):1897-1901.
[11] LECUN Y,BOSER B,DENKER J S,et al.Backpro-pagation Applied to Handwritten Zip Code Recogni-tion[J].Neural Computation,1989,1(4):541-551.
[12] HENRIQUES J F,CASEIRO R,MARTINS P,et al.High-speed Tracking with Kernelized Correlation Filters[J].IEEE Transactions on Pattern Analysis & Machine Intelligence,2015,37(3):583-596.
[13] HENRIQUES J F,RUI C,MARTINS P,et al.Exploiting the Circulant Structure of Tracking-by-detection with Kernels[C]//Proceedings of ECCV’12.Roma,Italy:[s.n.],2012:702-715.
[14] 鄧健康.基于級聯(lián)回歸模型的人臉配準研究[D].南京:南京信息工程大學,2015.
[15] CUN Y L,HAN C,WANG C,et al.The Application of A Convolution Neural Network on Face and License Plate Detection[C]//Proceedings of the 18th International Conference on Pattern Recognition.Washington D.C.,USA:IEEE Press,2006:552-555.
[16] ZEILER M D,FERGUS R.Stochastic Pooling for Regularization of Deep Convolutional Neural Networks[J].Computer Science,2012,7575 (1):702-715.
[17] 吳康華.基于PERCLOS的駕駛疲勞檢測系統(tǒng)設計[D].杭州:浙江大學,2008.
[18] JAVIER F M.Driver Drowsiness Warning System Using Visual Information for Both Diurnal and Nocturnal Illumination Conditions[J].EURASIP Journal on Advances in Signal Processing,2010(1):1-19.
[19] WANG H,ZHOU L B,YING Y.A Novel Approach for Real Time Eye State Detection in Fatigue Awareness System[C]//Proceedings of International Conference on Robotics Automation and Mechatronics.New Yrok,USA:ACM Press,2010:528-532.
[20] KNIPLING R R,WIERWILLE W W.Vehicle-based Drowsy Driver Detection:Current Status and Future Prospects[C]//Proceedings of IVHS’94.Atlanta,USA:[s.n.],1994:1-24.