陳立潮 王冠男
(太原科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 太原 030024)
交通事故是現(xiàn)今世界上每個國家都非常重視的社會危害,已經(jīng)被全球各個國家一致認(rèn)為是目前全球范圍內(nèi)對人類生命安全造成最大傷害的隱患。每年有超過60 萬人在交通事故中失去生命。根據(jù)歐洲和美國在交通事故中的傷亡人數(shù)統(tǒng)計(jì)表明,大約八到九成的交通事故是因?yàn)槿藶橐蛩卦斐傻模?]。依照美國國家安全局的數(shù)據(jù)顯示,隨著社會的發(fā)展和人均車輛數(shù)目的增加,美國每年都會因?yàn)樗緳C(jī)疲勞駕駛而造成十多萬起以上的交通事故,其中死亡人數(shù)超過兩萬人[2]。在歐洲因?yàn)檫@種因疲勞駕駛而導(dǎo)致的交通事故也具有高死亡率。比如在德意志聯(lián)邦共和國境內(nèi),高速公路上因?yàn)槠隈{駛而造成的駕駛員或者乘客傷亡的交通事故超過四分之一[3]。新世紀(jì)以來,我國交通事業(yè)飛速發(fā)展,交通產(chǎn)業(yè)高速發(fā)展的背后也隱藏著巨大的危險。每年我國因?yàn)榻煌ㄊ鹿识紩斐删薮蟮娜藛T傷亡和經(jīng)濟(jì)損失。其中超過一半的交通事故是因?yàn)轳{駛員疲勞操作引起的,經(jīng)濟(jì)損失高達(dá)百萬美元之巨[4]。
有關(guān)汽車駕駛員的疲勞檢測問題已經(jīng)迫在眉睫,全球很多國家和地區(qū)也都將疲勞駕駛預(yù)警系統(tǒng)的開發(fā)工作列入一級任務(wù)。各國對于疲勞駕駛的研究總體可以分為三類[5]:基于駕駛員生理信號的檢測,基于駕駛員腦電信號的檢測和基于駕駛員面部特征的檢測。
2014 年王少楠等通過采集測試人員的腦電信號使用小波包變換進(jìn)行特征提取,利用SVM 分類,從而分析駕駛員的疲勞狀態(tài)[6]。2015年陳志勇、楊佩等通過分析對車輛數(shù)據(jù)產(chǎn)生影響的多個指標(biāo)如速度、方向盤轉(zhuǎn)角等,選擇疲勞評價指標(biāo),使用BP神經(jīng)網(wǎng)絡(luò)搭建疲勞狀態(tài)識別模型[7]。
但是基于駕駛員生理信號的檢測方法具有侵入性,駕駛員需要佩戴較為精密且繁重的儀器,會對司機(jī)進(jìn)行駕駛干擾而且儀器價格昂貴無法普及。而基于車輛運(yùn)動特征的疲勞檢測,會受到類似于路況信息,天氣狀況以及駕駛員行車習(xí)慣等多種外部條件的干擾,一般來說只能作為輔助參考,不具有全面性。近年來隨著計(jì)算機(jī)視覺的發(fā)展,基于面部特征的檢測成為疲勞檢測的主要方法。2009年,尹寶才等采用Gabor 小波提取嘴角紋理特征,使用線性判別分析法進(jìn)行打哈欠檢測,從而判斷疲勞狀態(tài)[8]。2014 年田祎提出了一種新的度量人眼狀態(tài)變化的方法,并結(jié)合PERCLOS 方法對疲勞狀態(tài)進(jìn)行分析[9]。2017 年ZHAO 等通過構(gòu)建深度集成神經(jīng)網(wǎng)絡(luò)表示眼部區(qū)域信息,使用遷移學(xué)習(xí)提取眼部特征構(gòu)建駕駛員睡意識別數(shù)據(jù)集[10]。2019年潘志庚、劉志飛等使用模糊綜合評價算法對眼部疲勞的影響因子進(jìn)行分析,推斷出眼部狀態(tài),根據(jù)PERCLOS 原理進(jìn)行疲勞檢測[11]。同年,Ngxande M,Tapamo J R 等使用生成對抗網(wǎng)絡(luò)增加基于群體偏見的可視化策略的有針對性的數(shù)據(jù),提高了疲勞檢測性能[12]。2020 年Younes Ed-Doughmi 等提出了一種遞歸神經(jīng)網(wǎng)絡(luò)來分析和預(yù)測駕駛員睡意,利用數(shù)據(jù)集對模型進(jìn)行建模和驗(yàn)證,實(shí)現(xiàn)了基于重復(fù)神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)的多層模型三維卷積網(wǎng)絡(luò)的駕駛疲勞檢測[13]。但是上述研究大多數(shù)均是通過對駕駛員人眼或者其他單一部位進(jìn)行疲勞檢測,而且場景單一,在復(fù)雜場景下檢測精度比較低。
因此針對上述問題,本文提出一種多場景下的多特征駕駛員疲勞檢測模型。首先使用改進(jìn)的AdaBoost 算法對復(fù)雜場景下的駕駛員人臉進(jìn)行精準(zhǔn)定位,然后使用使用改進(jìn)后的LBF算法和三庭五眼法檢測人眼和嘴部信息。再通過對人眼和嘴部的二值化圖像進(jìn)行多參數(shù)的疲勞特征計(jì)算,構(gòu)建疲勞檢測模型,如圖1 所示。最后通過模型分析駕駛員的疲勞狀態(tài)。實(shí)驗(yàn)表明本模型具有較高的準(zhǔn)確率。
圖1 疲勞檢測模型結(jié)構(gòu)
當(dāng)待檢測圖像存在背景復(fù)雜、人臉姿態(tài)有角度變化等問題時,誤檢率就會大大提升,最終導(dǎo)致檢測結(jié)果的性能大打折扣。為此,本文在駕駛員人臉檢測之前引入膚色區(qū)域分割算法縮小檢測區(qū)域,從而達(dá)到縮短檢測時間的效果。在待檢測圖像中,使用膚色區(qū)域分割算法排除較大部分非膚色區(qū)域,有效避免了復(fù)雜背景對駕駛員人臉檢測的影響。
膚色區(qū)域分割的效果對比如圖2 和圖3 所示。從圖中可以看到通過YCbCr空間的膚色區(qū)域分割,減小了待檢測區(qū)域,為后續(xù)的駕駛員人臉檢測縮短了檢測時間。
圖2 膚色分割前的原圖
圖3 膚色分割效果圖
據(jù)國家安全部和天津交警總隊(duì)的數(shù)據(jù)表明,疲勞駕駛易發(fā)時段為深夜的24 時至2 時和凌晨的4時至6 時。這兩個時段中采集到的駕駛員人臉圖像由于光照強(qiáng)度過低,導(dǎo)致人臉檢測效率和檢測率大大降低。因此,本文引入光照補(bǔ)償算法,對待檢測的夜間駕駛員人臉進(jìn)行光照增強(qiáng),提高夜間駕駛員人臉檢測效率。
光照補(bǔ)償效果如圖4和圖5所示。在光照強(qiáng)度差的環(huán)境下,提升駕駛員人臉待檢測圖像的光照強(qiáng)度,為下一步的駕駛員人臉檢測打好基礎(chǔ)。
圖4 光照補(bǔ)償前的原圖
圖5 光照補(bǔ)償效果圖
本文采用改進(jìn)的AdaBoost 算法進(jìn)行人臉檢測?,F(xiàn)行AdaBoost 算法的樣本權(quán)重更新規(guī)則注重困難樣本,即被分錯的樣本在算法后續(xù)可得到更多重視,但它存在缺點(diǎn):很難對訓(xùn)練樣本中包含的噪聲樣本或一些罕見困難樣本進(jìn)行正確分類,算法會將訓(xùn)練重點(diǎn)轉(zhuǎn)移到分類困難的樣本上,即這些樣本的權(quán)重會成倍增加,這樣就可能造成梯度爆炸的現(xiàn)象。而且過分重視困難樣本,隨著迭代次數(shù)的增加,正確的分類規(guī)則會慢慢丟失,從而大大影響算法性能。
為了解決上述問題,本文將弱分類器的權(quán)重系數(shù)進(jìn)行動態(tài)調(diào)整,得到訓(xùn)練樣本在傳統(tǒng)AdaBoost算法中弱分類器和其相對應(yīng)的權(quán)重系數(shù)mt,計(jì)算每一個弱分類器對待檢測樣本周圍多個訓(xùn)練樣本的分類準(zhǔn)確率nt,將各個弱分類器的權(quán)重系數(shù)改為mt*nt,利用局部敏感哈希方法的余弦相似性尋找待檢測樣本的近鄰點(diǎn)[14]。再將待檢測樣本通過局部敏感哈希方式哈希到一起,則該區(qū)域的其它數(shù)據(jù)是待檢測樣本的近鄰樣本數(shù)據(jù),這些數(shù)據(jù)構(gòu)建成新的測試集D,然后各個弱分類器對D 進(jìn)行分類測試,從而判斷各個弱分類器與M的匹配程度,最后,將其分類的準(zhǔn)確率作為M 的動態(tài)權(quán)重系數(shù)β,如下式(1)所示。
動態(tài)權(quán)重系數(shù)算法如下:
Step1. 利用局部敏感哈希方式來從訓(xùn)練集中找到相似的樣本數(shù)據(jù),并將它們組合成一個新的測試集D;
Step2. 使用弱分類器?i對新的測試集合進(jìn)行分類測試,利用式(1)計(jì)算動態(tài)權(quán)重系數(shù);
Step3.得到最終的強(qiáng)分類器。
本文通過改進(jìn)的AdaBoost 算法對駕駛員人臉進(jìn)行檢測,使用矩形框標(biāo)記人臉區(qū)域,返回該區(qū)域的寬度與高度值。檢測結(jié)果如圖6所示。
圖6 人臉檢測
檢測到人臉后,本文通過改進(jìn)的LBF算法進(jìn)行人眼定位,利用三庭五眼的方法進(jìn)行嘴部定位。
在駕駛員人眼的檢測中,人眼圖像往往會因?yàn)楣庹?、遮擋等?fù)雜場景而難以定位,從而影響檢測精度。因此提出了一種改進(jìn)的人眼檢測算法。
本文首先通過樣本訓(xùn)練好局部約束模型模型,然后利用基于回歸的局部二值特征法檢測人眼圖像,最后把人眼的位置和圖像信息傳遞給約束局部模型,精確檢測到人眼特征點(diǎn)。步驟如下:
Step1. 構(gòu)建人眼形狀模型。首先手工標(biāo)定訓(xùn)練樣本,通過標(biāo)定特征點(diǎn)表示人眼形狀,將樣本的特征點(diǎn)用向量表示,將所有的向量構(gòu)建成的向量組所求均值表示人眼。
Step2.構(gòu)建局部補(bǔ)丁模型,讓每個特征點(diǎn)在鄰域內(nèi)尋找最佳匹配點(diǎn)。
Step3.使用LBF算法進(jìn)行人眼檢測。
Step4. CLM 擬合。對新圖像中的目標(biāo)建立新模型,用訓(xùn)練好的模型與新模型進(jìn)行擬合定位特征點(diǎn)。
Step5. 利用優(yōu)化策略優(yōu)化模型參數(shù)直到精確定位人眼。
本文基于三庭五眼的方法對嘴部進(jìn)行定位。三庭五眼是按照人面部器官的位置和比例統(tǒng)計(jì)出的規(guī)律。三庭分為上中下三庭。其中從發(fā)際線到眉心為上庭,眉心到鼻翼下緣為中庭,邊緣處到下巴為下庭。而五眼是將臉的寬度進(jìn)行五等分[15~18]。從左到右依次為左眼到左側(cè)發(fā)際線、左眼、左眼到右眼、右眼、右眼到右側(cè)發(fā)際線。因此本文以人臉面部的1/3處以下,寬度為1/5~4/5臉寬之間為嘴部檢測區(qū)域。
當(dāng)駕駛員在疲勞駕駛時,眼部狀態(tài)會反映出大量信息,通過眼部狀態(tài)可以較為準(zhǔn)確地反映駕駛員的疲勞程度。本文在精確定位到人眼之后,將人眼圖像二值化,通過計(jì)算人眼的高寬比和黑白像素比來判斷眼睛的閉合狀態(tài)。如圖5~7 分別表示完全睜眼,睜開一部分,閉合的二值化圖像。
通過大量的實(shí)驗(yàn)統(tǒng)計(jì)可知人眼睜開時,眼部的高寬比m 的范圍是0.21~0.75,而人眼閉合時,眼部高寬比m 的范圍是0.13~0.24??梢园l(fā)現(xiàn),當(dāng)眼部高寬比大于0.24 的時候,人眼是處于睜開狀態(tài),當(dāng)眼部高寬比小于0.13 的時候,人眼是處于閉合狀態(tài)。但是當(dāng)人眼的寬高比值在0.21~0.24 的范圍內(nèi)時,就無法通過閉合范圍判斷眼睛的閉合狀態(tài)。所以本文引進(jìn)一個新的判斷依據(jù),眼部區(qū)域的黑白像素比n,當(dāng)人的眼睛在睜開的時候,n 的范圍是0.13~4.80,在閉合的時候,n 的范圍是0.06~0.15。而且當(dāng)人的眼部區(qū)域的黑白像素比值低于0.15時,人眼的寬高比值也會很小。所以當(dāng)0.21<m<0.24,0.06<n<0.15時,人眼處于閉合狀態(tài)。
本文將嘴部區(qū)域圖像二值化處理得到嘴部的二值區(qū)域,通過計(jì)算二值區(qū)域的圓形度和寬高比來判斷嘴部狀態(tài)。如圖10~12 分別表示嘴巴全張、微張、閉合的狀態(tài)。
經(jīng)過大量實(shí)驗(yàn)驗(yàn)證嘴部高寬比在0.15-0.65 的時候處于微張狀態(tài),超過0.65 為張開狀態(tài),小于0.15為閉合狀態(tài)。因?yàn)閳D像在采集過程中,駕駛員會存在身體傾斜或者移動的情況,單純使用嘴部的寬高比來判斷嘴部狀態(tài)不夠精確。所以本文引入嘴部二值化區(qū)域的圓形度來判斷嘴部狀態(tài)。當(dāng)嘴部二值化區(qū)域的圓形度小于0.45時處于閉合狀態(tài),當(dāng)圓形度在0.45-0.75 時處于正常張嘴狀態(tài),當(dāng)圓形度大于0.75時處于打哈欠狀態(tài)。
根據(jù)p80 標(biāo)準(zhǔn),設(shè)人眼的瞳孔覆蓋率大于20%為睜眼,小于20%為閉眼,然后統(tǒng)計(jì)人眼閉合時間占規(guī)定時間的比值[19~20]。本文通過用連續(xù)時間內(nèi)閉合幀數(shù)與總幀數(shù)的比值來計(jì)算PERCLOS 的值。人在疲勞狀態(tài)時,眼部閉合時間較長,所以本文使用PERCLOS來定義眼部疲勞。表示如式(2):
其中T 為時間長度,設(shè)置T 為5s,實(shí)驗(yàn)中采用10 幀/s。當(dāng)P大于20%視為疲勞。
同時,當(dāng)人處于疲勞時,打哈欠次數(shù)會增加,所以本文通過打哈欠次數(shù)Y 定義嘴部疲勞。表示如式(3):
其中T為時間長度,設(shè)置T為5s,實(shí)驗(yàn)中采用10幀/s。當(dāng)P大于15%視為疲勞。
實(shí)驗(yàn)環(huán)境:本文實(shí)驗(yàn)基于64 位Windows10 操作系統(tǒng)。采用Intel(R)Core(TM)i5-7200 CPU 雙核處理器,16GB內(nèi)存,在Microsoft Visual Studio 2019平臺下構(gòu)建了提出的改進(jìn)的疲勞檢測模型,在Matlab R2017a平臺進(jìn)行模擬測試。
數(shù)據(jù)來源:實(shí)驗(yàn)數(shù)據(jù)來源于網(wǎng)絡(luò)上爬蟲和數(shù)位駕駛員志愿者的實(shí)地拍攝。圖像按照光照強(qiáng)度分為白天和夜間。其中白天圖像共有316 張,圖像中包含341 張駕駛員人臉,夜間圖像有196 張,包含202張駕駛員人臉信息。視頻集來源于6名實(shí)驗(yàn)者模擬駕駛時過程所拍攝的。
實(shí)驗(yàn)對6 名實(shí)驗(yàn)者模擬實(shí)際駕駛中出現(xiàn)的眨眼、打哈欠等活動進(jìn)行疲勞狀態(tài)檢測,其中戊、己所處背景為低光源且臉部有小型遮擋物。檢測結(jié)果如表1所示。
表1 疲勞檢測試驗(yàn)結(jié)果
從表中數(shù)據(jù)得出,當(dāng)P 值和Y 值均超過設(shè)定閾值的時候,即眼部和嘴部疲勞狀態(tài)一致時本文模型和文獻(xiàn)[8]與文獻(xiàn)[9]的疲勞檢測模型均可正確判斷此時疲勞狀態(tài),但是當(dāng)P 值或者Y 值有一方超過閾值,即眼部或者嘴部有一者出現(xiàn)疲勞狀態(tài)時,本文的駕駛員疲勞檢測模型依舊都可以良好地檢測出來,但是文獻(xiàn)[8]與文獻(xiàn)[9]會出現(xiàn)判斷錯誤的情況。當(dāng)實(shí)驗(yàn)背景出現(xiàn)遮擋物或者復(fù)雜光源時,文獻(xiàn)[8]與文獻(xiàn)[9]的疲勞檢測模型由于人臉檢測時未能精確檢測到人臉導(dǎo)致最終的疲勞狀態(tài)不能識別出來,而本文的檢測模型依舊可以正確檢測出駕駛員的疲勞狀態(tài)。
綜上,本文算法在檢測駕駛員疲勞狀態(tài)時,相對于傳統(tǒng)單一特征的檢測疲勞檢測模型具有明顯的優(yōu)勢。
本文引入膚色分割算法,縮小駕駛員人臉檢測區(qū)域,在夜間光照強(qiáng)度較弱的情況下,加入光照補(bǔ)償算法增強(qiáng)駕駛員臉部信息,同時改進(jìn)傳統(tǒng)Ada-Boost 算法的權(quán)重更新方式,有效抑制了權(quán)重過擬合現(xiàn)象,提高了檢測率,為接下來準(zhǔn)確判斷駕駛員疲勞狀態(tài)打下良好基礎(chǔ)。針對單一特征識別疲勞狀態(tài)正確率低的情況,本文引入眼部和嘴部的雙特征進(jìn)行疲勞判斷,并且在判斷眼部和嘴部疲勞時引入多參數(shù)進(jìn)行狀態(tài)識別,提高了駕駛員疲勞狀態(tài)識別的可靠性。最后通過綜合眼部和嘴部疲勞特征來判斷疲勞狀態(tài)。實(shí)驗(yàn)結(jié)果表明:本文方法相對于傳統(tǒng)的單特征的檢測方法,檢測結(jié)果正確率更高,并且針對背景和光源情況的情況也能較為準(zhǔn)確地判別狀態(tài),滿足了疲勞檢測模型對高效、穩(wěn)定的要求。
但是本文所建立的疲勞檢測模型僅能對駕駛員疲勞狀態(tài)做出判斷,未能對駕駛員疲勞程度進(jìn)行分析,仍然需要進(jìn)一步的工作以發(fā)現(xiàn)更全面的疲勞檢測模型。