























摘要:針對交通安全中疲勞駕駛狀態識別問題,使用單一的疲勞駕駛特征的方法識別率較低,本文提出一種基于面部多特征加權和的疲勞識別方法,通過人眼狀態檢測算法提取眼部疲勞參數,即持續閉眼時間、閉眼幀數比、眨眼頻率,通過打哈欠狀態檢測得到打哈欠次數和打哈欠持續時間,通過頭部運動狀態分析得到點頭頻率,建立融合以上六個特征的駕駛疲勞狀態檢測模型來評估駕駛員的疲勞等級并進行相應的預警.實驗測試數據選自NTHU駕駛員疲勞檢測視頻數據集的部分數據.經實驗調整后,發現該方法的識別準確率較高,識別效果好.
關鍵詞:駕駛安全;特征點定位;眨眼狀態識別;多特征融合;疲勞識別
中圖分類號:N39文獻標志碼:A
Research on Fatigue Driving State Recognition Method Based on Multi-feature Fusion
HU Fengsong,CHENG Zhekun,XU Qingyun,PENG Qingzhou,QUAN Xiajie
(College of Computer Science and Electronic Engineering,Hunan University,Changsha 41008 China)
Abstract:Aiming at the problem of fatigue driving state recognition in traffic safety,the recognition rate of using a single fatigue driving feature is low. This paper studies and proposes a fatigue recognition method based on the weighted sum of facial multi-features. The eye fatigue parameters,such as continuous eye closing time,eye closing frame ratio and blink frequency,are extracted by human eye state detection algorithm. The number and duration of yawning are obtained through yawning state detection,the nodding frequency is obtained through head motion state analysis,and a driving fatigue state detection model integrating the above six characteristics is established to evaluate the driver’s fatigue level and give the corresponding early warning. The experimental test data are selected from part of the NTHU driver fatigue detection video data set. After experimental adjustment,it is found that this method has high recognition accuracy and provide a good recognition effect.
Key words:driving safety;feature point positioning;blink of an eye state recognition;multiple feature fusion;fatigue recognition
隨著汽車數量的迅猛增長,汽車在給人們生活帶來快捷與便利的同時,頻繁的道路交通事故也帶來了慘重的經濟損失,人民的生命安全受到了巨大的威脅,疲勞駕駛已成為全球一個嚴重而亟待解決的交通安全問題[1].研究表明,應用機器學習、模式識別等技術對疲勞駕駛狀態檢測識別及預警的方法效果較好[2-3],能有效預防道路交通事故的發生,疲勞駕駛檢測技術已逐步從研究領域轉移到工業應用領域并不斷發展完善[4-5].
疲勞駕駛識別研究領域目前還存在很多難點,在不同的場景下如戴太陽鏡、光照明喑等都會影響識別的準確率[4].疲勞駕駛狀態信息包括眼部疲勞信息、嘴部疲勞信息和頭部疲勞信息,識別方法可分為單一特征疲勞信息識別和多特征疲勞信息識別,而單一特征疲勞信息識別的準確率有待提高⑹本文主要根據多特征疲勞信息來進行疲勞駕駛狀態識別.首先,基于SVM的睜閉眼狀態識別算法判斷眼部疲勞狀態,然后通過嘴部高寬比和點頭頻率判斷嘴部和頭部疲勞狀態,最后融合多特征進行疲勞駕駛狀態識別.
1眼部疲勞狀態判斷
1.1人眼定位
使用由Kazemi和Sullivan提出的基于級聯回歸樹的人臉關鍵點定位算法進行人眼定位。如圖1 (a)中人臉特征點模型所示,根據圖中關鍵點序號可以知道每個特征點的位置,如左眼的序號為36~4 右眼的序號為42~47.根據眼部特征點的序號,提取的左、右眼部區域如圖1(b)所示的左、右長方形方框區域.其定位計算規則如下:
W=1.6×We,H=3×He(1)
式中:We為人眼特征點36到39之間的水平距離,He為人眼特征點37到41之間和38到40之間垂直距離的平均值,而W和H為定位的眼部區域的寬和高.
1.2基于SVM的睜閉眼狀態識別
為了能更為精準地識別人眼睜閉狀態,使用兩個特征:人眼縱橫比和人眼黑色像素累積差值作為支持向量機SVM分類器的輸入,使用SVM來識別圖像中人眼的狀態.
1.2.1計算人眼縱橫比
為了能準確快速識別眼睛的睜閉狀態,我們計算眼睛的高度和寬度之間的縱橫比(eye aspect ratio,EAR).睜眼時的縱橫比在個體之間的差異基本上很小,并且對于圖像的均勻縮放和面部的旋轉是完全不變的[8].圖2為左眼在睜開與閉合狀態下檢測到的6個關鍵點,眼睛縱橫比計算式為:
為了精確地識別眼部狀態,取雙眼EAR的平均值作為眼睛睜閉識別的特征:
EAR=Mean(EARleft,EARright)(3)
計算視頻圖像連續200幀左、右眼的縱橫比,得到的結果如圖3所示.當發生眨眼時,EAR值迅速減小接近于0,然后慢慢增加至接近于正常情況下睜眼時的EAR值.
1.2.2基于自適應閾值計算人眼黑色像素累積差值
定位人眼區域,然后選取局部自適應閾值算法對人眼圖像進行二值化,經過形態學開閉操作和中值濾波處理后,能較好地呈現眼睛輪廓及細節,表1 為右眼不同情況下的二值圖像.
當人眼閉合時,盡管可能會受睫毛和眼瞼等暗區域的影響,但是最大暗部在瞳孔區域不會出現.所以與睜眼相比,當眼睛閉合時,二值圖像中的黑色像素的數量會急劇減少.但是,由于黑色像素的數量會隨著人眼與攝像頭之間距離的改變而改變,當距離變大時,在圖像中眼睛區域縮小,因此黑色像素的數量減少.
為了減少人眼與攝像頭距離因素的影響,將人眼圖像歸一為同一尺寸,計算連續兩幀之間的黑色像素差.一般在兩個以上的連續幀中可以觀察到閉眼的動作,因此當連續兩幀的差值小于0時,開始累計差值.人眼一次眨眼過程中,黑色像素數量變化如圖4 (a)所示.根據圖4可以看到:第54幀由于差值大于0 而沒有累積差值,導致其被錯誤地識別為睜眼狀態.
根據文獻[9]提出的方法,使用自適應閾值的方法累積差值.規定“狀態0”和“狀態1”兩種狀態,當人眼區域二值化圖像的黑色像素的差值小于0時,從“狀態0”變為“狀態1”.在“狀態1”時,若差值小于閾值T(t),累積差值并保持狀態不變;若差值大于或等于閾值T(t),不累積差值且狀態變為“狀態0”.請參考圖5.
計算方法如下:
式中:N(t)是第t幀的黑色像素數量,ΔN(t)為第t幀與第t-1幀之間的差值,D(t-1)為“狀態1”中在第t-1幀的累積差值,a為0到1之間的恒定值,最優a值通過檢測睜閉眼的準確性確定.由第t-1幀的累積差值D(t-1)得到第t幀的自適應閾值T(t).使用自適應閾值可正確地將第54幀識別為閉眼.圖6為使用自適應閾值計算人眼二值圖像的黑色像素累積差值的結果圖,可以看出該方法能較好地識別閉眼狀態.
1.2.3睜閉眼狀態測試
從ZJU眨眼視頻數據集[10]的80個視頻中選取睜眼樣本2 000張,閉眼樣本700張;從NTHU駕駛員疲勞檢測視頻數據集[11]中選取睜眼樣本2 000張,閉眼樣本1 300張;同時自采集睜眼樣本2 000張、閉眼樣本4 000張,總共采集睜、閉眼圖像各6 000張.對人眼縱橫比、黑色像素累積差值這兩類特征參數數據進行歸一化處理.在進行分類器訓練前,需要選擇合適的核函數,當特征與分類標簽之間的關系為非線性時,選擇RBF核函數,故本文采用RBF核函數進行模型訓練.
從樣本數據中選擇8 000組數據進行訓練,剩余的4 000組數據對睜閉眼狀態進行測試,其測試結果如表2所示.
從表2可以看出,提出的方法對睜閉眼狀態識別的準確率較高.表3為使用不同算法的識別結果對比.
1.3眼部疲勞信息提取
當人處于疲勞狀態時,會出現眨眼頻率增加、閉眼時間增長、打哈欠等現象,嚴重時甚至會出現打瞌睡的現象.研究發現,人在正常情況下每分鐘眨眼10 次到25次不等,眨眼一次眼睛閉合持續的時間約為0.2s左右.根據這一現象,本文選取最能表現疲勞狀態的三個眼部指標作為眼部疲勞特征參數:基于PERCLOS準則[13]的ECR(閉眼幀數所占比)、MECT(最長持續閉眼時間)和BF(眨眼頻率).
1.4眨眼檢測
由圖3的EAR值計算結果可知,一次眨眼過程中,EAR值先減小直至接近于零,然后逐漸增大至正常睜眼狀態值.設E為EAR閾值,K為判斷眨眼的幀數閾值.當EAR小于閾值E時,眼睛開始閉合;當其值接近于正常睜眼狀態值即大于E時,眼睛完全睜開.我們統計該過程中EAR lt; E的連續幀數F,當EAR≥E時,若F大于設定的連續幀數閾值K,則記眨眼一次.
為了尋找最優閾值E和K,我們在ZJU眨眼數據集上進行實驗.ZJU中80個視頻包含四種主題:未戴眼鏡的正面視頻、戴薄邊框眼鏡的正面視頻、戴黑框眼鏡的正面視頻及未戴眼鏡向上仰角的視頻,每個主題20組視頻,每個視頻中眨眼次數1到6次不等,數據集中總共包含255次眨眼.圖7為不同EAR閾值E值與連續視頻幀數閾值K值下眨眼檢測結果的精確率.根據圖7的結果,我們在提取眼睛疲勞參數眨眼頻率時,選擇計算EAR小于閾值E=0.24時的連續幀數.當EAR大于該閾值時,若連續幀數也大于閾值K= 則記一次眨眼.計算一個時間周期內眨眼的次數,即為眨眼頻率.
以60 s為一個時間周期,對周期內人眼狀態進行統計分析,得到眼部疲勞特征統計值.以0表示清醒狀態,1表示疲勞狀態,記最長閉眼時間為MECT,閉眼幀數所占比為ECR,眨眼次數為BF.經實驗及參考相關文獻,得出三個眼部疲勞特征值之間的疲勞閾值如式(6)所示.
2嘴部疲勞狀態判斷
嘴部檢測定位的方法很多.基于級聯回歸樹(Ensemble of Regression Tress,ERT)算法[10]的人臉關鍵點檢測中,嘴部的位置序號為48~67.因此,我們可以根據該序號來定位嘴部并識別其狀態.
本文主要通過計算嘴部高寬比(MAR)來判斷嘴部狀態.為了使MAR值更為精準,如圖8所示,標記的P 1-P10用來計算MAR的10個特征點,歐氏距離的計算公式可參照式(7).
我們知道,正常駕駛情況下,嘴部處于閉合狀態;當與他人說話時,嘴唇處于開合不斷變化狀態,且張開幅度不大;而當處于疲勞打哈欠狀態時,嘴巴張開幅度很大且持續時間較長[14].為了判斷嘴部狀態如講話、打哈欠等,使用基于高寬比的方法在樣本上進行實驗,實驗結果如圖9所示.由圖9可知:當MAR≤0.4時,嘴巴是閉合的;當0.4 lt; MAR lt; 0.8 時,為正常講話狀態;當MAR gt; 0.8時,處于打哈欠狀態.根據上述分析,可以使用MAR作為特征來識別嘴部狀態.
當駕駛者處于困倦狀態時,會接連不斷地打哈欠,每次打哈欠嘴部持續張開時間約6 s,此時就需要停車休息,不宜繼續駕駛.根據該現象,我們可以檢測一個時間周期內司機打哈欠的次數,并據此來評估其是否疲勞.為了正確識別打哈欠狀態,我們在YawDD數據集[15]上進行實驗,不斷改變MAR的閾值和連續幀數值,尋找最優高寬比MAR的閾值M,并定義MAR值高于閾值M的連續幀數為打哈欠的閾值K.找到最優閾值M=0.7和K=15后,在數據集上檢測打哈欠,準確率約為95.6%.當嘴部高寬比MAR連續15幀大于0.7時,我們則記一次打哈欠.圖10中的t1到t4的時間差即為一次哈欠時間,當嘴部張開程度超過閾值時,我們檢測是否打哈欠.以0表示正常狀態,1表示疲勞狀態,嘴部疲勞狀態取值條件如式(8)所示:
式中:YF表示打哈欠的次數,YT為打一次哈欠持續的時間,閾值取N= t=4s.
3頭部疲勞狀態判斷
駕駛員駕駛過程中的點頭頻率的檢測是對頭部運動分析的關鍵,也是疲勞駕駛檢測的重要因素.當一個時間周期內點頭頻率超過某個閾值時,可以認為駕駛員處于疲勞狀態.
依據定位到的眼部特征點位置信息,從實時性和準確性出發,本文提出了一種基于二維垂直方向的點頭頻率特征分析算法.取定位的雙眼的中心點連線的中點作為頭部位置檢測點,根據該檢測點在垂直方向上坐標y隨時間的變化情況,計算一個時間周期內的點頭頻率.圖11為駕駛員打瞌睡時的y值與幀數之間的關系圖.
算法過程如下:當視頻幀數較多時,圖像可近似擬合為曲線,計算曲線極值點,極值點可將曲線分成許多單調的曲線.經實驗得出,統計一個時間周期內單調遞減段極小值點y值大于初始位置50像素的極值點個數,即為點頭次數NF;若曲線沒有極小值點,則判斷曲線是否單調遞減,若為單調遞減,則點頭次數NF為 否則為0.NF取值如式(9)所示:
若一個時間周期內點頭次數NF大于某個閾值,則NF疲勞特征參數值為 否則為0.經實驗和相關文獻可知:取N=10時,疲勞狀態檢測準確率最高.
4基于多特征加權和的疲勞狀態識別
4.1疲勞狀態識別算法
依據單一的疲勞特征來評估疲勞狀態,其準確率要比將多個疲勞特征融合進行識別的方法低[16].因此,根據上述眼部、嘴部及頭部的疲勞特征參數,本文提出了基于多特征加權和的疲勞等級識別算法,算法具體步驟如下.
將眼部、嘴部及頭部的五個疲勞特征指標各自取權重值,經實驗,其權重取值如表4所示.
根據疲勞參數加權后值的不同,將狀態分為三個等級:清醒、疲勞、重度疲勞.特征參數加權和計算如式(10)所示:
F=∑Vi×Wi,i=(ECR,MECT,BF,NF,YF)(10)
5個特征參數值分別乘以其對應的權重值,求和后便得到特征參數加權疲勞值F.
綜合特征參數的權重值和疲勞等級,將特征參數加權值與疲勞等級相對應,根據對應關系便能判斷出駕駛員的駕駛狀態.對應關系如表5所示.
4.2實驗結果分析
為了驗證研究方法的性能,本文的實驗在64位操作系統的PC上進行,采用python編程語言,并結合Opencv 2.4.13和Dlib18.17函數庫進行分析.實驗測試數據來自NTHU駕駛員疲勞檢測視頻數據集的部分數據.該測試數據中有5種不同場景:白天戴眼鏡、戴太陽鏡和不戴眼鏡,晚上戴眼鏡和不戴眼鏡.每個場景中選取5組數據,每組數據包含清醒、疲勞和重度疲勞狀態.
本文以60s為一個時間周期檢測駕駛員疲勞狀態,表6為在不同場景下疲勞識別的結果,表7為白天戴眼鏡情況下各特征參數的計算結果、疲勞值與對應的疲勞識別結果.
由表6可以看出,本文提出的疲勞識別方法在白天的識別準確率比夜晚要好,在戴太陽鏡時識別的精度較低,但是就整體而言,識別效果較好.
5結束語
本文提出了一種融合三類疲勞參數指標加權和的疲勞識別方法,建立了疲勞識別系統,根據相應的比重進行加權計算疲勞值來判斷駕駛者的疲勞程度.實驗表明:本文的疲勞識別算法準確率較高,且效果較好.本文研究的算法,雖然在一定程度上能進行疲勞識別,但在太陽光很強和夜晚時的識別率還不理想.今后的研究可針對不同光照環境進行不同的光照處理,將該識別方法擴展到適用于更多的駕駛環境.另外,因為該識別方法只根據駕駛員的面部特征進行疲勞識別,未能考慮車輛特征如車輛偏移、車速、轉達向盤轉向等特征參數的影響,如何融合這些特征參數進一步提高識別的準確率,是下一步的研究方向.
參考文獻
[1] LIANG Z M. A fatigue driving detection algorithm based on support vector machine [J]. Review of Computer Engineering Studies ,2019,6(4):87-92.
[2] DUA M,SHAKSHI,SINGLA R,et al. Deep CNN models-based ensemble approach to driver drowsiness detection[J]. Neural Computing and Applications,202 33(8):3155-3168.
[3] DOUDOU M,BOUABDALLAH A,BERGE-CHERFAOUI V. Driver drowsiness measurement technologies:current research,market solutions,and challenges[J]. International Journal of Intelligent Transportation Systems Research,2020,18(2):297-319.
[4]潘陳聽.深度學習在視頻動作識別中的應用[J].計算技術與自動化,2020,39(4):123-127.
PAN C T. Application of deep learning in video action recognition [J]. Computing Technology and Automation,2020,39(4):123127.(In Chinese)
[5] ABDULLAH M H,RAMAN K J,AZMAN A,et al.Driver fatigue detection [ C ] //Information Science and Applications (ICISA)2016.Singapore:Springer Singapore,2016:269-278.
[6] BRANDT T,STEMMERR,RAKOTONIRAINY A. Affordable visual driver monitoring system for fatigue and monotony[C]//2004
IEEE International Conference on Systems,Man and Cybernetics .The Hague,Netherlands:IEEE,2004:6451-6456.
[7] KAZEMI V,SULLIVAN J.One millisecond face alignment with an ensemble of regression trees[ C]//2014 IEEE Conference on Computer Vision and Pattern Recognition.Columbus,OH,USA:IEEE,2014:1867-1874.
[8] SOUKUPOVA T,CECH J. Real-time eye blink detection using facial landmarks[J]// Cent. Mach. Perception,Dep.Cybern. Fac.Electr. Eng. Czech Tech. Univ. Prague,2016:1-8.
[9] LEE W O,LEE E C,PARK K R. Blink detection robust to various facial poses[J].Journal of Neuroscience Methods,2010,193 (2):356-372 .
[10] PAN G,SUN L,WU Z H,et al.Eyeblink-based anti-spoofing in face recognition from a generic web camera[ C]//2007 IEEE 11th International Conference on Computer Vision.Rio de Janeiro,Brazil:IEEE,2007:1-8.
[11] WENG C H,LAI Y H,LAI S H.Driver drowsiness detection via a hierarchical temporal deep belief network[C]//Computer Vision - ACCV 2016 Workshops. 2017.
[12]黃潔媛,岑翼剛,張琳娜,等.基于卷積神經網絡的人眼狀態檢測[J].揚州大學學報(自然科學版),2018,21(3):25-29.
HUANG J Y,CEN Y G,ZHANG L N,et al.Eye state detection based on convolutional neural network[J].Journal of Yangzhou University(Natural Science Edition),2018,21(3):25-29.(In Chinese)
[13] WU Q,SUN B X,XIE B,et al. A PERCLOS-based driver fatigue recognition application for smart vehicle space[C]//2010 Third International Symposium on Information Processing. Qingdao,China:IEEE,2010:437-441 .
[14] ABTAHI S,SHIRMOHAMMADI S,HARIRI B,et al. A yawning measurement method using embedded smart cameras[C]//2013 IEEE International Instrumentation and Measurement Technology Conference(I2MTC). Minneapolis,MN,USA:IEEE,2013:1605- 1608.
[15] ABTAHI S,OMIDVEGANEH M,SHIMOHAMMADI S,et al.YawDD:a yawning detection dataset[C]// Proceedings of the 5th ACM Multimedia Systems Conference. MN,USA:IEEE,2014:24-28.
[16]戴詩琪,曾智勇.基于深度學習的疲勞駕駛檢測算法[J].計算機系統應用,2018,27(7):113-120.
DAI S Q,ZENG Z Y. Fatigue driving detection algorithm based on deep learning [J]. Computer Systems amp; Applications,2018,27 (7):113-120.(In Chinese)