董超俊,林庚華,吳承鑫,黃尚安
(五邑大學 智能制造學部,廣東 江門 529000)
目前疲勞駕駛檢測研究主要為3個方向:基于人體生理信號、基于計算機視覺、基于車輛運行狀況的疲勞駕駛檢測,基于計算機視覺的非接觸性檢測目前是研究的熱門[1]。在文獻[2]中,作者提出一種基于實時增強局部約束模型的多信息疲勞檢測方法,該方法能夠克服光照和位姿變化的影響,實現對駕駛員的實時疲勞駕駛檢測,具有較強的魯棒性。在文獻[3]中,作者進行疲勞駕駛中的人臉檢測研究,該算法針對使用ASM(active shape model)算法實現人臉194關鍵點檢測,并通過定位眼睛位置,計算眼睛閉合度而判斷駕駛員疲勞狀態。由于眼睛的閉合在疲勞駕駛檢測中占據極其重要的分量,文獻[4]通過眼白分割,實現了高精度的眼睛檢測與定位,從而實現準確率較高的疲勞檢測。以上方法關鍵都在于人臉、人眼的提取,并且疲勞狀態判斷過分依賴于眼睛的閉合度。
針對以上問題,通過多任務級聯卷積神經網絡對人臉進行粗提取后,使用一種自適應核相關濾波器進行人臉跟蹤,替換逐幀檢測人臉,以提高其魯棒性,降低漏檢概率。通過計算CE-CLM所檢測到的人臉68個關鍵特征點的像素位置,得出一定時間內眨眼次數、平均眨眼速度、PERCLOS(percentage of eye closure over the pupil over time)、打哈欠次數、打哈欠幀數占比、低頭次數以及低頭幀數占比,實現高精度的疲勞檢測參數提取,最終通過SVM進行多特征融合分類,實驗結果表明本文方法具有較高的準確率。

(1)
(2)

(3)
其中,H表示共軛轉置。對上式兩邊同時傅里葉變換,其表達式如下
(4)


(5)
通過核矩陣傅里葉變換,可以將式(5)對角化,并且使其在新的空間線性可分,其表達式如下
(6)
其中,kxx表示核矩陣K=C(kxx)的第一行,采用高斯核可以得到下式
(7)
由于傳統KCF算法無法自適應目標尺寸變化,而駕駛員在駕駛位上操作時,人臉尺寸變化范圍較小,其尺寸倍數為0.4至1.6,所以為人臉建立小幅度圖像金字塔,從而獲得目標不同的尺度值的尺寸集。人臉通過核相關濾波器之后得到響應值,將輸出的響應進行比較,綜合判斷并篩選其最佳尺度值作為輸出,為下一幀目標更新尺度值再進行跟蹤,解決了KCF跟蹤器無法自適應目標尺寸變化的問題[6,7],如圖1所示。

圖1 改進的核相關濾波器
人臉關鍵點檢測使用CE-CLM,該模型主要由兩個部分組成:響應圖的計算和形狀參數更新,前者由卷積專家網絡實現,后者由點分布模型實現[8,9]。在迭代過程中,所有標記點的位置更新是互相影響的,并使用下式進行優化目標函數
(8)

卷積專家網絡為局部分類器,首先采用卷積神經網絡計算響應圖,通過評估各個像素位置的標記點對齊概率,對標記點進行準確定位。它采用以標記點為中心的n×n像素區域作為輸入,輸出為每個像素位置評估標記點校準概率的響應圖。在卷積專家網絡中(如圖2所示),首先作為輸入的ROI在規格為500×11×11的對比度歸一化卷積層進行Z-score歸一化,然后計算輸入與內核之間的相關性,將輸出作為輸入傳送到200×1×1的卷積層進行卷積操作。

圖2 卷積專家神經網絡結構
卷積專家網絡最重要的連接層為混合專家層,能通過專家組合對不同標記點外觀原型進行建模,建立最終對準概率模型。該層是以sigmoid作為激活函數的100×1×1的卷積層。由每個獨立的專家對對齊概率的投票,將所得到的概率用sigmoid激活函數激活,與最后一層的非負權重結合得出響應圖。為了確保計算效率,ME層中不包含池化層,因為池化層將會降低檢測的精度。
式(8)的迭代過程可以簡述為將圖片的ROI作為輸入,輸出為評估單個標記點對齊的概率響應圖,通過式(9)將標記點i擬合到位置xi
(9)

本文結合KCF人臉跟蹤算法和CE-CLM人臉關鍵點檢測算法如圖3所示,通過相機進行人臉粗定位,再用KCF算法取代逐幀檢測人臉,降低漏檢、誤檢的概率,再使用CE-CLM算法進行人臉關鍵點檢測,結果如圖4所示。根據關鍵點的像素位置以及3.2節、3.3節所闡述的算法檢測眨眼次數、PERCLOS、眨眼速度、哈欠次數、哈欠幀數占比、低頭次數及低頭幀數占比,其中PERCLOS為眼睛閉合度大于80%所占幀數比例,平均眨眼速度為上下眼瞼之間的距離與每次眨眼的耗時之比,上下眼瞼的距離為亞洲人的平均距離7.54 mm。

圖3 結合KCF與CE-CLM算法疲勞參數檢測

圖4 結合KCF與CE-CLM的面部關鍵點檢測
基于計算機視覺的疲勞駕駛檢測,人眼的睜開、閉合檢測起到至關重要的作用,并且直接影響到疲勞狀態的判定。目前比較流行的眼睛閉合度檢測算法為EAR(eye aspect ratio),先通過人眼檢測、定位,再運用EAR算法計算眼睛長度和寬度的比值來確定眼睛的閉合程度,并且適用于嘴巴張開程度的計算,即MAR(mouth aspect rariop),如圖5(a) 所示。

圖5 眼睛閉合度算法
通過計算眼睛的6個關鍵點P2(X2,Y2)和P6(X6,Y6)、P3(X3,Y3)和P5(X5,Y5)以及P1(X1,Y1)和P4(X4,Y4) 之間的歐式距離可以得到EAR值,其表式如式(10)所示
(10)
由于EAR算法依賴于人眼6個關鍵點檢測的精確度,當其中某個點產生檢測誤差,會在一定程度影響眼睛閉合的檢測,針對于此,本文提出一種以角度計算眼睛閉合度的算法,稱為角度檢測法(tangle detect,TD)。通過眼睛的上眼瞼與眼睛兩側之間的夾角來判斷眼睛是否閉合。如圖5(b)所示。P(X,Y)可以由P2(X2,Y2)和P3(X3,Y3)計算得出,α的表達式如式(11)所示

(11)

通過計算嘴巴的張開度以檢測駕駛員的打哈欠行為,如圖6所示,由于在交流、微笑等情況下嘴巴形狀變化較大,通過EAR算法計算顯然會出現誤差,所以本文采取分別計算點P33(X33,Y33)與點P62(X62,Y62)和點P66(X66,Y66)之間的歐式距離,由式(12)計算得到嘴巴張開度H,該算法稱為“H”,從而判斷駕駛員是否打哈欠
(12)

圖6 嘴巴張開度計算
在計算機視覺中,物體的姿態是指相對于相機的相對取向和位置。文獻[10]中給定5個關鍵點,采用PNP算法計算投影關系從而估計頭部姿態,取得了不錯的效果。本文同樣采用PNP算法,選取眼睛、鼻子和嘴巴的7個特征點形成姿態估計面。如圖7所示,其中頭部模型引自文獻[11]并自行標點。

圖7 頭部姿態估計
相機坐標、世界坐標以及圖像平面的關系如圖8所示。通過世界坐標系可以計算出P點在相機坐標系的位置
(13)
其中,R、T為頭部姿態估計參數,p點在成像平面坐標系中可知,若相機不存在徑向畸變,令圖像中心為光學中心并且令焦距近似為像素寬度。如式(14)所示
(14)
其中,q為投影比例,通過求解R、T矩陣獲取頭部姿態信息。

圖8 世界坐標、相機坐標與成像平面坐標關系
本文實驗主要在數據集“YAWDD[12]”及自制數據集上進行。“YAWDD”數據集主要由349個視頻組成,包括男性、女性在駕駛位上的正常狀態、交流狀態以及眨眼、打哈欠狀態;自制數據集包含多個實驗人員進行眨眼、打哈欠、低頭動作的視頻序列,稱為“Fatigue”。
根據本文所提出的眼睛閉合度檢測算法TD與EAR算法。如表1所示,在YAWDD數據集和Fatigue數據集中檢測出的數據中,KCF算法能夠克服臉部部分遮擋,從而降低由于部分遮擋導致無法檢測到人臉所帶來的誤差,結合KCF和CE-CLM的算法,使用本文所提出的“TD”算法能夠提高眨眼的檢測精確率,達到了93.36%與95.24%,比EAR算法提高了6.85%與1.65%,并降低誤檢率,魯棒性更強。

表1 眨眼檢測精確率數據
如圖9所示,在“YAWDD”數據集中選取同個人的不同狀態的3段視頻,分別為正常狀態、交談狀態、打哈欠狀態,在普通狀態下MO(嘴巴張開度)值曲線趨近于一條直線,而交談狀態波動較小,打哈欠時幅值較大且維持幀數較長。由此通過設置閾值與低于閾值持續幀數,判斷駕駛員是否打哈欠。

圖9 不同狀態下MO值曲線
如表2所示,在YAWDD數據集和Fatigue數據集中檢測出的數據中,結合KCF和CE-CLM的算法,使用本文所提出的“H”算法能夠提高眨眼的檢測精確率,達到了91.67%與98.83%,比MAR算法分別提高了3.67%與1.64%,并降低誤檢率,魯棒性更強。

表2 哈欠檢測精確率數據
經過頭部姿態估計,可以計算出人臉的3個Euler(歐拉)角:yaw(偏航角)、pitch(俯仰角)、roll(翻滾角),當頭部姿態發生變化時,各個角的角度值也會發生變化,低頭動作主要取決于俯仰角,當Pitch值達到一定值時便視為點頭,而通過俯仰角計算頭部是否進行了點頭動作。
由于YAWDD數據集中缺少低頭動作的數據,本文在“Fatigue”數據集上進行實驗,12個視頻分為3組進行檢測,其中部分視頻的Pitch值曲線如圖10所示,當發生點頭動作時,Pitch的幅值較大,通過設置閾值判斷是否有低頭動作,其精確率分別達到了94.34%、94.00%、93.33%,見表3。

圖10 Pitch值變化曲線

表3 低頭檢測精確率數據
通過本文所提出算法,獲取駕駛員在一分鐘內眨眼次數、PERCLOS、平均眨眼速度、打哈欠次數、打哈欠幀數占比、低頭次數、低頭幀數占比7項疲勞判斷參數,使用SVM算法進行多特征融合分類。本次實驗召集12名實驗人員,獲取2000組數據,其中通過主觀判斷和數據對比進行人工貼標簽,分類為“疲勞”、“清醒”,訓練集設置為1600組,測試集設置為400組,正確分類382組,準確率達到了95.5%,與文獻[1,3,13]所使用的算法對比,本文算法準確率較高(表4)。

表4 疲勞狀態識別方法比較
本文結合自適應KCF算法和CE-CLM算法,并提出基于角度的眼睛閉合度計算、嘴巴開度計算,在實測中取得了不錯的效果,希望在接下來的研究中能克服光線問題,實現光線條件惡劣的情況下準確檢測。經研究單純的眼睛閉合檢測無法準確識別疲勞駕駛員的疲勞狀態,本文精確的多參數提取,能夠計算眨眼次數、PERCLOS、平均眨眼速度、打哈欠次數、打哈欠幀數占比、低頭次數及低頭幀數占比并進行多特征融合分類,希望接下來的工作能實現多類別疲勞狀態判斷,如清醒、輕度疲勞、中度疲勞、嚴重疲勞、極度疲勞。