徐秀良,黃增宇
(1 北京鐵路局 北京機務段,北京100036; 2 山西智濟電子科技有限公司,山西太原030006)
機車乘務員瞌睡警示系統開發與研究
徐秀良1,黃增宇2
(1 北京鐵路局 北京機務段,北京100036; 2 山西智濟電子科技有限公司,山西太原030006)
機車乘務員疲勞駕駛時容易陷入瞌睡狀態,從而可能引起嚴重的行車安全事故,瞌睡監測系統的研究成為計算機應用研究的重要領域。為了滿足瞌睡狀態監測系統實時性要求,研究了基于Adaboost算法識別人眼的方法,采用單位時間內眼睛閉合時間所占的百分率來判斷瞌睡狀態,應用該算法進行瞌睡狀態訓練和識別研究,并將瞌睡狀態監測算法移植到DSP中。經過實際使用驗證,系統能滿足瞌睡實時監測與警示的要求。
瞌睡狀態;實時監測;Adaboost算法
鐵路列車運行中,機車乘務員的精神狀態是確保行車安全的重要因素之一,乘務員駕駛列車時打瞌睡也是引起行車事故的重大隱患。目前機車牽引采用長交路跨機務段,跨鐵路局輪乘模式,機車乘務員在長區段內實行單司機雙配班執乘,如何實時監控乘務人員精神狀態,在非正常精神狀態時適時警示乘務人員保證行車安全是我國鐵路乃至世界交通的一個重大課題。目前鐵路采用的手段是乘務員每分鐘按壓“無人警惕按鈕”,雖然能對防止工作狀態不佳、疲勞、瞌睡能起到作用,但當乘務員熟練掌握后很容易轉化為下意識重復動作,不能很好地對其精神狀態起到喚醒和激發作用,更無法對其精神狀態進行定性、定量監測、分析,存在著安全控制和管理的不完備性。
因此,研發一種能在列車運行中實時監測機車乘務員的精神狀態,并在其出現打瞌睡狀態時,及時分級發出提示報警信號喚醒機車乘務員的裝置,既非常迫切,又十分必要,同時,將安全管理由結果控制轉化為在線實時預防,對鐵路運輸安全具有十分重要的現實意義。
目前用于監測車輛、移動設備駕駛操作人員狀態的方法有很多種,主要分為3類:從生理特征上監測,包括腦電的變化、心電和肌電的變化;從身體特征上監測,包括頭部運動、眼部運動和嘴巴狀態;從車輛動作上監測,包括方向盤運動和車輛行駛方向。
研究發現基于身體特征的方法具有較好的檢測性能。其中,從視覺上監測眼部運動的狀況來判斷機車乘務員值乘過程中瞭望狀態是一種最為直接有效的方法。當一個人值乘狀態不良,甚至打盹了,從生理上就會自主的要求休息。有研究表明,人正常眨眼與人精神狀態不良,甚至瞌睡狀況下人眼的運動有很明顯的區別。衡量眼部運動狀態的一個重要指標就是PERCLOS(Percentage of Eyelid Closure Over the PuPil Over Time),定義為單位時間內眼睛閉合時間所占的百分比。
1.1 PERCLOS法
PERCLOS法一般有3種判定標準,分別是P70、P80和EM。P70表示眼睛閉合70%(即瞳孔被眼瞼縱向遮住70%)以上所占的時間比率;P80表示眼睛閉合80%以上的時間比率;EM表示眼瞼均方閉合率。通過試驗證明,研究人員發現P80與精神狀態不良,尤其是瞌睡程度間的相關性最強。因此,本系統采用P80作為監測裝置的判定標準。PERCLOS值f的測量原理如圖1所示。

圖1 PERCLOS值f的測量原理
從圖1中可以看出,只要測量出t1~t4這4個值,就可以計算出PERCLOS的值,公式所示。

式中f為PERCLOS值,代表眼睛閉合超過80%的時間占單位時間的百分率;t1代表眼睛最大瞳孔閉合到80%瞳孔所用時間;t2代表眼睛80%瞳孔閉合到20%瞳孔所用時間;t3代表眼睛20%瞳孔閉合到20%瞳孔睜開所用時間;t4代表眼睛20%瞳孔睜開到80%瞳孔所用時間。
從視覺上監測眼部運動狀態除了可以密切反映人的疲勞程度之外,該方法的另一大優點是無需與機車乘務員進行身體接觸,從而不會干擾機車乘務員的正常操縱。
在檢測眼部運動狀態檢測方面,本系統采用基于局部特征和Adaboost機器學習的方法,通過機器學習的方式自動挑選最具判別性的魯棒局部特征,從而達到較高的睜閉眼檢測率。
1.2 基于Adaboost的人臉、人眼識別檢測算法
(1)樣本選擇
選擇樣本是本模塊的關鍵,訓練的樣本要有正樣本和負樣本。正樣本是要監測正確的目標圖像,負樣本是非目標的圖像。本系統選擇的正樣本就是人臉圖像和人眼(包括左眼和右眼及睜眼和閉眼)圖像,考慮到個人的臉部和眼部會有一定的差異,在選擇正樣本的過程中,選擇了多個形態的樣本,對左眼和右眼的訓練,左眼樣本包括睜眼和閉眼,右眼樣本包括睜眼和閉眼。選擇的負樣本是非人臉圖像和非人眼圖像。
(2)特征提取
在一個24×24的圖片上提取一些簡單的特征(稱為Haar特征),如圖2所示。

圖2 Haar特征圖
一個弱分類器都對應著一個Haar特征,每一個弱分類器都是根據它所對應的Haar特征的參數來定義的。利用上述Haar特征的位置信息,對訓練樣本進行統計到對應的特征參數。每一個精選出的矩形特征對應構成一個弱分類器。
通過對每個樣本利用積分圖快速計算出所有這些矩形特征值,用一個二維數組有效地對樣本進行排序,當判斷出一個樣本為人臉時,對應的計數器加1,反之減1,最終得到一個弱分類器。
(3)分類器訓練
基于Adaboost的睜閉眼檢測算法分為訓練和識別兩個階段。在訓練階段,事先收集一批標定好的睜閉眼樣本圖片。Adaboost算法訓練過程如下:
①獲取正負樣本集(x1,y1),…,(xn,yn),yi=0,1用來指示正負樣本,為0時為負樣本,為1時為正樣本;
③設定弱分類器個數T
由于 t=1,…,T

(c)選擇分類錯誤最小的弱特征ht;
(d)更新樣本權重,按如下規則:

如果樣本分類正確則ei為0,否則ei為1。
④用Adaboost算法訓練的最終強分類器為:

弱特征hj(x)由特征值fj、閾值θj和偏置pj組成。

這里的X是子窗口(一般設為樣本圖像大小)。弱特征的特征值、閾值和偏置通過樣本訓練得到。
2.1 系統整體架構
考慮乘務員瞌睡監測系統應用的特殊性,設計的系統必須滿足以下要求:
(l)非接觸式,即不能對駕駛員駕駛產生干擾影響;
(2)實時性,能實時地監測駕駛員駕駛瞌睡生理特征參數;
(3)全天候,可以工作在微光或是無光以及駕駛員戴眼鏡的狀態下。
因此,在算法研究時,由于人眼區域相比較于人臉區域,信息量較少,定位監測難度較大。采用基于人臉區域協助定位的方法,將人臉定位技術運用到了瞌睡監測的環節中,實現了人眼定位與人眼狀態的識別。運用人臉技術進行瞌睡駕駛監測的流程如圖3所示。

圖3 駕駛監測的流程
首先,通過攝像機實時獲取駕駛員臉部視頻圖像,然后經過視頻解碼器轉換成數字圖像,協處理器對圖像預處理后,主處理器完成面部識別、人眼定位及狀態識別等功能。當系統判定駕駛員處于瞌睡駕駛狀態時,對外輸出接口,給出提示語音或報警。
2.2 硬件設計與實現
硬件系統是實現系統功能的基礎與平臺,為滿足系統面部識別、人眼定位及狀態識別等復雜算法的需要,系統采用FPGA+DSP(Field Programable Gate Array+Digital Signal Processal)的處理架構,一方面采用高速DSP作為主處理器完成面部識別、人眼定位及人眼狀態識別等算法,另一方面采用大容量FPGA作為協處理器,不僅實現對圖像采集器、存儲器和FLASH等外部設備的控制,而且完成圖像的濾波、增強和偽彩色變換等預處理功能,與DSP構成乘務員瞌睡監測平臺。硬件組成包括圖像采集單元、信號處理單元以及電源和外圍電路、存儲單元,以及語音報警單元等,系統結構框圖如圖4所示。

圖4 機車乘務員瞌睡警示系統硬件結構框圖
2.3 軟件設計與實現
首先從圖像采集卡讀入一幀圖像,由時間序列預測算法(幀間關聯)根據前幾幀眼睛的位置對當前幀眼睛位置進行預測來定位人眼,然后判斷定位后的圖像是否為人眼。判斷完成后,設計一個計數器對判斷為疲勞狀態的眼睛圖像幀進行計數。如果單位時間內這種幀數超過某一特定閾值,就要報警,否則進行下一幀處理。
如果幀間關聯失敗(沒有得到眼睛圖像),馬上轉入設計的圖像分割算法從原始圖像幀中分割面部和眼睛圖像,對獲得的圖像進行自適應閾值二值化處理,經過垂直掃描投影算法和水平掃描投影算法得到面部的邊界,分割出面部圖像。
通過已經訓練的人工神經網絡對分割的面部圖像進行判斷,如果不是面部圖像,進行下一幀處理。否則,對判斷為人面部的圖像進行邊界提取,聚類定位后可能的面部特征,通過幾何關系特征計算面部的姿勢朝向等,對于非正常面部姿勢和朝向的圖像幀進行計數。
如果單位時間內這種計數超出閾值就進行報警。否則將分割出來的眼睛交給上述3種判斷方法進行確認,如果是眼睛就進行幀計數,單位時間內該計數超過特定閾值就報警,否則進入下一幀循環。同時對這些確認的眼睛位置進行記錄,留作下一幀處理時幀間關聯之用。
具體流程如圖5。

圖5 軟件處理流程
2.4 算法DSP實現
基于級聯分類器人眼狀態識別是在DSP內完成,在計算機上完成級聯強分類器訓練后,將結果以文件的形式存在DSP內存中,DSP從FPGA中讀取預處理后的圖像,逐層等比放大監測窗口,再用各層窗口快速比對整張待監測圖像。這樣提高了監測速度,因此不必再縮小圖像。所謂放大監測窗口只是修改監測窗口的長、寬值(放大時都乘以等比系數),監測時根據監測窗口的位置、大小截取子圖像。
DSP讀入圖像后,加載人臉分類器,把人臉分類器轉化成內部格式;再加載經過圖像預處理后的待監測圖像,經過放大監測窗口的方式,從獲得的待監測圖像上監測出人臉的具體位置;確定出人臉的圖像,再在人臉圖像的范圍內,通過分類器訓練模塊訓練的人眼分類器進行對人眼具體位置的監測,它包含對左眼和右眼及睜眼和閉眼的監測。如果沒有監測到目標,就會返回開始對下一幅圖像進行監測。這樣就能監測到每幀圖像中眼睛的狀態。
由于人眼形狀大小差異很大,為了提高監測概率及減少虛警率,采用多特征融合方式來監測瞌睡狀態,具體采用面部特征和PERCLOS原理的瞌睡監測,當這兩特征同時顯示乘務員進入瞌睡狀態時,發出報警,并且根據瞌睡時間的長短,給出不同的報警等級。
瞌睡表現在面部變化可分兩種情況。第1種情況是當司機向前低頭瞌睡,人臉可以看到的范圍比正常時候小,也就是說,人臉的面積會比正常時少;可以設定一個閉值S,當監測到的人臉的面積小于此閾值的時候,就啟動瞌睡監測計時器。第2種情況是當司機的頭低到無法監測其人臉時,同樣會啟動瞌睡監測計時器,這里計算的時間用處理的幀數來表示。只要其中出現一種上述所說的情況,計時器啟動。如果計時超過了一個危險值,認為司機進入瞌睡狀態。
根據前部分PERCLOS原理介紹,統計一段時間內(本系統設為2 s)出現瞌睡的次數和非瞌睡的比例,當超過給定閾值時,并且面部特征也判斷為處于瞌睡狀態,則判斷為處于瞌睡初始階段,此時發出1級報警;若連續5 s內根據PERCLOS原理和面部特征一直出現瞌睡狀態,則發出2級報警;若瞌睡狀態持續10 s以上,則發出3級即最高級別報警,并且只要維持這種狀態,系統將持續報警。
系統一旦監測到司機處于瞌睡狀態,立即輸出控制信號,啟動語音系統,發出提示聲音或報警信號。
在實際應用中,DSP工作頻率為600 MHz,視頻輸入圖像大小為768×576,進行瞌睡監測,系統監測速率基本達到15幀/s。通過采集多人圖像視頻進行監測,分析得到人臉監測率為98.5%,人眼監測率96.8%,人眼狀態分析正確率為95.7%。算法達到15幀/s的幀速率,基本滿足了系統實時監測的性能要求。但是由于試驗設備環境與時間限制,監測系統還存在缺陷和有待完善的地方。例如由于樣本庫的原因,人臉監測算法對傾斜人臉的監測存在先天不足,可以加入傾斜人臉樣本或在監測階段采用旋轉視頻圖像方法解決該問題。
[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].中國農業大學學報,2001,6(6):101-105.
[5] 鄭 培,宋正河,周一鳴.基于PERCLOS的機動車駕駛員駕駛疲勞的識別算法[J].中國農業大學學報,2002,7(2):104-109.
[6] 張志平.汽車駕駛員駕駛疲勞監測技術研究進展[J].中國安全科學學報,2005,15(3):108-112.
[7] 王 峰,孟 哲,易 威.基于DSP的疲勞駕駛監測儀研制[J].醫療裝備,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)