王 政, 汪 軍**
(安徽工程大學 計算機與信息學院,安徽 蕪湖 241000)
在全世界交通死亡事件中,疲勞駕駛作為主要誘因的事件占據(jù)的比例較高[1],目前很多嚴重的交通事故都是由疲勞駕駛引起的,所以對疲勞駕駛的預防具有極大的現(xiàn)實意義。
世界上最早關于疲勞檢測的研究是借助精密的醫(yī)學儀器開展的,主要通過分析人體的腦電[2-3]、心電[4-5]等生理信號的變化來辨別是否處于疲勞狀態(tài)。近現(xiàn)代以來,為了消除儀器帶來的侵入式影響,大量的創(chuàng)新成果被提了出來,尤其是隨著圖像處理技術的不斷發(fā)展,國內(nèi)外對疲勞駕駛的研究有了新的突破口,基于機器視覺的疲勞駕駛檢測方法應運而生。鄒昕彤[6]等通過改進傳統(tǒng)的Adaboost(Adaptive Boosting)算法提高了人臉檢測的精度,并依據(jù)眼睛和嘴巴的狀態(tài)對疲勞程度作出了較為清晰的判斷。這種方法檢測速度快,即使在復雜的光照環(huán)境下也有較高的魯棒性,但是其中涉及的特征信息非常單一,容易造成疲勞誤判。針對MTCNN[7](Multi-task Convolutional Neural Network)算法在人臉局部圖像上識別效果的不足,沈英超[8]提出了一種基于多任務約束學習的眼睛定位模型,并通過檢測眼睛閉合狀態(tài)來判斷疲勞。這種方法很好地解決了遮擋情況下面部檢測準確率不高的問題,但是步驟繁多,且計算量大,因此難以滿足疲勞檢測的實時性要求。為了提高人臉特征點定位的精度,王迪[9]搭建并訓練SSD(Single Shot Multibox Detector)網(wǎng)絡模型[10]對人臉圖像進行疲勞分類,并表現(xiàn)出較高的可靠性。該方法不依賴于人臉檢測的結果,但是容易產(chǎn)生漏檢的情況。Li[11]等通過改進YOLO3神經(jīng)網(wǎng)絡搭建了微型人臉檢測模型,消除了人工在面部特征提取過程中的不確定性影響,并結合眨眼頻率和哈欠特征設計了眼口SVM(Support Vector Machines)分類器,實現(xiàn)了駕駛員的疲勞分類。
綜合以上因素,本文在人臉檢測階段并未使用傳統(tǒng)的Adaboost算法,而是采用基于梯度提高的學習框架,這樣不僅能夠提高人臉檢測的速度和準確率,而且能夠對眼部和嘴部進行識別與標定,同時考慮到傳統(tǒng)的單一特征的疲勞檢測方法存在誤檢率高、可靠性差、無法適應復雜的行車環(huán)境等問題,提出了一種將駕駛員的眼睛、嘴巴等多種面部特征進行融合的疲勞駕駛檢測方法,通過引入新的笑臉檢測分類模型,排除了笑容對疲勞檢測的干擾,進一步提高了疲勞駕駛檢測算法的魯棒性。
疲勞是人在生理及心理產(chǎn)生的一個主觀感受,處于疲勞狀態(tài)下的人動作失調、注意力難以集中,尤其會在面部產(chǎn)生更為直觀的變化,如眨眼頻率增大、打哈欠次數(shù)變多等,因此可以根據(jù)面部信息對駕駛員的疲勞狀態(tài)進行檢測。具體的檢測流程見圖1。
圖1 人臉疲勞檢測流程
在進行駕駛員疲勞檢測時,如果以獲取的整張圖像輸入會造成大量信息冗余,不僅會增加模型訓練的難度和復雜度,延長檢測的時間,降低算法的實時性,而且還可能會影響人臉檢測的準確率,因此準確獲取駕駛員面部有效區(qū)域顯得尤為重要。
駕駛員面部有效區(qū)域的獲取需要先確定駕駛員面部關鍵點的位置,然后標記出有效區(qū)域,并最終裁剪出用于分析的有效圖像??紤]圖像的梯度信息能很好地突出目標的邊緣,使得圖像形狀和目標輪廓的特征化過程變得更容易,因此本文基于圖像的Hog特征[12]對輸入的原始圖像進行人臉的檢測與識別,其中在YawDD數(shù)據(jù)集[13]上的實時檢測效果如圖2所示,2(a)與2(b)分別表示駕駛員頭部靜止和晃動狀態(tài)下的人臉區(qū)域檢測效果。
(a) 正臉 (b) 側臉
在基于面部信息的疲勞駕駛檢測方法中,眼睛的狀態(tài)是一個至關重要的判斷依據(jù),而人眼定位作為眼睛區(qū)域截取的第一步也顯得同樣重要,只有精確定位到人眼位置,才能對眼睛的狀態(tài)進行判別,從而判斷駕駛員是否疲勞。
ERT(Ensemble of Regression Tree)是一種具有開創(chuàng)性的人臉對齊方法,該方法通過使用級聯(lián)的回歸因子來建立一個梯度提升的決策樹,最終使圖像中人臉的形狀逐步回歸到真實的位置[14]。ERT算法的核心思想如下:
(1)
式(1)中,I表示輸入的人臉圖像,xiT為I中第i個特征點的橫縱坐標,p為特征點總數(shù),S是I中人臉的真實形狀,S(t)為第t次的人臉估計,S(t+1)為第t+1次的人臉估計,rt為回歸器,rt(I,S(t))為待學習的殘差回歸量,ΔSi(t+1)為待更新的增量。
本文主要結合Dlib機器學習方法庫對眾多需要標定的人臉圖像進行訓練得到ERT模型,在此基礎上,使用該模型對裁剪后的人臉區(qū)域進行人臉對齊操作,從而準確獲取人眼的位置坐標。具體的實現(xiàn)效果如圖3所示,其中為了驗證特征點定位的可靠性與實時性,實驗采用了與圖2來源一致的數(shù)據(jù)集,經(jīng)實驗驗證,駕駛員無論處于平視圖3(a)還是側視圖3(b)狀態(tài)下,ERT模型均取得了很好的測試結果。
(a) 平視 (b) 側視
由于人在微笑過程中會導致眼睛瞇起,更容易使模型作出此時駕駛員處于疲勞狀態(tài)的判斷。但是根據(jù)人體生理常識,當人的面部存在明顯的表情變化時(如開心等),人的精神高度集中,此時是無法產(chǎn)生睡意的,因此排除駕駛員在行車過程中的笑容對提高疲勞檢測的準確率有著極為重要的作用。
考慮卷積神經(jīng)網(wǎng)絡比傳統(tǒng)的機器學習方法更能高效地提取和識別圖像特征,降低工作難度,因此通過訓練改進的LeNet-5神經(jīng)網(wǎng)絡來更好地檢測駕駛員在行車過程中表情的變化。與識別手寫數(shù)字的過程類似,本文采用同樣的卷積神經(jīng)網(wǎng)絡架構,即交替的Conv2D和MaxPooling2D層,同時考慮到該模型需要處理更大的圖像和更復雜的問題,在原有的LeNet-5模型中增加了兩個卷積層和兩個池化層,這樣既可以擴大神經(jīng)網(wǎng)絡的容量,又可以進一步減小最終生成的特征圖大小,實現(xiàn)了網(wǎng)絡泛化能力的提高。圖4所示為本文構造的神經(jīng)網(wǎng)絡模型架構,輸入圖像的大小為150×150,設置的卷積核和池化核的大小分別為3×3和2×2,由圖4可以看出,輸入圖像連續(xù)經(jīng)過4個卷積層和池化層后得到的特征圖的大小為7×7,極大減小了特征圖的大小。
圖4 神經(jīng)網(wǎng)絡模型架構
由于用于訓練的genki4k笑臉數(shù)據(jù)集中包含的可供學習的樣本太少,因此為了避免產(chǎn)生過擬合現(xiàn)象,首先采用數(shù)據(jù)增強[15]的方法從現(xiàn)有的樣本中通過一系列隨機變換產(chǎn)生更多的訓練數(shù)據(jù),然后在已設計好的卷積神經(jīng)網(wǎng)絡模型的基礎上設置一個Dropout[16]層,進一步降低過擬合的可能性。卷積神經(jīng)網(wǎng)絡模型的準確率和損失函數(shù)分別如圖中5(a)和5(b)所示。
(a) 準確率 (b) 損失函數(shù)
1.4.1 不同姿態(tài)下的EAR
Soukupova等[17]提出了一個眼睛縱橫比(Eye Aspect Ratio,EAR)的概念,文獻[18]表明EAR值的大小能夠直觀地反映人眼的開合程度,可以作為判斷眨眼動作的有力依據(jù)。在人的臉部信息里,EAR值主要由眼睛睜開時的長度與寬度的比值決定,而頭部姿態(tài)的變化會在一定程度上影響兩者的比值。當駕駛員搖頭時,偏航角發(fā)生變化,人眼的長度減小,EAR值隨之減小;當駕駛員點頭時,俯仰角發(fā)生了變化,人眼的寬度減小,EAR值隨之增大;而當駕駛員前傾或后傾時對EAR值影響不大。因此為了降低頭部偏轉對EAR值造成的影響,在頭部姿態(tài)估計的基礎上,針對俯仰和偏航兩個方面對EAR進行特征提取和校正。
以點頭為例,若將照相的過程看成一次在空間上的投影,則此時發(fā)生變化的是俯仰角。假設平視狀態(tài)下的俯仰角為β0,投影到二維圖像上時的眼睛寬度為h0,點頭或抬頭時的俯仰角為β1,投影到二維圖像上時的寬度為h1,由于現(xiàn)實中點頭或抬頭時眼睛的寬度不會發(fā)生變化,因此,有
(2)
變換可得:
(3)
同理,搖頭時眼睛長度與偏航角的關系為
(4)
其中,α0與α1分別表示平視與搖頭時駕駛員頭部的偏航角,w0與w1分別表示平視與搖頭時投影到二維圖像上的眼睛長度。
于是,當頭部姿態(tài)發(fā)生變化時,眼睛縱橫比的值REAR1可表示為
(5)
由此可知,當頭部姿態(tài)發(fā)生變化時,眼睛縱橫比REAR1與平視狀態(tài)的眼睛縱橫比REAR0之間的關系為
(6)
因此,只要識別出平視及偏轉時頭部姿態(tài),就可以對EAR值進行修正,從而進一步判斷眼睛狀態(tài)。
圖6為人眼的特征點坐標示意圖,其中序號36—41,42—47分別代表左眼和右眼的特征點位置。
圖6 人眼特征點坐標
為了更方便地得到EAR的值,令p1—p6分別對應于圖6中單個人眼的6個特征點36—39或42—47,因此可以通過人眼縱橫比的定義將單個人眼的EAR值表示為
(7)
圖7清晰地展示了特征校正前后眼睛縱橫比EAR值的變化,其中橫坐標表示視頻當前幀數(shù),縱坐標為其對應的眼睛縱橫比EAR的值,實線表示未經(jīng)校正的EAR曲線,虛線表示校正后的EAR曲線。
圖7 EAR繪圖
由圖2可以看出,人在閉眼過程中EAR值波動較為明顯,因此只需要確定一個合適的閾值就可以對眼睛的開合狀態(tài)進行準確的判斷。大量研究已經(jīng)表明,當眼睛閉合程度超過80%時,普遍認為是閉眼狀態(tài),因此閉眼閾值REARthreshold可由式(8)計算得到:
REARthreshold=REARmin+q×(REARmax-REARmin)
(8)
式中:REARmax與REARmin分別為單位時間內(nèi)眼睛縱橫比的最大值與最小值,比例參數(shù)q取0.2。雙眼睜閉的狀態(tài)由左、右眼縱橫比值的EAR均值進行判斷,如圖7所示,直線所代表的是YawDD數(shù)據(jù)集中某一個實驗參與者的閉眼閾值,當EAR值低于直線時,認為該參與者的眼睛處于閉合狀態(tài),否則就認為該參與者處于睜開狀態(tài)。
1.4.2 PERCLOS
最早開始研究眼睛開合狀態(tài)與疲勞之間相關性的人是Walt Wirewille[19],他采用模擬對比實驗的方式探究眼部感受光和疲勞狀態(tài)之間的關系,得出了眼睛閉合時間與疲勞程度呈正相關的結論。在此之后,PERCLOS作為疲勞程度的衡量參數(shù)被Carnegie Mellon研究所提出,其定義為一段時間內(nèi)眼睛閉合超過一定程度所占的時間比例[20]。其中P70,P80及EM是PERCLOS最常使用的3個標準,它們代表了眼睛閉合狀態(tài)的3種判斷依據(jù),即瞳孔被眼瞼遮擋面積超過70%,80%以及50%[21]。
相關研究發(fā)現(xiàn),P80指標在模擬駕駛環(huán)境中與疲勞狀態(tài)的相關性最高,因此通過對P80指標的實時監(jiān)測,能夠更為清晰地了解駕駛員的疲勞程度。
此外,Walter Wierwille在文獻[19]中還指出區(qū)分人體是否疲勞的PERCLOS閾值為0.15,所以本文也將PERCLOS的閾值設置為0.15,當PERCLOS值小于0.15時,再結合笑臉檢測來判斷疲勞狀態(tài)。
傳統(tǒng)的檢測方法只使用一種特征作為疲勞檢測的判斷依據(jù),但是由于每個個體的表現(xiàn)不同,有時就算檢測到某一特征,也可能出現(xiàn)誤檢,因此根據(jù)單一特征的疲勞駕駛判定方法的可靠性不高[22]。通過觀察發(fā)現(xiàn),人只有在正常狀態(tài)下才會出現(xiàn)微笑、憤怒、悲傷等表情,同樣,頻繁眨眼、打哈欠、點頭等動作也只會出現(xiàn)在疲勞狀態(tài)時。
因此在得到相應的疲勞參數(shù)之后,并未對駕駛員的疲勞狀態(tài)進行直接衡量,而是將眼睛開合程度與笑容兩種特征進行融合計算,排除笑容對疲勞檢測的干擾,降低了檢測的誤檢率,進一步提升了方法的準確度與可靠性。
圖8 多特征融合流程圖
本文采用YawDD[13]數(shù)據(jù)集作為疲勞檢測的標準數(shù)據(jù)集。YawDD數(shù)據(jù)集中的視頻來源包括從汽車后視鏡及儀表盤兩個拍攝角度拍攝的駕駛視頻,所有視頻都拍攝于真實的車輛空間及不均衡的光照環(huán)境下,其中參與人員中男女比例均衡,來自不同種族,同時膚色也存在差異,拍攝時對于眼鏡等遮擋物的佩戴也有一定的要求。該數(shù)據(jù)集包括正常駕駛、駕駛時說話或唱歌、駕駛時打哈欠3種不同情況下的視頻數(shù)據(jù)。由于判斷視頻中駕駛員的精神狀態(tài)具有主觀意愿,同時考慮YawDD數(shù)據(jù)集主要以駕駛員打哈欠的動作作為檢測疲勞的特征,因此將打哈欠的程度作為驗證駕駛員是否疲勞的主要依據(jù)。
為了獲取普遍性的實驗結果,使其更具說服力,隨機抽取男女各5名在不同光照強度和真實的行車環(huán)境下拍攝的視頻進行測試,考慮視頻的幀率為30幀/s,首先對視頻每一幀的圖像進行預處理,利用高斯濾波去除圖像中的噪聲,并采用直方圖均衡化方法增強人臉圖像的對比度,然后基于ERT模型從前100幀圖像中計算出EAR的自適應閾值,剔除笑臉后每3 s計算一次PERCLOS值,最終與設置的PERCLOS閾值進行比較,得出駕駛員是否疲勞的結論。同時為了更好地疲勞駕駛檢測模型進行說明,對隨機抽取的10段視頻采用不同的疲勞駕駛檢測方法進行檢測。
2.2.1 與基于眼部特征的檢測方法的對比
基于眼部特征的疲勞駕駛檢測方法是利用駕駛員眼睛的疲勞特征(如EAR值、眨眼次數(shù)、PERCLOS值等)來實現(xiàn)疲勞狀態(tài)的分類,而本文提出的疲勞駕駛檢測方法在提取眼部特征的基礎上融合了嘴部的笑容特征,并根據(jù)個體的差異性計算出自適應的眼睛開合閾值,實現(xiàn)了駕駛員疲勞狀態(tài)的檢測,其中表1是以上兩種檢測方法在隨機抽取的10段視頻數(shù)據(jù)中的檢測結果。
由表1可以看出:基于眼部特征的疲勞駕駛檢測方法得到的眨眼次數(shù)均多于本文方法的檢測值,且個體眼睛的開合閾值與基于本文方法得到的結果也存在明顯差異,同時發(fā)現(xiàn)在第5,10號實驗中,由于駕駛員產(chǎn)生了表情變化,導致眼部疲勞特征的提取過程受到干擾,因此基于眼部特征的檢測方法難以準確識別疲勞,產(chǎn)生了疲勞誤判。
表1 與基于眼部特征的疲勞駕駛檢測方法的對比
2.2.2 與傳統(tǒng)的多特征融合檢測方法的對比
由于疲勞狀態(tài)下駕駛員在面部會呈現(xiàn)更為直觀的變化,因此現(xiàn)有的基于多特征融合的疲勞檢測方法主要是通過融合駕駛員的眼睛和嘴巴的疲勞因子對駕駛員的疲勞狀態(tài)進行識別。表2反映了這類方法與本文提出的疲勞檢測方法的對比結果。
表2表明:融合了眼睛和嘴巴疲勞特征的疲勞駕駛檢測算法能夠更有效降低疲勞誤判產(chǎn)生的可能性,比基于單一特征的檢測方法具備更高的可靠性。同時在第2,3,10組實驗中發(fā)現(xiàn),當頭部偏轉速度或角度較大時,傳統(tǒng)的基于多特征融合的疲勞駕駛檢測方法的準確率未明顯提高,而不同姿態(tài)下基于多特征融合的疲勞駕駛檢測方法的準確率卻提高顯著,說明降低頭部姿態(tài)的偏轉對提高疲勞檢測的準確率有著較為突出的作用。
表2 與傳統(tǒng)的基于多特征融合的疲勞駕駛檢測方法的對比
與傳統(tǒng)的基于Adaboost的人臉檢測模型和SSD模型相比,本文提出的人臉檢測模型避免了頭部姿態(tài)的變化對特征提取過程的干擾,能夠更有效地提取人臉的形狀和局部輪廓特征,實現(xiàn)對人臉實時準確的檢測。同時為了研究表情的變化對人臉疲勞檢測的影響,改進了原有的手寫數(shù)字識別神經(jīng)網(wǎng)絡,在LeNet-5模型的基礎上增加了兩個卷積層和池化層,提高了笑臉檢測模型的泛化能力。此外,由于本文所使用的特征來源較為單一,對于光照不均衡等復雜場景的適應能力較弱,因此采用多信息源的疲勞特征進行融合可以進一步提高疲勞駕駛檢測的魯棒性。