周萬根 黃雋


摘 要 本研究設計了一種疲勞駕駛檢測系統,硬件主要采用DSP芯片和紅外攝像頭,軟件利用OpenCV開源庫,進行人臉識別和人眼信息檢測,從而進行疲勞檢測。該系統的檢測效果較好,對疲勞特征進行融合加權之后可以達到92%的準確率,檢測幀率普遍維持在24FPS左右,完全滿足疲勞檢測對實時性的要求。
關鍵詞 疲勞駕駛 人臉識別 人眼定位 DPS芯片
中圖分類號:TP391 文獻標識碼:A 文章編號:1007-0745(2022)03-0001-03
疲勞駕駛作為影響駕駛安全的重要因素之一,已成為熱門研究課題。國內外對疲勞駕駛檢測的研究方法總體上可以分為兩大類:主觀檢測方法[1]和客觀檢測方法[2]。主觀檢測方法包括評價性檢測與生理反應檢測。然而,主觀方法存在自身的局限性,只能用于疲勞判定,難以用于汽車行駛環境。本文采用人臉識別分析人眼特征的疲勞檢測算法,適合于汽車行駛的場合,具有較高的便捷性、實用性和經濟性,可接受性強,并且檢測準確率高,因而具有較好的研究價值和社會價值。
1 系統的工作原理
如圖1所示,在DSP的硬件平臺,軟件利用Op- enCV提供的框架提取視頻文件,從視頻流循環中讀取圖像;對圖像做維度擴大,并進灰度化;提取幀圖像檢測人臉,用矩形框標注人臉,并對人臉圖像標識 68 個關鍵特征點;將臉部位置特征信息轉換為數組格式,分別提取左右眼坐標,構造函數計算眼部特征EAR值;根據EAR值實時計算PERCLOS值,再結合非疲勞時的EAR,兩者實時對比,即可判定為是否疲勞狀態,超過疲勞閾值則發出疲勞示警。
2 硬件設計
采用DSP芯片TMS320C6748搭建圖像采集與處理的硬件系統,其中還有紅外CCD(DH-S10-1080P)、聲光預警電路和3.5寸LCD屏,組成了一套具備實時采集、處理、圖像顯示的系統。紅外攝像頭安裝在駕駛臺上前方,通過USB把圖像傳輸給DSP,在夜晚也能采集駕駛員臉部圖像。硬件系統的組成如圖2所示,紅外攝像頭安裝在駕駛臺上前方,通過 USB 端口把圖
像數據傳輸到DSP芯片內部,在光線較差的夜晚也能較清楚的采集到駕駛員臉部的圖像信息。DSP內部運行調用OpenCV圖像識別開源庫,進行人臉識別,將采集的圖像顯示在3.5寸的液晶屏上,其中可以根據參數設置選擇是直接顯示采集的圖像和帶有測試點的圖像信息,帶有測試點的顯示模式便于程序調試。SD卡作為存儲元件,是保存駕駛員的人臉特征信息,尤其是精神飽滿時的特征值,以便于實時判別其疲勞狀態。
3 軟件設計
3.1 人臉定位
利用 OpenCV 讀寫視頻流,循環出圖像幀,初始化 DLIB 的人臉檢測器(HOG),然后創建面部標志物預測。引入并使用人臉識別算法應用中的開源檢測器工具dlib.get_frontal_face_detector 和 dlib.shape_predictor 構建人臉位置檢測器[3],再獲取人臉特征關鍵點。對從視頻流中循環讀取出的幀圖像做維度擴大,并灰度化。使用 detector(gray,0)進行人臉位置檢測,使用predictor(gray,0)獲取人臉特征關鍵點的位置信息,參數gray表示灰度圖。將獲取的信息轉換為array 數組格式。再使用 cv2.convexHull 獲取數組array的凸包位置,畫出人臉輪廓位置,進行畫圖操作。使用 shape_predictor_68_face_landmarks.dat,可以得到 68 個特征點位置的坐標,其中人臉外輪庫的標記點的序號為0-16,共計17點,右眉毛的特征點序號為17-21共5個點,左眉為22-25,鼻部的特征點的序號為27-35,右眼特征點序號36-41,左眼為42-47,48-67均為嘴唇的特征點。這些特征點的坐標值就可以用于一些相關信息的計算,其中36-47可以作為雙眼睜閉信息的識別。
3.2 人眼信息識別及PERCLOS值計算
根據已經得到的 68 個特征點位置的坐標,參照以上描述的人臉各個重點部位的特征點序號,右眼36-41或者左眼42-47可獲得1個眼長和2個眼寬參數,以右眼為例眼長為36與39之間橫向差值,眼寬共有兩個,寬1為37與41的縱向差值,寬2為38與40的縱向差值,并計算眼睛長寬比EAR值如式(1)所示:
用EAR大小判定眼睛的睜閉狀態,還可以求得眼皮遮擋眼球率,用于計算一定時間內閉眼所占的比例值,即PERCLOS值[4],從而進行疲勞判斷。如圖3所示,圖中的t1為眼睛睜開最大程度至閉合眼度20%的時間,也稱為睜開程度80%的時間,t2是從最大睜開度到閉合度80%的時間,t3為從最大睜開度到閉合度100%,再到睜開度為20%的時間和,而t4則可以認為是整個閉眼動作的全周期的基礎上減去t1的值。
PERCLOS疲勞檢測式通過計算人眼的睜開閉合程度,用來衡量疲勞的標準。PERCLOS的具體概念為在規定的時間內人眼閉合某個程度的時間所占總時間的百分比,故有一個閾值用于判斷人眼是否閉合,對于這個閾值有三個標準,即P70、P80和EM[5]等標準值。它們具體含義為:P70,遮擋眼球面積大于70%,判定為閉眼;P80,遮擋大于80%;EM,遮擋大于50%,即判定為閉眼。選擇任一標準,然后計算眼睛閉合時間比例。PERCLOS的理論值f,需要計算時間值t1~t4,f值的公式如式(2)所示:
在實際檢測中,時間的精準度難以保證,主控芯片需要實時讀取攝像頭的圖像數據,將圖像信息發送至液晶屏顯示,而且還需要運行OpenCV 庫代碼進行人臉識別,上述三個任務讓DSP消費的時間很難精確到毫秒級甚至微秒級別,因此用直觀的時間概念來計算PERCLOS的理論值f有點不切實際,故采用檢測幀數的計數結果作為時間的參照替代參數,從而便有了PECLOS實際值,或稱為PECLOS近似值的計算,其計算方式以檢測幀數為參數進行描述,表示見式(3):
每次開啟系統,一般認為是駕駛員精神最佳狀態,此時人眼活動可以作為聚類學習的庫,采集3~5分鐘的人眼信息后,進行聚類分析,可以得到眼睛的最大睜開特征值和固定眨眼頻率參數等,將其保存起來,再采集50個眼睛睜開特征值,求得平均值作為疲勞判定閾值,就可以用于后續行駛過程中實時判斷駕駛員的疲勞狀態。
4 系統測試結果
在室內自然光和黑暗無光環境均進行了測試,紅外攝像頭均可以采集到駕駛員的臉部圖像,在灰度顯示模式下,同一個駕駛員的臉部信息的采集受到外界光源的影響較小。在以DSP TMS320C6748為主芯片的Analog Devices Visual DSP++平臺下,運行OpenCV視頻流讀寫庫,能夠實時采集人臉信息,識別出人臉的68個特征點,對于同一個駕駛員在疲勞和非疲勞狀態,在68個特征點中的雙眼12個特征點的相對位置變化較為頻繁,嘴部特征點也有一些細微變化,其他部位的36個點均較為穩定,通過實時計算人眼的特征值,實現疲勞檢測的功能,并能發出警示聲光。實驗結果表明本系統能實現疲勞駕駛的檢測功能,能達到92%的準確率,檢測幀率普遍維持在24FPS左右,完全滿足疲勞檢測對實時性的要求。
5 結語
本文基于DSP平臺,采用OpenCV開源資源對駕駛人進行人臉識別,實現了實時疲勞告警的功能需求,因其設備便攜度高,可以廣泛應用于汽車出行。該系統具備良好的可維護性和可拓展性,經過進一步訓練與改進,能夠成為一個功能更加完備、人機交互更加舒適的疲勞駕駛檢測系統。
參考文獻:
[1] 張娟萍.人臉識別與對比技術在物聯網智能交通中的應用[J].電子技術與軟件工程,2019(16):166-167.
[2] 張廷,熊章錦,周小凱,等.基于云平臺的疲勞駕駛檢測系統[J].中央民族大學學報(自然科學版),2020,29 (03):61-66,70.
[3] 戴燕玲.基于人臉識別技術的汽車防疲勞駕駛系統[J].電子技術與軟件工程,2020(12):119-120.
[4] 朱名流,李頂根.基于人臉特征點的疲勞檢測方法研究[J].計算機應用研究,2020,37(S2):305-307.
[5] 鐘馬馳,張俊朗,藍揚波,等.基于人臉檢測和模糊綜合評判的在線教育專注度研究[J].計算機科學,20 20,47(z2):196-203.