徐秀良,黃增宇
(1 北京鐵路局 北京機(jī)務(wù)段,北京100036; 2 山西智濟(jì)電子科技有限公司,山西太原030006)
機(jī)車乘務(wù)員瞌睡警示系統(tǒng)開發(fā)與研究
徐秀良1,黃增宇2
(1 北京鐵路局 北京機(jī)務(wù)段,北京100036; 2 山西智濟(jì)電子科技有限公司,山西太原030006)
機(jī)車乘務(wù)員疲勞駕駛時(shí)容易陷入瞌睡狀態(tài),從而可能引起嚴(yán)重的行車安全事故,瞌睡監(jiān)測系統(tǒng)的研究成為計(jì)算機(jī)應(yīng)用研究的重要領(lǐng)域。為了滿足瞌睡狀態(tài)監(jiān)測系統(tǒng)實(shí)時(shí)性要求,研究了基于Adaboost算法識別人眼的方法,采用單位時(shí)間內(nèi)眼睛閉合時(shí)間所占的百分率來判斷瞌睡狀態(tài),應(yīng)用該算法進(jìn)行瞌睡狀態(tài)訓(xùn)練和識別研究,并將瞌睡狀態(tài)監(jiān)測算法移植到DSP中。經(jīng)過實(shí)際使用驗(yàn)證,系統(tǒng)能滿足瞌睡實(shí)時(shí)監(jiān)測與警示的要求。
瞌睡狀態(tài);實(shí)時(shí)監(jiān)測;Adaboost算法
鐵路列車運(yùn)行中,機(jī)車乘務(wù)員的精神狀態(tài)是確保行車安全的重要因素之一,乘務(wù)員駕駛列車時(shí)打瞌睡也是引起行車事故的重大隱患。目前機(jī)車牽引采用長交路跨機(jī)務(wù)段,跨鐵路局輪乘模式,機(jī)車乘務(wù)員在長區(qū)段內(nèi)實(shí)行單司機(jī)雙配班執(zhí)乘,如何實(shí)時(shí)監(jiān)控乘務(wù)人員精神狀態(tài),在非正常精神狀態(tài)時(shí)適時(shí)警示乘務(wù)人員保證行車安全是我國鐵路乃至世界交通的一個(gè)重大課題。目前鐵路采用的手段是乘務(wù)員每分鐘按壓“無人警惕按鈕”,雖然能對防止工作狀態(tài)不佳、疲勞、瞌睡能起到作用,但當(dāng)乘務(wù)員熟練掌握后很容易轉(zhuǎn)化為下意識重復(fù)動作,不能很好地對其精神狀態(tài)起到喚醒和激發(fā)作用,更無法對其精神狀態(tài)進(jìn)行定性、定量監(jiān)測、分析,存在著安全控制和管理的不完備性。
因此,研發(fā)一種能在列車運(yùn)行中實(shí)時(shí)監(jiān)測機(jī)車乘務(wù)員的精神狀態(tài),并在其出現(xiàn)打瞌睡狀態(tài)時(shí),及時(shí)分級發(fā)出提示報(bào)警信號喚醒機(jī)車乘務(wù)員的裝置,既非常迫切,又十分必要,同時(shí),將安全管理由結(jié)果控制轉(zhuǎn)化為在線實(shí)時(shí)預(yù)防,對鐵路運(yùn)輸安全具有十分重要的現(xiàn)實(shí)意義。
目前用于監(jiān)測車輛、移動設(shè)備駕駛操作人員狀態(tài)的方法有很多種,主要分為3類:從生理特征上監(jiān)測,包括腦電的變化、心電和肌電的變化;從身體特征上監(jiān)測,包括頭部運(yùn)動、眼部運(yùn)動和嘴巴狀態(tài);從車輛動作上監(jiān)測,包括方向盤運(yùn)動和車輛行駛方向。
研究發(fā)現(xiàn)基于身體特征的方法具有較好的檢測性能。其中,從視覺上監(jiān)測眼部運(yùn)動的狀況來判斷機(jī)車乘務(wù)員值乘過程中瞭望狀態(tài)是一種最為直接有效的方法。當(dāng)一個(gè)人值乘狀態(tài)不良,甚至打盹了,從生理上就會自主的要求休息。有研究表明,人正常眨眼與人精神狀態(tài)不良,甚至瞌睡狀況下人眼的運(yùn)動有很明顯的區(qū)別。衡量眼部運(yùn)動狀態(tài)的一個(gè)重要指標(biāo)就是PERCLOS(Percentage of Eyelid Closure Over the PuPil Over Time),定義為單位時(shí)間內(nèi)眼睛閉合時(shí)間所占的百分比。
1.1 PERCLOS法
PERCLOS法一般有3種判定標(biāo)準(zhǔn),分別是P70、P80和EM。P70表示眼睛閉合70%(即瞳孔被眼瞼縱向遮住70%)以上所占的時(shí)間比率;P80表示眼睛閉合80%以上的時(shí)間比率;EM表示眼瞼均方閉合率。通過試驗(yàn)證明,研究人員發(fā)現(xiàn)P80與精神狀態(tài)不良,尤其是瞌睡程度間的相關(guān)性最強(qiáng)。因此,本系統(tǒng)采用P80作為監(jiān)測裝置的判定標(biāo)準(zhǔn)。PERCLOS值f的測量原理如圖1所示。
圖1 PERCLOS值f的測量原理
從圖1中可以看出,只要測量出t1~t4這4個(gè)值,就可以計(jì)算出PERCLOS的值,公式所示。
式中f為PERCLOS值,代表眼睛閉合超過80%的時(shí)間占單位時(shí)間的百分率;t1代表眼睛最大瞳孔閉合到80%瞳孔所用時(shí)間;t2代表眼睛80%瞳孔閉合到20%瞳孔所用時(shí)間;t3代表眼睛20%瞳孔閉合到20%瞳孔睜開所用時(shí)間;t4代表眼睛20%瞳孔睜開到80%瞳孔所用時(shí)間。
從視覺上監(jiān)測眼部運(yùn)動狀態(tài)除了可以密切反映人的疲勞程度之外,該方法的另一大優(yōu)點(diǎn)是無需與機(jī)車乘務(wù)員進(jìn)行身體接觸,從而不會干擾機(jī)車乘務(wù)員的正常操縱。
在檢測眼部運(yùn)動狀態(tài)檢測方面,本系統(tǒng)采用基于局部特征和Adaboost機(jī)器學(xué)習(xí)的方法,通過機(jī)器學(xué)習(xí)的方式自動挑選最具判別性的魯棒局部特征,從而達(dá)到較高的睜閉眼檢測率。
1.2 基于Adaboost的人臉、人眼識別檢測算法
(1)樣本選擇
選擇樣本是本模塊的關(guān)鍵,訓(xùn)練的樣本要有正樣本和負(fù)樣本。正樣本是要監(jiān)測正確的目標(biāo)圖像,負(fù)樣本是非目標(biāo)的圖像。本系統(tǒng)選擇的正樣本就是人臉圖像和人眼(包括左眼和右眼及睜眼和閉眼)圖像,考慮到個(gè)人的臉部和眼部會有一定的差異,在選擇正樣本的過程中,選擇了多個(gè)形態(tài)的樣本,對左眼和右眼的訓(xùn)練,左眼樣本包括睜眼和閉眼,右眼樣本包括睜眼和閉眼。選擇的負(fù)樣本是非人臉圖像和非人眼圖像。
(2)特征提取
在一個(gè)24×24的圖片上提取一些簡單的特征(稱為Haar特征),如圖2所示。
圖2 Haar特征圖
一個(gè)弱分類器都對應(yīng)著一個(gè)Haar特征,每一個(gè)弱分類器都是根據(jù)它所對應(yīng)的Haar特征的參數(shù)來定義的。利用上述Haar特征的位置信息,對訓(xùn)練樣本進(jìn)行統(tǒng)計(jì)到對應(yīng)的特征參數(shù)。每一個(gè)精選出的矩形特征對應(yīng)構(gòu)成一個(gè)弱分類器。
通過對每個(gè)樣本利用積分圖快速計(jì)算出所有這些矩形特征值,用一個(gè)二維數(shù)組有效地對樣本進(jìn)行排序,當(dāng)判斷出一個(gè)樣本為人臉時(shí),對應(yīng)的計(jì)數(shù)器加1,反之減1,最終得到一個(gè)弱分類器。
(3)分類器訓(xùn)練
基于Adaboost的睜閉眼檢測算法分為訓(xùn)練和識別兩個(gè)階段。在訓(xùn)練階段,事先收集一批標(biāo)定好的睜閉眼樣本圖片。Adaboost算法訓(xùn)練過程如下:
①獲取正負(fù)樣本集(x1,y1),…,(xn,yn),yi=0,1用來指示正負(fù)樣本,為0時(shí)為負(fù)樣本,為1時(shí)為正樣本;
③設(shè)定弱分類器個(gè)數(shù)T
由于 t=1,…,T
(c)選擇分類錯誤最小的弱特征ht;
(d)更新樣本權(quán)重,按如下規(guī)則:
如果樣本分類正確則ei為0,否則ei為1。
④用Adaboost算法訓(xùn)練的最終強(qiáng)分類器為:
弱特征hj(x)由特征值fj、閾值θj和偏置pj組成。
這里的X是子窗口(一般設(shè)為樣本圖像大?。?。弱特征的特征值、閾值和偏置通過樣本訓(xùn)練得到。
2.1 系統(tǒng)整體架構(gòu)
考慮乘務(wù)員瞌睡監(jiān)測系統(tǒng)應(yīng)用的特殊性,設(shè)計(jì)的系統(tǒng)必須滿足以下要求:
(l)非接觸式,即不能對駕駛員駕駛產(chǎn)生干擾影響;
(2)實(shí)時(shí)性,能實(shí)時(shí)地監(jiān)測駕駛員駕駛瞌睡生理特征參數(shù);
(3)全天候,可以工作在微光或是無光以及駕駛員戴眼鏡的狀態(tài)下。
因此,在算法研究時(shí),由于人眼區(qū)域相比較于人臉區(qū)域,信息量較少,定位監(jiān)測難度較大。采用基于人臉區(qū)域協(xié)助定位的方法,將人臉定位技術(shù)運(yùn)用到了瞌睡監(jiān)測的環(huán)節(jié)中,實(shí)現(xiàn)了人眼定位與人眼狀態(tài)的識別。運(yùn)用人臉技術(shù)進(jìn)行瞌睡駕駛監(jiān)測的流程如圖3所示。
圖3 駕駛監(jiān)測的流程
首先,通過攝像機(jī)實(shí)時(shí)獲取駕駛員臉部視頻圖像,然后經(jīng)過視頻解碼器轉(zhuǎn)換成數(shù)字圖像,協(xié)處理器對圖像預(yù)處理后,主處理器完成面部識別、人眼定位及狀態(tài)識別等功能。當(dāng)系統(tǒng)判定駕駛員處于瞌睡駕駛狀態(tài)時(shí),對外輸出接口,給出提示語音或報(bào)警。
2.2 硬件設(shè)計(jì)與實(shí)現(xiàn)
硬件系統(tǒng)是實(shí)現(xiàn)系統(tǒng)功能的基礎(chǔ)與平臺,為滿足系統(tǒng)面部識別、人眼定位及狀態(tài)識別等復(fù)雜算法的需要,系統(tǒng)采用FPGA+DSP(Field Programable Gate Array+Digital Signal Processal)的處理架構(gòu),一方面采用高速DSP作為主處理器完成面部識別、人眼定位及人眼狀態(tài)識別等算法,另一方面采用大容量FPGA作為協(xié)處理器,不僅實(shí)現(xiàn)對圖像采集器、存儲器和FLASH等外部設(shè)備的控制,而且完成圖像的濾波、增強(qiáng)和偽彩色變換等預(yù)處理功能,與DSP構(gòu)成乘務(wù)員瞌睡監(jiān)測平臺。硬件組成包括圖像采集單元、信號處理單元以及電源和外圍電路、存儲單元,以及語音報(bào)警單元等,系統(tǒng)結(jié)構(gòu)框圖如圖4所示。
圖4 機(jī)車乘務(wù)員瞌睡警示系統(tǒng)硬件結(jié)構(gòu)框圖
2.3 軟件設(shè)計(jì)與實(shí)現(xiàn)
首先從圖像采集卡讀入一幀圖像,由時(shí)間序列預(yù)測算法(幀間關(guān)聯(lián))根據(jù)前幾幀眼睛的位置對當(dāng)前幀眼睛位置進(jìn)行預(yù)測來定位人眼,然后判斷定位后的圖像是否為人眼。判斷完成后,設(shè)計(jì)一個(gè)計(jì)數(shù)器對判斷為疲勞狀態(tài)的眼睛圖像幀進(jìn)行計(jì)數(shù)。如果單位時(shí)間內(nèi)這種幀數(shù)超過某一特定閾值,就要報(bào)警,否則進(jìn)行下一幀處理。
如果幀間關(guān)聯(lián)失?。]有得到眼睛圖像),馬上轉(zhuǎn)入設(shè)計(jì)的圖像分割算法從原始圖像幀中分割面部和眼睛圖像,對獲得的圖像進(jìn)行自適應(yīng)閾值二值化處理,經(jīng)過垂直掃描投影算法和水平掃描投影算法得到面部的邊界,分割出面部圖像。
通過已經(jīng)訓(xùn)練的人工神經(jīng)網(wǎng)絡(luò)對分割的面部圖像進(jìn)行判斷,如果不是面部圖像,進(jìn)行下一幀處理。否則,對判斷為人面部的圖像進(jìn)行邊界提取,聚類定位后可能的面部特征,通過幾何關(guān)系特征計(jì)算面部的姿勢朝向等,對于非正常面部姿勢和朝向的圖像幀進(jìn)行計(jì)數(shù)。
如果單位時(shí)間內(nèi)這種計(jì)數(shù)超出閾值就進(jìn)行報(bào)警。否則將分割出來的眼睛交給上述3種判斷方法進(jìn)行確認(rèn),如果是眼睛就進(jìn)行幀計(jì)數(shù),單位時(shí)間內(nèi)該計(jì)數(shù)超過特定閾值就報(bào)警,否則進(jìn)入下一幀循環(huán)。同時(shí)對這些確認(rèn)的眼睛位置進(jìn)行記錄,留作下一幀處理時(shí)幀間關(guān)聯(lián)之用。
具體流程如圖5。
圖5 軟件處理流程
2.4 算法DSP實(shí)現(xiàn)
基于級聯(lián)分類器人眼狀態(tài)識別是在DSP內(nèi)完成,在計(jì)算機(jī)上完成級聯(lián)強(qiáng)分類器訓(xùn)練后,將結(jié)果以文件的形式存在DSP內(nèi)存中,DSP從FPGA中讀取預(yù)處理后的圖像,逐層等比放大監(jiān)測窗口,再用各層窗口快速比對整張待監(jiān)測圖像。這樣提高了監(jiān)測速度,因此不必再縮小圖像。所謂放大監(jiān)測窗口只是修改監(jiān)測窗口的長、寬值(放大時(shí)都乘以等比系數(shù)),監(jiān)測時(shí)根據(jù)監(jiān)測窗口的位置、大小截取子圖像。
DSP讀入圖像后,加載人臉分類器,把人臉分類器轉(zhuǎn)化成內(nèi)部格式;再加載經(jīng)過圖像預(yù)處理后的待監(jiān)測圖像,經(jīng)過放大監(jiān)測窗口的方式,從獲得的待監(jiān)測圖像上監(jiān)測出人臉的具體位置;確定出人臉的圖像,再在人臉圖像的范圍內(nèi),通過分類器訓(xùn)練模塊訓(xùn)練的人眼分類器進(jìn)行對人眼具體位置的監(jiān)測,它包含對左眼和右眼及睜眼和閉眼的監(jiān)測。如果沒有監(jiān)測到目標(biāo),就會返回開始對下一幅圖像進(jìn)行監(jiān)測。這樣就能監(jiān)測到每幀圖像中眼睛的狀態(tài)。
由于人眼形狀大小差異很大,為了提高監(jiān)測概率及減少虛警率,采用多特征融合方式來監(jiān)測瞌睡狀態(tài),具體采用面部特征和PERCLOS原理的瞌睡監(jiān)測,當(dāng)這兩特征同時(shí)顯示乘務(wù)員進(jìn)入瞌睡狀態(tài)時(shí),發(fā)出報(bào)警,并且根據(jù)瞌睡時(shí)間的長短,給出不同的報(bào)警等級。
瞌睡表現(xiàn)在面部變化可分兩種情況。第1種情況是當(dāng)司機(jī)向前低頭瞌睡,人臉可以看到的范圍比正常時(shí)候小,也就是說,人臉的面積會比正常時(shí)少;可以設(shè)定一個(gè)閉值S,當(dāng)監(jiān)測到的人臉的面積小于此閾值的時(shí)候,就啟動瞌睡監(jiān)測計(jì)時(shí)器。第2種情況是當(dāng)司機(jī)的頭低到無法監(jiān)測其人臉時(shí),同樣會啟動瞌睡監(jiān)測計(jì)時(shí)器,這里計(jì)算的時(shí)間用處理的幀數(shù)來表示。只要其中出現(xiàn)一種上述所說的情況,計(jì)時(shí)器啟動。如果計(jì)時(shí)超過了一個(gè)危險(xiǎn)值,認(rèn)為司機(jī)進(jìn)入瞌睡狀態(tài)。
根據(jù)前部分PERCLOS原理介紹,統(tǒng)計(jì)一段時(shí)間內(nèi)(本系統(tǒng)設(shè)為2 s)出現(xiàn)瞌睡的次數(shù)和非瞌睡的比例,當(dāng)超過給定閾值時(shí),并且面部特征也判斷為處于瞌睡狀態(tài),則判斷為處于瞌睡初始階段,此時(shí)發(fā)出1級報(bào)警;若連續(xù)5 s內(nèi)根據(jù)PERCLOS原理和面部特征一直出現(xiàn)瞌睡狀態(tài),則發(fā)出2級報(bào)警;若瞌睡狀態(tài)持續(xù)10 s以上,則發(fā)出3級即最高級別報(bào)警,并且只要維持這種狀態(tài),系統(tǒng)將持續(xù)報(bào)警。
系統(tǒng)一旦監(jiān)測到司機(jī)處于瞌睡狀態(tài),立即輸出控制信號,啟動語音系統(tǒng),發(fā)出提示聲音或報(bào)警信號。
在實(shí)際應(yīng)用中,DSP工作頻率為600 MHz,視頻輸入圖像大小為768×576,進(jìn)行瞌睡監(jiān)測,系統(tǒng)監(jiān)測速率基本達(dá)到15幀/s。通過采集多人圖像視頻進(jìn)行監(jiān)測,分析得到人臉監(jiān)測率為98.5%,人眼監(jiān)測率96.8%,人眼狀態(tài)分析正確率為95.7%。算法達(dá)到15幀/s的幀速率,基本滿足了系統(tǒng)實(shí)時(shí)監(jiān)測的性能要求。但是由于試驗(yàn)設(shè)備環(huán)境與時(shí)間限制,監(jiān)測系統(tǒng)還存在缺陷和有待完善的地方。例如由于樣本庫的原因,人臉監(jiān)測算法對傾斜人臉的監(jiān)測存在先天不足,可以加入傾斜人臉樣本或在監(jiān)測階段采用旋轉(zhuǎn)視頻圖像方法解決該問題。
[1] TMS320DM642 Video/Imaging Fixed-Point Digital Signal Processor,TI.
[2] Kawaguchi,Hidaka D,Rizon M.Detection of the eyes from human faces by Hough transform and separability filter[J].Proceedings of 7th IEEE International Conference on Image Processing,2000,(1):49-52.
[3] A.Haro,M.Flickner,I.Essa.Detecting and Tracking Eyes by Using Their physiological Properties,Dynamics,and Appearance[C].Proceeding IEEE CVPR 2000.Hilton Head Island,South Carolina,June 2000.
[4] 鄭 培,宋正河,周一鳴.機(jī)動車駕駛員駕駛疲勞測評方法的研究狀況及發(fā)展趨勢[J].中國農(nóng)業(yè)大學(xué)學(xué)報(bào),2001,6(6):101-105.
[5] 鄭 培,宋正河,周一鳴.基于PERCLOS的機(jī)動車駕駛員駕駛疲勞的識別算法[J].中國農(nóng)業(yè)大學(xué)學(xué)報(bào),2002,7(2):104-109.
[6] 張志平.汽車駕駛員駕駛疲勞監(jiān)測技術(shù)研究進(jìn)展[J].中國安全科學(xué)學(xué)報(bào),2005,15(3):108-112.
[7] 王 峰,孟 哲,易 威.基于DSP的疲勞駕駛監(jiān)測儀研制[J].醫(yī)療裝備,2005,11(3):9-12.
Development and Research of the Crew Slept-nap Alarm System
XU Xiuliang1,HUANG Zengyu2
(1 Beijing Locomotive Depot,Beijing Railway Brueau,Beijing 100036,China;2 Shanxi Zhiji Electronics and Technology Co.,Ltd.,Taiyuan 030006 Shanxi,China)
Fatigue driving makes Locomotive crew easily take a nap,which could cause serious accidents.Research on nap sleep monitoring system has become an important field in computer application research.In order to meet real-time requirements,the eye-judging method is researched based on Adaboost algorithm.We judge the sleeping state from the percentage of eye closing per unit time and use this method to test and identify the sleeping state,and the monitoring algorithm is transplanted to DSP.After the implementation,it has been verified that the system can meet the requirements of nap sleep real-time monitoring and warning.
nap-sleep state;real-time monitoring;adaboost algorithm
U260.5+4
A
10.3969/j.issn.1008-7842.2014.03.25
1008-7842(2014)03-0099-04
8—)男,高級工程師(
2013-11-18)