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