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