胡冠山
山東交通學院,山東濟南 250357
汽車數量增長在給人們日常生活帶來極大便利的同時,交通事故數量也隨之增加,給社會造成了巨大的財產損失和人員傷亡。在對交通事故原因的調查統計中,疲勞駕駛是其中一個重要因素。檢測疲勞駕駛行為,給出預警,是減少疲勞駕駛引發事故的一種途徑。目前,用于檢測疲勞駕駛行為的方法主要包括3類:基于生理參數檢測、基于車輛行為檢測和基于面部特征分析的檢測。
基于生理參數的檢測方法是給駕駛員穿戴一些輔助設備,通過檢測駕駛員的心電圖、腦電圖、融合測量肌電圖、脈搏等生理信號,提取數據特征,分析判別駕駛員疲勞狀態。該方法雖然具有較高的疲勞駕駛檢測精度,但需要駕駛員皮膚粘貼或穿戴一些接觸式的傳感設備,給駕駛員帶來行動或生理的不便,造成不舒適感;基于車輛行為的檢測方法是通過收集車輛在行駛期間車道偏離狀態、方向盤轉角和偏航角等車輛行為參數,分析車輛是否存在異常操作來判別駕駛疲勞行為。該方法極易受到外界因素干擾,存在識別率低或誤判的情況;基于面部特征分析的檢測是目前應用較多的一種方法,通過采集駕駛員人臉圖像后,利用視覺算法或深度學習算法對駕駛員面部進行分析,檢測駕駛員的眼睛狀態,眨眼和哈欠等疲勞行為特征來判別是否處于疲勞駕駛。該方法具有非入侵、易于實現和較高準確率等優點[1]。根據以上3種檢測方法的特點,本文采用基于面部特征分析的疲勞檢測算法,適合于嵌入式場合,具有較高的便捷性、實用性和經濟性。
根據對駕駛員疲勞狀態監測的需求,利用圖像設備采集駕駛員的面部信息作為數據輸入到嵌入式MCU中,控制器對圖像數據進行算法運算處理后,采用PERCLOS算法判定駕駛員狀態。如果駕駛員處于疲勞狀態則進行聲光報警提示,同時把檢測結果和車輛定位信息等數據傳到遠程監控平臺[2]。系統總體結構如圖1所示。

核心控制器采用嵌入式32位高性能ARM Cortex-M3處理器STM32F103ZET6,其最高工作頻率可達 72 MHz,具有64 kB SRAM、512 kB FLASH、2個基本定時器、4個通用定時器、2個高級定時器;13個通信接口,5個串口可進行全雙工通用同步/異步串行收發;3個SPI接口可以使MCU與各種外圍設備進行信息交換,如系統與LD3320語音模塊的通信;2個II2C接口可進行雙向二線制同步串行通信;1個USB端口可直接使用與攝像頭相連,進行人臉圖像采集。
在車輛行駛中,駕駛員在白天和夜晚都有可能出現疲勞駕駛現象,考慮到夜晚更容易發生疲勞駕駛并且光線較暗,采用普通的攝像頭可能無法清晰地捕獲到駕駛員面部信息,因此,本設計采用DH-S10-1080P紅外高清攝像頭進行人像臉部的圖像采集。DH-S10-1080P安裝在駕駛臺上前方,通過USB 端口把圖像數據傳輸到微處理器STM32F103ZET6,在光線較差的夜晚也能較清楚的采集到駕駛員臉部的圖像信息。
為了實現遠程中心能夠動態了解車輛的位置信息,采用GT-1010-MTBD集成模塊進行車輛定位。GT-1010-MTBD可在GPS和北斗系統間雙模式切換,該模塊外形尺寸為9.6 mm×9.6 mm×2.0 mm,電流功耗在12~16 mA左右,與Fastrax IT530等模塊完全兼容,非常適合應用于平板電腦、戶外定位手表、野外定位等嵌入式產品。GT-1010-MTBD模塊支持2個全雙工串行通道UART0和UART1,接口為3.3 V邏輯電平,通過引腳15-TXA和引腳16-RXA與微處理器STM32F103ZET6的TXD和RXD串口進行數據連接。
本設計采用TC35i完成與遠程中心的數據通信,該模塊是德國Siemens公司推出的雙頻900/1800 MHz高度集成GSM模塊,模塊有AT命令集接口,支持電壓范圍3.3~4.4 V,與單片機電平兼容。TC35i通過18管腳RXD和19管腳TXD與微控制器的TXD和RXD串口通信,可以安全、迅速、可靠地實現系統方案中的數據傳輸服務,包括駕駛員駕駛狀態發送、車輛位置發送和遠程終端指令的接收。
當檢測到駕駛員疲勞狀態時,系統采用聲音提示和燈光報警對駕駛員進行警示。聲音報警采用LD3320芯片,該芯片具有高精度的語音識別效果,可以動態編輯識別關鍵詞列表,該模塊與處理器STM32F103ZET6采用SPI通信模式進行通信,為全雙工模式,根據檢測到的疲勞程度,在處理器控制下可以播放不同聲音予以警示。
燈光報警模塊采用LED燈,當判別駕駛員疲勞時,可實現以一定頻率閃爍報警。LED燈通過晶體管放大電路與處理器STM32F103ZET6引腳連接,當判別到駕駛員疲勞狀態時,處理器輸出PWM波驅動燈光閃爍報警。
本設計中對駕駛員疲勞狀態檢測采用圖像識別算法,以眼睛閉合狀態作為判別依據,圖像識別算法設計主要包括人臉識別、眼睛閉合檢測、疲勞判別3個步驟。
對于圖像中人臉區域的識別,目前經常采用的方法是Harr級聯檢測、HOG-SVM以及深度學習算法。考慮到車載嵌入式微處理器的數據能力和系統的實時性要求,本設計選用速度較快的HOG+SVM 方法進行駕駛員人臉檢測,對駕駛員人臉圖像識別后,利用人臉圖像中眼睛區域與周圍區域相比灰度值較低的特點,采用灰度積分投影法來定位眼睛,計算眼睛的閉合程度,根據眼睛閉合程度,利用PERCLOS算法計算,判別檢測出司機的疲勞狀態[3]。系統識別算法設計實現流程如圖2所示。

人臉檢測是粗定位,是為了確定下一步驟——人眼檢測的搜索區域。HOG-SVM是方向梯度直方圖(histogram of oriented gradients,HOG)與支持向量機(support vector machine,SVM)相結合的人臉檢測算法,可以有效提取人臉特征并準確完成人臉定位。
HOG利用梯度及梯度方向的統計信息來描述圖像,具有較好的光學不變性與幾何不變性,尤其適用于目標檢測,對人臉圖像利用HOG特征提取如圖3所示。

HOG特征提取首先把人臉圖像灰度化處理后進行梯度大小和梯度方向的計算,圖像梯度算法:

其中,H(x, y)——像素點(x, y)的像素值;
Gy(x, y)——像素點(x, y)的垂直方向梯度;
Gx(x, y)——像素點(x, y)的水平方向梯度。
圖像像素點(x, y)處的梯度幅值大小以及梯度方向的定義如下公式:

將圖像劃分成小的細胞單元,一個cell細胞大小為8 px×8 px,再由4個細胞組成block塊,統計梯度方向時首先以細胞為單位進行統計,之后再以塊為單位進行處理。一個block內所有cell的HOG特征串聯起來歸一化便得到該塊的HOG特征,將該圖像內所有塊的HOG 特征串聯起來,就可以得到該圖像的HOG特征了。
支持向量機SVM是一種二分類模型,用SVM作為人臉分類器,將HOG特征作為SVM輸入特征進行人臉窗口圖像分類,再進行漏檢或誤檢識別。
在臉部圖像中,由于眼睛區域比周圍區域較暗,所以此處采用灰度積分投影法來實現對眼睛定位。首先,對人臉圖像進行水平和垂直方向的投影,根據波谷、波峰的分布情況來定位眼睛區域;然后,對人眼二值化圖像坐標系x軸方向水平投影,確定輪廓邊界點x1和x2,在x1到x2之間每一列中的像素個數n,選取出n值最大處為xm,在xm對應坐標進行垂直積分投影,得到y2和y1求出眼睛張開度,如圖4所示。
臉部圖像中,灰度值用G(x, y)表示,垂直投影就是將同一列范圍內的像素點的灰度值進行累加計算出來,圖像垂直區域[y1,y2]積分投影為:


圖像水平投影就是將同一行范圍內的像素點的灰度值進行累加后計算出來,圖像水平區域[x1,x2]積分投影為:

眼睛閉合時間百分比(percentage of eyelid closure,PERCLOS)是依據單位時間內眼睛閉合超過某一閾值時間在總時長的占比進行疲勞評判。大量實驗對比研究證實,在面部指標中,PERCLOS評價指標能夠最有效地檢測出司機的疲勞狀態,P80是以眼睛張開度80%作為閾值計算張開度,與駕駛疲勞的相關性最好[4]。
在設計中,圖像檢測是以視頻序列的幀為單位,P80的計算公式可以轉化為:

考慮到對于系統實時性的要求和處理器速度,本系統攝像輸出速度選定為15幀/s進行采集。通過測試研究,本設計對駕駛員的疲勞狀態進行了兩級分類處理,當P80大于30%時為初級疲勞狀態,報警系統給出聲光報警,對駕駛員給予提醒,防止其進入疲勞狀態;當P80大于50%為嚴重疲勞狀態,提高聲音強度進行聲光報警,并把數據遠傳到遠程監控中心,以便對駕駛員的駕駛行為進行干預。
采用一般疲勞狀態、嚴重疲勞狀態各20張以及正常狀態臉部照片40張,作為測試樣本輸入系統進行檢測,以人眼為檢測指標的檢測結果如表1。通過對實驗結果分析可知,基于面部眼睛狀態指標作為疲勞檢測判斷標準準確度在較高范圍。

表1 人臉檢測實驗測試
本文設計基于圖像識別的嵌入式車載駕駛員疲勞檢測系統,選用嵌入式STM32作為處理器,采用快捷的機器視覺算法判別駕駛員狀態,具有低成本、實時性高、設備體積小和安裝便捷等特點。該設備能夠有效地實現對駕駛員疲勞狀態的檢測,有一定的便利性和實用性。系統中采用眼睛張開度的單一參數作為判別,受到拍攝圖像質量的較大影響,后續改進中可以增加對駕駛員低頭、哈欠等多種狀態的檢測,在保證快速性的同時提高魯棒性,為安全駕駛提供保障。