摘 要: 疲勞駕駛是導(dǎo)致交通事故的主要原因之一,因此,以人眼檢測(cè)為核心的疲勞駕駛檢測(cè)受到了普遍地關(guān)注。目前傳統(tǒng)的疲勞駕駛檢測(cè)方法采用“人臉?人眼”模型,即先定位人臉,隨后再進(jìn)行人眼檢測(cè)。在AdaBoost算法的基礎(chǔ)上,使用變模板匹配方法進(jìn)行人眼檢測(cè),并改進(jìn)了“人臉?人眼模型”,采用多特征的分類器來(lái)有選擇的跳過(guò)人臉檢測(cè)步驟,從而快速準(zhǔn)確地定位人眼。在DM642芯片上進(jìn)行實(shí)驗(yàn),人眼識(shí)別率達(dá)到了90%以上,且平均每秒能處理40幀圖片,證明了該方法的高效性和實(shí)用性。
關(guān)鍵詞: 人眼檢測(cè); 疲勞駕駛; 變模板匹配; LBP; 多特征分類器
中圖分類號(hào): TN919?34; TP391.41 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2015)04?0087?04
0 引 言
國(guó)內(nèi)外研究表明,駕駛員在疲勞的狀態(tài)下,對(duì)周?chē)h(huán)境的感知能力、危險(xiǎn)的判斷能力和車(chē)輛的操控能力都會(huì)較正常情況有不同程度的下降,從而導(dǎo)致交通事故[1]。因此,疲勞駕駛檢測(cè)具有極為重要的意義。
當(dāng)前疲勞檢測(cè)系統(tǒng)主要采用基于圖像處理技術(shù)的非接觸檢測(cè)方法,這種疲勞駕駛系統(tǒng)主要是檢測(cè)與分析駕駛員眼睛的狀態(tài)。在疲勞駕駛發(fā)生時(shí),駕駛員眨眼頻率會(huì)上升,閉眼時(shí)間增加,基于眼睛狀態(tài)的疲勞駕駛標(biāo)準(zhǔn)PERCLOS(Percentage of Eyelid Closure Over the Pupil Over Time)是目前最為準(zhǔn)確同時(shí)也是被廣泛接受的標(biāo)準(zhǔn)[2?3]。
目前基于圖像處理技術(shù)的疲勞駕駛檢測(cè)系統(tǒng)的算法主要采用基于Haar特征的AdaBoost算法,該方法首先采用級(jí)聯(lián)分類器確定人臉區(qū)域,再用同樣的方法確定人眼位置,通過(guò)分析人眼狀態(tài)結(jié)合PERCLOS標(biāo)準(zhǔn)來(lái)判斷疲勞駕駛行為是否發(fā)生。而在實(shí)際運(yùn)用環(huán)境中,由于攝像頭與人臉?biāo)山嵌鹊母淖?、駕駛員頭部的晃動(dòng)、車(chē)輛抖動(dòng)等因素,AdaBoost算法表現(xiàn)出較差的魯棒性,拒真率高導(dǎo)致識(shí)別率較低[4];搜索人眼的過(guò)程中也有采用模板匹配的方法,模板匹配計(jì)算規(guī)模較大,而且在人眼睜閉時(shí),由于目標(biāo)形狀的變化,采用固定單一模板會(huì)丟失目標(biāo),如果采取多種模板匹配則計(jì)算量過(guò)大,無(wú)法達(dá)到實(shí)時(shí)性要求[5];也有通過(guò)主動(dòng)形狀模型(Active Shape Model ,ASM)、動(dòng)態(tài)輪廓模(Active Appreance Model ,AAM)獲取人眼精確的特征點(diǎn)坐標(biāo),再通過(guò)這些特征點(diǎn)計(jì)算上下眼眶距離完成眨眼判斷,這種方法結(jié)果精確,但是計(jì)算量龐大無(wú)法部署于實(shí)際操作環(huán)境中,并且算法對(duì)光照敏感[6]。國(guó)內(nèi)也有學(xué)者使用改進(jìn)的Mean?shift算法,根據(jù)像素值分布特征以及梯度方向特征追蹤人眼,這種方法同樣面臨實(shí)時(shí)性的問(wèn)題[7]。
綜上所述,若要在疲勞駕駛系統(tǒng)中人眼檢測(cè)必須具備如下要素:
(1) 實(shí)時(shí)性;
(2) 人眼檢測(cè)精確;
(3) 魯棒性強(qiáng)。
1 方法設(shè)計(jì)
疲勞駕駛檢測(cè)系統(tǒng)通常分為人臉檢測(cè)與人眼檢測(cè)兩部分,本文采用檢測(cè)與跟蹤相結(jié)合的方法完成這兩部分檢測(cè);第一節(jié)討論了AdaBoost與差分跟蹤相結(jié)合的人臉檢測(cè)步驟;第二節(jié)討論了AdaBoost與變模板匹配相結(jié)合的人眼檢測(cè)步驟;第三節(jié)討論了傳統(tǒng)“人臉?人眼”模型的缺點(diǎn),并提出了一種改進(jìn)方法,提高了人臉檢測(cè)和人眼檢測(cè)兩部分整體的運(yùn)行效率。
1.1 人臉檢測(cè)步驟
人眼檢測(cè)目標(biāo)相對(duì)于整體圖像較小,直接檢測(cè)人眼運(yùn)算量較大,并且會(huì)產(chǎn)生較多非目標(biāo)結(jié)果,通常在檢測(cè)人眼之前首先進(jìn)行人臉區(qū)域定位。Paul Viola和Michael Jones于2001提出的基于Haar?like特征的AdaBoost算法可以精確快速地識(shí)別人臉區(qū)域。
AdaBoost算法給予每個(gè)訓(xùn)練樣本不同的權(quán)重,每個(gè)權(quán)重表示相應(yīng)樣本被錯(cuò)分的概率。算法進(jìn)行N次迭代,產(chǎn)生N個(gè)弱分類器,在每一次迭代時(shí),樣本權(quán)重產(chǎn)生變化,在上次迭代中被錯(cuò)誤分類的樣本獲得更大的權(quán)重,進(jìn)入下一次迭代時(shí),根據(jù)更新后樣本的權(quán)重選取部分樣本訓(xùn)練下一個(gè)弱分類器,最后將這N個(gè)弱分類器加權(quán)得到一個(gè)級(jí)聯(lián)的強(qiáng)分類器[8]。訓(xùn)練方法如下:
(1) 根據(jù)樣本分布[Dj],對(duì)訓(xùn)練集S進(jìn)行有放回的抽樣產(chǎn)生訓(xùn)練集[Sj]。
(2) 在訓(xùn)練集[Sj]上使用學(xué)習(xí)算法訓(xùn)練弱分類器[cj]。
(3) 用訓(xùn)練所得的分類器[cj]分類原訓(xùn)練集S中所有樣本,得到誤差:
[εj=i:cj(xi)≠yiDji]
(4) 令[αj=12ln1-εjεj],更新每個(gè)樣本的權(quán)值:
[Dj+1(i)=Dj(i)Zj·e-α, cjxi≠yieα, cjxi=yi]
式中[Zj]是一個(gè)正規(guī)因子用來(lái)確保[iDj+1(i)=1];[cj]為本輪迭代所得弱分類器;[αj]為[cj]對(duì)應(yīng)的權(quán)重。
(5) 得到強(qiáng)分類器[C],由上述所產(chǎn)生的所有弱分類器加權(quán)求和得到:
[Cx=signj=1Nαjcjx]
上述算法在弱分類器訓(xùn)練中采用Haar?like特征,利用AdaBoost算法訓(xùn)練人臉?lè)诸惼鞫ㄎ蝗四槨?/p>
人臉檢測(cè)是粗定位,是為了確定下一步驟人眼檢測(cè)的搜索區(qū)域,對(duì)精確度要求不高。為了盡可能快速得到人臉區(qū)域,在前幾幀檢測(cè)到人臉的情況下,本文采用差分方法進(jìn)人臉跟蹤,根據(jù)之前幀中人臉位置確定當(dāng)前人臉位置。
在視頻序列中[fkx,y],[fk-3x,y]分別為第k幀和第k-3幀圖像中人臉矩形框向外各擴(kuò)大10像素以后的區(qū)域,width,[height]為其長(zhǎng)寬。對(duì)[fkx,y],[fk-3x,y]進(jìn)行差值運(yùn)算,并二值化得到[gx,y]。統(tǒng)計(jì)[gx,y]中所有像素點(diǎn)[Ix,y>0]的個(gè)數(shù),記為[N1]。若[N1]小于某閾值即[N1 (1) 計(jì)算[gx,y],水平方向和垂直方向的灰度投影[pojHy,pojVx]; (2) 求解[OffsetX,OffsetY]使得: [max(i=OffsetXOffsetX+widthpojV(i)), OffsetX=-1,-2,…,10;] [max(i=OffsetYOffsetY+heightpojH(i)), OffsetY=-1,-2,…,10;] 式中[OffsetX,OffsetY]為跟蹤結(jié)果相對(duì)于上一幀人臉區(qū)域的偏移量。 (3) 根據(jù)[OffsetX,OffsetY]更新人臉矩形區(qū)域。人臉粗定位效果如圖1所示。 1.2 人眼檢測(cè)步驟 由上述步驟得到人臉區(qū)域后FROI(Face Region On Interest),在區(qū)域內(nèi)進(jìn)行人眼檢測(cè)。人眼檢測(cè)是整個(gè)系統(tǒng)的關(guān)鍵步驟,直接影響到后續(xù)人眼狀態(tài)分析,要求檢測(cè)到的人眼保證精確。由于人眼區(qū)域較小,采用AdaBoost等算法經(jīng)常會(huì)將鼻孔嘴巴等器官誤識(shí)別,所以在檢測(cè)前,首先根據(jù)人臉三庭五眼的特征,取人臉區(qū)域上部分區(qū)域進(jìn)行人眼檢測(cè),同時(shí)縮小一半計(jì)算量。 人眼檢測(cè)中使用的AdaBoost算法與人臉檢測(cè)中基本相同,在實(shí)際環(huán)境中,由于行車(chē)晃動(dòng),司機(jī)張望等客觀因素,AdaBoost很難達(dá)到較高的識(shí)別率,通常低于60%,而人類眨眼只需要0.2~0.6 s就可以完成,單一采用AdaBoost算法會(huì)嚴(yán)重影響系統(tǒng)的準(zhǔn)確度。 雖然AdaBoost識(shí)別率較低,但是其檢測(cè)出的結(jié)果誤識(shí)率極低,即結(jié)果準(zhǔn)確。結(jié)合AdaBoost算法所得結(jié)果準(zhǔn)確的特點(diǎn),本文設(shè)計(jì)了一種采用改進(jìn)的LBP特征的快速模板匹配方法,該方法在AdaBoost算法失效時(shí),采用前一幀已檢測(cè)到的人眼作為新的模板進(jìn)行匹配,解決了模板匹配中單一模板無(wú)法應(yīng)對(duì)眨眼時(shí)結(jié)果不精確的問(wèn)題,同時(shí)LBP特征對(duì)于旋轉(zhuǎn)和晃動(dòng)不敏感,有效的提高了人眼檢測(cè)的效果。 LBP特征是一種用來(lái)描述圖像局部紋理的特征算子,它在1994年由T.Ojala,D.Harwood等人提出。算子描述如下: 對(duì)于圖片中一個(gè)像素[Ii=Fxi,yi],其中[F]為圖像,[x,y]分別為對(duì)應(yīng)像素橫縱坐標(biāo): [sIi,Ij=1, Ii-Ij≥00, Ii-Ij<0] [LBPIi=jPs(Ii-Ij)] 式中P表示像素[xi]周?chē)袼攸c(diǎn)集合,LBP的計(jì)算采用二進(jìn)制。一個(gè)像素點(diǎn)產(chǎn)生一個(gè)8位的二進(jìn)制的字符串,一種字符串排列表示一種模式。本文采用Uniform LBP,即將二進(jìn)制字符串排列根據(jù)旋轉(zhuǎn)不變性從原來(lái)的256種模式壓縮成59種模式[9]。 由于目標(biāo)人眼圖像中人的眼睛位于圖片中央,上下部分大多為皮膚,在匹配過(guò)程中,人眼部分的特征會(huì)被皮膚掩蓋,本文使用y軸方向一維高斯模板,給予人眼部分y軸方向較高的權(quán)重,皮膚部分較低權(quán)重,并且減少了眉毛部分對(duì)結(jié)果的影響,實(shí)驗(yàn)表明新特征LBPG得到了較好的效果,新算子表達(dá)如下: [LBPGIi=LBPxi,yiGyi] 式中G為高斯函數(shù): [Gx=1σ2πe-(x-u)22σ2] 式中[μ]為[H2],[H]為圖像高度。 取上一幀檢測(cè)到人眼位置上下左右各擴(kuò)展10%人臉區(qū)域長(zhǎng)度個(gè)像素所得區(qū)域作為搜索區(qū)域,將上一幀檢測(cè)到的人眼作為模板進(jìn)行模板匹配搜索新的人眼位置。效果如圖2所示。 1.3 “人臉?人眼”模型改進(jìn) 上述兩節(jié)人臉檢測(cè)與人眼檢測(cè)的部分。在傳統(tǒng)“人臉?人眼”方法中,先進(jìn)行人臉檢測(cè)找出人臉區(qū)域FROI,再對(duì)FROI進(jìn)行人眼檢測(cè)找出人眼。這種方法對(duì)于每一幀都進(jìn)行以上兩個(gè)步驟,依次進(jìn)行,每一次檢測(cè)人臉區(qū)域都保證了下一步人眼檢測(cè)中待檢測(cè)區(qū)域的可靠性,但由于人臉檢測(cè)花費(fèi)時(shí)間巨大,犧牲了運(yùn)行速度。 完成人眼檢測(cè)得到人眼結(jié)果后,可以發(fā)現(xiàn),在結(jié)果準(zhǔn)確的情況下,人眼位于圖片中央位置,而實(shí)際環(huán)境中,下一幀圖像中人眼位置發(fā)生的偏移并不大,檢測(cè)結(jié)果周?chē)鷧^(qū)域可以直接作為下一幀新的FROI,直接進(jìn)行人眼檢測(cè),跳過(guò)人臉檢測(cè)步驟。這樣可以省去人臉檢測(cè)的計(jì)算量,同時(shí)由于使用人眼結(jié)果周?chē)鷧^(qū)域作為新的FROI,該區(qū)域通常小于人臉,從而減少了人眼檢測(cè)搜索面積也間接提高了人眼搜索算法的計(jì)算效率。 上述分析可知,跳過(guò)人臉檢測(cè)步驟的前提是需要保證本幀人眼檢測(cè)是準(zhǔn)確的,即確保本幀檢測(cè)結(jié)果周?chē)鷧^(qū)域作為新的FROI在下一幀對(duì)應(yīng)位置中包含人眼目標(biāo)。 本文設(shè)計(jì)了一種基于logistic分類器用來(lái)檢驗(yàn)本幀檢測(cè)結(jié)果的準(zhǔn)確度,其輸入為本幀檢測(cè)結(jié)果和上一次AdaBoost成功檢測(cè)結(jié)果,分類器從多個(gè)角度判斷兩張圖片是否相似,由于AdaBoost人眼檢測(cè)誤識(shí)率極低,得到的人眼準(zhǔn)確度高,新檢測(cè)得到人眼如果與其相似,則認(rèn)為結(jié)果準(zhǔn)確,否則認(rèn)為本幀檢測(cè)結(jié)果不準(zhǔn)確。 改進(jìn)后的流程在檢測(cè)完人眼以后,使用多特征分類器對(duì)結(jié)果進(jìn)行分析,判斷是否和上一幀人眼結(jié)果差異大小。一旦差異較小,則認(rèn)為人眼被檢測(cè)到,將人眼周?chē)鷧^(qū)域作為下一幀的FROI跳過(guò)人臉檢測(cè),否則算法依舊執(zhí)行人臉檢測(cè)部分,具體步驟如表1所示。 表中Step4具體步驟如下: 對(duì)本幀圖像newEyeImg和上一次AdaBoost人眼檢測(cè)結(jié)果圖像AdaEyeImg,分別抽取特征向量[v1,v2]。本文從紋理特征,邊緣特征,灰度特征,以及彩色信息等角度來(lái)構(gòu)造特征向量[v1,v2]。 接著分別計(jì)算[v1,v2]各特征分量之間的歐式距離得到差異特征向量D。采用logistic分類器對(duì)D進(jìn)行分類。特征分量具體如表2所示。 本文從17車(chē)次行車(chē)視頻中收集了1 217對(duì)正樣本,并在人眼檢測(cè)結(jié)果周?chē)x擇非人眼結(jié)果組成了1 537對(duì)負(fù)樣本,進(jìn)行訓(xùn)練,將1 389對(duì)樣本作為測(cè)試集,得到Logistic分類器準(zhǔn)確率為93.6%。 2 實(shí)驗(yàn)及結(jié)果分析 實(shí)驗(yàn)采用DM642芯片,主頻為720 MHz。實(shí)驗(yàn)對(duì)18位司機(jī)在其工作時(shí)進(jìn)行實(shí)際環(huán)境行車(chē)視頻采樣,共20段視頻。每段視頻各分析998幀行車(chē)視頻,圖像大小為352×288,得到人眼結(jié)果大小為20×20像素,首先驗(yàn)證了整體算法流程的識(shí)別率和效率,每段視頻平均檢測(cè)成功率為90.7%,具體如表3所示;接著比較傳統(tǒng)“人臉?人眼”模型和改進(jìn)過(guò)后方法各自每個(gè)步驟的執(zhí)行速度,如表4、表5所示所示;實(shí)驗(yàn)表明,兩種方法識(shí)別率接近,但是在計(jì)算時(shí)間上改進(jìn)后的方法明顯優(yōu)于傳統(tǒng)“人臉?人眼”模型,如表6所示。 3 結(jié) 語(yǔ) 本文討論了傳統(tǒng)的“人臉?人眼”模型方式,總結(jié)了基于Haar?like特征的AdaBoost算法進(jìn)行人臉人眼檢測(cè)的優(yōu)缺點(diǎn),采用差分運(yùn)算快速跟蹤人臉以及變模板匹配提高人眼檢測(cè)成功率,并改進(jìn)了傳統(tǒng)的“人臉?人眼”模型,使用多特征的分類器跳過(guò)人臉部分,提高了整個(gè)系統(tǒng)的效率。實(shí)驗(yàn)表明,該方法在DSP開(kāi)發(fā)板上可以以40 f/s左右的速度完成人眼的實(shí)時(shí)檢測(cè),同時(shí)正確率在90%以上。該算法應(yīng)用于基于嵌入式芯片的疲勞駕駛檢測(cè)系統(tǒng)具有較高的實(shí)用性和商業(yè)價(jià)值。 參考文獻(xiàn) [1] 李都厚,劉群,袁偉,等.疲勞駕駛與交通事故關(guān)系[J].交通運(yùn)輸工程學(xué)報(bào),2010,10(2):104?109. [2] 劉秀,王長(zhǎng)君,何慶.疲勞駕駛交通事的特點(diǎn)分析與預(yù)防[J].中國(guó)安全生產(chǎn)科學(xué)技術(shù),2008(1):129?131. [3] 夏芹,宋義偉,朱學(xué)峰.基于PERCLOS的駕駛疲勞監(jiān)控方法進(jìn)展[J].自動(dòng)化技術(shù)與應(yīng)用,2008(6):43?46. [4] 嚴(yán)超,王元慶,張兆揚(yáng).基于AdaBoost和Kalman算法的人眼檢測(cè)與跟蹤[J].南京大學(xué)學(xué)報(bào):自然科學(xué)版,2010,46(6):681?687. [5] 王江波,李紹文.基于AdaBoost算法和模板匹配的人眼定位[J].計(jì)算機(jī)測(cè)量與控制,2012,20(5):1347?1349. [6] 程如中,趙勇,戴勇,等.基于AdaBoost方法的車(chē)載嵌入式疲勞駕駛預(yù)警系統(tǒng)[J].北京大學(xué)學(xué)報(bào):自然科學(xué)版,2012,48(5):719?726. [7] 彭召意,周玉,朱文球.用于疲勞駕駛檢測(cè)的人眼快速跟蹤方法[J].計(jì)算機(jī)工程,2010,36(15):191?193. [8] 李維維,胡桂明,何龍玲,等.基于AdaBoost算法的人臉疲勞檢測(cè)[J].自動(dòng)化技術(shù)與應(yīng)用,2014,33(2):46?48. [9] 鄭永斌,黃新生,豐松江.SIFT和旋轉(zhuǎn)不變LBP相結(jié)合的圖像匹配算法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2010,22(2):286?292.