孫立書, 余 偉
(浙江東方職業(yè)技術(shù)學(xué)院工程技術(shù)系,浙江溫州 325011)
目前,有關(guān)駕駛員疲勞檢測的方法有基于生理的測量方法、基于車輛行為的方法及基于計(jì)算機(jī)視覺的檢測方法?;谏淼臏y量方法具有測量精度高的特點(diǎn),因此具有較強(qiáng)的說服力。但是測量時(shí)需要在駕駛環(huán)境放置醫(yī)療設(shè)備,會(huì)影響駕駛員操作行為,影響駕駛效果,不適合實(shí)際應(yīng)用?;谲囕v行為的方法,如車輛偏離中心線的距離、轉(zhuǎn)向、速度和加速度的變化可以反映出司機(jī)是否處于異常狀態(tài)。但是這些測量值中能反映司機(jī)處于異常和非異常狀態(tài)的臨界值是多少?測量值在哪個(gè)范圍內(nèi)變動(dòng)表明司機(jī)處于正常駕駛狀態(tài)?確定此范圍的依據(jù)又是什么?這些都很難確定,因此它具有較高誤檢率,較低的檢測精度?;谟?jì)算機(jī)視覺的檢測方法是使用攝像頭實(shí)時(shí)拍攝駕駛員的頭像,通過圖像處理與識(shí)別技術(shù)分析駕駛員的眼部狀態(tài),即眼睛是睜開的還是閉合的,或者通過判斷睜開和閉合的程度來判斷駕駛員疲勞與否。它具有非接觸性、信號(hào)采集方便快捷、可靠性高、穩(wěn)定性強(qiáng)等特點(diǎn),已成為駕駛員疲勞檢測的一種重要方法。據(jù)統(tǒng)計(jì),駕駛員通過視覺獲取外界信息約占90%。因此,通過模式識(shí)別技術(shù)檢測人眼的狀態(tài)是判斷駕駛員是否疲勞的主要依據(jù)之一。目前,國際上是以著名的PERCLOS80理論,即眼睛閉合80%的時(shí)間占某一特定時(shí)間的百分比來作為判斷駕駛員是否疲勞的主要依據(jù)。采用該種方法進(jìn)行疲勞檢測主要分為3步。首先,對采集的視頻圖像進(jìn)行人臉檢測;然后,在此基礎(chǔ)上進(jìn)行人眼檢測和跟蹤;最后,采用PERCLOS80理論進(jìn)行疲勞判斷。對采集到的視頻圖像能否進(jìn)行正確、實(shí)時(shí)的人臉檢測是影響疲勞檢測精度和檢測效率的重要因素。
PC環(huán)境下人臉識(shí)別系統(tǒng)是一種非在線檢測,具有非實(shí)時(shí)性和滯后性等缺點(diǎn),且成本高、穩(wěn)定性差、應(yīng)用局限性大。DM643是一款功能強(qiáng)大的DSP芯片,在音視頻和圖像處理方面具有高速性能,被廣泛應(yīng)用于人臉識(shí)別系統(tǒng)中,由此產(chǎn)生了嵌入式人臉識(shí)別系統(tǒng)。文中提出在DSP上快速實(shí)現(xiàn)疲勞檢測系統(tǒng)中的人臉檢測,利用駕駛室內(nèi)背景相對固定的特點(diǎn),采用臨界值法和K-means算法檢測定位人眼。設(shè)計(jì)時(shí)考慮數(shù)據(jù)處理的實(shí)時(shí)性、硬件系統(tǒng)的規(guī)模、軟件系統(tǒng)調(diào)試難度等諸多因素,采用TI公司TMS320DM643芯片為核心處理器,C語言編程。采用羅技快看高手版4000CCD攝影機(jī),每秒攝取30張畫面。人眼檢測的流程如圖1所示。
目前,檢測人臉的方法有很多[1-6],而每個(gè)方法不盡相同,根據(jù)過去臉部檢測的相關(guān)研究歸納出兩種常見方法。其一是對影像中的膚色區(qū)域作形狀判別;其二則是在膚色區(qū)域中搜尋是否含有臉部特征。在臉部的檢測上,經(jīng)過復(fù)雜度和效率的衡量,運(yùn)用計(jì)算快速且檢測效率高的Haar臉部檢測[7-8]及連續(xù)適應(yīng)性中心移動(dòng)演算法(Continuously Adaptive Mean Shift,Cam Shift)。Haar臉部檢測負(fù)責(zé)取得影像中人臉的部分,取得臉部區(qū)域后,再以Cam Shift用色彩幾率分布及統(tǒng)計(jì)的方式追蹤人臉,能確定濾除臉部區(qū)域中非膚色部分,兩種檢測方法具體如下。
圖1 人眼檢測的流程圖
Viola和Jones[7]提出一個(gè)機(jī)器學(xué)習(xí)之視覺上物件檢測演算法。不僅大大縮短計(jì)算時(shí)間,且擁有很高的檢測率,做法中有三項(xiàng)貢獻(xiàn):其一是類似Haar特征及將影像轉(zhuǎn)換為能快速應(yīng)用類似Haar特征的形式;其二是使用Ada Boost分類器,它能排除多數(shù)不必要的類似Haar特征,將目標(biāo)放在關(guān)鍵的類似Haar特征上;其三是以串聯(lián)的形態(tài)結(jié)合了許多分類器,提高檢測效率并縮短計(jì)算時(shí)間。R Lienhart[8]等以兩個(gè)重要的改革更進(jìn)一步加強(qiáng)了Viola和Jones的物件檢測演算法,在基本的類似Haar特征里,加入旋轉(zhuǎn)的類似Haar特征,這些新的特征也和原本的類似Haar特征一樣,可以在常數(shù)時(shí)間內(nèi)被計(jì)算出來,且利用決策樹來取代串聯(lián)的分類器,加強(qiáng)了檢測的效能。
Gary等人提出Cam Shift算法[9],即“Continuously Adaptive Mean Shift”算法,是一種運(yùn)動(dòng)跟蹤算法。它主要通過視頻圖像中運(yùn)動(dòng)物體的顏色信息來達(dá)到跟蹤物體的目的。連續(xù)適應(yīng)性中心移動(dòng)演算法Cam Shift是利用直方圖來計(jì)算二維圖像中色彩的概率分布,它可以處理動(dòng)態(tài)的色彩分布變化,其中包含處理靜態(tài)色彩分布的中心移動(dòng)演算法(Mean Shift)。Mean Shift是利用色彩概率分布的上升梯度去搜尋物體,算法過程如下:
步驟1:在顏色概率分布圖中選取搜索窗的大小。
步驟2:設(shè)定搜索窗的起始位置。
步驟3:計(jì)算搜索窗的重心(用xc表示)。
其中
步驟5:移動(dòng)搜索窗的中心至重心,如果移動(dòng)距離大于預(yù)設(shè)的閾值,則重復(fù)步驟3、步驟4和步驟5。直到搜索窗的中心與質(zhì)心間的移動(dòng)距離小于預(yù)設(shè)的閾值,或者循環(huán)運(yùn)算的次數(shù)達(dá)到某一最大值,停止計(jì)算。
將Mean Shift算法擴(kuò)展到連續(xù)圖像序列,就是Cam Shift算法。它將視頻的所有幀做Mean Shift運(yùn)算,并將上一幀的結(jié)果,即搜索窗的大小和中心,作為下一幀Mean Shift算法搜索窗的初始值。如此迭代下去,就可以實(shí)現(xiàn)對目標(biāo)的跟蹤。算法過程如下:
步驟1:設(shè)定搜索窗的起始位置及大小。
步驟2:計(jì)算搜索窗的顏色概率分布(反向投影)。
步驟3:運(yùn)行Mean Shift算法,獲得搜索窗新的大小和位置。
步驟4:在下一幀圖像中用步驟3中的值重新初始化搜索窗的大小和位置,重復(fù)步驟2繼續(xù)運(yùn)行。
在彩色圖像中,計(jì)算整張圖像色彩概率分布的計(jì)算量是很龐大的,Cam Shift在執(zhí)行上其實(shí)不需要計(jì)算整張影像的色彩概率分布,所以Gary等人改進(jìn)了Cam Shift,這項(xiàng)改進(jìn)是將色彩概率分布的計(jì)算局限在搜索窗周圍,如此一來,不僅減少計(jì)算量也提升了執(zhí)行速度,算法具體過程如下:
步驟1:將整個(gè)圖像設(shè)為搜尋區(qū)域。
步驟2:設(shè)定Mean Shift搜索窗的起始位置。
步驟3:在搜索窗的起始位置上,在較搜索窗大一點(diǎn)的范圍內(nèi)計(jì)算色彩概率分布。
步驟4:運(yùn)行Mean Shift一次或多次,獲得搜索窗新的位置和大小。
步驟5:在下一幀視頻圖像中,用步驟3獲得的值初始化搜索窗的位置和大小。跳轉(zhuǎn)到步驟2繼續(xù)運(yùn)行。
采用Open CV中Haar臉部辨識(shí)和Cam Shift函數(shù)進(jìn)行臉部檢測,檢測結(jié)果如圖2所示。
圖2 人臉檢測
人臉區(qū)域找到以后,在此區(qū)域進(jìn)行人眼檢測,人眼檢測的方法有很多[10-13],每個(gè)方法都有自己的限制條件。對于人眼檢測采用較簡單的方法,即臨界值法,它是依據(jù)灰度直方圖決定一個(gè)臨界值,將灰度圖像轉(zhuǎn)換為黑白圖像,即二值化圖像。檢測人臉時(shí),提取臉部區(qū)域以后,采用灰度圖像轉(zhuǎn)換函數(shù)將它轉(zhuǎn)換為灰度圖像,如圖3所示。
圖3 人臉原圖及灰度圖像
先將臉部區(qū)域分為上下兩個(gè)部分,預(yù)設(shè)眼睛一定在臉部的上半部,并利用臨界值法留下較黑的像素點(diǎn)。在臨界值的選取上,以灰度直方圖利用統(tǒng)計(jì)的方式自動(dòng)化選取,其做法是累計(jì)臉部區(qū)域上半部的像素?cái)?shù)目,以占其總數(shù)目5%的值,對直方圖5進(jìn)行統(tǒng)計(jì)去選取二值化的臨界值T=40。圖3的臉部區(qū)域灰度直方圖(灰度值的范圍為0~235)如圖4所示。人臉圖像如圖5所示,其二值化的結(jié)果如圖6所示。
圖4 臉部區(qū)域灰度直方圖
圖5 人臉圖像
圖6 臨界值法二值化的人臉圖像
二值化后留下的像素點(diǎn)是眼睛區(qū)域,以K-means聚類演算法對眼睛區(qū)域做分群的動(dòng)作,K-means算法如下:
步驟2:將訓(xùn)練資料依據(jù)它們與各個(gè)聚類中心的距離(歐幾里德距離或其它距離測量)遠(yuǎn)近,分配到最近的聚類中心。
步驟3:依據(jù)下列公式更新聚類中心位置,
式中:cj——所有被歸類于第j個(gè)聚類的資料集合;
Nj——屬于cj的資料的個(gè)數(shù)。
考慮到鼻孔偶爾會(huì)出現(xiàn)在臉部區(qū)域的上半部,所以將眼睛區(qū)域以K-means分為三群:一群為左眼,其初始在大致左眼的位置;一群為右眼,其初始在大致右眼的位置;另一群則為鼻孔,其初始在左右眼中心下方一點(diǎn)的位置。K-means的迭代次數(shù)設(shè)為一次,實(shí)驗(yàn)結(jié)果如圖7所示[14-17]。
CCS集成開發(fā)環(huán)境中提供了優(yōu)化選項(xiàng),在不同場合選擇使用不同優(yōu)化選項(xiàng),可以改進(jìn)程序性能。如在Generate Debug Info選項(xiàng)中,選擇No Debug選項(xiàng),即不輸出調(diào)試信息,大大加快程序運(yùn)行速度。
在文中系統(tǒng)中,將常用到的兩個(gè)數(shù)據(jù)(檢測分類器和識(shí)別轉(zhuǎn)換矩陣)和兩個(gè)程序(檢測和識(shí)別代碼)盡可能多地放到L2中,如程序1所示。
程序1:sra m段指向DM643片內(nèi)L2存儲(chǔ)空間:
由于DM643片內(nèi)RAM是有限的,經(jīng)常把數(shù)據(jù)存儲(chǔ)在片外。采用EDMA技術(shù)把用到的數(shù)據(jù)從片外搬入片內(nèi),大大提高程序的運(yùn)行速度。測試結(jié)果見表1。
圖7 人眼定位
表1 人臉識(shí)別算法優(yōu)化結(jié)果
將人臉識(shí)別算法移植到硬件系統(tǒng)后,對于大小為640×480的灰度圖像,優(yōu)化前完成一次操作需要67.36 s,無法滿足嵌入式人臉識(shí)別系統(tǒng)的要求,優(yōu)化以后完成一次操作只需要0.48 s,為優(yōu)化前的0.7%,基本滿足實(shí)時(shí)人臉識(shí)別要求。
在疲勞駕駛狀態(tài)檢測過程中,人眼檢測和定位是非常重要也是很關(guān)鍵的一個(gè)環(huán)節(jié)。首先采用Cam Shift算法提取人臉區(qū)域;然后采用K-means算法實(shí)現(xiàn)人眼檢測和定位;對傳統(tǒng)的在PC機(jī)上實(shí)現(xiàn)人臉檢測的缺點(diǎn)和不足進(jìn)行分析。以高速圖像處理芯片TM S320D M 643為核心,Windows XP操作系統(tǒng),采用i7-3612QM型號(hào)第三代智能英特爾酷睿i7處理器,內(nèi)存4 GHz,搭建硬件平臺(tái)。采用Matlab7.0仿真軟件,在該硬件平臺(tái)上對人臉識(shí)別算法進(jìn)行優(yōu)化。實(shí)驗(yàn)結(jié)果表明,人臉識(shí)別速度提高93%,實(shí)現(xiàn)實(shí)時(shí)、快速的人臉檢測,從而實(shí)現(xiàn)快速的人眼檢測與定位。
[1] 丁吉,李大偉.DSP Builder在圖像邊緣提取中的應(yīng)用[J].長春工業(yè)大學(xué)學(xué)報(bào):自然科學(xué)版,2010,31(1):52-57.
[2] C Garcia,G Zikos,G Tziritas.Face detection in color images using wavelet packet analysis[C]//Proceedings of the 6th IEEE International Conference on Multimedia Computing and Systems.Florence:[s.n.],1999:703-708.
[3] R L Hsu,M A Nottaleb,A K Jain.Face detection in color images[J].IEEE Trans.on Pattern Analysis and Machine Intelligence,2002,24(5):696-706.
[4] C Lin,K C Fan.Human face detection using geomeric triangle relationship[C]//Proceedings of the IEEE 15th International Conference on Pattern Recognition.2000:941-944.
[5] Li Tian,Y T Kanade,J F Cohn.Evaluation of gabor-wavelet-based facial action unit recognition in image sequences of increasing complexity[C]//Proceedings of 5th IEEE International Conference on Automatic Face and Gesture Recognition.2002:218-223.
[6] C A Perez,A Palma,C A Holzmann,et al.Face and eye tracking algorithm based on digital image processing[C]//IEEE International Conference on Systems,Man and Cybernetics.2001:1178-1183.
[7] P Viola,M Jones.Robust real-time object detection[C]//Proceedings of IEEE Workshop on Statistical and Theories of Computer Vision.2001.
[8] R Lienhart,A Kuranov,V Pisarevsky.Empirical analysis of detection cascades of boosted classifiers for rapid object detection[C]//Technical Report. MRL:Intel Labs.2002.
[9] G R Bradski.Computer vision face tracking for use in a perceptual user interface[C]//Proceedings of IEEE Workshop on Applications of Computer Vision.1998:214-129.
[10] R S Feris,T E Campos,R M Cesar.Detection and tracking of facial features in video sequences[C]//Mexican International Conference on Artifi-cal Intelligence.2001:129-137.
[11] Anon.Open source computer vision library(OpenCV).[EB/OL][2014-01-10].http://sourceforge.net/projects/opencvlibrary/.
[12] M Rizon,J L Wu.Automatic eye detection using intensity and edge information[J].Proceedings of TENCON,2000(2):24-27.
[13] R Senaratne,S Halgamuge.Optimised landmark model matching for face recognition[C]//Proceedings of the Seventh International Conference on Automatic Face and Gesture Recognition.2006:120-125.
[14] 張寧,李娜.基于Adaboost算法的人臉檢測技術(shù)的研究與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2011,14:56-58.
[15] 劉瑞禎,于仕琪.OpenCV教程[M].北京:北京航空航天大學(xué)出版社,2007:5-20.
[16] 陳盛勇,劉盛.基于OpenCV的計(jì)算機(jī)視覺技術(shù)實(shí)現(xiàn)[M].北京:科學(xué)出版社,2008:197-203.
[17] 楊枝靈,王開巧.Visual C++數(shù)字圖像獲取處理及實(shí)踐應(yīng)用[M].北京:人民郵電出版社,2003.