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