?

基于邊緣計算的疲勞駕駛檢測方法

2021-07-26 11:54胡輯偉嚴俊偉
計算機工程 2021年7期
關鍵詞:嘴部眼部人臉

婁 平,楊 欣,胡輯偉,蕭 箏,嚴俊偉

(1.武漢理工大學信息工程學院,武漢430070;2.寬帶無線通信和傳感器網絡湖北省重點實驗室,武漢430070;3.武漢理工大學機電工程學院,武漢430070)

0 概述

隨著汽車行業和道路交通網的不斷發展,越來越多的人選擇機動車出行,道路交通事故頻繁發生。交通事故給人們的生命財產安全帶來巨大的損失,與酒駕、超速等行為相比,疲勞駕駛的預防及治理更為困難。疲勞是指對體力勞動或者腦力勞動進行長時間重復作業形成的一種生理阻礙[1],疲勞會使駕駛人的駕駛操作水平下降,據相關數據統計,約有20%~30%的交通事故是由疲勞駕駛所引起的[2]。在交通事故發生前,若駕駛人可提前0.5 s 做出反應,可避免60%的交通事故。在多數情況下,駕駛人很難意識到自身處于疲勞駕駛狀態,且據調查顯示,多數駕駛人在感知到疲勞時仍繼續駕駛[3]。因此,針對疲勞駕駛檢測的研究,在駕駛人疲勞駕駛時及時對其發出告警,對降低交通事故的發生率及保障人們安全出行具有重要意義。

目前,已有的疲勞檢測方法主要分為基于駕駛人生理特征、車輛行為特征、駕駛人面部特征等3 類參數?;隈{駛人生理特征參數的疲勞檢測方法需要在駕駛人身上放置傳感器,以得到其腦電(Electroencephalogram,EEG)、心電(Electrocardiograms,ECG)、肌電(Electromyogram,EMG)信號等生理參數,然后對其進行處理分析,判斷駕駛人是否疲勞[4]。這類方法檢測精度高,但其高昂的成本和侵入式的檢測方式限制了其應用和發展?;谲囕v行為特征的疲勞檢測方法通過檢測車輛方向盤的角速度、車輛行駛狀態的改變等特征,判斷駕駛人是否疲勞[5]。這類方法容易受車輛型號和實際道路情況的影響,準確率較低?;隈{駛人面部特征的疲勞檢測方法通過檢測駕駛人是否存在閉眼時間長、打哈欠等疲勞特征進行疲勞判斷[6],相比于其他方法,該方法在保障準確率的同時具有成本低及非接觸的優點,因此成為疲勞檢測研究領域的主流方法。

李照等[7]設計一個基于數字信號處理(Digital Signal Processing,DSP)的嵌入式車載疲勞駕駛檢測系統,該系統利用AdaBoost 算法檢測人臉并定位駕駛人眼睛區域,通過計算人眼閉合程度,并結合PERCLOS 算法進行疲勞判斷。徐明[8]利用ARM 開發板設計了一套疲勞駕駛檢測系統,該系統首先利用AdaBoost 級聯分類器依次定位駕駛人面部及眼部區域,接著采用積分投影算法定位嘴部區域,并根據眼部及嘴部的寬高比確定開閉狀態,最后結合PERCLOS 算法及打哈欠分析完成疲勞檢測。這類方法可在車載嵌入式設備上獨立完成疲勞檢測,但基于手工提取的特征,準確率會受到個體差異、拍攝距離及角度的影響,魯棒性較差。

由于深度學習技術在計算機視覺領域表現出優異的性能,因此研究人員對此進行了大量研究。鄭偉成等[9]利用多任務卷積神經網絡(Multi-Task Convolutional Neural Network,MTCNN)定位人臉,并利用PFLD 深度學習模型進行人臉關鍵點檢測,從而定位眼部、嘴部以及頭部的位置,最后提取眨眼頻率、張嘴程度、點頭頻率等特征進行疲勞檢測。DU等[10]提出一種多模式融合的遞歸神經網絡(Multimode Fusion Recurrent Neural Network,MFRNN),將眼睛和嘴巴的開合度以及心率作為疲勞特征,利用遞歸神經網絡(Recurrent Neural Network,RNN)提取時間特征,提高了疲勞駕駛檢測的準確率。這類方法相比基于手工特征的疲勞檢測方法具有更強的魯棒性,但是需要龐大的計算資源。若檢測過程在計算資源豐富的云端進行,則需要邊緣設備采集駕駛人視頻數據并上傳至云端服務器進行檢測,再由服務器返回檢測結果。然而,在車輛的行駛過程中,網絡覆蓋、響應速度等因素會造成檢測實時性差,甚至無法完成檢測。若檢測過程在車載邊緣端完成,則需要具有強大計算資源的檢測設備,若每輛車上均安裝此類設備,則成本過于高昂。

本文提出一種基于邊緣計算的疲勞駕駛檢測方法,通過識別駕駛人的眼部及嘴部的開閉狀態,結合PERCLOS 及PMOT 指標值進行疲勞檢測,并且由于采用了輕量化的檢測模型,因此可在車載嵌入式設備上獨立完成疲勞檢測。

1 疲勞駕駛檢測模型

通過駕駛人的面部特征進行疲勞駕駛檢測通常需要確定人臉與眼嘴的部位,并檢測眼嘴的開合狀態。為實現以上功能,本文利用改進的MTCNN 完成人臉檢測及關鍵點定位,并根據人臉三庭五眼比例關系進行眼部及嘴部圖像的截取,接著利用改進的AlexNet 識別眼部和嘴部的開閉狀態,最后根據PERCLOS 和PMOT 參數進行疲勞判別。疲勞駕駛檢測流程如圖1所示。

圖1 疲勞駕駛檢測流程Fig.1 Procedure of fatigue driving detection

1.1 基于改進MTCNN 的關鍵點定位

MTCNN 是一種基于深度學習的人臉檢測與對齊算法,利用圖像金字塔檢測各個尺度的人臉[11],不同于多目標人臉檢測,在疲勞駕駛檢測中只需精準定位駕駛人面部區域。因此,對MTCNN 網絡的圖像金字塔部分進行改進,使其快速且準確地完成人臉檢測及關鍵點定位,并在定位關鍵點后,利用人臉的三庭五眼比例關系獲取駕駛人的眼部及嘴部區域。

1.1.1 人臉檢測與關鍵點定位

MTCNN 由P-Net(Proposal Network)、R-Net(Refine Network)和O-Net(Output Network)組成,采用候選框加分類器的思想,快速高效地進行人臉檢測。MTCNN 模型如圖2所示。

圖2 MTCNN 模型Fig.2 MTCNN model

MTCNN 為檢測到不同尺度的人臉,將原圖縮小為不同尺寸以生成圖像金字塔。將原圖按照一定比例進行壓縮,使用固定尺寸為12 像素×12 像素的候選框遍歷圖片,循環往復,直到縮小后的圖片長或寬小于候選框的邊長時停止。此時得到尺寸為12 像素×12 像素、通道數為3 的圖片作為P-Net 的輸入,P-Net 利用大小為3×3 的卷積核通過卷積操作(Conv)提取圖像特征,采用最大池化操作(MP)去除冗余,通過人臉分類器(face classification)判斷該區域是否為人臉,并使用邊框回歸(bounding box regression)及一個面部關鍵點的定位器(facial landmark localization)初步定位人臉區域,并將這些區域輸入R-Net。R-Net 將重復P-Net 的操作,濾除大部分干擾、保留較為可靠的人臉區域并將其輸入到O-Net。對比P-Net 利用全卷積輸出尺寸為1 像素×1 像素、通道數為32 的特征,R-Net 在最后一個卷積層后使用一個128 維的全連接層(FC),保留了更多的圖像特征。O-Net 進行更精細的人臉判別、邊框回歸及關鍵點定位,最終輸出人臉區域的坐標與5 個特征點,其中5 個特征點分別為左眼中點、右眼中點、鼻尖點、左嘴角點和右嘴角點。實驗室環境內采集的多人臉圖像MTCNN 人臉檢測及關鍵點定位示例,如圖3所示。

圖3 MTCNN 人臉檢測Fig.3 Face detection using the MTCNN

MTCNN 網絡構建的圖像金字塔包含大量圖像,將其送入網絡檢測出圖像中的所有人臉區域會花費大量時間。在疲勞駕駛檢測場景中,由于需要排除多余人臉的干擾,精確定位駕駛人面部,因此對MTCNN 網絡生成圖像金字塔的方式進行改進??紤]到駕駛人面部區域在視頻幀中所占像素比例較大,本文根據駕駛人面部在圖像中的比例對MTCNN 網絡中最小人臉尺寸進行放大,降低固定縮小比例,并略過第一次縮小與遍歷過程,使得改進的MTCNN 網絡在準確定位出駕駛人面部區域的同時,能濾除背景中無關的人臉,并大幅縮減人臉檢測時間。

1.1.2 眼部與嘴部區域提取

利用駕駛人的眼睛及嘴巴的狀態變化特征進行疲勞判別,需要在人臉檢測和關鍵點定位的基礎上將駕駛人的眼部和嘴部區域進行截取。根據三庭五眼的人臉比例關系[12],人臉橫向可分為三等份:前額發際線到眉骨,眉骨到鼻底,鼻底到下巴,即三庭;人臉縱向可分為五等份:左側發際線到左眼外側,左眼外側到左眼內側,左眼內側到右眼內側,右眼內側到右眼外側,右眼外側到右側發際線,即五眼。

假設通過MTCNN 獲取駕駛人的左眼坐標為m1(x1,y1),右眼坐標為m2(x2,y2),根據三庭五眼的人臉比例關系提取駕駛人眼部區域,其對應關系為:

其中:d1為雙眼間的距離;w1為眼部區域的寬度;h1為眼部區域的高度。

假設通過MTCNN 獲取駕駛人的左右嘴角坐標分別為n1(α1,β1)和n2(α2,β2),根據三庭五眼的人臉比例關系提取駕駛人嘴部區域,其對應關系為:

其中:d2為左右嘴角間的距離;w2為嘴部感興趣區域(Region of Interest,ROI)的寬度;h2為嘴部區域的高度。

對NTHU-DDD 數據集[13]中示例進行關鍵點定位,并根據三庭五眼比例關系得到眼部及嘴部感興趣區域,如圖4所示。

圖4 眼部與嘴部ROI 定位Fig.4 ROI location of eyes and mouth

1.2 基于改進AlexNet 的眼部與嘴部狀態識別

通過計算眼睛和嘴巴的寬高比、眼部黑白像素比例等基于手工提取特征的眼部和嘴部狀態識別方法受拍攝角度、拍攝距離以及個體差異的影響,魯棒性較差。本文利用改進的AlexNet 對眼部及嘴部的開閉狀態進行識別,避免了對圖像的復雜預處理操作,且具有較強的魯棒性。

1.2.1 Ghost 模塊

Ghost 模塊[14]是一種輕量化神經網絡單元,為了使疲勞駕駛檢測模型能在邊緣端獲得更好的實時性,本文使用Ghost 模塊替換AlexNet 中的所有卷積操作。傳統卷積和Ghost 模塊示意圖如圖5所示。

圖5 傳統卷積與Ghost 模塊示意圖Fig.5 Schematic diagram of traditional convolution and Ghost module

由于深度卷積神經網絡所輸出的特征圖存在冗余,這些相似的特征圖使得卷積神經網絡的特征提取能力變強,因此Ghost 模塊利用簡單的線性操作Фk來獲得更多的相似特征圖,以提高CNN 性能。Ghost 模塊首先采用少量常規卷積得到本征特征圖,然后對得到的本征特征圖通過depthwise 卷積這種簡單的線性操作生成Ghost 特征圖,最后將本征特征圖與Ghost 特征圖進行拼接得到最終的輸出。相比直接使用常規卷積,Ghost 模塊在保障準確率的同時,大幅度降低了計算量。

1.2.2 輕量化AlexNet 結構

AlexNet[15]基于8 層網絡結構在圖像分類上表現出優異的效果。本文對AlexNet 進行改進,用于眼睛及嘴巴的開閉狀態分類。由于眼睛和嘴巴圖像所占的像素點較少,將AlexNet 的輸入尺寸由224 像素×224 像素、通道數為3 壓縮至24 像素×24 像素、通道數為3,將11×11 和5×5 的卷積核修改為3×3 的卷積核,并優化最大池化操作的步長stride 以避免特征圖的尺寸過小。由于AlexNet 僅用于眼嘴狀態4 分類,不同于AlexNet 的1 000 分類,模型僅保留AlexNet中的第1 個全連接層,并將全連接層的輸出維度由2 048 修改為128。最終利用Softmax 回歸函數輸出樣本屬于眼嘴開閉狀態的概率。模型保留第1 層傳統卷積用來全面提取圖像特征,其余的卷積操作均由Ghost 模塊替代,使網絡輕量化。改進的AlexNet結構如圖6所示。

圖6 改進的AlexNet 結構Fig.6 Improved AlexNet structure

1.3 基于PERCLOS 與PMOT 參數的疲勞駕駛檢測

當駕駛人處于疲勞狀態時會產生一系列的生理反應,例如閉眼時間長、打哈欠等。改進的AlexNet識別眼嘴狀態后,模型通過計算連續視頻幀的PERCLOS 及PMOT 參數,并結合閾值對駕駛人的疲勞狀態進行判斷。

1.3.1 PERCLOS 參數

PERCLOS 是卡內基梅隆研究所提出的度量疲勞的物理量。美國聯邦公路管理局在駕駛情景下對PERCLOS 參數、眨眼頻率、打哈欠參數等9 種疲勞參數進行相關性分析,得出PERCLOS 參數與疲勞駕駛狀態相關性最高[16]。PERCLOS 參數表示在單位時間內閉眼時長所占百分比,計算公式為:

其中:N為單位時間內的視頻總幀數;fi為閉眼幀數;為單位時間內閉眼的總幀數。在正常的駕駛過程中,駕駛人的PERCLOS 參數值較小。當駕駛人處于疲勞狀態時,閉眼幀數增多,PERCLOS 參數值增大。

1.3.2 PMOT 參數

PMOT 參數類似于PERCLOS 參數,代表單位時間內張嘴時長所占百分比,計算公式為:

其中:N為單位時間內的視頻總幀數;fi為張嘴幀數;為單位時間內張嘴的總幀數。在正常駕駛過程中,駕駛人的PMOT 參數值較小。當駕駛人打哈欠時,張嘴幀數增多,PMOT 參數值增大。

2 實驗驗證

實驗平臺為1 臺配置為Intel?CoreTMi7-8750H CPU 處理器、2.2 GHz 主頻、8 GB 內存、顯卡為GTX1060 的PC 機以及1 塊內存為8 GB 的樹莓派4B開發板。使用PC 機對網絡進行訓練,并將訓練好的模型下載到樹莓派開發板上進行疲勞檢測。

2.1 數據集

實驗利用YawDD 數據集[17]制作人臉檢測數據集與眼嘴狀態識別數據集,并在NTHU-DDD 數據集上測試疲勞駕駛檢測方法的準確率。YawDD 數據集包含了不同性別、種族的駕駛人在不同光照條件下的真實駕駛視頻。對該數據集進行幀采樣,得到人臉檢測數據集,用于人臉檢測實驗,YawDD 數據集示例如圖7所示。

圖7 YawDD 數據集示例Fig.7 Examples of YawDD dataset

在幀采樣后截取出眼睛及嘴巴區域,制作眼嘴數據集,用于訓練眼嘴狀態分類網絡。眼嘴數據集分為眼睛閉合、眼睛張開、嘴巴閉合、嘴巴張開等4 類。眼嘴數據集示例如圖8所示。

圖8 眼嘴數據集示例Fig.8 Examples of eyes and mouth dataset

NTHU-DDD 數據集包括36 位不同種族的受試者在模擬駕駛場景下的視頻數據,總時長約為9.5 h,包含不同光照條件下正常駕駛、打哈欠、說話、緩慢眨眼、頻繁點頭等狀態。NTHU-DDD 數據集示例如圖9所示。

圖9 NTHU-DDD 數據集示例Fig.9 Examples of NTHU-DDD dataset

疲勞駕駛時所產生的打哈欠、緩慢眨眼等動作是一個持續的過程,其持續時間約為8 s,根據NTHU-DDD 數據集的幀標注文件將視頻數據進行裁剪,并將存在上述疲勞特征的視頻標注為疲勞狀態,不存在疲勞特征的視頻標注為正常狀態。裁剪后的數據集共包含600 個視頻,其中正常狀態和疲勞狀態的視頻分別有300 個。

2.2 實驗結果

2.2.1 人臉檢測結果

駕駛人面部區域在圖像中所占比例為1/16~1/3,為了濾除背景中乘客面部的干擾,精確定位出駕駛人面部區域并加速檢測過程,對MTCNN 網絡的圖像金字塔進行改進,將視頻幀短邊的1/4 作為最小人臉尺寸,將固定縮小比例減小為0.659,并直接從第2 次縮小和遍歷圖片過程開始進行圖像金字塔操作。實驗將圖片尺寸從640 像素×480 像素縮小至160 像素×120 像素進行檢測,在確保正常檢出人臉的情況下,縮短了檢測時間。MTCNN 及改進的MTCNN 對實驗室中模擬駕駛環境采集的圖像進行人臉檢測,示例如圖10所示。

圖10 人臉檢測示例Fig.10 Examples of face detection

從圖10 可以看出,改進的MTCNN 模型有效地濾除了背景人臉,在疲勞駕駛檢測中能精確定位出駕駛人面部區域。為了進一步驗證改進模型的有效性,實驗利用從YawDD 數據集中獲取到的2 000 張人臉圖片進行人臉檢測實驗,計算改進前后MTCNN 模型的檢測準確率以及樹莓派開發板上的平均檢測時間。人臉檢測結果如表1所示??梢钥闯?,改進的MTCNN 模型在保障較高準確率的同時,平均檢測時間下降至原來的53.9%,提高了疲勞駕駛檢測的實時性。

表1 人臉檢測結果Table 1 Results of face detection

2.2.2 眼部與嘴部狀態識別結果

由YawDD 數據集所得到的眼嘴數據集共15 000 張圖片,包括4 551 張睜眼圖片、3 912 張閉眼圖片、2 904 張張嘴圖片和3 633 張閉嘴圖片,其中睜眼和閉眼圖片均包含佩戴眼鏡及未佩戴眼鏡2 種情況。實驗在PC 機上對原AlexNet、調節參數的AlexNet 以及調參并采用Ghost 模塊替換傳統卷積的AlexNet 這3 種網絡模型進行訓練,按照6∶4 的比例劃分訓練集和測試集,其中測試圖片共6 000 張,訓練時將圖像大小歸一化為24 像素×24 像素,每次批處理32 張圖片,迭代次數為1 000 次。模型訓練完成后,將其下載到樹莓派開發板上,測試平均識別時間。眼嘴狀態識別結果如表2所示??梢钥闯?,改進的輕量化AlexNet 模型不僅保持了眼嘴狀態識別的準確率,并且模型大小減小至原有AlexNet 模型的3.9%,平均識別時間下降至原有AlexNet 模型的15.5%。

表2 眼嘴狀態識別結果Table 2 Results of eyes and mouth state recognition

將改進的AlexNet 與其他網絡模型在眼嘴狀態識別數據集上進行測試對比,結果如表3所示??梢钥闯?,調參+Ghost模塊的AlexNet網絡模型在保障準確率的同時,模型大小僅為其他模型的0.8%~9.6%,平均識別時間僅為其他模型的0.8%~3.1%。

表3 基于4 種網絡模型的眼嘴狀態識別結果對比Table 3 Results comparison of eyes and mouth state recognition based on four network models

2.2.3 PERCLOS 與PMOT 參數閾值

現有研究表明:當PERCLOS 參數值達到0.15、0.25、0.40 時,駕駛人會出現疲勞狀態。由于不同的眼部及嘴部狀態判別方法中所得到的眼睛和嘴巴的閉合程度存在差異,因此PERCLOS 及PMOT 參數閾值與研究方法相關,可從實驗中獲得。本文設定幀率為5 frame/s、時長為8 s,采集30 位駕駛人在正常及不同程度疲勞狀態下的視頻,并計算對應的PERCLOS 和PMOT 參數值,如圖11、圖12所示。

圖11 PERCLOS 參數閾值實驗結果Fig.11 Experimental results of PERCLOS parameter threshold

圖12 PMOT 參數閾值實驗結果Fig.12 Experimental results of PMOT parameter threshold

在圖11 和圖12 中,以虛線表示正常和疲勞狀態的分界線,當PERCLOS 參數值達到0.35、PMOT 參數值達到0.25 時,駕駛人出現疲勞狀態,因此本文分別將0.35 和0.25 作為PERCLOS 和PMOT 參數閾值。

2.2.4 疲勞駕駛檢測結果

由NHTU-DDD 數據集得到600 個時長為8 s 的視頻,其中正常狀態和疲勞狀態分別有300 個。在樹莓派4B 開發板上以5 frame/s 的速率進行幀采樣,并將圖片分辨率由640 像素×480 像素縮小至160 像素×120 像素,計算視頻幀序列對應的PERCLOS 以及PMOT 參數值,結合閾值進行疲勞判斷。疲勞駕駛檢測示例如圖13所示。

圖13 疲勞駕駛檢測示例Fig.13 Examples of fatigue driving detection

實驗測得模型在樹莓派開發板上的單幀平均檢測時間為180 ms,可滿足疲勞駕駛檢測的實時性要求。疲勞檢測結果如表4所示。本文方法與基于腦電信號[18]、基于方向盤操作特征[19]和基于人眼特征[20]的疲勞駕駛檢測方法的對比結果如表5所示。相比其他疲勞駕駛檢測方法,本文方法具有非接觸式、精度及魯棒性高且能在低成本的硬件設備上完成檢測的優點。

表4 疲勞檢測結果Table 4 Results of fatigue detection

表5 不同疲勞駕駛檢測方法對比Table 5 Comparison of different fatigue driving detection methods

3 結束語

為在成本低廉的車載嵌入式設備上對駕駛人疲勞狀態進行準確預警,本文提出一種基于邊緣計算的疲勞駕駛檢測方法。采用改進的MTCNN 網絡獲取人臉關鍵點,根據人臉的三庭五眼比例關系獲取駕駛人的眼部及嘴部區域,同時利用基于Ghost 模塊的改進AlexNet 對眼睛和嘴巴的狀態進行分類,計算出PERCLOS 和PMOT 參數并結合閾值進行疲勞判斷。實驗結果表明,該方法在NHTU-DDD 數據集上獲得了良好的檢測性能。后續將結合駕駛人的頭部姿態特征,進一步提高疲勞駕駛檢測算法的準確率及魯棒性。

猜你喜歡
嘴部眼部人臉
有特點的人臉
一起學畫人臉
此人為何杠得如此囂張?
圓號教學中嘴部教學的重要性及訓練方法研究
高中素描頭像教學中提高嘴部刻畫能力的策略探究
三國漫——人臉解鎖
基于Horn-Schunck光流法的多目標反芻奶牛嘴部自動監測
為什么要做眼部檢查
戴眼罩有助消除眼部疲勞
如何消除用電腦后的眼部疲勞
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合