王 爽
(西安工程大學(xué)電子信息學(xué)院,西安 710600)
近年來,因疲勞駕駛導(dǎo)致的交通事故屢見不鮮,對個人的生命財產(chǎn)造成損失,也對國家道路的穩(wěn)定性造成破壞。為了保障人民群眾的出行安全,針對駕駛員疲勞檢測的研究已經(jīng)成為交通安全領(lǐng)域的研究重點方向?,F(xiàn)有的相關(guān)研究中,主要有三種檢測疲勞的方法,分別是基于生理信號的疲勞檢測方法、基于行為特征的疲勞檢測方法、基于計算機視覺的疲勞檢測方法。
基于駕駛員的生理信號檢測主要是讓駕駛員在行車途中佩戴專業(yè)的檢測設(shè)備,通過分析正常狀態(tài)和疲勞狀態(tài)下的生理數(shù)據(jù)差異來進行疲勞判斷。這種方式影響駕駛的舒適度,而且成本相對昂貴,不利于實際應(yīng)用推廣。
基于駕駛員行為特征的疲勞檢測方法一般是通過車輛行駛過程中的參數(shù)進行判斷,如車速、方向盤角度、加速狀態(tài)等,這種方法受限于行車車道、不同駕駛員行車的迥異度,以及路面狀況等,很難應(yīng)用于復(fù)雜的實際場景中。
基于機計算機視覺的疲勞檢測方法根據(jù)駕駛員的眼睛、嘴部閉合程度頭部姿勢變化等疲勞特征進行判斷。通過攝像頭采集駕駛員的面部信息,結(jié)合數(shù)字圖像處理技術(shù)對關(guān)鍵部位進行識別并判斷疲勞狀態(tài)。深度學(xué)習(xí)技術(shù)的興起推動了計算機視覺領(lǐng)域的飛速發(fā)展,Geng L等提出了一種基于Haar特征的AdaBoost級聯(lián)分類算法,該算法首先對人臉進行檢測,然后利用卷積神經(jīng)網(wǎng)絡(luò)識別眼部狀態(tài)并進行疲勞檢測。Dwivedi K等通過計算機視覺提取特征,利用構(gòu)建的深度卷積神經(jīng)網(wǎng)絡(luò)的方法對駕駛員的疲勞狀態(tài)進行判別?;谟嬎銠C視覺的方法具有非接觸、移植性強等優(yōu)勢,但仍然存在很大的局限性。在實際駕駛過程中,光照的強弱變化及駕駛員姿態(tài)等因素都會影響設(shè)備獲取圖像的質(zhì)量,導(dǎo)致對人臉的識別和關(guān)鍵點的定位會存在誤差,從而使得后續(xù)的眼部特征檢測的準確率受到影響。
綜合以上因素,本文提出一種改進HOG算法與CNN-SVM結(jié)合的人臉疲勞檢測方法。首先,改進了HOG特征提取的過程,傳統(tǒng)特征提取圖像的灰度梯度值只統(tǒng)計了垂直和水平像素,本文加入了對角線梯度信息,使得獲取的圖像邊緣信息更加豐富,從而提高人臉的檢測率。其次,使用級聯(lián)回歸實現(xiàn)面部特征點標定,對眼部圖片進行提取。接著使用CNN-SVM網(wǎng)絡(luò)進行眼部特征訓(xùn)練。最后,結(jié)合PERCLOS等參數(shù)對疲勞狀態(tài)進行判別。通過實驗表明,本文提出的方法對駕駛員進行疲勞檢測有較高的準確率。
HOG是一種通過計算圖像灰度梯度值來提取特征信息的特征提取算法,具有速度較快,準確率較高等特點,被用于目標識別、人臉識別、表情識別等領(lǐng)域。本文使用HOG計算灰度圖像中的梯度特征來完成人臉檢測任務(wù)。
首先對輸入的圖片進行歸一化操作和Gamma校正處理,通過調(diào)節(jié)圖像對比度,使光照或陰影對圖片的影響降低,公式如下:
遍歷整個圖像,計算每個像素點在水平方向和垂直方向的梯度,對像素點(,)處的梯度值和梯度方向進行計算:
其中,G(,)、G(,)分別代表像素(,)水平方向的梯度和像素垂直方向的梯度。接著計算梯度幅值(,)和方向值(,)。
最后為每個cell構(gòu)建梯度方向直方圖,把cell組合成大的block,對block內(nèi)的直方圖進行歸一化,歸一化能夠?qū)庹铡㈥幱昂瓦吘夁M行壓縮。最后收集HOG特征,即把提取的HOG特征輸入到SVM分類器中供分類使用。
傳統(tǒng)的HOG算法在計算梯度方向的過程中,只是計算單個元素水平和垂直元素的灰度變化信息,導(dǎo)致圖像邊緣信息的丟失。本文對HOG算法進行改進,在原有的HOG信息上,加入了對角線像素的梯度方向和幅值信息,從而更好的提取人臉邊緣特征。最后連接原HOG向量及對角線元素計算得到的HOG特征向量,如圖1所示。
圖1 改進的HOG信息直方圖
計算改進的HOG的過程中,把像素的梯度方向和幅值定義如下:
可以看到HOG信息直方圖和對角線HOG信息直方圖信息有部分差別,因此將二者融合起來可以彌補很多丟失的圖像邊緣信息,提高后續(xù)人臉的檢測率。
采用改進的HOG算法進行人臉檢測,檢測結(jié)果如表1所示,可以看出本文改進的算法相對于傳統(tǒng)HOG特征提取算法檢測人臉,取得了更好的效果。
表1 兩種算法比較
在人臉關(guān)鍵點檢測技術(shù)中,使用Kazemi等提出的回歸樹算法對人臉特征點定位。首先選取人臉的68個特殊標志點模型,包括對眉毛、眼睛、鼻子、嘴巴等特征點的標定。然后利用該算法提出的基于梯度增強的框架,通過優(yōu)化損失函數(shù)和誤差的總和來學(xué)習(xí)回歸樹集合,檢測出臉部圖像中的68個關(guān)鍵點,并進行人臉對齊操作,分割局部區(qū)域。
CNN常用于圖像領(lǐng)域,是一種帶有深度學(xué)習(xí)結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò),CNN的網(wǎng)絡(luò)結(jié)構(gòu)包括卷積層、池化層和全連接層,CNN以二維圖像作為輸入并自動學(xué)習(xí)圖像特征,避免了對圖像進行復(fù)雜的預(yù)處理。本文對駕駛員眼部狀態(tài)的特征提取主要有兩種狀態(tài)模式:眼睛閉合和眼睛睜開,表2為基于CNN的駕駛員眼部狀態(tài)提取模型的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)。
表2 駕駛員眼部狀態(tài)提取卷積神經(jīng)網(wǎng)絡(luò)構(gòu)
網(wǎng)絡(luò)結(jié)構(gòu)采用三個卷積層、兩個池化層,最后加上兩個全連接層。在S2池化層和F1全連接層中加入L2正則化和Dropout技術(shù),將棄權(quán)的概率設(shè)置為0.4。采用的優(yōu)化算法是隨機梯度下降算法,加入損失函數(shù),選擇的激活函數(shù)是ReLU函數(shù)。設(shè)置訓(xùn)練的學(xué)習(xí)率為0.01,訓(xùn)練的batches為64。經(jīng)過200次的迭代過程,使誤差變動幅度保持穩(wěn)定,模型基本達到訓(xùn)練要求。
本文使用數(shù)據(jù)集主要有:CEW數(shù)據(jù)集以及自采數(shù)據(jù)集,自采數(shù)據(jù)包括5名男性和5名女性在正常光、稍暗光下眼睛睜開、閉合的圖像。為了在自采集數(shù)據(jù)集中達到增大訓(xùn)練樣本的效果,同時也為了解決道路顛簸晃動帶來的圖像抖動等問題,對部分圖像進行反轉(zhuǎn)、角度旋轉(zhuǎn)。
選取7000張圖片作為本實驗的訓(xùn)練集,正樣本為睜眼圖片,負樣本為閉眼圖片,分別為4000張和3000張,圖片尺寸歸一化處理為24×20。使用1000張測試樣本進行測試,測試結(jié)果如表3所示,在光照較亮的情況下,眼部狀態(tài)的睜眼準確率達到95.6%,閉眼準確率達到96.2%,平均識別識別率為95.9%。
表3 模型訓(xùn)練準確率
本文使用CNN作為特征提取器,當提取圖像的特征信息后對眼部狀態(tài)進行分類預(yù)測,但存在執(zhí)行分類任務(wù)時計算量過大,且準確率還需提更高。針對此問題加入SVM當作特征分類器,即將CNN和SVM兩者結(jié)合并用于實現(xiàn)眼部狀態(tài)識別。
對比測試結(jié)果如表4所示,測試集同樣選取上面1000張測試樣本進行測試,可以看到使用單一CNN進行識別的平均準確率為95.9%,而加入了SVM的識別準確率為97.3%,實驗證實了該方法的準確性。
表4 CNN與CNN+SVM的識別率比較
眼部從睜開到閉合再到睜開的一個完整過程認定為一次眨眼過程。眨眼頻率是指單位時間內(nèi)眨眼的總次數(shù)。醫(yī)學(xué)上表明,人體正常清醒狀態(tài)下每分鐘眨眼次數(shù)在15~30次,每次眨眼持續(xù)時間為0.2~0.3 s。相比正常狀態(tài),處于疲勞狀態(tài)時眨眼頻率會有所降低。
PERCLOS是通過計算一段時間的眼睛閉和時間所占的比例進行疲勞判斷,PERCLOS的計算公式如下:
疲勞檢測的數(shù)據(jù)集使用YawDD數(shù)據(jù)集。YawDD是由Abtahi等制作的視頻數(shù)據(jù)集,通過車內(nèi)攝像頭采集駕駛員模擬行車的圖像,該數(shù)據(jù)集包含不同性別、不同年齡的駕駛員在正常狀態(tài)和疲勞狀態(tài)下的視頻。
實驗的硬件采用Intel i5-9400F處理器,顯卡為GTX1650,內(nèi)存使用16 G,實驗操作系統(tǒng)為Windows 10環(huán)境,基于Python 3.7語言的Ten?sorflow框架實現(xiàn)。
使用YawDD測試集分別截取5名測試者2分鐘模擬駕駛的視頻,為驗證模型準確率,實驗檢測并統(tǒng)計了測試樣本的眨眼次數(shù)和PERCLOS值,記錄結(jié)果如表5所示。
表5 疲勞駕駛檢測結(jié)果
根據(jù)上表可統(tǒng)計本次測試人員的PERCLOS值和眨眼次數(shù)的波動范圍,樣本越多,范圍越準,本次PERCLOS值的波動范圍在0.0712到0.3107之間。眨眼次數(shù)波動范圍在18~46之間。
可以看出,當駕駛?cè)藛T在疲勞駕駛時,PERCLOS值有所增加,眨眼次數(shù)有所降低。在樣本2中,由于駕駛員處于較傍晚的環(huán)境下拍攝,并且駕駛員因個體原因產(chǎn)生了表情的變化,導(dǎo)致眼部疲勞特征的提取過程受到部分干擾,眨眼準確率有所降低??傮w來看,本算法對眼部狀態(tài)識別準確率相對較高,平均準確率達到94.9%。
在狀態(tài)判定參數(shù)上,將PERCLOS閾值設(shè)置為0.18,總眨眼數(shù)的閾值設(shè)置為22,即當PERCLOS值大于0.17或眨眼次數(shù)小于22次判定為疲勞,實驗表明,疲勞狀態(tài)判定均未出現(xiàn)誤判的情況。
通過檢測結(jié)果可以看出,本文提出的基于改進的HOG算法與CNN-SVM的疲勞檢測方法對疲勞狀態(tài)檢測是十分有效的。
本文以疲勞駕駛檢測為研究對象,提出了基于改進的HOG算法與CNN-SVM的人臉疲勞檢測方法,該方法首先對傳統(tǒng)HOG加以改進,加入對角線像素梯度信息,提升了圖像的邊緣信息,使檢測人臉準確率更高。然后使用特征點模型對人臉定位和分割。最后以CNN作為特征提取器,SVM作為分類器的網(wǎng)絡(luò)模型進行眼部狀態(tài)判別,并結(jié)合PERCLOS等參數(shù)進行疲勞駕駛檢測判斷。相較于其他疲勞檢測方法,本文方法不直接接觸駕駛員,移植性強,判斷準確度高,在交通安全領(lǐng)域擁有較好的前景。