黃 玲 洪佩鑫 吳澤榮 劉建榮 黃子虛 崔 躦
(華南理工大學土木與交通學院 廣州510640)
疲勞駕駛相比其他顯性違法行為,缺乏有效的檢測和預(yù)防技術(shù)[1]。盡管有限制的交通規(guī)定,實際上主要依靠駕駛員的自律性。因此,針對長途客貨運司機的實時疲勞判定非常重要[2]。而在疫情防控常態(tài)化[3]的背景下,駕駛員經(jīng)常佩戴口罩,對疲勞檢測算法提出更高要求。
目前的疲勞駕駛檢測研究可歸納為基于駕駛行為和車輛狀態(tài)參數(shù)[4]、基于生理參數(shù)[5]、基于圖像處理3種類型?;趫D像處理由于低成本、非接觸式等特點,在計算機設(shè)備與智能技術(shù)快速發(fā)展中日益成為主流[6]?;趫D像處理大多是提取駕駛員的面部特征,主要以眼部[7]和嘴部[8]為主。田璐萍等[9]用Adaboost算法檢測人臉,然后利用特征加權(quán)貝葉斯算法融合PERCLOS(percentage of eyelid closure over the pupil over time)值、眨眼頻率和閉眼時長3個特征對疲勞狀態(tài)進行判斷。李文學等[10]用紅外攝像頭采集圖像,送入Haar分類器檢測人臉和人眼,再將序列化數(shù)據(jù)送入LSTM(long short-term memory),最終由SOFTMAX分類器完成判定。另外也有研究融合多種特征進行綜合判斷。如曾心遠等[11]將心率、腦電波功率譜的比率和PERCLOS作為輸入,利用logistics模型判定疲勞結(jié)果。Luis M.Bergasa等[12]結(jié)合6個參數(shù):閉眼百分比、閉眼時間、眨眼頻率、點頭頻率、面部位置和凝視,使用模糊分類器推斷司機警覺程度。
目前基于圖像處理的疲勞檢測算法面臨的共同挑戰(zhàn)[13]包括:①光線條件變化,特別是夜間行車對檢測人臉造成干擾;②當駕駛員在完成轉(zhuǎn)彎、超車等復(fù)雜操作時,姿態(tài)變化會使疲勞特征提取質(zhì)量下降甚至失效;③駕駛員的個體特征和實時駕駛環(huán)境的差異會影響疲勞判斷性能。另外,在全球新型冠狀病毒肺炎疫情大背景下,駕駛員佩戴口罩會造成臉部信息丟失,而國內(nèi)外缺乏針對性的疲勞檢測研究。
因此,筆者提出1種適用于防疫期間自適應(yīng)性的疲勞駕駛檢測方法,見圖1。首先,使用SSD模型和MobileNet-V2輕量級分類模型對駕駛員佩戴口罩進行判斷,對未佩戴口罩駕駛員,使用基于傳統(tǒng)圖像HOG特征結(jié)合SVM分類器[14]進行人臉檢測,以提升算法實時性;對佩戴口罩的駕駛員,采用SSD+ResNet-10進行人臉檢測。然后,通過級聯(lián)回歸器精準定位人臉特征點坐標。最后,通過分級判定疲勞狀態(tài)。在監(jiān)測過程中使用有效性眨眼和基準水平值的方式提升疲勞特征質(zhì)量,同時會根據(jù)判定狀態(tài)動態(tài)調(diào)整閾值,以此適應(yīng)不同駕駛員和駕駛環(huán)境差異。
圖1 自適應(yīng)疲勞檢測框架Fig.1 Framework of adaptive fatigue detection
圖像的HOG特征對于光照變化和局部陰影有很好的魯棒性,從圖2(b)可以看出人臉的結(jié)構(gòu)信息。
圖2 HOG特征提取示例Fig.2 Examples of HOGfeature extraction
檢測人臉模型中的SVM分類器設(shè)計如下。對于D={(x1,y1),…,(xm,ym)},yi∈{-1,+1},其 優(yōu)化目標函數(shù)及約束條件見式(1)~(3)。
式中:m為樣本數(shù);ω=(ω1,…,ωd)為超平面的法向量;xi=(xi1,…,xid)為HOG特征向量,d為維度;b為偏置項;ξi為松弛變量;在C取有限值時,目標函數(shù)在最大化間隔時,允許一些樣本不滿足約束條件。目標函數(shù)采用L2范數(shù)作為正則化項,使得法向量ω的非零向量個數(shù)盡量稠密。
在當前全國疫情防控常態(tài)化趨勢下,對于佩戴口罩的人臉檢測存在巨大的行業(yè)需求。然而由于口罩對人臉的遮擋造成部分人臉結(jié)構(gòu)化信息丟失,會降低人臉檢測精度以及存在大量誤檢的情況。針對該問題,筆者采用以殘差網(wǎng)絡(luò)ResNet-10作為基本骨架的SSD預(yù)訓練模型檢測駕駛員人臉。
另外,通過復(fù)用MobileNet-V2模型訓練人臉是否佩戴口罩的分類器,在判斷未戴口罩的情況下用1.1中所述的基于HOG特征的檢測模型,從而提高實時性。首先,使用基于ImageNet預(yù)訓練的模型作為骨架,丟棄頭部輸出層。然后,添加平均池化層、全連接層(使用了dropout)和softmax二分類層。最后,凍結(jié)骨架層的參數(shù),使用Adam優(yōu)化器進行訓練。具體結(jié)構(gòu)見圖3,虛線框內(nèi)的濾波器參數(shù)在訓練的過程中不更新。
圖3 口罩分類網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Structure of the mask-classifying network
本文收集篩選數(shù)據(jù),通過更換不同比例的數(shù)據(jù)集和多次參數(shù)調(diào)整得到最佳模型。該模型的數(shù)據(jù)集由6 794張佩戴口罩的人臉圖片(其中真實戴口罩6 104張,模擬戴口罩690張)和相同數(shù)量的未佩戴口罩的人臉圖片構(gòu)成。部分圖片見圖4,在訓練過程中另外使用了旋轉(zhuǎn)、縮放、平移、剪切和翻轉(zhuǎn)的圖像增強操作。由表1可見,本文訓練的模型在測試集上可以得到98.50%的分類精度。
表1 測試集效果評估Tab.1 Evaluation of test sets
圖4 數(shù)據(jù)集部分圖片F(xiàn)ig.4 Partial image of the dataset
本文將基于HOG特征或SSD模型檢測的人臉圖像作為輸入,采用級聯(lián)回歸樹定位人臉特征點,可以得到68個像素坐標。每一層強回歸樹由梯度提升算法學習多個弱回歸樹得到[15]。
對于每張人臉圖像Ii,定義Si=(xi,1,…,Xi,l,…,Xi,p)∈R2p為人臉特征點坐標向量,其中:p為特征點個數(shù)。給定訓練樣本其中:n為人臉圖像的數(shù)量。對于第1層強回歸樹,構(gòu)建數(shù)據(jù)為初始特征點坐標集,采用方法為{S1,…,Sn}Si,即不放回隨機取樣。為人臉特征點坐標更新向量,計算公式見式(4)。
對于第t層的強回歸樹,根據(jù)其輸出對訓練數(shù)據(jù)進行更新后送入下1層訓練,迭代T次,具體見式(5)~(6)。
對于新樣本的預(yù)測,針對人臉檢測器輸出的邊界框進行比例調(diào)整和中心化,選擇平均形狀作為初始化預(yù)測。圖5從左到右展示了不同的層數(shù)T=0,1,2,3,10時,面對頭部姿態(tài)變化的情況級聯(lián)回歸器對于特征點的預(yù)測逐層地調(diào)整坐標。
圖5 不同層數(shù)的回歸器預(yù)測的特征點Fig.5 Feature points predicted by the regressor at different levels
見圖6,P1到P6是基于人臉坐標系的眼部特征點坐標。眼睛閉合率的計算見式(7)。
圖6 眼部區(qū)域特征點Fig.6 Feature points in the eye area
本文取左、右眼的均值作為當前幀的閉合率。首先,抓取窗口內(nèi)每次下降和上升過程作為1個眨眼數(shù)據(jù)包。然后,分別統(tǒng)計3個參數(shù):眼瞼閉合時間tc、眼瞼重開時間tr及眨眼時長tb。眼瞼開始閉合前和眼瞼重新打開后的閉合率持平階段不納入?yún)?shù)統(tǒng)計。最后,根據(jù)tc和tb對眨眼數(shù)據(jù)包進行有效性篩選[16],篩選閾值通過對預(yù)采集的視頻樣本進行全部指標抓取后,根據(jù)統(tǒng)計數(shù)值分布采用3σ原則選取分位數(shù)取整得到。通過統(tǒng)計有效數(shù)據(jù)包得到眨眼頻率fb,當tb超過σ原則的右分位數(shù),眨眼數(shù)據(jù)包記錄為長閉合眨眼,從而得到長閉合比例lb。
圖7演示了抓取和篩選的過程。圖中t3~t4之間的數(shù)據(jù)序列即為有效的眨眼數(shù)據(jù)包,而t1,t2和t5,t6這2組不滿足篩選條件。虛線為基準水平值,通過抓取數(shù)據(jù)包前200 ms的閉合率,取均值后作為在完全睜開狀態(tài)下的基準值。相比設(shè)置單一閾值,考慮到駕駛過程中每次圖像處理可能的噪聲引入造成的數(shù)值波動,從而導致檢測參數(shù)失準。以圖8為例,其基準水平值與圖7存在差異,假若以圖7的基準值抓取圖8的t1~t2的眨眼數(shù)據(jù),對于有效數(shù)據(jù)的統(tǒng)計會造成幀數(shù)丟失。類比眼部閉合率可以計算嘴部張開率,作為輔助判斷指標。
圖7 眨眼數(shù)據(jù)包抓取示例Fig.7 Examples of fetching the data packet of blink
圖8 設(shè)置基準水平值應(yīng)對數(shù)值變化Fig.8 Set baseline-level values responding to numerical changes
圖9中close水平線表示預(yù)檢測的正常閉合狀態(tài)下的嘴巴張開率,max水平線為最大張開狀態(tài),虛線為打哈欠張開率判定閾值。t1~t2為打哈欠的時間,若超過打哈欠時間判定閾值(避免如說話造成的誤檢),則認定為駕駛員存在打哈欠行為。
圖9 1次打哈欠的張開率變化曲線Fig.9 Variable curves of the opening rates of a yawn
通過設(shè)置緩存序列解決打哈欠行為跨越2個窗口的情況,同時設(shè)定后1個窗口存在打哈欠行為。根據(jù)預(yù)采集樣本所有打哈欠行為張開率的數(shù)值分布,選擇在最大張開狀態(tài)和正常閉合狀態(tài)下差值的40%作為初始張開率判定閾值。
本文采取的疲勞判定流程見圖10。以30 s為時間窗口,當檢測到眨眼頻率fb相比于上1個時間窗口下降幅度超過閾值或者捕捉到打哈欠行為,則進入疲勞判定。眨眼頻率和打哈欠行為作為判定前的輔助驗證方式,可以避免對每1個時間窗口都進行判定,減少設(shè)備資源的占用。
圖10 疲勞分級模型判定流程Fig.10 Determining process of the hierarchy model of fatigue
若捕捉到打哈欠后進入疲勞判定,包含打哈欠行為的當前窗口的眼部參數(shù)會丟棄,而使用下1個窗口的眼部參數(shù)判斷。如果眨眼時長均值Tb和長閉合比例lb與清醒狀態(tài)下初始值相比,增長幅度都大于閾值則判定為疲勞待定狀態(tài)。接著根據(jù)眼瞼閉合時間均值Tc和眼瞼重開時間均值Tr增長幅度是否都超過閾值,進一步確認駕駛員是否疲勞,從而建立起疲勞檢測分級模型。這樣的判斷方法,不僅通過統(tǒng)計均值緩解指標值波動干擾,而且從整體性指標到局部性指標構(gòu)成的疲勞等級體現(xiàn)了由宏觀到微觀的邏輯過程。
若當前窗口非疲勞,將5個眼部參數(shù)的檢測值與前1個窗口的指標值取均值后更新清醒狀態(tài)下的判定值。若存在打哈欠行為,用最大張開率重新計算張開率判定閾值,將新的哈欠時間長度和張開率判定閾值與原閾值取平均后更新參數(shù)。這樣的修正方法,可以應(yīng)對不同的駕駛員在不同時段進行駕駛時疲勞指標值的波動。隨著檢測的推進,判定閾值會不斷被調(diào)整到符合駕駛員當前狀態(tài)及適應(yīng)外部變化。
在進行實驗評估前,預(yù)先采集了14名志愿者不同狀態(tài)的視頻樣本,采集方式是根據(jù)被試主體在不同時間段的精神狀態(tài)自我評估表格后分別獨立錄像。每個視頻樣本對應(yīng)1種狀態(tài),其中清醒22個(9個佩戴口罩)和疲勞52個(17個佩戴口罩)。同時通過多方溝通,獲得了21個廣州公交司機佩戴口罩出勤值班的駕駛視頻樣本。
分別將Viola-Jones、HOG+SVM和SSD+ResNet-10這3種算法的檢測器用于95個視頻樣本(48個未佩戴口罩,47個佩戴口罩),統(tǒng)計檢測到人臉的幀數(shù)得到平均檢測率,見表2。
由表2可見:對于未佩戴口罩的樣本,3種檢測器捕捉人臉的效果無明顯差別。對于佩戴口罩的樣本,基于圖像HOG特征的檢測器無法適用,基于圖像Haar特征的檢測器有一定的檢測率,而采用深度網(wǎng)絡(luò)的檢測器具備更好的適用性。
表2 不同算法下的人臉檢測器效果Tab.2 Effects of the face detector under different algorithms%
將本文訓練的口罩分類模型同樣應(yīng)用到95個視頻樣本,統(tǒng)計正確分類的幀數(shù)。對于未佩戴口罩的樣本達到94.23%的平均精度,而對于佩戴口罩的樣本達到96.41%的平均精度。圖11(a)~(b)分別展示了未佩戴口罩和佩戴口罩的部分樣本的類別和概率。
圖11 預(yù)訓練口罩模型分類效果Fig.11 Classification effect of the pre-training mask model
將級聯(lián)回歸器應(yīng)用于已采集的視頻樣本,部分結(jié)果見圖12。由圖12(a)可以看出該級聯(lián)回歸器對于眼部和嘴部不同閉合狀態(tài)具有良好的檢測效果。面對被檢測者佩戴眼鏡的挑戰(zhàn),也能很好定位眼部特征點。佩戴口罩的公交司機駕駛員,只有眼部特征可用于后續(xù)的疲勞檢測。由圖12(b)可見,本文所述的級聯(lián)回歸器在面對頭部姿態(tài)變化和光照差異時,仍具有穩(wěn)定的特征點定位效果。由圖12(c)可見,該級聯(lián)回歸器對于抵抗不同的干擾和外界噪聲有強魯棒性,例如,公交車輛前置攝像頭方位的不同,以及駕駛室內(nèi)開燈和車窗玻璃透射等情況。
圖12 外部條件變化下的定位效果Fig.12 Positioning effects of different external conditions
本文實驗將圖像流的讀入遷移到另1個線程處理,同時批量放入隊列緩存等候檢測線程的讀取。這樣的并行處理相比于先讀取再檢測操作的單線程處理,可以節(jié)省運行時間。以1個1 min、30幀/s的視頻為例,在華碩FX50V進行讀取和顯示操作,從表3可以看到對比效果。疲勞狀態(tài)的警示音提醒也遷入另1個并行線程。通過抓取300次嘴部特征點,得到被試者在正常閉合狀態(tài)下的張開率和模擬打哈欠行為的最大張開率,從而計算初始判定閾值。
表3 圖像處理的效果對比Tab.3 Effects of different image processing
疲勞判定模型在不同狀態(tài)下的檢測界面顯示見圖13。界面左上角的EAR(eye aspect ratio)表示眼睛閉合率,MAR(mouth aspect ratio)表示嘴巴張開率,Yawn表示是否存在打哈欠行為。判定結(jié)果有2種類型:清醒(sober)和疲勞(fatigue)。圖13(a)展示了當捕捉到被測者打哈欠,當前窗口的眼部參數(shù)不具備參考價值。利用下1個窗口的眼部參數(shù)進行判定,結(jié)果為疲勞。圖13(b)展示了對于公交司機佩戴口罩的應(yīng)用場景。選取1個測試者的2種視頻樣本進行眼部參數(shù)示例,結(jié)果見表4,可以看出4個參數(shù)在不同的精神狀態(tài)下存在顯著的差異。
圖13 檢測界面示例Fig.13 The detecting interface
表4 不同樣本在連續(xù)窗口內(nèi)的指標值Tab.4 Index values of different samples in contiguous windows
對于疲勞樣本的第1個時間窗口,因為捕捉到打哈欠的行為,該時間窗口的4個眼部參數(shù)明顯不符合疲勞特征。因為打哈欠的過程中眼睛閉合率處于持續(xù)低值,造成統(tǒng)計到的眼部參數(shù)產(chǎn)生波動。此時需要利用下1個窗口進行判定,可以看出第2個窗口的指標符合疲勞特征。以處理900幀為1次實時處理,在配置i7-9700K的計算機下處理所有視頻得到疲勞判定處理速率(單位:幀/s):未佩戴口罩樣本為19.17,佩戴口罩樣本為17.69,即二者的平均消耗時間54.29 ms。結(jié)合表3的圖像處理時間可知,本文提出的方法滿足疲勞狀態(tài)的實時監(jiān)測。
對預(yù)采集的視頻樣本應(yīng)用本文提出的算法進行檢測,以清醒狀態(tài)下的第1個窗口的指標為初始值,窗口遞進步長為1幀,視頻格式化為30幀/s,樣本的精度計算見式(8)。
式中:TS為正確判定為清醒狀態(tài)的窗口數(shù)量;FS為錯誤判定為清醒狀態(tài)的窗口數(shù)量;TF為正確判定為疲勞狀態(tài)的窗口數(shù)量;FF為錯誤判定為疲勞的窗口數(shù)量。
對于未佩戴口罩的樣本,所提出的方法可以在清醒和疲勞狀態(tài)分別可以達到90.86%和97.31%的檢測精度,達到現(xiàn)有研究的整體水平。而從表5可見,雖然對于佩戴口罩樣本檢測精度在2種狀態(tài)下都有所下降,但是在臉部特征大幅缺失的情境下該方法已經(jīng)能實現(xiàn)92.65%的平均精度,具備良好的應(yīng)用性。
表5 不同樣本集的檢測精度Tab.5 Detection accuracy of different sample sets%
為了驗證本文提出的疲勞判定方法的遷移性,將模型應(yīng)用到NTHU-DDD的測試集[17]。NTHU-DDD數(shù)據(jù)集包括不同性別、不同種族的駕駛員在5種場景下的紅外視頻,逐幀標記駕駛員的清醒或疲勞狀態(tài)。5種場景分別是白天不戴眼鏡、白天戴眼鏡、夜晚不戴眼鏡、夜晚戴眼鏡和白天戴太陽鏡。該測試集的14名駕駛員在不同場景下各有1個視頻樣本,本文根據(jù)標記將測試集的視頻進行分段處理得到88個清醒樣本和101個疲勞樣本。由表5可見,本文的疲勞判定模型能達到86.09%的平均精度,具備良好的遷移性。
1)針對疫情形勢下駕駛員是否佩戴口罩的狀況,對應(yīng)使用深度模型和傳統(tǒng)模型檢測人臉,在降低誤檢率的同時提升疲勞檢測的實時性。
2)面對駕駛員臉部特征部分缺失的情況,對眼部指標進行全過程統(tǒng)計同時采取基準水平值設(shè)置和有效性篩選2種輔助方式,結(jié)合分級判定模型使得疲勞檢測更具魯棒性。
3)自適應(yīng)修正判定參數(shù),應(yīng)對圖像設(shè)備差異、駕駛員構(gòu)造差異和實時監(jiān)測過程中的數(shù)值波動。
在后續(xù)研究中會訓練針對佩戴口罩的人臉的目標檢測模型和特征點預(yù)測模型,而不是分階段先檢測再進行分類,從而進一步提升整體精度。