閆 河,楊曉龍,張 楊,董鶯艷,王 鵬
(重慶理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,重慶 400054)
國(guó)內(nèi)外研究現(xiàn)狀顯示,駕駛員疲勞[1]檢測(cè)方法大致分為3類(lèi):①基于車(chē)輛行駛行為檢測(cè),包括方向盤(pán)轉(zhuǎn)動(dòng)幅度檢測(cè)和車(chē)輛偏離車(chē)道檢測(cè)[2]等;②基于駕駛員生理信息檢測(cè),包括利用心電圖信息檢測(cè)和腦電圖信息檢測(cè)[3-5];③基于駕駛員面部行為檢測(cè)[6-9],包括:眨眼頻率檢測(cè)、嘴部狀態(tài)檢測(cè)、頭部姿態(tài)檢測(cè)等。3類(lèi)方法中,基于駕駛員面部行為檢測(cè)實(shí)時(shí)效果好,準(zhǔn)確性高和魯棒性強(qiáng),是近些年研究的熱點(diǎn)[10]。何俊等[10]和耿磊等[11]對(duì)眼睛狀態(tài)和嘴巴狀態(tài)的進(jìn)行檢測(cè),這些方法均引入了打哈欠參數(shù),但均沒(méi)有對(duì)打哈欠行為建立有效的模型,會(huì)把駕駛員張嘴講話誤判為打哈欠,從而降低了疲勞狀態(tài)識(shí)別的準(zhǔn)確性。駕駛員在重度疲勞時(shí),會(huì)出現(xiàn)低頭行為。針對(duì)駕駛員低頭行為檢測(cè),楊曉峰等[12]通過(guò)對(duì)駕駛員面部圖像進(jìn)行正負(fù)建模分類(lèi),然后對(duì)駕駛員低頭行為進(jìn)行檢測(cè),但實(shí)時(shí)效果有待考證;程文冬等[13]通過(guò)對(duì)頭部姿態(tài)進(jìn)行建模,該方法準(zhǔn)確率高,但計(jì)算參數(shù)過(guò)多,實(shí)時(shí)效果相對(duì)較差。
針對(duì)以上問(wèn)題,本文采用具有194個(gè)特征點(diǎn)人臉ASM,結(jié)合haar級(jí)聯(lián)得到精確的人臉和眼睛區(qū)域;通過(guò)光流法實(shí)現(xiàn)對(duì)人臉及上下眼瞼特征點(diǎn)的有效跟蹤,準(zhǔn)確識(shí)別出眼睛的狀態(tài);結(jié)合眼睛狀態(tài)識(shí)別結(jié)果,采用正負(fù)圖像訓(xùn)練得到的SVM判定駕駛員是否屬于重度疲勞情況下的低頭行為。實(shí)驗(yàn)結(jié)果表明,本文方法能有效識(shí)別駕駛員面部疲勞狀態(tài)。
在ASM定義中,大多物體的形狀都可以由多個(gè)特征點(diǎn)組成。這些特征點(diǎn)的數(shù)量足夠多并且可以準(zhǔn)確地描繪出物體的輪廓和內(nèi)部細(xì)節(jié)[14]。
實(shí)驗(yàn)中共N幅人臉圖像,全部按圖1進(jìn)行特征點(diǎn)標(biāo)定,第i張人臉形狀向量為
Xi=(xi1,yi1,…,xij,yij,…,xin,yin)T,i=1,2,…,N
(1)
式中:對(duì)應(yīng)的第i幅人臉圖像中第j個(gè)特征點(diǎn)的坐標(biāo)為(xij,yij),n為特征點(diǎn)的數(shù)量。同時(shí)進(jìn)行對(duì)齊和降維,計(jì)算并得到其均值和協(xié)方差矩陣
(2)
(3)
圖1 194個(gè)特征點(diǎn)人臉ASM
則人臉ASM的形狀X可表示為
(4)
為防止形狀產(chǎn)生畸變,b的取值范圍
(5)
其中,λξ為S的特征值,pξ為λξ對(duì)應(yīng)的特征向量,特征矩陣P=(p1,p2,…,pt)。
對(duì)人臉進(jìn)行特征點(diǎn)標(biāo)定得到人臉ASM,本文采用194個(gè)特征點(diǎn)人臉ASM,該ASM是基于Helen數(shù)據(jù)集中2000多張高分辨率人臉圖像訓(xùn)練得到。194個(gè)特征點(diǎn)人臉ASM如圖1所示。
實(shí)驗(yàn)中發(fā)現(xiàn),直接使用ASM進(jìn)行人臉檢測(cè)和匹配,準(zhǔn)確度較低,實(shí)時(shí)效果較差。同時(shí)文獻(xiàn)[1]指出ASM算法對(duì)人臉初始搜索位置要求較高,適合的搜索起始位置可以減少算法迭代次數(shù)。因此,實(shí)驗(yàn)中使用OpenCV中自帶的haarcascade相關(guān)文件快速進(jìn)行人臉和眼睛區(qū)域檢測(cè)。檢測(cè)與定位結(jié)果如圖2所示。
圖2 人臉和眼睛區(qū)域檢測(cè)與定位
確定好初始搜索位置后,精確定位每個(gè)特征點(diǎn)的位置然后進(jìn)行ASM和人臉匹配。局部灰度模型是用來(lái)計(jì)算每個(gè)特征點(diǎn)的局部特征,局部灰度模型直接影響特征點(diǎn)的定位精度。在數(shù)據(jù)集中,選取第i幅人臉圖像,以該幅圖像中第j個(gè)特征點(diǎn)為中心,在第j個(gè)特征點(diǎn)兩側(cè)分別選取k個(gè)點(diǎn)構(gòu)成一個(gè)長(zhǎng)度為2k+1的灰度向量hij
hij=(hij1,hij2,…,hij(2k+1))T
(6)
hij的導(dǎo)數(shù)為
(7)
對(duì)進(jìn)行歸一化操作
(8)
局部灰度模型以局部灰度平均值和協(xié)方差矩陣表示為
(9)
(10)
(11)
選擇馬氏距離最小值Dξ,min對(duì)應(yīng)的特征點(diǎn)為最佳定位點(diǎn)。全部候選點(diǎn)都為最佳定位點(diǎn)的搜索結(jié)果如圖3所示。
圖3 ASM和人臉匹配
由于實(shí)驗(yàn)需要對(duì)整個(gè)人臉區(qū)域更細(xì)節(jié)化的呈現(xiàn),本文采用194個(gè)特征點(diǎn)人臉ASM。在BioID數(shù)據(jù)集中,比較于77個(gè)特征點(diǎn)人臉ASM,對(duì)這兩個(gè)ASM采用me17(mean error measured by internal 17 facial points)[15]的方法,得到各自平均差曲線,發(fā)現(xiàn)該模型的平均差小于77個(gè)人臉特征點(diǎn)ASM,對(duì)比發(fā)現(xiàn),使用194個(gè)特征點(diǎn)標(biāo)定人臉具有更好的魯棒性和適用性。兩者平均差曲線如圖4所示。同時(shí)該ASM特征點(diǎn)數(shù)更多,對(duì)人臉細(xì)節(jié)有更好地描述,可以匹配得到更加精確的人臉和眼睛區(qū)域,具有很好的適用性和準(zhǔn)確性。
圖4 77個(gè)和194個(gè)特征點(diǎn)人臉ASM的me17對(duì)比曲線
在進(jìn)行上述操作后,需要對(duì)人臉和眼睛區(qū)域特征點(diǎn)進(jìn)行跟蹤,來(lái)判定疲勞狀態(tài)。因?yàn)轳{駛員在駕駛汽車(chē)的過(guò)程中,駕駛員頭部運(yùn)動(dòng)幅度較小,場(chǎng)景單一,本文使用光流法[16]對(duì)這些區(qū)域特征點(diǎn)進(jìn)行跟蹤,具體過(guò)程如下:使用上述操作進(jìn)行人臉和ASM最優(yōu)匹配后,得到人臉輪廓特征點(diǎn),同時(shí)得到眼睛上下眼瞼輪廓共40個(gè)特征點(diǎn)(每個(gè)眼瞼輪廓區(qū)域20個(gè)特征點(diǎn)),使用光流法對(duì)這些特征點(diǎn)進(jìn)行跟蹤。
實(shí)驗(yàn)中,對(duì)駕駛員進(jìn)行面部行為監(jiān)測(cè),為了不影響其正常駕駛,把監(jiān)控?cái)z像頭安裝在儀表臺(tái)的位置,安放位置如圖5所示。
圖5 攝像頭的安放位置
駕駛員在長(zhǎng)時(shí)間駕駛汽車(chē)后,特別是長(zhǎng)途客車(chē)和長(zhǎng)途貨車(chē)駕駛員,他們更容易疲勞駕駛,會(huì)出現(xiàn)不同程度的疲勞狀態(tài)。文獻(xiàn)[17]中把駕駛員的狀態(tài)分為3種:清醒、疲勞和重度疲勞。3種狀態(tài)的面部表現(xiàn)如下:清醒狀態(tài)下,駕駛員注意力集中于正前方,精神狀態(tài)佳,整個(gè)駕駛行為正常;疲勞狀態(tài)下,眼睛張開(kāi)度變低,眨眼頻率降低,同時(shí)可能伴隨著打哈欠等行為;重度疲勞狀態(tài)下,眼睛近乎閉合,頻繁點(diǎn)頭,甚至可能出現(xiàn)短暫的低頭行為。
目前僅依靠眼睛狀態(tài)來(lái)判斷是否疲勞存在一定的局限性,大多數(shù)都只是檢測(cè)到疲勞狀態(tài),并不能對(duì)重度疲勞狀態(tài)進(jìn)行判定。本文在基于眼睛狀態(tài)檢測(cè)的基礎(chǔ)上,加入對(duì)頭部姿態(tài)的檢測(cè),通過(guò)獲取駕駛員眼睛PERCLOS參數(shù)以及SVM對(duì)頭部姿勢(shì)的判定作為駕駛員疲勞程度的判斷標(biāo)準(zhǔn)。
PERCLOS(percentage of eyelid closure over the pupil over time),即單位時(shí)間內(nèi)眼睛閉合時(shí)間所占的百分比,是由卡內(nèi)基梅隆研究所提出并應(yīng)用于疲勞檢測(cè)[10]。研究表明,PERCLOS對(duì)駕駛員疲勞狀態(tài)檢測(cè)具有很高的準(zhǔn)確性[18]。PERCLOS的測(cè)量原理如圖6所示。
圖6 PERCLOS測(cè)量原理
PERCLOS有3種標(biāo)準(zhǔn),其中P80標(biāo)準(zhǔn)(即眼瞼遮住瞳孔的面積超過(guò)80%就計(jì)為眼睛閉合)與疲勞程度相關(guān)性最好,適合作為駕駛員疲勞狀態(tài)檢測(cè)的標(biāo)準(zhǔn)[17]。眼睛睜開(kāi)度如圖7所示,對(duì)應(yīng)的P80標(biāo)準(zhǔn),即眼睛睜開(kāi)度小于20%時(shí)計(jì)為眼睛閉合。
圖7 眼睛睜開(kāi)度
由圖6并參考PERCLOS的定義,可得PERCLOS的值f
(12)
基于PERCLOS-P80標(biāo)準(zhǔn)評(píng)價(jià)疲勞的方法是:根據(jù)眼睛在每一時(shí)刻的狀態(tài),計(jì)算出眼睛處于閉合大于80%狀態(tài)所占的時(shí)間比,最終計(jì)算出PERCLOS的值F。設(shè)單位時(shí)間內(nèi)所采集的視頻有效幀數(shù)為N,其中眼睛處于閉合狀態(tài)大于80%狀態(tài)的幀數(shù)為K,計(jì)算出該單位時(shí)間內(nèi)PERCLOS值F,即
(13)
通過(guò)F的均值來(lái)判斷駕駛員是否疲勞。本文使用文獻(xiàn)[19]中F值的定義,定義當(dāng)F小于0.25時(shí)駕駛員處于清醒狀態(tài),當(dāng)F大于0.25時(shí)駕駛員屬于疲勞狀態(tài)。
由于實(shí)驗(yàn)中攝像頭的位置在頭部水平線以下擺放,因此在正常駕駛中,人臉相對(duì)于攝像頭的視角是仰視狀態(tài);如果出現(xiàn)疲勞狀態(tài),同時(shí)人臉相對(duì)于攝像機(jī)呈現(xiàn)出平視或俯視的視角,判定此時(shí)的狀態(tài)為重度疲勞狀態(tài)。
實(shí)驗(yàn)中選用SVM判定頭部姿態(tài)。低頭行為檢測(cè)的人臉圖像來(lái)自MUCT人臉庫(kù),經(jīng)過(guò)選取和比較選取了其中900張人臉圖像,其中正性(正常駕駛)圖像161張、負(fù)性(非正常駕駛)圖像739張,正負(fù)圖像樣本如圖8所示。
對(duì)兩組圖像進(jìn)行標(biāo)注,利用本文ASM精確匹配到人臉位置,截取圖像中人臉區(qū)域,結(jié)合頭部行為相關(guān)性,不同于直接使用兩組圖像訓(xùn)練,這樣先檢測(cè)、匹配后截取人臉區(qū)域最后再訓(xùn)練會(huì)得到識(shí)別率更高的SVM。使用訓(xùn)練好的SVM準(zhǔn)確對(duì)頭部姿態(tài)進(jìn)行判定,判定是否低頭,結(jié)合是否出現(xiàn)疲勞狀態(tài),進(jìn)而判定是否處于重度疲勞狀態(tài)。
正性圖像如下:
負(fù)性圖像如下:
圖8 正負(fù)圖像樣本
(1)實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)環(huán)境為VS2010+OpenCV2.4.13,Windows7操作系統(tǒng)Intel(R)Xeon(R)CPU E5-2603 v4 @ 2.20 GHz,內(nèi)存為32 GB,測(cè)試視頻的幀率為30 fps,分辨率為800*600。
(2)測(cè)試數(shù)據(jù)集
本文選取20位測(cè)試者作為測(cè)試數(shù)據(jù)集,其中包括10位男性和10位女性,每位測(cè)試者面部分別在不佩戴任何干擾物和佩戴近視鏡的情況下進(jìn)行實(shí)時(shí)測(cè)試。
實(shí)驗(yàn)中電腦攝像頭的角度、位置、距離和真實(shí)駕駛環(huán)境保持一致。為了檢驗(yàn)本文194個(gè)特征點(diǎn)人臉ASM的有效性,對(duì)20位測(cè)試者進(jìn)行人臉檢測(cè)、ASM和人臉匹配,該過(guò)程平均耗時(shí)約為30 ms,統(tǒng)計(jì)結(jié)果得出匹配的正確率。統(tǒng)計(jì)結(jié)果見(jiàn)表1。
表1 準(zhǔn)確匹配的統(tǒng)計(jì)結(jié)果
可以看出該ASM在和人臉匹配的過(guò)程中具有較高的準(zhǔn)確性和較好實(shí)時(shí)效果,但佩戴近視鏡的匹配正確率低于不佩戴近視鏡的情況,原因在于由于鏡片反光對(duì)匹配過(guò)程造成干擾,導(dǎo)致誤判。
實(shí)驗(yàn)通過(guò)該匹配過(guò)程,得到更加精確的人臉和眼睛區(qū)域,使用光流法對(duì)眼睛區(qū)域40個(gè)特征點(diǎn)進(jìn)行跟蹤,檢測(cè)得到眼睛Open Rate,清醒狀態(tài)下眼睛Open Rate如圖9所示。
圖9 清醒時(shí)眼睛Open Rate
實(shí)驗(yàn)中模擬駕駛員的疲勞狀態(tài),疲勞狀態(tài)下駕駛員眼睛睜開(kāi)度變小,此時(shí)對(duì)應(yīng)的眼睛Open Rate如圖10所示。
這里選取P80作為檢測(cè)標(biāo)準(zhǔn)和文獻(xiàn)[19]中F的定義,當(dāng)F>0.25時(shí),屏幕上顯示eyes closed,同時(shí)發(fā)出“滴”的警告聲,顯示結(jié)果如圖11所示,判定此時(shí)駕駛員的狀態(tài)為疲勞狀態(tài)。
使用上述過(guò)程判定駕駛員狀態(tài)為疲勞狀態(tài),伴隨著頭部處于低頭狀態(tài),準(zhǔn)確跟蹤到頭部后,使用本文中訓(xùn)練好的SVM判定頭部姿態(tài),此時(shí)屏幕上先顯示eyes closed后顯示head rotated,同時(shí)發(fā)出“嘟嘟”的警告聲,顯示結(jié)果如圖12所示,判定此時(shí)駕駛員的狀態(tài)為重度疲勞狀態(tài)。
同時(shí)為驗(yàn)證本文算法的檢測(cè)正確率及速率,進(jìn)行實(shí)時(shí)檢測(cè)。文獻(xiàn)[19]指出過(guò)低的分辨率如320*240和640*480會(huì)使實(shí)驗(yàn)結(jié)果存在一定的差異,因此本文采用分辨率為800*600視頻流以用于實(shí)時(shí)檢測(cè)。實(shí)時(shí)檢測(cè)過(guò)程中,本文算法處理一幀圖片的平均檢測(cè)速率見(jiàn)表2,單位為ms。
表2 本文算法處理一幀圖片的平均檢測(cè)速率
通過(guò)對(duì)比,發(fā)現(xiàn)本文在高分辨率的情況下(文獻(xiàn)[11]中的視頻分辨率為320*240),平均檢測(cè)速率仍然高于文獻(xiàn)[11]中的方法,可以看出該算法能夠滿足實(shí)時(shí)性的要求。
文獻(xiàn)[12]中對(duì)駕駛員低頭行為進(jìn)行檢測(cè),平均檢測(cè)正確率為94.29%,但引入過(guò)多參數(shù),從而導(dǎo)致實(shí)時(shí)效果差,本實(shí)驗(yàn)中對(duì)重度疲勞狀態(tài)的判定其實(shí)也包含了對(duì)低頭行為的檢測(cè),低頭行為的檢出率在93%左右,但實(shí)時(shí)效果好。
為驗(yàn)證本文方法的準(zhǔn)確性,通過(guò)實(shí)時(shí)對(duì)測(cè)試者進(jìn)行模擬駕駛狀態(tài)的測(cè)試。首先人工統(tǒng)計(jì)20位測(cè)試者在不同測(cè)試狀態(tài)下疲勞(包括疲勞狀態(tài)和重度疲勞狀態(tài))發(fā)生的次數(shù),然后使用本文中的方法進(jìn)行驗(yàn)證,得出檢測(cè)正確率為92.5%。比較于其它方法疲勞狀態(tài)檢測(cè)正確率見(jiàn)表3。
表3 疲勞狀態(tài)識(shí)別方法比較
對(duì)比于文獻(xiàn)[10]中的方法,本文所使用的ASM對(duì)人臉有更加細(xì)節(jié)化描述,在疲勞狀態(tài)識(shí)別正確率稍高一些。對(duì)比于文獻(xiàn)[11]中的方法,本文的方法正確率稍低,但檢測(cè)的整體速率有所提高,可以看出在實(shí)際應(yīng)用中,本文方法具有很好的適用性和實(shí)時(shí)效果。
區(qū)別于其它的人臉ASM,本文使用具有194個(gè)特征點(diǎn)的人臉ASM,該ASM特征點(diǎn)數(shù)更多,對(duì)人臉細(xì)節(jié)有更好的描述,可以準(zhǔn)確的檢測(cè)出眼睛睜開(kāi)度。針對(duì)目前對(duì)重度疲勞狀態(tài)檢測(cè)的空白,我們提出在檢測(cè)疲勞狀態(tài)的基礎(chǔ)上加入對(duì)頭部姿態(tài)的判定,得出一種檢測(cè)重度疲勞狀態(tài)的方法。實(shí)驗(yàn)結(jié)果表明該方法對(duì)疲勞狀態(tài)檢測(cè)正確率在92%以上,具有很好的實(shí)用性和可靠性。此外,由于沒(méi)有統(tǒng)一和標(biāo)準(zhǔn)的哈欠模型,本文并未引入對(duì)嘴巴狀態(tài)判定,這是下一步需要完成的工作。