李金寶 張維忠



摘要:??為解決復雜環境下傳統彩色圖像對危險駕駛行為無法正確識別的難點,本文提出一種基于深度相機的疲勞預警檢測方法。首先通過深度相機獲取駕駛員的紅外圖像與深度圖像,對獲取的紅外圖像使用局部二值模式(local?binary?pattern,LBP)特征算子檢測定位人臉區域;在人臉區域使用隨機森林和全局線性回歸相結合的方法訓練出模型,并檢測定位人臉的68個特征點,進而確定眼睛和嘴巴的閉合狀態。為了增強疲勞檢測的準確性,判斷駕駛員佩戴眼鏡情況,采用改進的疲勞檢測算法判定駕駛員的疲勞狀態,同時采用圖像處理方法對眼部狀態與嘴部狀態進行疲勞檢測。檢測結果表明,本算法能夠有效識別白天和夜間眼睛與嘴部的疲勞狀態,具有較強的實用性。
關鍵詞:??OpenCV;?疲勞檢測;?人臉關鍵點;?紅外圖像;?危險駕駛
中圖分類號:?TP391.413?文獻標識碼:?A
收稿日期:?2019-03-25;?修回日期:?2019-10-21
作者簡介:??李金寶(1995-),男,碩士研究生,主要研究方向為計算機視覺。
通信作者:??張維忠(1963-),男,博士,教授,主要研究方向為計算機視覺、模式識別和圖像處理等。Email:?zhangwz_01@aliyun.com
目前,我國已成為汽車制造大國,汽車保有量躍居世界第二。隨著汽車數量的不斷增加,交通事故及死亡人數也隨之增多。據美國國家公路交通安全管理局的調查報告顯示,在以往的交通事故中,由疲勞駕駛引起的事故比例較大[1]。近年來,通過腦電波檢測疲勞[2-3]和外部特征檢測疲勞都有較大發展,既有傳統的幀差法[4]與機器學習的Adaboost眼部閾值分割法[5],也有瞳孔判別法[6]、面部特征法[7-8]和使用深度學習定位特征點的方法[9-10]。但以上方法多數受環境光線影響大、設備要求高、實時性低等缺點,導致無法準確識別。基于此,本文采用抗干擾能力強的紅外圖像與深度圖像,對基于深度相機的疲勞預警檢測方法進行研究。紅外圖像進行面部識別和特征點提取,并在深度圖像上獲取面部深度與手部深度,去掉噪聲獲得輪廓,同時根據其連通域,獲得其手部狀態。實驗結果表明,該算法魯棒性高,設備成本較低,能夠滿足實時檢測的需要。該研究為疲勞檢測預警提供了新思路,具有較高的實用價值。
1?算法設計方案
整個算法設計基于計算機視覺技術,根據駕駛員的眼部特征與嘴部特征來獲得其疲勞狀態,在其疲勞駕駛時給出實時預警。整體算法設計方案如下:
1)?利用深度相機獲取紅外圖像。
2)?利用紅外圖像預處理后識別面部,結合隨機森林和全局線性回歸方法訓練出LBF特征模型獲取人臉特征點,計算眼部縱橫比(eye?aspect?ratio,EAR)[11]獲得眼部狀態,同時,結合嘴部特征,利用改進的PERCLOS指數模型,獲得疲勞狀態。
3)?在深度圖像下處理頭部區域,得到面部深度,使用深度閾值分割和形態學處理去掉噪聲,獲得面部區域深度圖像,連通域二值化并根據連通域面積變化計算面部狀態。進行疲勞檢測與危險駕駛行為檢測,檢測算法流程圖如圖1所示。
2?人臉的檢測與特征點獲取
2.1?基于局部二進制模式直方圖(local?binary?patterns?histograms,LBPH)的人臉檢測
局部二值模式(local?binary?patterns,LBP)算子[12]是在一個3×3的窗口內取其中心像素值為閾值,與周圍8個像素值進行比較,若大于,標記為1,否則為0。其公式為
LBPxc,yc=∑p-1p=02ps(ip-ic)(1)
式中,其中,xc,yc是中心像素;亮度ic,ip為鄰接像素;sx=1x≥00x<0?。
采用LBP特征檢測人臉,與哈爾特征(Haarlike?features)檢測人臉相比,運算速度快,精準度高,滿足在邊緣計算平臺下要求時效性的特點,LBP特征的人臉檢測與人臉識別已得到廣泛應用[13-14]。首先計算圖像大小為(w-2?radius,h-2?radius)的第i個LBP編碼圖像LBPi,然后計算各像素在第n鄰域所對應的像素偏移坐標dx,dyn,即
dxn=-radius?sin2.0?PInneighborsdyn=-radius?cos2.0?PInneighbors(2)
采用雙線性差值,計算像素(x,y)第n鄰域的灰度值gray(x,y)n和編碼LBP(x,y)n,即
LBP(x,y)n=1(grayx,yn≤gray(x,y))0(grayx,yn>grayx,y)(3)
所以得出像素LBP編碼值為
LBPx,y=∑neighbors-1n=0LBP(x,y)n×2n?(x∈0,w-2?radius,y∈(0,h-2?radius))(4)
計算每個LBPi圖像的寬度和高度分別為
w_grad=LBPi.cols/gridxh_grad=LBPi.rows/gridy(5)
按行統計每個LBPi直方圖各值高度,將結果存儲在HIST中,并將高度除以w_grad×h_grad,進行直方圖歸一化,以行為主序列將HIST轉換為1維的向量矩陣。計算直方圖之間的距離為
disi=∑lenj=0(hij-hqj)hij-hqjhij,?hij≠0(6)
其中,hij和hqj分別是數值為j的直方圖高度和待匹配圖像值為j的直方圖高度;len為直方圖最大值。
2.2?人臉特征點獲取
在獲得人臉區域后,采用Ren?Shaoqing提出的隨機森林和全局線性回歸相結合的方法[15],進行人臉標定獲取特征點具有較高的準確率和實時性。首先使用隨機森林算法和形狀索引特征,得到圖像的局部二值特征,并線性回歸求解回歸模型,然后采用訓練得到的特征圖和線性方程更新后得到的shape?Δs,與上個階段相加,得到當前步驟的shape,不斷迭代至結束。
由于采集的圖像受光照、背景、噪聲等因素的影響,如果直接檢測會對算法的適應性和結果的準確性產生影響,因此需要對獲取的圖像進行預處理。為了有效的區分前景和背景,在預處理階段,首先進行光照補償和圖像直方圖均衡處理,以增強圖像的對比度。同時,為了消除噪聲的影響,對圖像進行中值濾波處理,該方法不僅可以去除孤立點噪聲,還可以有效保護圖像邊界信息。在預處理后,再進行人臉檢測與特征點檢測,檢測結果表明,處理后的圖像面部識別率明顯提高。預處理后的實驗圖如圖2所示。
3?疲勞檢測
3.1?眼睛與嘴部狀態獲取
當獲得實時面部特征點后,根據特征點獲得眼部和嘴部狀態。眼部狀態特征有慢眼運行(slow?eye?movement,SEM)與睜閉眼特征,Jiao?Y等人[16]利用SEM這一睡眠開始的標志特征檢測疲勞,而本文采用基于特征點的方法檢測眼睛閉合狀態,進而確定疲勞狀態,但該方法需要計算眼睛縱橫比(eye?aspect?ratio,EAR)。在人臉的68個特征點中,每個眼部有6個特征點,且在睜眼與閉眼時處在不同的狀態,因此EAR概念被提出,通過計算眼睛寬和高的比值,計算眼睛狀態,其計算方法為
EAR=‖P2-P6‖+‖P3-P5‖2‖P1-P4‖(7)
由實驗可知,閉眼時,EAR值發生明顯波動,可以方便的找出閾值,并可判斷是否眨眼,符合實時檢測要求,精準度較高。
為了更加準確的識別疲勞狀況,本文提出了綜合嘴部狀態的疲勞檢測指數PERCLOSmouth,其中mouth為嘴部狀態mousestate,即嘴部疲勞狀態。取嘴部內嘴角與外嘴角特征點,計算嘴部的寬widthmouse=‖mouseleft-mouseright‖;取嘴部的上、下頂點,計算嘴部的高hightmouse=‖mousehigh-mouselow‖,最后計算嘴部的縱橫比,得出嘴部狀態為
mousestate=hightmouse/widthmouse?(8)
3.2?佩戴眼鏡檢測
由于佩戴眼鏡使圖像中的人眼特征點擬合產生影響,因此需要戴眼鏡檢測對應相應的閾值。本文提出的戴眼鏡檢測的具體算法GLASSESdetect如下:
1)?對獲得的紅外圖像進行預處理,使用均值濾波平滑圖像。
2)?為了正確判斷是否佩戴眼鏡,需要求出眼睛中部戴眼鏡部位的眼鏡框邊緣,且只需要眼鏡框的Y方向邊緣,因此使用sobel算子進行圖像Y方向的邊緣檢測。
3)?為了方便計算與提高運算效率,對邊緣檢測后的面部圖像進行二值化處理。
4)?利用求得的面部特征點,計算兩眼的中間坐標與鼻部特征點的距離和眼睛的內角點,以此分割眼鏡中間感興趣區域(region?of?interest,ROI)區域,不戴眼鏡與戴眼鏡的ROI區域如圖3所示。
5)?在分割的ROI區域,求眼鏡邊緣占ROI的百分比,即白色像素所占比值,實驗結果表明,當比值超6%時為戴眼鏡情況。
在獲得是否佩戴眼鏡的判斷結果后,根據不同情況進行處理。在不佩戴眼鏡的情況下,使用不佩戴眼鏡的ERA閾值;在佩戴眼鏡的情況下,使用佩戴眼鏡的ERA閾值,從而獲取各狀態下的眼部狀態。
3.3?融合眼部與嘴部狀態的PERCLOS疲勞檢測
為增強疲勞檢測的魯棒性,馬召賓等人[17]提出了融合眼部特征和頭部姿態的方法;R.?Ahmed等人[18]采用圖像處理方法,檢測閉眼、打哈欠、頭部傾斜等特征,并綜合判斷疲勞。基于貝葉斯網絡(bayesian?network,BN)的疲勞評估系統需要多種駕駛狀態[19],在車上進行實時計算收集數據,成本高,效率低,不易采用;基于主動外觀模型的檢測方法只考慮眼睛睜閉合狀態,缺少嘴部疲勞特征[20]。本文提出了融合眼部與嘴部特征的PERCLOS疲勞檢測方法,PERCLOS方法能夠反映人們在困倦時眼瞼的狀態和疲勞程度,即眼睛在一段時間內閉合狀態占總時間的比值,其有3種測量標準:P70,P80,EM,當眼瞼遮住瞳孔70%,80%,50%時,判定閉眼。
在實際應用中,采用P80標準,該標準經實驗證明,能準確的表示疲勞狀態。為方便使用PERCLOS指數,本文改進了PERCLOS指數計算方法,即
PERCLOS=framewinkframesum×100%(9)
式中,framewink為閉眼幀數;framesum為總時間幀數。本方法取30?min為一個時間區段,計算該時間段內有效幀的PERCLOS值與嘴部的狀態,若嘴部張開持續達1.5?s,則記為1次哈欠,統計該時間段內的哈欠次數,超過60次,PEICLOS值+10%。融合哈欠后的PERCLOSmouth值為
PERCLOS=EYEperclos+10%×MOUTHyawnMOUTHyawn=0yawn>60MOUTHyawn=1yawn<60(10)
式中,EYEperclos為左、右眼PERCLOS值的均值;yawn為一個計時區間內的哈欠次數,若在該時間段內PERCLOS值>40%,則認為達到疲勞階段,進行疲勞預警,為了防止出現司機瞌睡的情況,當司機持續閉眼達3?s后,也發出相應的疲勞預警。
采用UPBoard開發板,該開發板處理器為英特爾凌動X5?Z8350,最高頻率1.92?GHz,并采用內存為1?GB版本在車上實時測試,在佩戴眼鏡的情況下,分別測試各方法(PERCLOS、PERCLOSmouth、PERCLOSmouth+GLASSESdetect)的準確率。各方法檢測到的眼部狀態準確率如表1所示。
邀請兩名清醒狀態(睡眠充足)和兩名疲勞狀態(睡眠不足)共4位同學進行30?min的模擬駕駛實驗,各狀態下疲勞檢測情況如表2所示。
實驗結果表明,融合嘴部狀態、眼部狀態與戴眼鏡檢測的疲勞檢測,能準確的判斷出佩戴眼鏡和不佩戴眼鏡下的疲勞狀態,對環境光線的抗干擾能力較強,具有較好的魯棒性。
4?結束語
本文提出的基于深度相機的疲勞駕駛預警算法,使用人臉特征點的標定,并且識別駕駛員是否佩戴眼鏡,可以在多種環境下進行歸一化處理,并計算縱橫比值來確定睜閉合狀態,同時結合融合眼部狀態和嘴部狀態的PERCLOS方法,確定駕駛員的疲勞狀態。實驗結果表明,本算法穩定性好,對系統要求較低,可移植到嵌入式系統上使用,魯邦性強,可適用于復雜光線變化的場景。該研究為復雜環境下的疲勞預警提供了新方法,具有較高的實用價值。
參考文獻:
[1]?汪前進,?鄭占杰.?基于計算機視覺的危險駕駛預警系統研究與設計[J].?長沙大學學報,?2018,?32(5):?37-40.
[2]?Yin?J,?Hu?J,?Mu?Z.?Developing?and?evaluating?a?mobile?driver?fatigue?detection?network?based?on?electroencephalograph?signals[J].?Healthcare?Technology?Letters,?2017,?4(1):?34-38.
[3]?Hu?J?F,?Min?J?L.?Automated?detection?of?driver?fatigue?based?on?EEG?signals?using?gradient?boosting?decision?tree?model[J].?Cognitive?Neurodynamics,?2018,?12(4):?431-440.
[4]?程如中,?趙勇,?戴勇,?等.?基于Adaboost方法的車載嵌入式疲勞駕駛預警系統[J].?北京大學學報:?自然科學版,?2012,?48(5):?719-726.
[5]?Chang?T?H,?Chen?Y?R.?Driver?fatigue?surveillance?via?eye?detection[C]∥17th?International?IEEE?Conference?on?Intelligent?Transportation?Systems?(ITSC).?Qingdao,?China:?IEEE,?2014:?366-371.
[6]?Chakraborty?M,?Aoyon?A?N?H.?Implementation?of?computer?vision?to?detect?driver?fatigue?or?drowsiness?to?reduce?the?chances?of?vehicle?accident[C]∥2014?International?Conference?on?Electrical?Engineering?and?Information?&?Communication?Technology.?Dhaka,?Bangladesh:?IEEE,?2014.
[7]?Hu?J?F.?Comparison?of?different?features?and?classifiers?for?driver?fatigue?detection?based?on?a?single?EEG?channel[J].?Computational?and?Mathematical?Methods?in?Medicine,?2017(3):?1-9.
[8]?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).?Singapore,?Singapore:?IEEE,?2017.
[9]?游峰,?梁昭德.?基于深度學習的駕駛人疲勞檢測算法研究[J].?武漢理工大學學報:?交通科學與工程版,?2018,?42(3):?417-421.
[10]?Zhao?X?P,?Meng?C?N,?Feng?M?K,?et?al.?Fatigue?detection?based?on?cascade?convolutional?neural?network[J].?Journal?of?Optoelectronics?Laser,?2017,?28(5):?497-502.
[11]?Tereza?Soukupová.?Eyeblink?detection?using?facial?landmarks[D].?Prague,?Czech?Republic:?Faculty?of?Electrical?Engineering,?Czech?Technical?University,?2016.
[12]?Ojala?T,?Pietikainen?M,?Harwood?D.?A?comparative?study?of?texture?measures?with?classification?based?on?feature?distributions[J].?Pattern?Recognition,?1996,?29(1):?51-59.
[13]?蓋健,?劉小華,?李銳杰,?等.?基于LBP的圖像集人臉識別算法[J].?東北師大學報:?自然科學版,?2015,?47(4):?84-87.
[14]?朱峰.?一種基于多尺度LBPH特征的快速人臉識別算法[J].?計算機應用與軟件,?2015,?32(8):?315-319.
[15]?Ren?S?Q,?Cao?X?D,?Wei?Y?C,?et?al.?Face?alignment?at?3000?FPS?via?regressing?local?binary?features[C]∥IEEE?Conference?on?Computer?Vision?and?Pattern?Recognition.?Columbus,?OH,?USA:?IEEE,?2014:?1685-1692.
[16]?Jiao?Y,?Peng?Y,?Lu?B?L,?et?al.?Recognizing?slow?eye?movement?for?driver?fatigue?detection?with?machine?learning?approach[C]∥2014?International?Joint?Conference?on?Neural?Networks?(IJCNN).?Beijing,?China:?IEEE,?2014:?4035-4041.
[17]?馬召賓.?融合眼部特征及頭部姿態的實時疲勞駕駛檢測技術研究[D].?濟南:?山東大學,?2016.
[18]?Ahmed?R,?Emon?K?E?K,?Hossain?M?F.?Robust?driver?fatigue?recognition?using?image?processing[C]∥2014?International?Conference?on?Informatics,?Electronics?&?Vision?(ICIEV).?Nanjing,?China:?IEEE,?2014:?1-6.
[19]?Guo?W?Q,?Xiao?Q?K,?Hou?Y?Y,?et?al.?A?novel?driver?fatigue?assessment?in?uncertain?traffic?condition[C]∥Proceedings?of?the?33rd?Chinese?Control?Conference.?Dhaka,?Bangladesh:?IEEE,?2014:?4777-4781.
[20]?Xie?J?F,?Xie?M,?Zhu?W.?Driver?fatigue?detection?based?on?head?gesture?and?PERCLOS[C]∥2012?International?Conference?on?Wavelet?Active?Media?Technology?and?Information?Processing?(ICWAMTIP).?Chengdu,?China:?IEEE,?2012:?128-131.
Fatigue?Warning?Detection?Algorithm?Based?on?Depth?Camera
LI?Jinbao,?ZHANG?Weizhong
(College?of?Computer?Science?&?Technology,?Qingdao?University,?Qingdao?266071,?China)
Abstract:??In?order?to?solve?the?difficulty?that?traditional?color?images?cant?correctly?identify?dangerous?driving?behaviors?in?complex?environments,?a?fatigue?warning?method?based?on?depth?camera?is?proposed?in?this?paper.?Firstly,?the?infrared?image?and?the?depth?image?of?the?driver?are?obtained?by?the?depth?camera,?and?the?local?binary?region?mode?feature?operator?is?used?to?detect?the?localized?face?region?for?the?acquired?infrared?image;?the?random?face?forest?is?combined?with?the?global?linear?regression?method?for?training?in?the?face?region.?The?model?is?detected,?and?68?feature?points?of?the?face?are?detected?to?determine?the?closed?state?of?the?eyes?and?mouth;?in?order?to?enhance?the?accuracy?of?the?fatigue?detection,?and?whether?or?not?the?driver?wears?the?glasses,?the?fatigue?state?of?the?driver?is?determined?by?the?improved?fatigue?detection?algorithm.?At?the?same?time,?the?image?processing?method?is?used?to?perform?fatigue?detection?on?the?eye?state?and?the?mouth?state.?The?test?results?show?that?the?algorithm?can?effectively?identify?the?fatigue?state?of?the?eyes?and?mouth?during?the?day?and?night,?and?has?strong?practicability.
Key?words:??OpenCV;?fatigue?detection;?face?key?points;?infrared?image;?dangerous?driving