吳雪穎 吳才碩 黃文聰 覃舒琳



摘? 要:疲勞駕駛導致汽車交通事故逐年增加,為了提升駕車的安全性,需對駕駛員疲勞狀態實時監測并及時提醒.為了提高疲勞駕駛判斷效率及準確率,本文運用Viola-Jones框架特征矩陣進行人臉預判斷;預判斷過程中為了減少Haar值計算量并提高人臉識別速度,采用Adaboost算法和級聯分析,剔除非人臉的Haar特征值,實現快速人臉識別;根據色彩空間轉化實現眼部分割處理,根據PERCLOS值評估駕駛員是否處于疲勞狀態并提前予以警示;通過MATLAB仿真軟件實現疲勞駕駛檢測算法的仿真分析.在多個樣本的測試過程中,該方法有效識別出人臉,并能夠準確監測駕駛員的疲勞狀態.
關鍵詞:疲勞駕駛檢測;人臉檢測;疲勞特征提取;PERCLOS值;Viola-Jones
中圖分類號:TP391.41;U491.116? ? ? ? ?DOI:10.16375/j.cnki.cn45-1395/t.2021.01.007
0? ? 引言
隨著交通工具的飛速發展,交通隱患也成為威脅人類安全的殺手之一,每年全世界至少有50萬人死于交通事故.歐美各國的研究報告指出,交通事故的起因有接近90%的因素是人為造成,其中在駕駛過程中由于疲勞引發的交通事故就有10萬多例.由此得知,駕駛員的疲勞駕駛已經成為道路交通事故的主要原因之一.因此,對疲勞駕駛實時監測的研究對安全行車以及駕駛員的生命財產安全具有一定的意義[1-3].
汽車疲勞駕駛的表現特征有很多方面,較為突出的特征就是駕駛員的面部特征,如嘴部和眼部的開度、頭部偏移等直觀現象可作為疲勞的判斷條件.文獻[4]利用圖像處理手段對圖像進行增強處理,消除因周圍光線不佳造成的疲勞駕駛特征識別的干擾.采用AdaBoost的人臉檢測算法對人臉關鍵部位進行跟蹤,根據人眼變化并結合PERCLOS準則進行疲勞判定,仿真結果能準確實現對人臉關鍵部位的檢測.文獻[5]對疲勞駕駛的判斷考慮了人臉部位的變化和駕駛狀態數據兩個因素.根據Dlib庫的人臉輪廓點提取計算眼部和嘴部開度比值,獲取正常及疲勞狀態特征,再采用改進后的隨機森林模型對疲勞狀態進行判斷,結果表明疲勞駕駛檢測結果準確率達到92.06%.文獻[6]根據駕駛員的眼睛開度以及顱骨位置變化設計了基于駕駛人眼睛開度信息和頭部姿態信息的駕駛疲勞檢測系統.采用Camshift算法對人臉跟蹤檢測,并用二階HOG特征和隨機森林回歸算法對頭部角度實時檢測.其仿真結果表明在各種駕駛姿態下都可以實時快速檢測疲勞情況.有研究指出,人疲勞和正常時其心率數據會存在微小區別,故有部分研究人員以心率區別來判斷是否屬于疲勞駕駛.如文獻[7]為了解決疲勞駕駛檢測系統實用性和準確率低等問題,基于空間聚類心率檢測算法實現了疲勞駕駛實時檢測系統.通過手環采集駕駛員心率值,利用該值與疲勞度之間相關程度,經空間聚類算法分析判斷駕駛員是否為疲勞狀態.文獻[8]指出,利用心率異常來判斷疲勞駕駛的方法耗時長且準確率低,為此提出短時心電信號的疲勞駕駛檢測算法.先截取30 s的短時心電信號,利用差分閾值法確定R波位置,計算R波序列的時域/頻域特征,與深度卷積神經網絡模型特征提取相結合,并用隨機森林分類器對特征進行分類,其檢測準確率達到 91%.
為了簡單快速判斷出人臉,并進行疲勞駕駛的判斷,本文先用Viola-Jones框架人臉檢測算法對人臉進行檢測;針對檢測速度以及特征Haar值累加計算量大等問題,采用圖像積分、級聯分析方法快速對拍攝圖像進行人臉篩查,提高人臉判斷速度和效率;采用PERCLOS值判斷駕駛員是否屬于疲勞狀態.實驗結果表明,該檢測方法有一定的實用性和有效性.
1? ? Viola-Jones框架疲勞駕駛檢測
由圖1可知,疲勞駕駛檢測主要通過攝像頭獲取駕駛員圖像,將圖像進行預處理,為下階段的Viola-Jones框架的人臉檢測作準備,當檢測到圖像屬于人臉,再提取圖像中的眼部關鍵部位,提高了疲勞判斷的效率.根據提取特征與疲勞駕駛特征類型進行匹配,根據閉眼頻率PERCLOS值判斷是否屬于疲勞駕駛,并反饋結果提醒駕駛員正在疲勞駕駛.
1.1? ?圖像預處理
疲勞駕駛判斷前提是對駕駛員的面部特征提取,考慮到在行車時,路面顛簸、環境光線以及攝像頭像素等因素會對拍攝的圖像質量產生一定影響,圖像關鍵部位的提取結果直接影響到對疲勞判斷的準確度,故需要對所拍攝相片進行預處理.為了剔除圖像中無用的信息,能夠在面部遮擋時提高定位準確度,采用直方圖均衡化方法,該方法可調節圖像對比度質量,通過變換函數將灰度分布集中的圖像轉成灰度平均分布的圖像.而圖像傳輸過程中難免受環境噪聲影響,為了改善圖像質量,采用中值濾波方法,該方法在保持圖像邊緣清晰的情況下進行噪音過濾.此外,圖像拍攝的清晰程度受周圍環境影響較大,需要對所拍攝的圖像進行光照補償處理,從而減少環境光線對疲勞駕駛檢測結果的影響[9].
1.2? ?Viola-Jones框架人臉檢測算法
Viola-Jones人臉檢測算法已成功對人臉進行實時檢測,其首先利用Haar特征描述人臉特征,運用特征矩陣模塊積分來表示這個人臉圖像;再用Adaboost算法進行訓練,建立層級分類器,直接對矩陣特征區域進行匹配,從而快速判斷圖像是否為人臉[10].
1.2.1? Viola-Jones的框架矩陣特征及圖像積分
根據人臉膚色特征,人的眼睛區域會比臉頰區域深,眼部亮度會比臉頰暗一些,同理,嘴唇區域也比嘴部四周暗一些,鼻子區域會比兩邊臉頰要亮.基于該臉部特征,Viola-Jones框架矩陣特征使用如圖2所示的4種矩陣特征來表示臉部[10].
由圖2可知,運用Viola-Jones框架矩陣模型可以把人臉圖像表示成多個白色區域和黑色區域.
為了計算Haar特征,需要對矩形區域進行所有像素求和.一個圖像包含不同數量及形狀的矩形區域,如果將每個矩形區域都用遍歷所有像素再求和的計算方法,計算量巨大、效率低.為了改進這些問題,采用積分圖像方法,如圖3左圖所示,對于圖像任何一點[Sx,y]的積分圖像值等于位于該點左上角的所有像素之和,公式如式(1)所示:
根據積分圖像方法(見圖3),假設[fx,y]表示整體的積分面積,則某一矩形面積可以根據已知的其他矩形面積求得,如面積[Sx, y=fx, y-Sx-1, y-Sx, y-1-Sx-1, y-1].運用積分圖像方法之后,無需反復遍歷圖像中所有的矩形區域來計算矩形區域的灰度值總和,只需對原圖像進行遍歷一次,大大減小了灰度值計算量[11].
1.2.2? Adaboost算法
獲取人臉特征后,特別在haar特征較多的情況下,受各類圖像分辨率影響,從大量的特征中選取所想要的特征才能有效達到檢測目的.如圖4所示,Adaboost算法即是針對高維的Haar特征進行選擇,選擇部分特征來進行分類器訓練,由弱分類器構造強分類器,將一系列的“弱”分類器通過一定權重值設置線性組合,構成一個“強”分類器[12-14].
1.2.3? 級聯分析
Adaboost算法所建立的分類器在整個分類過程中,需要把相關數據中所有特征信息進行匹配,完成后才能判斷一張圖像是否為人臉.該檢測速度十分緩慢,達不到期望的快速檢測預警效果.因此,通過使用級聯方法來提高檢測效率,該方法是基于退化的決策樹算法.如圖5所示的級聯檢測器工作流程,先由第一級的強分類器F1檢測出疑是人臉子窗口樣本,才能激發第二級的強分類檢測器F2,否則停止檢測該窗口并丟棄.依次類推,直到最后Fn檢測器給出正確的判斷人臉結果.因此,非人臉的圖像只需少量的haar特征就可以判斷出來并排除掉,無需進行所有特征的檢測判斷[12-14].
2? ? 眼睛部位提取及疲勞判定
在人臉的面部特征中,眼睛、鼻子、嘴巴可以最為直觀地體現人在當前情況下大腦的疲勞程度.在人臉的研究中發現人的膚色呈現出聚類性,如果將人臉中非特征區域的部分去除,保留眼睛、鼻子、嘴巴等明顯特征區域,對人臉疲勞特征識別和提取有很大幫助.此外,人臉千變萬化,在實際應用中整張面部識別存在一些問題,如人臉模板不能通用于任意拍攝圖像,即人在駕駛時的姿勢、位置的微量變化都會對人臉識別產生影響.這需要多模板、多尺度、多角度的匹配,很難做到把所有人臉模板都囊括.因此,需將眼睛和嘴巴單獨分割建模,對其開度、張度進行單獨匹配且其限值也是隨著人臉比例進行動態調節設定.
對于關鍵部位的提取采用Matlab軟件自帶的級聯對象檢測器對眼睛位置進行定位.
2.1? ?眼睛狀態提取
眼睛疲勞判斷是根據人眼開度不同時眼部輪廓會隨之變化,故所提取的邊緣會稍微不同.而眼睛邊緣檢測準確度不高但速度快,考慮到疲勞檢測速度及準確度,對于眼睛部位狀態的提取采用組合算法,即模板匹配及水平灰度投影算法相結合;用檢測器確定眼部位置后,運用模板匹配法對樣本進行粗略檢測,將樣本進行分類,如睜眼、閉眼和可疑閉眼;再通過水平灰度投影法對閉眼和可疑閉眼樣本進行判斷,進一步確定其狀態,故該組合方法判斷眼睛開閉狀態的準確度較高.
2.2? ?疲勞判定
在進行眼部分割時,首先提取眼睛特征.根據卡內基梅隆實驗[15],在一定時間內眼睛的內瞳孔占整個眼部比例達到一定數值即為眼睛閉合狀態.在實驗中將眼瞼遮住瞳孔的面積超過70%、80%、50% 3個不同百分比計為眼睛閉合,并分別用P70、P80及EM符號來表示.故在一定時間內,提取眼部參數進行眼部閉合百分比匹配,當達到眼睛閉合程度并滿足一定頻率時可判斷為疲勞駕駛狀態,該頻率用PERCLOS值表示.相關研究表明,P80的實驗數據對駕駛員疲勞駕駛過程中的描述較為準確,其PERCLOS值與疲勞狀態的關聯性很強[4].PERCLOS值計算如下:
圖6為PERCLOS值的原型圖,圖中縱坐標是眼部的開度,曲線是眼睛開度隨著時間變化的曲線.圖中t1是眼睛在完全打開到閉合20%的時間;t2為睜開至閉合80%的時間;t3是由閉合至睜開20%的時間;t4是由閉合至睜開80%時間.根據眼睛開度變化數值可以得到眼睛眨眼頻率值f即PERCLOS值.
此次研究采用每8 s進行一次測試的方式,對于P80的檢測方式來說,當f >0.15,則認定駕駛員為疲勞狀態.
當PERCLOS值比較低時,即使駕駛員的眼睛是睜開的,實際卻處于走神狀態,根據其嘴部開度情況可判斷其疲勞狀態.因此,根據PRECLOS值計算出每分鐘的閉眼幀數.一般情況下人眼每分鐘眨眼的次數為10~15次,以這個數值為標準對駕駛員的當前情況進行判斷,當低于時可能出現疲勞的情況,同時結合嘴巴張度來判斷是否為疲勞駕駛.
3? ? 案例分析
為了驗證模型的有效性、可行性,分別從人臉檢測、眼部關鍵部位檢測及疲勞檢測等方面進行多個樣本測試分析.
3.1? ?人臉及關鍵部位檢測
為了提高疲勞駕駛的檢測效率,需對拍攝圖像進行人臉預判斷,只有判斷結果為人臉時才能進行疲勞檢測,因此,人臉預判斷步驟非常關鍵,如判斷失誤就可能錯過疲勞采集信息,將對疲勞判斷結果產生一定影響.本次的人臉及關鍵部位檢測采用了多個樣本進行測試,其檢測結果如圖7、圖8所示,圖中人臉框架及關鍵部位都有方框標出,圖7中還定位不同開合度的人眼,說明其模型可以可靠檢測出人臉及關鍵部位. 此外,圖8對多個人臉對象進行檢測,從圖8中可知,由于采用了Adaboost算法和級聯分析,可以有效檢測到不同臉型以及姿態下的人臉,大大減少了漏檢情況.
3.2? ?疲勞駕駛檢測
為了檢測算法對于不同駕駛員檢測結果的準確性,對6個不同測試樣本進行疲勞駕駛檢測,測試結果如表1所示.
由表1結果可知,其算法對人臉關鍵部位的檢測準確度達到90.9%以上.在6個樣本的疲勞測試中,視頻1和視頻4模擬非疲勞狀態,算法都能夠正確判斷出非疲勞狀態;視頻2、3、5、6模擬疲勞狀態,算法除了視頻3判斷失誤,其他都判斷正確,故疲勞駕駛狀態判斷也比較準確.
4? ? 結論
本文基于MATLAB實現 Viola-Jones人臉框架的疲勞駕駛檢測系統建模及仿真.該算法實現了非人臉特征的過濾,檢測定位所需的人臉區域,有效提高了檢測速度及準確性并根據PERCLOS值進行駕駛疲勞判斷.由案例分析可知,該算法對于不同的測試樣本都能夠精準定位于人臉關鍵部位,并能判斷疲勞駕駛狀態,體現出該算法的通用性和有效性.
參考文獻
[1]? ? ?劉子謙.簡要分析新能源汽車在中國的發展前景[J].時代汽車,2017(24):44-45.
[2]? ? ?曹王欣,劉東梅,馬洋洋,等.探析電動汽車動力電池系統發展瓶頸與對策[J].南方農機,2019,50(9):107.
[3]? ? ?國家發展改革委,國家能源局,工業和信息化部,等.關于印發提升新能源汽車充電保障能力行動計劃的通知:發改能源[2018]1698號[A/OL]. (2018-11-09) [2020-07-12].https://www.d1ev.com/news/zhengce/82764.
[4]? ? ?劉朝濤,張雪佼.基于圖像處理的疲勞駕駛預警研究[J].電子技術應用,2019,45(8):104-108.
[5]? ? ?吳士力,唐振民,劉永.多特征融合的隨機森林疲勞駕駛識別算法[J].計算機工程與應用,2020,56(20):212-219.
[6]? ? ?曹昱聰,吳健瑜,范良明,等.基于多特征融合的疲勞駕駛檢測系統研究[C]//2019中國汽車工程學會年會論文集.上海:機械工業出版社,2019.
[7]? ? ?王延年,柴小強,向秋麗.基于空間聚類心率檢測算法的疲勞駕駛預警手環設計[J].國外電子測量技術,2019,38(5):91-95.
[8]? ? ?徐禮勝,張聞勖,龐宇軒,等.基于短時心電信號的疲勞駕駛檢測算法[J].東北大學學報(自然科學版),2019,40(7):937-941.
[9]? ? ?李旭輝.基于圖像預處理的局部二值模式人臉識別方法[J].電子技術與軟件工程,2019(7):66-67.
[10]? ?賈海鵬,張云泉,袁良,等.基于OpenCL的Viola-Jones人臉檢測算法性能優化研究[J].計算機學報,2016,39(9):1775-1789.
[11]? ?譚艷麗,趙永強.基于積分圖像的快速二維Otsu閾值法[J].半導體光電,2014,35(6):1089-1092.
[12]? ?李佩,汪紅娟,李業麗,等.基于AdaBoost人臉檢測算法的分析研究[J].北京印刷學院學報,2020,28(1):128-132.
[13]? ?陳中勝,李春貴,蔣凱.基于分布估計算法的人臉Haar特征選擇[J].廣西科技大學學報,2015,26(2):47-52.
[14]? ?安曉寧,王智文,張燦龍,等.基于隱馬爾可夫模型的人臉特征標注和識別[J].廣西科技大學學報,2020,31(2):118-125.
[15]? ?鄭偉成,李學偉,劉宏哲,等.基于深度學習的疲勞駕駛檢測算法[J].計算機工程,2020,46(7):21-29.