張貝寧,郜健銘,王靖涵,張 敬,頓媛雅,許留洋
(周口師范學院,河南 周口)
疲勞駕駛是誘發(fā)交通事故的重要因素,如果能夠在駕駛員出現(xiàn)駕駛疲勞時準確檢測并進行語音提醒,可以幫助駕駛員集中注意力,從而降低交通事故的發(fā)生率。基于機器視覺的駕駛員危險駕駛檢測系統(tǒng),利用車內(nèi)攝像頭實時采集駕駛員的頭部圖像信息,并通過人臉檢測算法對駕駛員的眼睛狀態(tài)進行識別,通過算法計算出是否處于疲勞狀態(tài)。當判定為疲勞駕駛時,通過語音提示駕駛員及時休息,切實保障了行車安全。
該系統(tǒng)對圖像處理速度要求較高,為滿足系統(tǒng)的實時性要求采用了TMS320C6748 型DSP 芯片,該芯片能減少卷積運算和信號濾波的時間,顯著提高了數(shù)字信號的運算速率,滿足了實時檢測的需求。從組成架構(gòu)上來看,駕駛員危險駕駛檢測系統(tǒng)主要由圖像采集、圖像存儲和圖像處理3 個核心模塊構(gòu)成,除此之外還有配套的電源模塊、語音報警模塊等,硬件的整體架構(gòu)見圖1。
圖1 系統(tǒng)硬件結(jié)構(gòu)圖
圖像采集模塊的核心設備是前端攝像頭,用于收集汽車駕駛員的圖像信息,將收集信息進行A/D 轉(zhuǎn)換后利用VPIF 接口輸入到DSP 芯片中。CPU 對轉(zhuǎn)換后的信息進行處理,利用EDMA 控制器將處理后的結(jié)果傳輸至存儲器中。根據(jù)分析結(jié)果,如果系統(tǒng)判定駕駛員存在危險駕駛行為,則利用McASP 音頻輸出接口控制報警器發(fā)出警報,提醒駕駛員。
該模塊的主要作用是采集駕駛員的實時圖像,因此對攝像頭的像素、靈敏度、動態(tài)范圍等參數(shù)有較高的要求。本系統(tǒng)選用帶圖像傳感器的MT9V034 型攝像頭,輸出圖像的像素為760×500,最大時鐘頻率30 MHz,在光線較暗的環(huán)境下也能清晰成像。在確定攝像頭的型號與參數(shù)后,還要尋找合適的安裝位置。為了拍攝到完整的駕駛員頭部圖像,將攝像頭放置在駕駛員前方35~40 cm 處,仰角為60~70°,攝像頭焦距在15~18 mm 之間。
處理器的性能決定了駕駛員危險駕駛檢測系統(tǒng)的應用效果,本系統(tǒng)的處理器(CPU)選擇TI 公司生產(chǎn)的TMS320C6478 芯片,該芯片擁有C674X 內(nèi)核結(jié)構(gòu),內(nèi)置64 個32 位的通用寄存器,支持C674x 系列指令集和C++語言,降低了系統(tǒng)的開發(fā)難度。提供VPIF 視頻接口和McSAP 語音接口,提高了圖像、語音、視頻等多種類型信息的傳輸能力。配備的EMDA 增強型訪問控制器,對提高系統(tǒng)的整體運行效能有積極幫助[1]。
在系統(tǒng)檢測到駕駛員處于疲勞駕駛狀態(tài)時,播報警示語音提醒駕駛員集中注意力或盡快停車休息。該模塊的核心硬件是TLV320AIC3106 音頻芯片,共有3個I/O 口。其中2 個為音頻輸入口,分別是音頻模擬輸入口、麥克風輸入口;1 個音頻模擬輸出口。在系統(tǒng)啟動運行后,把報警語音文件通過音頻模擬輸入口傳輸?shù)叫酒校⒗脙?nèi)置的A/D 轉(zhuǎn)換模塊將音頻信號變成電信號。當系統(tǒng)檢測到駕駛員處于疲勞駕駛狀態(tài)后,觸發(fā)語音報警功能。此時音頻芯片控制音頻模擬輸出口工作,再重新將電信號轉(zhuǎn)變?yōu)樯硇男盘?,利用外置揚聲器播報語音。
本文設計的駕駛員危險駕駛檢測系統(tǒng),軟件部分主要由圖像采集、圖像預處理、人臉檢測和危險駕駛判定等核心模塊構(gòu)成,軟件結(jié)構(gòu)見圖2。
圖2 系統(tǒng)軟件結(jié)構(gòu)圖
在硬件初始化后,軟件部分同步運行,圖像采集模塊收集駕駛員的圖像,并執(zhí)行一個判斷程序“是否成功獲取一幀圖像?”如果判定結(jié)果為“否”,則返回初始化程序,重新采集圖像信息;在判定結(jié)果為“是”后,進入圖像預處理環(huán)節(jié)。預處理后的圖像有兩種用途,一種是進行人臉檢測,通過人眼定位、提取眼睛閉合度、計算Perclos 值等一系列處理后,完成危險駕駛的判定;另一種是用于分心駕駛判定。如果有疲勞駕駛和分心駕駛行為,則進行語音告警。
2.2.1 圖像預處理
在汽車行駛過程中,由于外界光線的變化以及車輛或攝像頭的抖動等原因,采集到的圖像可能會出現(xiàn)噪聲、失真等情況,導致圖像的清晰度變差,影響檢測結(jié)果的準確性。為了避免此類問題,在設計駕駛員危險駕駛檢測系統(tǒng)的軟件時,加入了圖像預處理模塊,具體方法有兩種:
其一是圖像濾波法,已知圖像的能量主要分布于幅度譜的中低頻段,噪聲主要分布于高頻段,通過圖像濾波有助于降低高頻成分幅度,達到去除噪聲的效果。同時,圖像濾波還能盡可能地保留圖像的細節(jié)特征,不影響圖像本身的精度。其二是光照補償法,主要是解決因為光照過強或過暗引起的圖像失真問題[2]。目前常用的補償算法是直方圖均衡法,計算待處理圖像的灰度分布直方圖,然后通過非線性變換讓圖像中的像素值重新排列,讓像素從集中分布變?yōu)榫鶆蚍植?,達到光照補償效果。
2.2.2 人臉檢測
對于預處理完畢后的圖像,使用AdaBoost 算法做進一步分析,提取特征并檢測圖像中的人臉。人臉檢測的實現(xiàn)大體可分為兩個步驟,即分類器訓練和圖像檢測,流程見圖3。
圖3 人臉檢測流程圖
樣本質(zhì)量在一定程度上決定了分類器對人臉的識別準確度,為此必須提供足夠多的樣本圖像數(shù)據(jù)進行分類器的訓練[3]。在選擇樣本時,收集10 000 張人臉圖像作為正樣本集,同時收集6 000 張非人臉圖像(如動物、汽車、風景等)作為負樣本集。利用正負樣本集訓練分類器。利用Haar-like 特征構(gòu)建弱分類器,其數(shù)學模型為:
上式中,x 表示子窗口圖像,f(x)表示圖像的Haar-like特征值,p 表示不等號的方向,θ 表示閾值。如果Haar-like 特征值在閾值內(nèi),則輸出結(jié)果為“1”,表示圖像為人臉;反之,如果Haar-like 特征值不再閾值內(nèi),則輸出結(jié)果為“0”,表示圖像為非人臉,由此實現(xiàn)人臉檢測。按照上述方法對分類器進行500 次迭代訓練。執(zhí)行一個判斷程序“是否達到迭代次數(shù)?”,在迭代次數(shù)達到500 次后完成訓練,將結(jié)果保存為XML 文件,并利用訓練好的分類器進行人臉檢測。
2.2.3 疲勞駕駛判定
當駕駛員長期駕駛并出現(xiàn)駕駛疲勞時,會出現(xiàn)眨眼頻率升高、眼睛閉合速度變慢、閉眼時間過長等生理特征[4]?;跈C器視覺的疲勞駕駛檢測就是在識別人臉的前提下,對人眼的狀態(tài)進行識別,從而利用相關參數(shù)判斷駕駛員是否處于疲勞狀態(tài)。本文采用了以統(tǒng)計像素值為基礎的計算眼睛張開度的方法,計算公式如下:
上式中,H(i)表示第i 幀圖像中眼睛的睜開度,Hm×1/2 表示判斷眼睛睜閉的閾值。如果f(i)為0,表示眼睛閉合;如果f(i)為1,表示眼睛睜開。
在識別眼睛狀態(tài)的基礎上,還要提取疲勞參數(shù)、進行疲勞判定?,F(xiàn)階段常用的疲勞參數(shù)提取方法有兩種類型,分別是基于脈搏、心率的生理參數(shù)法和基于眨眼頻率、眼睛閉合時間的視覺特征參數(shù)法,本文選擇后一種方法,并將單位時間內(nèi)眼睛閉合時間百分比(Perclos)作為判定指標[5]。Perclos 與疲勞程度的映射關系如圖4 所示。
圖4 Perclos 與疲勞程度的關系曲線
由圖4 可知,Perclos值越高,說明疲勞程度越高,該值可通過以下公式求得:
上式中,M 表示60 s 內(nèi)眼睛閉合圖像的幀數(shù),m 表示60 s 內(nèi)系統(tǒng)采集到的圖像總幀數(shù)。
本系統(tǒng)的硬件部分包括TMS320C6748 芯片、MT9V034 攝像頭、LCD 顯示屏,以及1 臺GYX1060 計算機;軟件部分使用Matlab2018 進行系統(tǒng)開發(fā),使用OpenCV 數(shù)據(jù)庫,運行系統(tǒng)為DSP/BIOS。收集1 000張(700 張為人臉、300 張為非人臉)圖像和50 段視頻進行檢測。
3.2.1 人臉檢測結(jié)果
將1 000 張圖像輸入到駕駛員危險駕駛檢測系統(tǒng)中,測試人臉檢測準確率,結(jié)果見表1。
表1 人臉檢測分類器測試結(jié)果
由表1 數(shù)據(jù)可知,對于非正面人臉、多人臉和有遮擋的圖像,分類器的檢測準確率較高,基本維持在90%以上;而光照過強或過暗的圖像,檢測準確率相對較低,這表明光線強弱是影響人臉檢測準確率的核心因素。
3.2.2 疲勞駕駛判定結(jié)果
將50 段駕駛員的駕車視頻(時長40~100 s)作為檢測樣本,利用該系統(tǒng)進行疲勞判定,結(jié)果見表2。
表2 疲勞駕駛判定結(jié)果
參與檢測的50 段視頻中,有43 段視頻的疲勞判定結(jié)果準確,準確率為86%;其他7 段視頻中,有5 組屬于正常駕駛,系統(tǒng)判定結(jié)果為輕度疲勞,這意味著在系統(tǒng)設計時需要適當提高疲勞駕駛的判定閾值。
基于機器視覺的駕駛員危險駕駛檢測系統(tǒng)以前端攝像頭提供的圖像作為分析對象,檢測到人臉后提取眼部參數(shù),然后求解Perclos 值,進而推測出駕駛員的駕駛狀態(tài)。如果判定為疲勞駕駛則進行語音提示,使駕駛員集中注意力。該系統(tǒng)判定結(jié)果的準確率可以達到86%,應用效果符合設計預期。