?

基于Yolov5s 和Dlib 的面部遮擋駕駛員疲勞檢測*

2024-01-12 13:25申家冰
廣東公安科技 2023年4期
關鍵詞:人臉頭部駕駛員

申家冰 許 鋒

(中國刑事警察學院公安信息技術與情報學院,遼寧 沈陽 110854)

引言

目前,國內外駕駛員疲勞檢測方法分為基于車輛行為特征、駕駛員生理特征、駕駛員面部特征三種方法[1]?;谲囕v行為特征的方法所用儀器價格昂貴,市場規模小,難以推廣,且隨著使用時間的增長,設備會因老化造成疲勞檢測準確度下降[2]?;隈{駛員生理特征的方法可以實時檢測且精度高,但因特征信號的侵入性采集,駕駛員會產生一定程度的不適感[3]?;隈{駛員面部特征的方法只需采集駕駛員的面部信息,精度高且成本低,不會使駕駛員產生不適感。綜合上述分析,基于人臉面部特征的疲勞檢測方法在精確度、實時性、成本方面有著更為明顯的優勢,值得進一步深入研究。

目前基于人臉面部特征的疲勞檢測方法仍存在許多不足,許多情況下駕駛員開車需佩戴口罩,因面部遮擋造成收集的駕駛員面部特征減少,增添了駕駛員疲勞檢測的難度。通過查閱文獻及分析研究,發現國內外對駕駛員疲勞檢測研究雖多,但對駕駛員面部遮擋情況下進行疲勞檢測的方法較少,也缺乏針對性的總結。本文基于此設計了一套基于Yolov5s 和Dlib 的面部遮擋駕駛員疲勞檢測預警系統,對駕駛員疲勞程度進行實時監測并及時給予提醒。

1 相關方法

1.1 Yolov5s 介紹

Yolov5s 模型作為Yolo 系列的最新版本,具有更優的檢測精度和更快的推理速度。其中Yolov5s 的網絡最小,雖然精度略低于其他三種,但檢測速度最高[4]。因此,使用Yolov5s 符合本文的設計理念。Yolov5s 網絡結構圖,如圖1所示。

圖1 YOLOv5s 網絡結構圖

Yolov5s 模型由輸入(Input)、特征提取網絡(Backbone)、特征融合網絡(Neck)、檢測網絡(Prediction)四部分組成[5]。Input 層負責控制輸入圖片的大小,Backbone 部分對目標的特征進行提取,Neck 部分主要負責增強主干網絡所提取的特征,Prediction 部分使用GIoU Loss 函數對真實框和預測框之間的差距程度進行預測[6]。

1.2 人臉面部特征點定位

Dlib 庫是一個機器學習的開源庫,包含了機器學習的很多算法,使用方便且不依賴于其他庫[7]。本文利用其中的shape_predictor_68_face_landmarks.dat 模型標注人臉的68 個面部特征點,獲取人臉框架以及人臉特征點坐標,如圖2 所示。根據獲得的信息可以更好地判斷駕駛員面部狀態的變化,根據變化幅度大小進行眼部、頭部、嘴部疲勞參數的計算。

圖2 人臉68 個面部特征點

2 本文方法

2.1 綜合檢測流程

具體綜合檢測流程如圖3 所示。首先讀取攝像頭中的畫面,通過訓練好的Yolov5s 模型判斷駕駛員是否佩戴口罩,如果檢測到佩戴口罩,通過計算EAR、HPE 數值以及設定的條件閾值來檢測每分鐘駕駛員眨眼次數、點頭次數;如果檢測到未佩戴口罩,在檢測每分鐘駕駛員眨眼、點頭次數的基礎上,計算MAR 數值以及設定的條件閾值,檢測每分鐘駕駛員打哈欠次數進行判斷,其他判斷條件與駕駛員佩戴口罩時疲勞檢測一致。

圖3 綜合檢測流程圖

2.2 人臉疲勞特征分析

相關研究顯示,當人們處于疲勞狀態時面部會出現以下明顯特征:眼睛眨眼頻率降低、開合度變小,嘴巴張大打哈欠,頭部開始點頭打瞌睡。因此利用單位時間內眼睛眨眼次數、嘴巴打哈欠次數以及頭部瞌睡點頭次數,可以判斷駕駛員的疲勞程度。此外,當人們疲勞時他們的眼睛會很難睜開,并且會比平時閉上更長的時間,這是人們在疲勞時出現的共性特征,所以利用人眼的疲勞特征進行駕駛員疲勞檢測具有很強的通用性和可靠性。相比之下,人們疲勞時打哈欠嘴巴的開合程度和點頭打瞌睡姿態變化的特征存在較大的個體差異,這會影響疲勞檢測的準確性,因此本文將其作為輔助條件來判斷駕駛員的疲勞狀態。

2.3 眼部疲勞檢測算法

本文使用人眼縱橫比EAR 參數來計算單位時間內的眨眼次數,使用Dlib 庫可以提取到左右眼的12 個特征點(37 ~42 為左眼,43 ~48 為右眼)。以左眼為例,利用眼部特征點的橫、縱坐標計算EAR 值,EAR 值計算公式如下:

當人眼正常睜開時,EAR 值在短時間內變化幅度較小,在0.2 附近波動。當人眼閉合時,EAR 值迅速下降,完全閉合時EAR 值接近于零,為此國內外許多眼部疲勞檢測算法將初始閾值設定為0.2,然后通過計算單位時間內眨眼次數來檢測疲勞程度,沒有將正常狀態與疲勞狀態的眨眼動作區分開。本文通過多次仿真實驗對比,發現將初始閾值設置為0.18 可以滿足實驗要求,為此對于攝像頭捕捉到的每一幀EAR 值,將其與閾值0.18 進行比較。當EAR 由某個值迅速下降至小于0.18,再迅速上升至大于0.18,則判斷為一次眨眼。當駕駛員在正常狀態下開車時,每分鐘眨眼次數在15 ~30 次之間,而當駕駛員處于疲勞狀態時,眼睛會長時間閉合,單位時間內的眨眼次數減少,通過計算單位時間內駕駛員的眨眼次數可以很好地判斷駕駛員疲勞與否。

2.4 嘴部疲勞檢測算法

本文使用嘴巴的長寬比 MAR 值來計算單位時間內的打哈欠次數,首先從Dlib 庫中提取嘴部的6 個特征點(縱向62、68、64、66 四個坐標、橫向61、65 兩個坐標),通過這6 個特征點的坐標差值變化來判斷打哈欠時嘴巴的張開程度。MAR 值計算公式如下:

通過計算MAR 值來判斷是否打哈欠,當人們打哈欠時張口幅度明顯大于人們平時說話時,但由于打哈欠時嘴部的開合程度存在很大的個體差異,因此本文將該特征作為疲勞特征的次要檢測點。由于打哈欠的特征與正常說話、吃東西有明顯不同,通過多次實驗對比分析,發現將MAR 的閾值設定為0.8 能與之相區分。因此本文設定檢測到MAR 值大于閾值0.8 且1min內超過10 次判定為疲勞,仿真結果準確率較高。

2.5 頭部疲勞檢測算法

現實生活中,駕駛員在疲勞狀態下頭部姿態變化主要體現為點頭,搖頭和晃頭出現頻率較少,因此本文通過檢測單位時間內的點頭次數來判斷疲勞程度。HPE 算法是通過檢測2D人臉的關鍵點,利用三維形變模型擬合不同人對應的3D 人臉模型,接著求解3D 點和對應2D 點之間的轉換關系,然后使用Open CV 中的函數solvePnP(),根據旋轉矩陣求解歐拉角,根據得到的低頭歐拉角數據以及面部特征點的位置綜合判斷頭部狀態[8]。但由于點頭時頭部的變化幅度存在很大的個體差異,因此本文將該特征作為疲勞特征的次要檢測點。為了將瞌睡點頭與正常頭部轉動相區分,通過多次實驗對比分析發現,將低頭歐拉角| Pitch |≥25°作為頭部疲勞特征能夠與正常頭部轉動相區分。因此本文設定檢測到低頭歐拉角| Pitch|≥25°且1min 內超過15 次判定為疲勞,準確率較高。

3 設計實驗

3.1 實驗環境及數據集

本文實驗電腦操作系統為Windows10,16G內存,顯卡型號為NVIDIA GeForce GTX 1080,CPU 型號為Intel Core i7 - 6700 CPU @ 3.40GHz處理器,使用pytorch1.10.0 作為深度學習框架。

本實驗從網絡上爬取到2800 張各種未佩戴口罩和佩戴口罩的人臉圖片作為數據集。使用Labelimg 對人臉圖片進行分類標注,數據集中佩戴口罩的人臉照片標注為mask,未佩戴口罩的人臉照片標注為face。按照 6: 1 的比例劃分為訓練集、驗證集,其中訓練集包含2400 張圖片,驗證集包含400 張圖片。

3.2 訓練設置

本文模型訓練過程中設置參數如表1所示。

表1 模型訓練參數

4 實驗結果與分析

利用 Yolov5s 模型在口罩佩戴識別訓練100個epochs 后,按照上述模型評估指標對該模型進行評估,評估結果如圖4 所示。從圖4 中可以看出,模型在訓練中其準確率和召回率穩定提升。當達到飽和狀態后,精準率可以穩定在80%以上;召回率可以穩定在80%左右;平均精度均值也保持在較高水平,可以穩定在0.8左右;模型在實際應用中的識別速度較快,基本滿足實時檢測的要求。

圖4 YOLOV5s 模型的評估結果

5 應用

本文采集了6 位志愿者分別在上午、夜晚兩個時間段,以及是否佩戴口罩和眼鏡4 種不同狀態模擬駕駛汽車的視頻,共采集到60 段視頻。每段視頻各測試2 次,每次測試時間都是60 s?;趯λ袑嶒灁祿姆治?,代碼運算判斷結果基本準確。

目前,國內外面部疲勞檢測常用的方法是結合眼部眨眼和嘴部打哈欠進行判定,設置單位時間內眨眼或打哈欠次數超過一定數值即判定為疲勞,閾值設定沒有充分考慮到和正常人體活動區分開,導致疲勞檢測準確率不高,在駕駛員佩戴口罩情況下會因嘴部特征點缺失極易導致誤判。表2 為佩戴口罩情況下傳統疲勞檢測方法與本文提出的面部遮擋疲勞檢測方法對比結果;表3 為未佩戴口罩情況下傳統疲勞檢測方法與本文提出的面部遮擋疲勞檢測方法對比結果。

表2 駕駛員佩戴口罩情況下兩種方法對比結果

表3 駕駛員未佩戴口罩情況下兩種方法對比結果

表2、表3 判定結果表明,本文提出的面部遮擋駕駛員疲勞檢測方法比傳統疲勞駕駛檢測方法疲勞檢測準確性更高,更貼近實際,實用性更強。

6 結論與展望

針對駕駛員佩戴口罩導致疲勞檢測困難的問題,本文利用深度學習訓練好的Yolov5s 模型判斷駕駛員是否佩戴口罩,如果檢測到佩戴口罩,以眼部疲勞特征為主,頭部疲勞特征為輔進行檢測;如果檢測到未佩戴口罩,在眼部、頭部疲勞特征的基礎上加上嘴部疲勞特征進行檢測。通過計算EAR、MAR、HPE 數值以及設定的條件閾值來檢測每分鐘駕駛員眨眼次數、打哈欠次數、點頭次數,最終綜合判斷駕駛員疲勞狀態。結果顯示此系統疲勞檢測準確率較高,可以在駕駛員疲勞時給予及時的提醒。但由于夜晚光線較暗且駕駛員面部被遮擋可能會導致誤判,如果增強攝像頭的夜間拍攝性能或者車輛內部增加照明設施,可以更好地提高面部遮擋駕駛員疲勞檢測的準確率。

猜你喜歡
人臉頭部駕駛員
基于高速公路的駕駛員換道意圖識別
駕駛員安全帶識別方法綜述
有特點的人臉
頭部按摩治療老伴失憶
火箭的頭部為什么是圓鈍形?
三國漫——人臉解鎖
起步前環顧四周是車輛駕駛員的義務
自適應統計迭代重建算法在頭部低劑量CT掃描中的應用
馬面部與人臉相似度驚人
長得象人臉的十種動物
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合