劉小雙, 方志軍, 劉 翔, 高永彬, 張祥祥
(上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院,上海 201600)
我國每年有超過20 %的交通事故是由疲勞駕駛造成的,研究一個實時準(zhǔn)確的疲勞檢測系統(tǒng),具有非常重要的意義?;谟嬎銠C視覺的疲勞檢測方法[7~9]是一種非侵入式的檢測方法,與侵入式的檢測方法[6]相比,其對駕駛員的影響更小,更安全有效。本文的疲勞檢測是在常見光下進行,相比于傳統(tǒng)的紅外圖像的狀態(tài)檢測[2],屬于一種更安全的被動方式。為了檢測眼口的狀態(tài),很多方法都依靠傳統(tǒng)的分類器和特征,例如AdaBoost分類器[3],以及支持向量機(support vector machine,SVM)分類器[4],在這些方法中是否選取了適當(dāng)?shù)奶卣魇怯绊憣嶒灲Y(jié)果的關(guān)鍵因素,本文采用深度卷積神經(jīng)網(wǎng)絡(luò)可以自適應(yīng)提取特征,有更好的表征能力。
本文使用的檢測和定位方法是Zhang K P等人[1]提出的多任務(wù)級聯(lián)神經(jīng)網(wǎng)絡(luò)(multi-task convolutional neural networks,MTCNN)的檢測定位算法。該方法主要優(yōu)點在于通過3個級聯(lián)網(wǎng)絡(luò)同時實現(xiàn)人臉檢測和特征點定位,速度快,且定位精度能夠滿足疲勞檢測系統(tǒng)的要求。室外駕駛光線變化很大,通過在面光、背光、側(cè)光3種不同光照以及不同姿勢的檢測與定位實驗,結(jié)果表明該方法能夠克服一定程度的光照影響。
為了準(zhǔn)確的提取人眼與嘴巴區(qū)域圖像,需要將檢測出的不同姿態(tài)、不同尺度大小的人臉圖像歸一化到同一位置尺度,需要進行二維仿射變換,對定位的圖像進行平移、縮放、旋轉(zhuǎn)等一系列變換。
(1)
矩陣的簡寫形式為U=Kh,U為平均人臉的5點坐標(biāo)值矩陣,K為通過人臉定位后的5點特征點坐標(biāo)矩陣,h為仿射變換矩陣,可利用最小二乘法求出線性方程的解為h=(KTK)-1KTU。
圖1為將檢測定位出的不同姿態(tài),不同尺度大小的人臉圖像歸一化到同一位置、同一尺寸大小的圖像,并截取固定尺寸的人眼和嘴巴區(qū)域圖像。
圖1 人臉歸一化
對歸一化后的人臉圖像,以人眼特征點為中心提取32×32的人眼區(qū)域,并以兩嘴角為邊界截取60×50的嘴巴區(qū)域。圖2為提取結(jié)果示意。
圖2 眼口區(qū)域提取示意
本文主要通過卷積神經(jīng)網(wǎng)絡(luò)分別對人眼和嘴巴的睜閉狀態(tài)進行識別??紤]到識別的速度與準(zhǔn)確率,本文使用了快速簡單的3層網(wǎng)絡(luò)結(jié)構(gòu),使用了3個卷積層,每個卷積層連接1個池化層, Relu層用于增加非線性約束,為了防止過擬合,網(wǎng)絡(luò)中增加了dropout層。在眼口的狀態(tài)識別過程中,使用同一個網(wǎng)絡(luò)分別訓(xùn)練出2個模型識別眼睛與嘴巴的狀態(tài)。圖3為網(wǎng)絡(luò)結(jié)構(gòu)示意。
本文通過計算眼瞼閉合率(percentage of eyelid closure,PERCLOS)和嘴巴的動作頻率2個參數(shù)判定駕駛員是否處于疲勞狀態(tài)。
由于在連續(xù)的圖像序列中,沒有時間刻度,但每秒讀取的圖像幀數(shù)固定,因此可由幀數(shù)代替時間刻度計算PERCLOS值,其定義為
(2)
式中nc為特定時間內(nèi)閉眼總幀數(shù),Nt為特定時間內(nèi)的總幀數(shù)。通過計算特定時間內(nèi)閉眼幀數(shù)與總幀數(shù)的比值計算PERCLOS的值,當(dāng)駕駛員的PERCLOS值比正常情況下高時,可通過眼睛的狀態(tài)判斷駕駛員處于疲勞狀態(tài)。
與駕駛員不斷說話相比,打哈欠時嘴巴張開的持續(xù)時間較長,據(jù)此判斷駕駛員是在打呵欠還是在說話。當(dāng)檢測到駕駛員在打哈欠時,則認為駕駛員可能處于疲勞狀態(tài),再根據(jù)單位時間內(nèi)打哈欠的頻率判斷疲勞程度。醫(yī)學(xué)數(shù)據(jù)顯示,正常情況下,人在打哈欠時,嘴部持續(xù)張開時間為4~5 s。由于在連續(xù)的圖像序列中,沒有時間刻度,但是每秒讀取的圖像幀數(shù)固定,因此,可以根據(jù)連續(xù)時間內(nèi)嘴巴張開的幀數(shù)判斷是否是打哈欠,進而得到固定時間(T)內(nèi)打哈欠的次數(shù)(n)。本文使用的嘴巴動作頻率公式為fY=n/T。
通過檢測眼口狀態(tài),分別采用PERCLOS和嘴部動作頻率2個參數(shù)共同判斷駕駛員的疲勞狀態(tài),即
P=w1fP+w2fY,w1+w2=1
(3)
式中P為疲勞度,w1,w2為權(quán)重。根據(jù)實驗選取合適的權(quán)重值和疲勞度閾值,當(dāng)P大于閾值時,駕駛員處于疲勞狀態(tài)。
測試采用Visual Studio 2013軟件,Win7系統(tǒng):Intel(R)Core(TM)i7—6700HQ,CPUs(3.40 GHz),內(nèi)存32 GB。
為了能夠克服一定的光照影響,增強網(wǎng)絡(luò)的魯棒性訓(xùn)練數(shù)據(jù)所用的人眼與嘴巴區(qū)域圖像必須采集包含不同強度光照的圖像。部分訓(xùn)練數(shù)據(jù)的眼口圖像如圖4所示。
圖4 不同光照下的圖像
訓(xùn)練眼口狀態(tài)識別模型后,為了測試該網(wǎng)絡(luò)模型的性能,采集了3段視頻數(shù)據(jù)(視頻總幀數(shù)分別為652,1 103,1 037),獲行相應(yīng)的睜閉眼狀態(tài)檢測和張閉嘴狀態(tài)識別準(zhǔn)確率為:95.86 %,92.94 %;95.1 %,93.11 %;96.91 %,94.12 %。
采集4段大小為320×240的視頻幀進行實時性測試,測得獲取人眼區(qū)域(含檢測定位)、人眼狀態(tài)識別、嘴巴狀態(tài)識別、總耗時分別為:1#視頻:23.41,6.57,6.02,40.94 ms;2#視頻:24.50,7.10,6.34,42.97 ms;3#視頻:23.12,7.09,6.76,41.52 ms;4#視頻:23.42,6.51,7.08,41.17 ms。可以看出,該方法的實時性較好,滿足實際要求。
駕駛員疲勞狀態(tài)時的PERCLOS值會比正常情況下高,同時駕駛員也可能伴隨打哈欠,通過多組實驗分析,設(shè)定各參數(shù)閾值,在模擬駕駛環(huán)境中對4組實驗對象進行疲勞狀態(tài)檢測,分別采用單參數(shù)和雙參數(shù)作為判斷依據(jù),權(quán)重w1=4/5,w2=1/5。從表1中第3組和第4組實驗中可以看出雙參數(shù)的方法更可靠,能夠準(zhǔn)確實時地對駕駛員的疲勞狀態(tài)進行檢測。
表1 疲勞狀態(tài)檢測實驗結(jié)果
圖5為對4位駕駛員在連續(xù)時間段內(nèi)通過雙參數(shù)進行實時疲勞檢測的結(jié)果,從圖中可以看出,3位駕駛者在疲勞狀態(tài)下的P值明顯高于正常駕駛時的值。
圖5 PERCLOS結(jié)果
圖6為疲勞檢測系統(tǒng)截取的部分幀數(shù),系統(tǒng)在進行疲勞檢測過程中會實時進行人臉檢測與特征點定位,提取眼口區(qū)域圖像進行識別,并計算當(dāng)前幀的疲勞度P值與嘴部運動頻率,并實時檢測駕駛員的疲勞狀態(tài)。
圖6 疲勞檢測系統(tǒng)示意
提出一種基于眼口狀態(tài)的疲勞檢測系統(tǒng),實驗結(jié)果表明:該系統(tǒng)能夠滿足實際應(yīng)用的要求,能夠?qū)崟r準(zhǔn)確地對駕駛員的疲勞狀況進行預(yù)測。