戴燕玲
(廈門(mén)軟件職業(yè)技術(shù)學(xué)院 福建省廈門(mén)市 361024)
當(dāng)今社會(huì),因疲勞駕駛而引發(fā)的交通安全事故屢見(jiàn)不鮮,因此汽車(chē)防疲勞駕駛預(yù)警系統(tǒng)日益成為當(dāng)今社會(huì)的研究熱點(diǎn)。交通事故的發(fā)生就在幾秒鐘的時(shí)間內(nèi),經(jīng)研究調(diào)查,系統(tǒng)提前2 秒鐘預(yù)警將能減少92%的交通事故,提前0.5 秒鐘預(yù)警,將會(huì)避免73%的交通事故。因此要想達(dá)到更為準(zhǔn)確和快速的預(yù)警效果就要求處理器的處理性能和軟件算法達(dá)到一個(gè)更高的水平。經(jīng)研究表明,人的眼睛狀態(tài)最能直接反映一個(gè)人的疲勞程度,本文采用一種簡(jiǎn)單而有效的眼睛狀態(tài)識(shí)別算法,即通過(guò)識(shí)別駕駛員眼睛縱橫比的變化及眼睛閉合的持續(xù)時(shí)間,來(lái)判斷駕駛員是否處于疲勞狀態(tài),一旦系統(tǒng)檢測(cè)到駕駛員處于疲勞狀態(tài),系統(tǒng)立即發(fā)出語(yǔ)音警示,提示駕駛員停車(chē)休息。
目前全世界只有美國(guó)的Attention Technologies 公司推出的DD850,已經(jīng)通過(guò)美國(guó)交通運(yùn)輸部在全美進(jìn)行推廣,瑞典的SmartEye 公司推出的AntiSleep 系統(tǒng)已經(jīng)商用,奔馳、沃爾沃的高端車(chē)系以及日本豐田公司在日本銷(xiāo)售的13 代皇冠配有瞌睡報(bào)警系統(tǒng),這些疲勞駕駛預(yù)警系統(tǒng)都是基于駕駛員生理反應(yīng)特征的疲勞檢測(cè)預(yù)警產(chǎn)品,如駕駛員的眼部狀態(tài),頭部運(yùn)動(dòng)狀態(tài)等,但這些產(chǎn)品只在國(guó)外高配車(chē)中使用,且在中國(guó)車(chē)型中都沒(méi)有標(biāo)配。
除此之外,還有通過(guò)檢測(cè)駕駛員頭部和嘴部運(yùn)動(dòng),即是否低頭和打哈欠來(lái)判定是否疲勞駕駛,其實(shí)人在疲勞狀態(tài)時(shí),不一定會(huì)低頭和打哈欠,這也使得這些系統(tǒng)的實(shí)時(shí)性和準(zhǔn)確性較差,漏判率較高。其實(shí)人在疲勞狀態(tài)時(shí),眼部的狀態(tài)即眼瞼閉合度及持續(xù)時(shí)間,是最能直接反映出人的疲勞程度,眼瞼閉合度分析成為疲勞駕駛研究的重點(diǎn)方向。
本文設(shè)計(jì)的防疲勞駕駛系統(tǒng)主要由如圖1 幾個(gè)模塊構(gòu)成。
系統(tǒng)首先通過(guò)高分辨率紅外攝像頭識(shí)別一系列帶有面部特征的圖像,首先通過(guò)檢測(cè)人臉,然后再進(jìn)一步定位眼睛部位。通過(guò)使用眼部模型確定上下眼皮的距離,即眼睛縱橫比EAR 值,來(lái)確定眼瞼閉合度。在時(shí)間維度上,根據(jù)前面數(shù)幀建立的模型綜合判斷是否疲勞駕駛,并語(yǔ)音警示同時(shí)GPS 顯示停車(chē)休息地點(diǎn)。除此之外,系統(tǒng)還可以通過(guò)頭部運(yùn)動(dòng)的識(shí)別,再經(jīng)過(guò)時(shí)間維度比對(duì),判斷駕駛員是否處于分心狀態(tài),并語(yǔ)音警示,防止駕駛員因左顧右盼交談等分心行為而引起的一系列交通事故。
人臉識(shí)別是計(jì)算機(jī)視覺(jué)最典型的應(yīng)用之一,其經(jīng)歷過(guò)三個(gè)階段,Harr 級(jí)聯(lián)檢測(cè),HOG-SVM,以及深度學(xué)習(xí).作為當(dāng)前使用最廣泛的視覺(jué)開(kāi)源庫(kù)opencv 和最流行的機(jī)器學(xué)習(xí)庫(kù)dlib,它們實(shí)現(xiàn)了人臉檢測(cè)算法。
圖1:系統(tǒng)設(shè)計(jì)方案模塊
圖2:EAR 值隨時(shí)間變化圖
(1)Harr 級(jí)聯(lián)檢測(cè),其優(yōu)點(diǎn)是架構(gòu)簡(jiǎn)單,幾乎可以在CPU 上實(shí)時(shí)運(yùn)行,可以檢測(cè)不同的人臉,但其缺點(diǎn)是對(duì)于人臉?lè)较蚋淖兓蛘呷梭w姿勢(shì)幅度過(guò)大時(shí),均無(wú)法檢測(cè)到人臉,不抗遮擋。
(2) HOG-SVM 方法。它是目前為止CPU 上運(yùn)行最快的方法,適用于正面和略微非正面的人臉,其模型很小,很適合用于嵌入式芯片中,而且在小的遮擋情況下依然能正常工作。其缺點(diǎn)是不能檢測(cè)小臉,因?yàn)槠溆?xùn)練數(shù)據(jù)的最小人臉尺寸為80*80,而且在嚴(yán)重遮擋的情況下不能很好的工作,不適應(yīng)側(cè)面和極端非正面如俯視和仰視。
(3)深度學(xué)習(xí)方法,它是一類(lèi)檢測(cè)方法的總稱(chēng),也是目前最流行的人臉檢測(cè)方法。如opencv 中提供了opencv-dnn 人臉檢測(cè),dlib 中實(shí)現(xiàn)了dlib-cnn 人臉檢測(cè)。其檢測(cè)的準(zhǔn)確度是三類(lèi)方法中最高的。它一般適應(yīng)于不同的人臉?lè)较?,可以檢測(cè)各種尺度的人臉,而且在嚴(yán)重遮擋下依然能很好的工作。但其缺點(diǎn)是檢測(cè)率速度,一般要求在gpu 上運(yùn)行,在CPU 上運(yùn)行,有的模型也能做到實(shí)時(shí)運(yùn)行,但運(yùn)行速度沒(méi)有第二種方法快。
表1:疲勞判斷實(shí)驗(yàn)結(jié)果
表2:分心判斷實(shí)驗(yàn)結(jié)果
綜合以上三種方法的優(yōu)缺點(diǎn),考慮到在汽車(chē)上一般都是使用嵌入式芯片,駕駛員的人臉圖像位置較固定,一般都是正臉,且圖像一般較大。因此選用第二種方法即HOG+SVM 方法作為駕駛員人臉檢測(cè)的首選方法。
HOG 算法利用梯度及梯度方向的統(tǒng)計(jì)信息來(lái)描述圖像,因?yàn)樘荻韧a(chǎn)生在邊緣處,可以描述局部目標(biāo)的形狀,且梯度受到光照條件變化的影響較小,同一個(gè)目標(biāo)的梯度特征在或亮或暗的圖像中具有一致性,與其它的圖像描述特征相比,HOG 特征具有較好的光學(xué)不變性與幾何不變性,尤其適用于目標(biāo)檢測(cè)。
識(shí)別出駕駛員人臉圖像后,接下來(lái)最重要也是最關(guān)鍵的是駕駛員眼部的定位。本文使用面部標(biāo)志估算算法檢測(cè)人臉特征點(diǎn)并對(duì)齊人臉. 首先選取人臉的68 個(gè)特殊標(biāo)志點(diǎn)模型, 從眉毛外沿至下頜底部, 包括眼睛輪廓和嘴部輪廓等,然后利用該算法提出的基于梯度增強(qiáng)(radient boosting)的框架,通過(guò)優(yōu)化損失函數(shù)和誤差的總和來(lái)學(xué)習(xí)回歸樹(shù)集合(Ensemble of Regression Trees, ERT), 檢測(cè)出臉部圖像中的68 個(gè)關(guān)鍵點(diǎn), 最后對(duì)齊人臉, 并根據(jù)關(guān)鍵點(diǎn)序號(hào)定位出所需要的眼部、嘴部圖像。
眾所周知,人在疲勞狀態(tài)時(shí),眼瞼就會(huì)有一定程度的閉合,本文通過(guò)一種簡(jiǎn)單且有效的眼瞼閉合度計(jì)算方法來(lái)判斷駕駛員是否處于疲勞狀態(tài)。首先計(jì)算眼睛縱橫比(Eye aspect ratio,簡(jiǎn)稱(chēng)ERA),式中p1、p2、p3、p4、p5、p6 是人臉68個(gè)關(guān)鍵點(diǎn)中對(duì)應(yīng)眼睛的6 個(gè)特征點(diǎn),如下圖4 所示。分子中計(jì)算的是眼睛的特征點(diǎn)在垂直方向上的距離,分母計(jì)算的是眼睛的特征點(diǎn)在水平方向上的距離。由于水平點(diǎn)只有一組,而垂直點(diǎn)有兩組,所以分母乘上了2,以保證兩組特征點(diǎn)的權(quán)重相同。
EAR 值在眼睛睜開(kāi)時(shí),基本保持不變,基本維持在0.25 左右,當(dāng)眼睛閉合時(shí),EAR 值會(huì)迅速下降,如圖2 所示。
除了眼部狀態(tài)之外,駕駛員低頭,左顧右盼等分心行為,也會(huì)影響駕駛員的正常駕駛。此處利用HOG 方法的缺點(diǎn),只能檢測(cè)正臉或稍微非正臉。正常駕駛情況下,人臉都應(yīng)該被檢測(cè)到,如果駕駛員低頭左顧右盼等行為發(fā)生,那么就會(huì)有連續(xù)很多幀人臉圖像無(wú)法檢測(cè)到,這里我們?cè)O(shè)定如果連續(xù)10 幀人臉圖像未檢測(cè)到,系統(tǒng)會(huì)立即給予警示,提示駕駛員專(zhuān)心駕駛。
第一步,設(shè)定眼睛的縱橫比EAR 值及其閾值,以及閉眼持續(xù)時(shí)間的閾值。
第二步,編寫(xiě)Python,OpenCV 和dlib 代碼來(lái)執(zhí)行人臉檢測(cè)和檢測(cè)示例視頻流中的眨眼,判斷駕駛員是否處于疲勞狀態(tài)。
最后,根據(jù)實(shí)驗(yàn)結(jié)果,不斷改進(jìn)我們疲勞檢測(cè)的方法。
實(shí)驗(yàn)測(cè)試的疲勞判斷和分心判斷的準(zhǔn)確率和響應(yīng)時(shí)間,分別如表1,表2 所示。
通過(guò)實(shí)驗(yàn)數(shù)據(jù)表明,本系統(tǒng)對(duì)駕駛員疲勞狀態(tài)的識(shí)別率為91.2%,分心狀態(tài)的識(shí)別率為90%,平均響應(yīng)時(shí)間為100ms,系統(tǒng)識(shí)別具有較高的準(zhǔn)確性和實(shí)時(shí)性,具有較好的應(yīng)用價(jià)值。
本文利用圖像傳感器識(shí)別駕駛員正面人臉,然后進(jìn)一步識(shí)別眼睛,通過(guò)眼睛縱橫比的變化判斷眼睛的閉合狀態(tài),能精確的判斷駕駛員疲勞程度,同時(shí)系統(tǒng)識(shí)別頭部運(yùn)動(dòng)狀態(tài),又能實(shí)時(shí)監(jiān)測(cè)駕駛員是否處于分心狀態(tài),極大提高了防疲勞駕駛系統(tǒng)的準(zhǔn)確性和可靠性。同時(shí)駕駛員疲勞度輸出數(shù)據(jù)可直接通過(guò)TCP/IP 或UDP 協(xié)議與GPS導(dǎo)航系統(tǒng)結(jié)合,顯示出附近能夠停車(chē)或休息的地點(diǎn),而語(yǔ)音警示系統(tǒng)只有在車(chē)輛停下或恢復(fù)專(zhuān)心駕駛時(shí)后方能復(fù)位。