饒睿
(廣西科技大學,廣西 柳州545026)
中國每年因疲勞駕駛引起的交通事故占總體交通事故的20%[1]。應進行駕駛員的疲勞狀態檢測,從而使得有效預警和干預成為可能,這是提高行車安全、尤其是長途駕駛安全的重要保障技術。
傳統疲勞檢測方法主要使用類似HOG 特征,Haar 特征等[2]用于特征描述,分類器主要使用SVM 分類器等[3]。如今深度學習在目標檢測領域取得很大進步,基于CNN 的疲勞檢測已成為當前的熱點[4],例如,張芳等[5]使用面部關鍵點提取眼睛圖像,使用CNN 來確定眼睛位置和形態,提取眼部特征用于檢測疲勞駕駛。本文采用單發多框檢測器(Single Shot Multibox Detector,SSD),同時對人眼睛和嘴巴進行定位與狀態的識別,這種方法檢測效果更為穩定,且識別率更高。
本文自制數據集包括來自7 名被采集對象的4823 張圖像,其中包括不同頭部狀態、是否佩戴眼鏡、不同場景以及2353 張來源于現實駕駛場景的視頻錄像的圖片。采用標注工具LabelImg 對圖像中的眼部和嘴部特征進行標注[6],一共四個分為四個類別,其中O_eye 代表眼睛張開、C_eye 代表眼睛閉合、類似的、O_mouth 和C_mouth 分別對應與嘴巴張開或閉合。完成標注并保存后LabelImg 將為圖片生成相對應的XML 格式的標注文件。
SSD 全稱為單發多框檢測器,是一種深度卷積神經網絡。常見目標檢測算法有區域卷積神經網絡(R-CNN)系列、YOLO 系列等,而SSD 兼顧精度和檢測速度[7]。
其基礎網絡是一個在ImageNet 上針對圖像分類預訓練后的VGG-16 模型,為了使該網絡結構能夠進行目標檢測,對部分網絡層進行微調。微調后的網絡圖(圖1)包括:使用卷積并替換全連接層、移除dropout 層、使用一個擴張卷積替換最后的最大池化層。
為了得到感受野變化的特征圖,在基礎網絡層后,疊加卷積核大小依次縮小的卷積層以生成更小的特征圖,這樣就構成了完整的SSD 網絡(圖2)。
2.3.1 對多個尺度的特征圖進行操作

圖1 VGG-16 基礎網絡

圖2 SSD300 模型
首先在輸入圖像中通過卷積提取出特征圖,并以提取后的特征圖的像素為中心生成先驗框以減少數據量。通過提取較多區域來檢測小目標,提取較少區域來檢測的目標的方法產生多個尺度的特征圖。
2.3.2 在位置確定和類別判定中應用CNN
在通過輔助CNN 層后將生成大小各異的特征圖(對應于不同感受野),該操作不但能降低參數規模,還能提高對不同大小目標的檢測準確率。
2.4.1 匹配策略
通過計算像素重合的交并比來衡量此時先驗框和真實物體的相似度。

2.4.2 損失函數
總體損失函數為定位損失(loc)和置信度損失(conf)的加權和:

其中c 表示分類標簽,l 表示先驗框,g 表示實際目標所在的矩形框,N 表示與真實邊框匹配的先驗框的數量,α 默認為1,為權重調整參數。
位置的偏離程度采用平滑后的范數損失進行衡量:

其中x 是0 到1 之間的實數,d 為目標檢測的先驗框。如果x=1,表示第i 個先驗框與第j 個實際目標位置一致,P 為此時實際目標框的類別,如果x=0,則先驗框和實際目標框的類別不一致,此時將其視為負例,且不再計算其位置偏移值。(cx,cy),w,h分別表示矩形框的中心位置,寬度和高度。
分類錯誤的懲罰采用交叉熵損失函數:

PERCLOS 是駕駛疲勞判定的重要指標,原理是通過計算一段時間的眼睛閉合時間所占比例判斷疲勞狀態,我們選擇P80標準判斷駕駛員是否疲勞[8]。

圖3 人眼睜開程度示意圖
通過圖3 可得到PERCLOS 值的計算公式為

通過計算一段連續視頻中的閉眼狀態的單幀圖像數K 和視頻單幀圖像總數N 可計算計算PERCLOS 值:

本文提出一種基于模糊綜合評價的疲勞,對于人的不同疲勞狀態特征劃分疲勞狀態,通過對不同特征給予不同權重計算加權和,來判定是否存在疲勞駕駛,將最終的駕駛員狀態確定為三者之一:為清醒、疲勞與重度疲勞。狀態評估值計算公式如下:

其中P 代表PERCLOS 值,B 統計閉眼次數,C 記錄眼睛持續保持閉合狀態的最長時間,Y 代表張嘴次數,VP、VB、VC、VY為不同狀態下的指標P、B、C、Y 所處評級的評價,設F1 為疲勞狀態下閾值,F2 為重度疲勞狀態下的閾值,將計算得到的評估值F與F1 和F2 進行比較,若F 的值小于F1 則判定駕駛員處于清醒狀態,若F 的值在F1 和F2 之間,則將當前駕駛員分類為第一種狀態(疲勞),若F>F2,則認為當前駕駛人員已經處于第三種狀態(重度疲勞)。根據實驗結果,F1 設定為5.6,F2 設定為7.8。
為了驗證算法的有效性,我們讓5 名測試者在不同條件下,模擬疲勞和重度疲勞狀態下并用攝像機采集視頻。

表1 檢測結果
如表1 所示,檢測算法在數據集上的檢測結果,當駕駛員為重度疲勞時,檢測的準確率達到了100%,當駕駛員在疲勞和清醒狀態時的準確率稍低,分別有一個判斷錯誤,這是因為哈欠的時候錯誤判斷了駕駛員的狀態,算法的總體正確率達到了96%,表現出了較好的準確性。
本文實現了一種基于深度卷積神經網絡SSD 的疲勞檢測算法,本算法將目標檢測運用到疲勞特征的檢測當中以此獲得駕駛員眼部和嘴部實時狀態信息,判定駕駛員狀態。測試結果表明基于SSD 的疲勞檢測算法能夠在速度、準確度、魯棒性上達到較好的平衡。