陳瑜 李錦濤 徐軍莉
摘 要:疲勞駕駛是導致交通事故的重要原因之一。為檢測識別駕駛員疲勞狀態(tài),根據(jù)人的眼動行為存在隨機性及模糊性特點,采用不確定性的云模型對眼動特征進行數(shù)據(jù)處理,構建二維多規(guī)則推理生成器檢測駕駛員疲勞狀況,以此疲勞檢測模型為基礎構建基于安卓的疲勞預警系統(tǒng)。系統(tǒng)通過手機攝像頭實時采集駕駛員面部數(shù)據(jù),通過人臉人眼定位后,計算出per-clos和眨眼時間均值。將數(shù)據(jù)輸入疲勞檢測模塊,一旦檢測到駕駛員疲勞,系統(tǒng)即進行文字和語音提醒。該系統(tǒng)成本較低,實時性較好,在模擬駕駛環(huán)境下檢測率可達到73.98%。
關鍵詞:眼動特征;疲勞駕駛;預警系統(tǒng);定性推理器;云模型
DOI:10. 11907/rjdk. 191848 開放科學(資源服務)標識碼(OSID):
中圖分類號:TP319文獻標識碼:A 文章編號:1672-7800(2020)005-0116-04
0 引言
2017年底,我國民用汽車保有量達到21 473萬輛,比上年增長了11.8%,全國高速公路通車里程達到13.6萬km。隨著公路建設和車輛的增加,交通事故也呈現(xiàn)不斷上升趨勢[1]。據(jù)統(tǒng)計,在高速公路發(fā)生的重特大交通事故中,因疲勞駕駛造成的事故所占比例達40%以上[2]。由于疲勞駕駛引發(fā)的交通事故往往是在駕駛?cè)撕翢o預見、且未采取主動避險措施的情況下發(fā)生的,經(jīng)常導致車毀人亡,后果十分慘重。因此,實時檢測駕駛員是否處于疲勞駕駛狀態(tài),并在出現(xiàn)疲勞狀態(tài)時給出有效預警有著十分重要的現(xiàn)實意義。
目前,疲勞檢測預警系統(tǒng)研究較多[3-9]:張志文等基于perclos人眼疲勞判定算法設計一個嵌入式疲勞預警系統(tǒng);李建平等以駕駛員人眼圖像為處理對象,建立了離散單位時間內(nèi)非正常狀態(tài)時間所占百分比的疲勞判斷模型,實現(xiàn)對駕駛員疲勞狀態(tài)預警;李超等基于ADS1299腦波芯片,結合應用層對數(shù)據(jù)進行處理得到頻域數(shù)據(jù),得出人腦疲勞程度特征的腦電波信號能量級,從而進行疲勞駕駛預警。疲勞檢測方法有基于駕駛行為的疲勞檢測和基于人體生理信號的疲勞檢測。其中基于駕駛?cè)搜蹌犹卣鞯姆墙佑|式檢測方法[10-14]逐漸被廣泛采用,如劉志強等以perclos眼睛焦點的位置等眼部特征為參數(shù),采用支持向量機的疲勞檢測模型;曠文騰等采用眼白面積和perclos作為疲勞特征指標。但由于人的眼動行為本質(zhì)上存在隨機性和模糊性,導致無法對眼部行為指標數(shù)據(jù)進行準確描述。因此,本文在將眼部行為作為疲勞檢測指標時,采用不確定性的云模型對眼動特征進行數(shù)據(jù)處理,構建二維多規(guī)則推理生成器對駕駛員進行疲勞檢測。該推理生成器在模擬駕駛器上進行檢測,平均識別率可以達到73.98%[15]。本文以此推理生成器為基礎構建包括數(shù)據(jù)采集模塊、特征提取模塊、疲勞檢測模塊和疲勞預警模塊的基于安卓的疲勞預警系統(tǒng)。
1 基于眼動特征的駕駛員疲勞預警系統(tǒng)
1.1 疲勞預警系統(tǒng)模塊設計
基于眼動特征的駕駛員疲勞預警系統(tǒng)模塊結構如圖1所示。
系統(tǒng)首先通過手機攝像頭拍攝駕駛員的面部圖像,然后采用AdaBoost算法進行人臉檢測,對人眼進行粗率和精確定位,隨后計算眼瞼閉合時間百分比 (percentage of eyelid closure time,per-clos)和眨眼時間均值兩個眼動特征參數(shù),將計算出的眼動特征數(shù)據(jù)輸入到疲勞檢測模塊進行疲勞分類識別。如果檢測結果為疲勞,則通過疲勞報警模塊進行文字和語音報警,如圖1所示。
1.1.1 特征提取模塊
在該模塊中主要進行人臉檢測、人眼定位和眼動參數(shù)計算。
(1)人臉檢測。本文采用AdaBoost算法[16]進行人臉檢測。目前常用的AdaBoost算法有Discrete Adaboost算法、Real Adaboost算法和Gentel Adaboost算法,它們的原理是相同的,都是基于弱分類器融合思想,主要對同一個訓練數(shù)據(jù)集先訓練出不同的弱分類器。在訓練樣本時,每次在進入下一輪分類器訓練之前權值都會自動調(diào)整。在訓練中,若樣本被準確分類,那么它在下一次訓練過程中就會被降低權值。而未被正確分類的樣本在下次選取訓練樣本時,此樣本的權值將被加重。有研究表明[17],在人臉檢測上,Gentel Adaboost算法的效果優(yōu)于其它兩類算法。因此,本文采用Gentel Adaboost算法進行人臉檢測。
(2)人眼定位。人臉檢測完成后需要進行人眼定位。人眼定位分為粗定位和精確定位。粗定位主要是根據(jù)人臉的“三庭五眼”特征定位。按垂直方向?qū)⑷四槃澐譃椤吧贤ァ?、“中庭”和“下庭?個部分;按水平方向?qū)⑷四槃澐譃?個部分,稱為“五眼”。本系統(tǒng)只對左眼處理。為了更精確獲取人眼區(qū)域,在“三庭五眼”特征上將人臉進一步劃分,在垂直方向上將“中庭”再等分為3部分,如圖2所示。
這樣可以粗略定位到人眼,但定位的人眼中還有眉毛或眼框,因此需要對人眼再次進行精確定位,此處仍采用 Adaboost 算法。
(3)眼動特征計算。 在精確定位到人眼后,就可計算眼動疲勞特征參數(shù)。本文采用per-clos和眨眼時間作為眼動特征參數(shù)。per-clos是眼睛在單位時間內(nèi)閉合的百分比[18]。常用的per-clos 標準有EM、P70 和 P80。EM 指當瞳孔面積的 50%被眼瞼遮擋就認定眼睛是閉合狀態(tài);P70 指當瞳孔面積的 70%被眼瞼遮擋就認定眼睛是閉合狀態(tài);P80 指當瞳孔面積的 80%被眼瞼遮擋就認定眼睛是閉合狀態(tài)。相關研究表明[19],在這3種 per-clos 標準中,P80 標準能更好地體現(xiàn)疲勞狀態(tài),因此本文采用P80。計算公式為[20]:
1.1.2 疲勞檢測模塊
該模塊的主要任務是建立疲勞分類模型。在虛擬實驗環(huán)境下采集駕駛員疲勞和清醒狀態(tài)下的相關眼動數(shù)據(jù),然后計算出對應的眼睛閉合時間比per-clos和眨眼時間均值,構建基于Per-clos 和眨眼時間均值的二維多規(guī)則定性推理生成器,然后以該生成器作為疲勞分類模型。定性推理生成器如圖3所示。
如圖3所示,將一組輸入值(per-clos, 眨眼時間均值)輸入生成器,生成器輸出期望值的平均值Ex,如果Ex值大于1.5,則判斷這組輸入值為疲勞狀態(tài),否則為清醒狀態(tài)。該定性推理生成器在模擬駕駛環(huán)境下的平均識別率可達到73.98%。
1.1.3 疲勞報警模塊
當疲勞檢測模塊輸出結果為疲勞狀態(tài)時,系統(tǒng)將調(diào)用疲勞報警模塊,該模塊同時向系統(tǒng)使用者顯示文字提醒和語音提醒。
1.2 疲勞預警系統(tǒng)界面設計
疲勞預警系統(tǒng)界面如圖4所示,主要包括人臉檢測區(qū)、操作按鈕區(qū)、實時顯示眼動特征數(shù)據(jù)區(qū)和檢測結果區(qū)。用戶單擊“開始檢測”按鈕,攝像頭就開始進行拍攝,并進行人臉人眼實時定位,同時在界面右上角顯示計算的perclos和眨眼時間均值數(shù)據(jù)。每隔5分鐘就在右下角更新檢測結果。
2 系統(tǒng)實現(xiàn)
本系統(tǒng)以Android 為開發(fā)平臺,使用 Android Studio 開發(fā)工具,以 Java\C\C++作為開發(fā)語言,利用開源的計算機視覺函數(shù)庫 OpenCV 進行開發(fā)。各模塊功能如下:
(1)圖像采集模塊實現(xiàn)。OpenCV 提供了一個抽象類 CameraBridgeViewBase與 Android 的Camera連接,其中 JavaCameraView 類對 CameraBridgeViewBase 抽象類進行實現(xiàn),此處通過 JavaCameraView 類設置和修改攝像頭默認參數(shù)。Opencv 上有兩個監(jiān)聽器CvCameraViewListener2 和 CvCameraViewListener,在攝像頭輸入流啟動、每幀圖像采集和停止時,這兩個監(jiān)聽器都提供相應的回調(diào)方法。本文在 Android 應用程序中繼承CvCameraViewListener監(jiān)聽器,并將相應的回調(diào)方法重寫,對圖像進行處理。
(2)人臉檢測模塊實現(xiàn)。把攝像頭獲取到的圖像用 JNI的方法傳給底層 C/C++處理。底層通過使用 OpenCV 的分類器 CascadeClassifier 對人臉進行檢測,然后在Java層創(chuàng)建DetectionBasedTracker類,通過該類的nativeDetect()方法將圖像地址傳給 C/C++層。在進行人臉檢測前,先把訓練好的分類器haarcascade_frontalface_alt_tree 文件和人臉最小值傳給 C/C++層。
(3)人眼定位模塊實現(xiàn)。人眼定位包括粗定位和精確定位,粗定位主要是排除人臉外部干擾信息,只處理人眼區(qū)域,根據(jù)人臉”三庭五眼”這一特征獲取人眼粗略的區(qū)域。眼睛的精確定位與人臉檢測一樣使用Adaboost 算法,具體過程為:獲取人眼粗略的左眼區(qū)域;讀取人眼檢測分類器文件 haarcascade_eye_tree_eyeglasses;創(chuàng)建一個人眼檢測分類器 CascadeClassifier 類和存儲人眼信息eyes;調(diào)用detectMuiliScale()方法進行人眼檢測。
(4)疲勞判定模塊。建立基于per-clos和眨眼時間均值的二維云模型,根據(jù)這2個眼動參數(shù)的云模型特征構建定性規(guī)則。依據(jù)二維單規(guī)則生成器,構造二維多規(guī)則定性推理生成器。
(5)疲勞報警模塊。疲勞報警模塊將文字顯示在系統(tǒng)界面右下角并給出語音提醒。在Android 開發(fā)中MediaPlayer 類和 SoundPool 類都可以實現(xiàn)音頻播放,但由于MediaPlayer 播放音頻文件時會出現(xiàn)延遲時間長、不支持實時播放多個音頻和資源占用量相對較高等缺點,因此本文采用 SoundPool類實現(xiàn)語音播放。文字信息的提醒通過 OpenCV 圖像處理庫中 Core 類實現(xiàn)。系統(tǒng)通過圖像處理庫 OpenCV的Core類中的putText()方法實現(xiàn)文字顯示。
3 結語
在我國機動車保有量不斷提高的情況下,每年因疲勞發(fā)生的事故越來越多。因此,在行車過程中加強疲勞預警有著非常重要的現(xiàn)實意義。目前,疲勞駕駛預警領域取得了一定的研究成果,但基于車載的低成本疲勞駕駛檢測系統(tǒng)還不是很多,為此本文提出一款基于眼動特征的疲勞檢測系統(tǒng)APP。該系統(tǒng)鑒于人的眼動行為存在隨機性及模糊性特點,采用云模型理論生成定性推理生成器作為疲勞分類模型,在一定程度上提高了疲勞檢測的準確性。本系統(tǒng)采集數(shù)據(jù)方便,成本較低,實時性較好。但由于在疲勞檢測模型中采用的訓練樣本數(shù)目較少,疲勞檢測模型的檢測率還有待提高,后續(xù)研究將增加訓練樣本數(shù),提高疲勞檢測準確率。
參考文獻:
[1] 張琪,劉玉麒. ?我國民用汽車保有量突破二千萬輛[J]. ?中國統(tǒng)計,2003(8):1-2.
[2] 蔣新明,邢貴. ?疲勞駕駛與行車安全[J]. ?現(xiàn)代農(nóng)機,2007(3):39-39.
[3] 張志文,張沛晨. ?基于人眼運動檢測的疲勞預警系統(tǒng)研究[J]. ?電子設計工程, 2015(6):172-175.
[4] 郭慧利,王恁, 郭浩. ?基于面部多特征的疲勞駕駛預警系統(tǒng)的研究[J]. ?通信學報, 2018, 39(S1):28-35.
[5] 李建平, 牛燕雄, 楊露,等. ?基于人眼狀態(tài)信息的非接觸式疲勞駕駛監(jiān)測與預警系統(tǒng)[J]. ?激光與光電子學進展, 2015, 52(4):83-88.
[6] 蔡馥鴻, 張正華, 劉金龍,等. ?基于TGAM腦波模塊的疲勞駕駛預警系統(tǒng)設計[J]. ?信息化研究, 2016(4):76-78.
[7] 李照, 舒志兵. ?基于DSP的駕駛員疲勞實時預警系統(tǒng)設計[J]. ?控制工程, 2019, 26(1):94-100.
[8] 李超, 石向榮, 黃劍華. ?基于腦電信號處理的疲勞駕駛預警系統(tǒng)的設計與實現(xiàn)[J]. ?科學技術創(chuàng)新, 2018(2):75-76.
[9] FORSMAN P M, VILA B J, SHORT R A, et al. Efficient driver drowsiness detection at moderate levels of drowsiness[J]. ?Accid Anal Prev, 2013, 50(1):341-350.
[10] 劉志強,宋雪松,汪彭,等. 基于眼部特征的疲勞駕駛辨識方法研究[J]. 重慶理工大學學報(自然科學), 2016, 30(10):11-15.
[11] 曠文騰,毛寬誠,黃家才,等. ?基于高斯眼白模型的疲勞駕駛檢測[J]. 中國圖象圖形學報,2018, 21(11):1515-1522.
[12] 蔣建國,王雷,齊美彬,等. ?基于眼睛狀態(tài)檢測的駕駛員疲勞駕駛分析[J]. 合肥工業(yè)大學學報(自然科學版),2015(2):175-180.
[13] MANDAL B,LI L,WANG G S,et al. Towards detection of bus driver fatigue based on robust visual analysis of eye state[J]. ?IEEE Transactions on Intelligent Transportation Systems, 2016(6):1-13.
[14] ZHANG F, SU J, GENG L, et al. Driver fatigue detection based on eye state recognition[C]. 2017 International Conference on Machine Vision and Information Technology (CMVIT). ?IEEE, 2017.
[15] 徐軍莉, 閔建亮, 胡劍鋒,等. ?定性推理生成器在駕駛疲勞檢測中的應用[J]. ?汽車安全與節(jié)能學報, 2018,9(1):32-40.
[16] 王琳琳, 聶財香. ?基于AdaBoost算法和Cascade算法的人臉檢測系統(tǒng)的實現(xiàn)[J]. 電子制作, 2013(11):66-67.
[17] 蔡燦輝, 朱建清. ?采用Gentle AdaBoost和嵌套級聯(lián)結構的實時人臉檢測[J]. ?信號處理, 2013, 29(8):123-128.
[18] 鞏曉倩, 蒲亦非, 楊智勇,等. ?基于有限狀態(tài)自動機的人眼開度PERCLOS實現(xiàn)算法[J]. 計算機應用研究,2014,31(1):307-310.
[19] 董占勛, 孫守遷, 吳群. 心率變異性與駕駛疲勞相關性研究[J]. ?浙江大學學報:工學版,2010,44(1):46-50.
(責任編輯:杜能鋼)