










關鍵詞:深度學習;疲勞檢測;MTCNN;樹莓派
長期行車造成司機大腦和體力過分勞累所形成的心理和生理異常的現象稱為疲勞駕駛.準確有效的疲勞檢測已成為一個迫切需要解決的問題.
通過對現有的疲勞檢測場景和疲勞特征的分析,判斷人體屬于疲勞或者非疲勞狀態的方法有主觀檢測法和客觀檢測法[1].主觀檢測法受被試者和檢測者主觀影響較大,且在實時檢測方面具有很大局限性[2].例如基于駕駛員車輛駕駛的特征進行比較判斷,通過采集車輛的運行狀態數據,利用隨機森林算法來對疲勞狀態的識別[3];或基于駕駛員的生理特征(如駕駛員的腦電信號、心電信號等[4])進行直接判斷.客觀檢測法和主觀檢測法的區別在于能夠避免人為干預,主要采用外部設備收集駕駛員行車過程中的面部和頭部等特征信息.這種方法具有不接觸、不干擾等優點,因此成為大量學者研究疲勞檢測的主流方法.
隨著深度學習技術的不斷進步,被廣泛應用于各個領域,并取得了出色效果.文獻[5]建立了一套基于人臉檢測、眼部檢測、眨眼檢測等模塊的公交車駕駛員疲勞檢測系統,采用一種基于光譜回歸的持續睜眼程度估計方法,但易導致睜眼程度估計的準確性和穩定性不足.Zhao等人使用多任務級聯卷積神經網絡(Multi-taskCascadedConvolutionalNet?works,MTCNN)進行人臉檢測和特征點定位,再用EM-CNN卷積神經網絡對ROI區域進行眼部和嘴部的狀態識別,從而判斷駕駛員是否疲勞[6].該方法在一定程度上能提高檢測準確度,但是其檢測速度較慢,而疲勞檢測對實時性要求較高.
MTCNN是目前在人臉檢測及人臉關鍵點定位任務上效果最佳的算法之一,由于其結構采用了3個級聯網絡,在一些低算力的移動邊緣設備上,檢測耗時過長,這對于高效地檢測駕駛員的人臉區域構成了挑戰.本文采用MTCNN作為駕駛員人臉檢測以及特征定位的理論基礎,并對網絡的參數進行優化.通過采用多特征融合檢測方法,擬解決單一特征疲勞判斷方法存在的局限性和準確率低的問題,同時降低系統模型的參數計算量,減少在低算力移動設備上的檢測延時,從而更易于實際部署.
1 MTCNN人臉檢測算法
在基于面部特征的駕駛員疲勞狀態檢測中,一般采用卷積神經網絡完成特征點提取的工作[7],其中比較具有代表性的是MTCNN.MTCNN算法是一個由三個神經網絡組成的級聯結構,由P-Net、R-Net和O-Net構成[8].
P-Net是MTCNN算法的子網絡,專門用于在12×12×3的RGB圖像上快速生成人臉區域的候選框和特征點坐標[9].其設計目標是提供粗略的人臉區域過濾,為后續的精細過濾和人臉對齊提供基礎.圖1為P-Net網絡結構.
R-Net是MTCNN算法中的第二個子網絡,它利用復雜的卷積神經網絡結構和全連接層來進一步優化和篩選P-Net生成人臉候選框.使得人臉檢測能夠更加精確和可靠.圖2為R-Net網絡結構.
O-Net是MTCNN算法的第三個子網絡(圖3),它在上層網絡的基礎上進一步拓寬輸入圖像尺寸和增加卷積層來提高對人臉區域的捕捉和抑制錯誤窗口的能力,并提供更準確的面部五特征點坐標,這些特征點包括左眼、右眼、鼻子、左嘴角和右嘴角,從而提高人臉檢測的準確率和面部特征的分析效果[10].
1.1 數據樣本預處理
人臉檢測訓練采用了兩種不同的數據集進行人臉檢測與特征點定位.其中,人臉檢測部分使用了WIDERFACE數據集,該數據集涉及了61個事件類型,其中包含了不同尺寸、姿勢等方面的復雜變化,共包含32203張圖片[11].而在人臉特征點定位方面,則使用LFW(LabeledFacesintheWild)數據集,該數據集包括5749人共13233人臉圖像,每張照片都標注有人臉bbox標注框、5個特征點坐標等信息[12].
根據訓練任務的不同,將數據集按照3∶1∶1∶2的比例分為負樣本、正樣本、部分樣本以及人臉關鍵點位樣本四部分進行訓練.
1.2 R-Net網絡參數優化結果分析
為提升MTCNN網絡在有限的硬件開發平臺部署,本文針對R-Net子網絡進行網絡參數調整.因平均池化可以減少參數量,所以將全連接層FC用均值池化GAP替換,將末尾卷積層改為192.R-Net網絡改進前、后的具體參數如表1所示.
改進前的總參數量為101203,改進后為53075.改進后的參數量相比改進前減少了47.5%.證明了實驗優化的有效性.
改進的R-Net子網絡優化前后的MTCNN模型準確率如圖4所示.實驗結果表明,經過參數優化后,準確率由96.7%提升到97.8%,增長了1.1%,可見本次優化進一步提升了MTCNN網絡的人臉檢測以及人臉關鍵點定位能力.圖5為在不同場景下人臉檢測及特征點測試實驗,在多張人臉以及遮擋情況下取得較好的識別效果.
2 面部特征關鍵點檢測
面部關鍵點檢測任務需要標定人臉圖像中的關鍵點,這些關鍵點的坐標可以用于判斷司機是否疲勞[13].采用Dlib人臉關鍵點檢測模型定位面部的關鍵點,測試效果如圖6所示,左圖為模型68個關鍵點結果,右圖為對關鍵點進行了標序,將坐標向量輸入到疲勞檢測模塊中,便于后續進行面部特征提取.
2.1 眼部疲勞特征的提取方法
2017年Soukupová等人提出了一種基于眼睛縱橫比EAR(EyeAspectRatio,REAR)的方法來評估駕駛員的眼睛狀態,用于疲勞駕駛的判斷.
獲取EAR是進行眼部特征提取的關鍵步驟,為后續分析駕駛員是否疲勞提供了重要的基礎.左、右眼睛計算公式分別如式(1)、(2)所示.其中P表示關鍵點坐標.
在不同的人和不同的環境條件下,個體的眼睛特征可能存在差異,通過使用左右眼EAR的平均值,可以在一定程度上減少這種個體差異對檢測系統性能的影響.計算公式如(3)所示:
當眼睛從一種狀態轉換到另一種狀態時,即發生了常見的眨眼動作.在這個過程中,EAR會隨時間發生變化.因此,為了準確判斷眼睛是否閉合,需要設定一個EAR閾值.當EAR低于這個閾值時,可以認為眼睛處于閉合狀態.來監測和評估眼睛的狀態.
在一段模擬駕駛視頻中選取了幾次正常駕駛過程中的眨眼事件,并對其中兩次進行了分析,實驗結果如圖7所示.
經過實驗分析,在單位時間序列中,當駕駛員處于正常睜眼狀態時,EAR值的范圍在0.25至0.32之間.本文設定了一個特定的閾值為0.25來判斷眼睛的狀態,并檢測眨眼行為.在模型檢測到連續兩幀的實時EAR值小于該閾值時,認為駕駛員進行了一次眨眼動作.
2.2 嘴部疲勞特征的提取方法
哈欠可以被視為在身體疲勞狀態下產生的條件反射[14].通過觀察和統計哈欠的頻率,可以直接評估當前的疲勞水平.
通過分析嘴巴的張開程度和哈欠的幀數占比來判斷駕駛員是否處于疲勞駕駛狀態.利用嘴部特征點的位置計算出嘴部的縱橫比值MAR(MouthAs?pectRatio,RMAR),然后根據MAR值來判斷嘴部所處的狀態.
根據公式(4)使用標記的嘴部形狀來計算嘴部縱橫比檢測嘴部張開.
為了確定MAR閾值,收集了駕駛員的視頻數據,并對嘴巴狀態進行分析.通過計算MAR的數值,并觀察駕駛員是否進行打哈欠的動作,根據實驗結果設定一個合適的閾值.實驗結果如圖8所示.
根據實驗結果圖,可以觀察到:嘴巴正常閉合時,MAR值基本保持在0.3左右;當駕駛員開口說話時,嘴巴縱橫比值會有一定的浮動,但通常保持在0.4至0.5之間;而在模擬打哈欠動作時,嘴巴縱橫比值會急劇增加,峰值超過0.6,并且維持相當的時間.基于以上觀察,設定一個閾值,用于判斷駕駛員是否處于疲勞狀態.當嘴巴縱橫比值超過0.6,并且持續一段時間時,可以認定駕駛員正在打哈欠.
2.3 頭部疲勞特征的提取方法
頭部姿態指頭部相對于全局坐標系的方向,如圖9所示.普通人的頭部活動方向受限于俯仰角(Pitch)、滾動角(Roll)和偏航角(Yaw)這三個自由度.俯仰角指頭部在前后方向上的旋轉,滾動角指頭部在左右方向上的旋轉,偏航角指頭部在垂直于地面的平面內旋轉.
在頭部姿態旋轉中的歐拉旋轉角度中,俯仰角(Pitch)和滾動角(Roll)與疲勞導致的點頭動作最為相關.因此,可以通過這兩個角度的變化來判斷是否出現了疲勞動作.據相關資料顯示,在正常駕駛姿態下,俯仰角的變化范圍大致為5°至7°[15],而滾動角幾乎沒有什么變化.
因此,根據設定,當俯仰角的絕對值大于等于20°或者滾動角的絕對值大于等于15°時,則可以認為發生了一次低頭事件,從而計算出單位時間內的低頭幀率占比,根據相關研究所得結果,將其的閾值設定為0.3.
3 實驗結果與分析
實驗硬件選用樹莓派4B(8G)作為實驗設備,采用了Linux操作系統,其中配備了系統設計所需要的軟件包,硬件結構為ARM架構體系的Cortex-A72架構,GPU為VideoCoreVI,性能較之前的版本有所提升.軟件環境采用的開發平臺為PyCharm,深度學習框架為PyTorch,此外還使用到了OpenCV、Dlib、Numpy等機器學習庫.系統框架結構如圖10所示.
3.1 疲勞駕駛數據集
考慮到安全性,無法在實際駕駛環境中完成測試,于是選擇使用YawDD(AYawningDetectionData?set)數據集對疲勞特征檢測準確率進行測試.該數據集里面包含有不同性別、年齡的志愿者模擬實際駕駛場景的視頻,其中包含有模擬疲勞駕駛的視頻.
3.2 算法性能測試
使用YawDD測試集并截取60s為一個樣本,共計60個樣本,將數據集實際真實的檢測結果與算法檢測結果進行對比分析.表2為對三種疲勞特征的準確率及幀率的統計.
在三種疲勞特征中,眼睛特征的準確率最低,而嘴巴特征的準確率最高,初步推測是因為眼睛的特征相對較小,特征更難捕捉,個體之間的差異對檢測準確率影響較大.相比之下,嘴巴與頭部姿態疲勞特征相對容易提取,且在判定時差異相對較小,因此準確率相對較高.系統測試部分效果如圖11所示.
4 結語
本文通過對駕駛員面部特征的研究,確定了基于眼睛、嘴巴和頭部姿態三個疲勞特征融合檢測,為進一步優化MTCNN網絡在有限硬件開發平臺上的部署,針對R-Net子網絡進行網絡參數調整,經過參數優化后,準確率由96.7%提升到97.8%,增長了1.1%,參數量減少了47.5%,進一步提升了MTCNN網絡的人臉檢測以及人臉關鍵點定位能力.最后通過YawDD(AYawningDetectionDataset)疲勞數據集,在資源受限的樹莓派4B設備上實現了高效的疲勞檢測,幀率達到13fps.有效解決單一特征疲勞判斷方法存在的局限性和準確率低的問題,同時降低了系統模型的參數計算量,減少了在低算力移動設備上的檢測延時,從而更易于實際部署.