李小平,白 超
(蘭州交通大學(xué) 機(jī)電工程學(xué)院,甘肅 蘭州 730070)
隨著全世界鐵路運(yùn)輸里程及汽車(chē)營(yíng)運(yùn)數(shù)量的快速增長(zhǎng),火車(chē)司機(jī)和汽車(chē)司機(jī)人數(shù)也快速增加,同時(shí)由于司機(jī)疲勞駕駛引起的交通事故也逐年增高,以美國(guó)為例,交通事故中有25%~35%與疲勞駕駛有關(guān)[1-2],每年大約有1 500多人喪生于疲勞駕駛引起的車(chē)禍[3]。因此對(duì)司機(jī)疲勞駕駛狀態(tài)進(jìn)行檢測(cè)并做出相應(yīng)的預(yù)警,對(duì)于保障交通運(yùn)輸安全至關(guān)重要。
目前的疲勞駕駛檢測(cè)主要有基于司機(jī)的測(cè)量方法及基于車(chē)輛的測(cè)量方法,基于司機(jī)的測(cè)量方法又分為生理特征、視覺(jué)特征[4]和語(yǔ)音特征[5]等多種方法?;谲?chē)輛的檢測(cè)方法受路況及駕駛員技能的影響,準(zhǔn)確性較差[6];基于生理特征的疲勞檢測(cè)由于使用了昂貴的傳感器,并且傳感器的侵入可能引起司機(jī)不適,不便于普及推廣[7-8];基于語(yǔ)音特征的疲勞檢測(cè)只適用于采用標(biāo)準(zhǔn)呼叫應(yīng)答的駕駛場(chǎng)景且語(yǔ)音標(biāo)記樣本數(shù)據(jù)較為稀缺;基于視覺(jué)特征的疲勞檢測(cè)具有非接觸性及可直接根據(jù)司機(jī)面部特征(如眼睛睜閉、打哈欠等)反應(yīng)其疲勞狀態(tài)等優(yōu)點(diǎn),成為目前研究的主流方向[9]。傳統(tǒng)的基于機(jī)器視覺(jué)的司機(jī)疲勞檢測(cè)算法主要采用人工設(shè)計(jì)特征加分類(lèi)器的方式,通過(guò)手動(dòng)特征設(shè)計(jì)、制定檢測(cè)標(biāo)準(zhǔn)來(lái)進(jìn)行疲勞判斷,檢測(cè)速度較慢、準(zhǔn)確性較低[10];隨著以卷積神經(jīng)網(wǎng)絡(luò)CNN為代表的深度學(xué)習(xí)模型在計(jì)算機(jī)視覺(jué)領(lǐng)域的成功應(yīng)用,如面部器官檢測(cè)[11]、人體姿態(tài)估計(jì)[12]等,基于視覺(jué)特征深度學(xué)習(xí)的司機(jī)疲勞檢測(cè)成為該領(lǐng)域的研究熱點(diǎn)。
在基于視覺(jué)特征深度學(xué)習(xí)的疲勞駕駛檢測(cè)研究領(lǐng)域,文獻(xiàn)[13]提出了一種基于RNN的司機(jī)疲勞檢測(cè)技術(shù);文獻(xiàn)[14]提出了一種類(lèi)Haar特征和極限學(xué)習(xí)的疲勞檢測(cè)方法;文獻(xiàn)[15]基于嘴部特征疲勞檢測(cè),應(yīng)用了功能校準(zhǔn)深度卷積模型RF-DCM,解決了說(shuō)話和打哈欠的區(qū)分問(wèn)題;文獻(xiàn)[16]提出了一種基于MSP模型的多任務(wù)分層CNN疲勞檢測(cè)系統(tǒng),實(shí)現(xiàn)了面部檢測(cè)及眼睛和嘴巴狀態(tài)檢測(cè);文獻(xiàn)[17]通過(guò)直方圖預(yù)訓(xùn)練梯度模型HOG和支持向量機(jī)SVM提取眼睛、鼻子和嘴巴的位置并評(píng)估眼睛長(zhǎng)寬比、張口比和鼻子長(zhǎng)度比率進(jìn)行疲勞檢測(cè);文獻(xiàn)[18]提出了一個(gè)深層級(jí)聯(lián)LSTM的駕駛員疲勞檢測(cè)方法;文獻(xiàn)[19]提出了應(yīng)用多面特征融合雙流卷積網(wǎng)絡(luò)的司機(jī)疲勞駕駛檢測(cè)模型,實(shí)現(xiàn)了動(dòng)態(tài)圖像與靜態(tài)圖像的綜合檢測(cè);文獻(xiàn)[20]提出了基于多形態(tài)紅外特征與深度學(xué)習(xí)的實(shí)時(shí)疲勞檢測(cè)方法,解決了夜間駕駛疲勞的檢測(cè)問(wèn)題。
綜上所述,目前基于視覺(jué)特征深度學(xué)習(xí)的司機(jī)疲勞檢測(cè)算法主要有基于RNN的方法[13]、基于CNN的方法[14-17]以及RNN與CNN的融合方法[18-20],一般采用滑動(dòng)窗口加分類(lèi)器方式,由于輸入圖像較大而導(dǎo)致系統(tǒng)耗時(shí)多[21],檢測(cè)效率不高,而且當(dāng)司機(jī)頭部姿態(tài)變化(如側(cè)臉、有遮擋等)時(shí)成像質(zhì)量較差,準(zhǔn)確率不高。針對(duì)上述問(wèn)題,本文在前人研究的基礎(chǔ)上,提出一種基于MTCNN-PFLD-LSTM深度學(xué)習(xí)模型的司機(jī)疲勞檢測(cè)算法,首先采用多任務(wù)卷積神經(jīng)網(wǎng)絡(luò)(Multi-task Cascaded Convolutional Networks,MTCNN)對(duì)視頻圖像幀的目標(biāo)區(qū)域內(nèi)人像進(jìn)行由粗到細(xì)的定位[22],提高定位效率,降低后續(xù)輸入圖像的尺寸;然后對(duì)人臉圖像采用精度高、速度快的PFLD(Praclical Facial Landmark Detector)模型[23]進(jìn)行68個(gè)關(guān)鍵點(diǎn)定位;最后根據(jù)P80原則計(jì)算出每幀圖像的眼部、嘴部、頭部3個(gè)疲勞參數(shù),融合PFLD檢測(cè)出每幀圖像中人臉關(guān)鍵點(diǎn)的3個(gè)空間姿態(tài)角(偏航角,俯仰角,滾轉(zhuǎn)角)共6個(gè)參數(shù),輸入長(zhǎng)短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)進(jìn)行疲勞檢測(cè)。該算法由于采用由粗到細(xì)的方法建模,加上PFLD模型結(jié)構(gòu)小,并通過(guò)合理設(shè)計(jì)6個(gè)疲勞檢測(cè)參數(shù)及加權(quán)累積損失函數(shù),使得司機(jī)疲勞檢測(cè)的準(zhǔn)確率和效率得到了有效提升。
常見(jiàn)的人臉輪廓定位方法有5點(diǎn)、68點(diǎn)、98點(diǎn)定位,見(jiàn)圖1。圖1(a)中,5點(diǎn)定位僅包含左眼、右眼、鼻子、左嘴角、右嘴角5個(gè)位置,只能進(jìn)行人臉輪廓定位,無(wú)法判斷是否處于疲勞狀態(tài);圖1(b)中,98點(diǎn)定位包含的人臉信息過(guò)多,會(huì)導(dǎo)致系統(tǒng)運(yùn)算量大、識(shí)別效率低、實(shí)時(shí)性較差;圖1(c)中,68點(diǎn)定位可以比較準(zhǔn)確地描述人的臉部輪廓以及眼睛、嘴巴等局部特征,又減少了運(yùn)算時(shí)間,提高了人臉識(shí)別的實(shí)時(shí)性[24]。在68點(diǎn)定位中,左眼有6個(gè)關(guān)鍵點(diǎn)(37~42),右眼有6個(gè)關(guān)鍵點(diǎn)(43~48),嘴巴有20個(gè)關(guān)鍵點(diǎn)(49~68),其余為臉部輪廓關(guān)鍵點(diǎn)。
圖1 人臉面部輪廓定位(圖中人像來(lái)源于YawDD數(shù)據(jù)集[25])
眼部特征是一個(gè)重要的疲勞表征參數(shù),可以直觀反映司機(jī)是否處于疲勞狀態(tài)。本文采用PERCLOS原則[26]判斷眼部的睜閉狀態(tài),當(dāng)眼瞼遮住瞳孔的面積超過(guò)80%時(shí)就記為眼睛閉合。為基于PERCLOS原則的眼睛睜閉曲線見(jiàn)圖2。
圖2 基于PERCOLS原則的眼睛睜閉曲線
圖2中,縱軸為眼睛的睜開(kāi)程度Eopen,橫軸為時(shí)間t,0~t1為眼睛從完全睜開(kāi)到20%閉合所用的時(shí)間,t1~t2是眼睛從20%閉合到80%閉合所用的時(shí)間,t2~t3是眼睛完全閉合所用的時(shí)間,t3~t4是眼睛從20%睜開(kāi)到80%睜開(kāi)所用的時(shí)間。設(shè)這一時(shí)段內(nèi)眼睛閉合時(shí)間所占的百分比為fp,則
(1)
眼睛可以看作是兩個(gè)嵌套的橢圓,見(jiàn)圖1(c)。假設(shè)眼睛睜開(kāi)的寬度為w,上下眼瞼的垂直距離為h,則眼睛的面積近似為S=πwh。以左眼為例,根據(jù)眼部采集到的關(guān)鍵點(diǎn),人眼部的w、h的計(jì)算式為
(2)
式中:x37、x40為人左眼兩端的關(guān)鍵點(diǎn)橫坐標(biāo);y41、y39為人左眼眼瞼上下右側(cè)的關(guān)鍵點(diǎn)縱坐標(biāo)。右眼同理,則眼部睜開(kāi)百分比計(jì)算為
(3)
式中:wmax、hmax分別為眼睛完全睜開(kāi)時(shí)的寬度、高度。將計(jì)算得到的Eopen按照PERCOLS原理計(jì)算出t1、t2、t3、t4,代入式(1)即可計(jì)算出fp,fp輸入LSTM網(wǎng)絡(luò)進(jìn)行訓(xùn)練即可判斷司機(jī)是否處于疲勞狀態(tài)。
嘴部的狀態(tài)通常有3種:閉合、說(shuō)話、打哈欠,人在疲勞時(shí)會(huì)較為頻繁地打哈欠,因此嘴部的特征也是疲勞判定的一個(gè)重要參數(shù)。
嘴部的寬度wmouth、高度hmouth計(jì)算式為
(4)
式中:x49、x55為嘴部左右的兩個(gè)關(guān)鍵點(diǎn)的橫坐標(biāo);y51、y53、y57、y59分別為嘴部上下的4個(gè)關(guān)鍵點(diǎn)的縱坐標(biāo),通過(guò)計(jì)算其坐標(biāo)的平均值獲得嘴部高度。
司機(jī)在疲勞打哈欠時(shí)嘴巴的張開(kāi)程度最大,嘴部會(huì)出現(xiàn)高度增加,寬度減少,為了衡量這兩種指標(biāo)表征的疲勞狀態(tài),引入嘴部縱橫比Kmouth,其計(jì)算式為
(5)
將Kmouth輸入LSTM網(wǎng)絡(luò)進(jìn)行訓(xùn)練即可判斷司機(jī)是否處于疲勞駕駛狀態(tài)。
人在疲勞時(shí)頭部容易出現(xiàn)頻繁點(diǎn)頭或者長(zhǎng)時(shí)間低頭的情況,因此可以將點(diǎn)頭(低頭)情況作為疲勞表征參數(shù)。人在低頭時(shí),攝像頭拍攝的照片中兩眼中點(diǎn)到達(dá)嘴巴的距離會(huì)比抬頭時(shí)出現(xiàn)明顯的縮短,故采用該距離的變化作為點(diǎn)頭(低頭)姿態(tài)的變化。
在圖1(c)中,設(shè)
(6)
則兩眼的直線函數(shù)為
(7)
式中:xleft、xright、yleft、yright分別為人左右眼中點(diǎn)的橫縱坐標(biāo);x、y為兩眼的直線函數(shù)橫縱坐標(biāo)。將式(7)化為標(biāo)準(zhǔn)型Ax+By+C=0時(shí),可得到A,B,C的值為
(8)
再利用人臉兩眼中點(diǎn)52號(hào)點(diǎn)計(jì)算到該直線的距離,即
(9)
d為圖像上兩眼中點(diǎn)到達(dá)嘴巴的距離。再以視頻第一幀的pitch1計(jì)算俯仰角為0時(shí)的dmax,即
(10)
當(dāng)d≤0.8dmax時(shí)可認(rèn)定為司機(jī)處于低頭狀態(tài)。若低頭超過(guò)3 s則直接判定為處于疲勞狀態(tài),若小于3 s則記入時(shí)間,計(jì)算頭部低頭時(shí)間所占時(shí)間的百分比,即
(11)
式中:tdown為低頭時(shí)間;t為總時(shí)間;hdown為低頭百分比,該數(shù)值越大則疲勞程度越深,hdown同樣可以作為L(zhǎng)STM的輸入進(jìn)行疲勞狀態(tài)判斷。
基于MTCNN-PFLD-LSTM的疲勞駕駛檢測(cè)模型見(jiàn)圖3。
圖3 基于MTCNN-PFLD-LSTM的疲勞駕駛檢測(cè)模型(圖中人像來(lái)源于YawDD數(shù)據(jù)集[25])
首先通過(guò)車(chē)載攝像設(shè)備實(shí)時(shí)獲取司機(jī)的視頻關(guān)鍵幀圖像,通過(guò)MTCNN確定司機(jī)人臉的區(qū)域,然后將檢測(cè)出的人臉區(qū)域采用PFLD模型進(jìn)行人臉關(guān)鍵點(diǎn)檢測(cè),最后計(jì)算生成臉部疲勞特征參數(shù)矩陣,并按照視頻時(shí)間序列將參數(shù)矩陣輸入LSTM模型進(jìn)行疲勞檢測(cè),通過(guò)softmax分類(lèi)輸出疲勞與非疲勞狀態(tài)。
MTCNN是基于級(jí)聯(lián)思想的深度學(xué)習(xí)模型,由P-Net(Proposal Network)、R-Net(Refine Network)、O-Net(Output Network)三層網(wǎng)絡(luò)構(gòu)成,能兼顧性能和準(zhǔn)確率,可實(shí)現(xiàn)由粗到細(xì)的人臉檢測(cè)。MTCNN的圖像金字塔可以進(jìn)行初始圖像的尺度變換,P-Net模型用于生成大量的候選目標(biāo)區(qū)域框,R-Net模型對(duì)目標(biāo)區(qū)域框進(jìn)行精選和邊框回歸,進(jìn)而排除大部分的負(fù)例,O-Net網(wǎng)絡(luò)對(duì)剩余的目標(biāo)區(qū)域框進(jìn)行判別和區(qū)域邊框回歸,從而實(shí)現(xiàn)人臉區(qū)域的5關(guān)鍵點(diǎn)檢測(cè)定位,MTCNN模型結(jié)構(gòu)見(jiàn)圖4。
圖4 MTCNN模型結(jié)構(gòu)
(1)構(gòu)建圖像金字塔
對(duì)圖片進(jìn)行Resize操作,將原始圖像縮放成不同的尺度,生成圖像金字塔,便于實(shí)現(xiàn)多尺度人臉檢測(cè)。
(2)P-Net網(wǎng)絡(luò)
(12)
(3)R-Net網(wǎng)絡(luò)
(13)
(4)O-Net網(wǎng)絡(luò)
(14)
最終,MTCNN的損失函數(shù)L1為3個(gè)損失函數(shù)的加權(quán)累加,即
(15)
2.2PFLD人臉關(guān)鍵點(diǎn)檢測(cè)
PFLD人臉關(guān)鍵點(diǎn)檢測(cè)模型具有精度高、速度快、模型小的特點(diǎn),特別適合算力不強(qiáng)的嵌入式移動(dòng)設(shè)備,見(jiàn)圖5。
圖5 PFLD模型
PFLD不僅可以通過(guò)主網(wǎng)絡(luò)輸出人臉的68個(gè)關(guān)鍵點(diǎn),還可以通過(guò)輔助網(wǎng)絡(luò)輸出人臉的3個(gè)姿態(tài)角(偏航角yaw,俯仰角pitch,滾轉(zhuǎn)角roll)。通過(guò)68個(gè)關(guān)鍵點(diǎn)及姿態(tài)角,可以根據(jù)式(1)、式(5)、式(11)計(jì)算出疲勞參數(shù)fp,Kmouth及hdown。
PFLD損失函數(shù)L2表示為
(16)
人的臉部疲勞狀態(tài)可以根據(jù)眼睛(睜、閉)、嘴巴(閉合、說(shuō)話、打哈欠)及頭部偏航角yaw、俯仰角pitch、滾轉(zhuǎn)角roll來(lái)綜合表達(dá)。
在PFLD獲得人臉的68個(gè)關(guān)鍵點(diǎn)后,對(duì)于連續(xù)時(shí)間節(jié)點(diǎn)序列(t1,t2,…,tn)上采集的視頻圖像幀(第1幀,第2幀,…,第n幀),每一幀圖像可根據(jù)眼部、嘴部和頭部關(guān)鍵點(diǎn)及yaw、pitch、roll角度計(jì)算出狀態(tài)參數(shù),生成臉部疲勞狀態(tài)參數(shù)矩陣Xt為
(17)
LSTM模型是一種時(shí)間遞歸神經(jīng)網(wǎng)絡(luò),旨在解決RNN的長(zhǎng)期依賴與梯度消失問(wèn)題,LSTM網(wǎng)絡(luò)能夠記住長(zhǎng)期依賴關(guān)系,將前一時(shí)刻的網(wǎng)絡(luò)輸出選擇性地記憶下來(lái),為后續(xù)的網(wǎng)絡(luò)學(xué)習(xí)提供豐富的事件關(guān)聯(lián)性。LSTM網(wǎng)絡(luò)見(jiàn)圖6。
圖6 LSTM網(wǎng)絡(luò)
LSTM在t時(shí)刻的表達(dá)形式如下:
輸入門(mén)為
it=σ(Wi×[ht-1,xt]+bi)
(18)
遺忘門(mén)為
ft=σ(Wf×[ht-1,xt]+bf])
(19)
記憶元胞單元為
(20)
(21)
輸出門(mén)為
ot=σ(Wo×[ht-1,xt]+bo)
(22)
ht=ottanh(Ct)
(23)
在司機(jī)疲勞檢測(cè)中,監(jiān)控視頻可以按幀分解成圖片序列,按照時(shí)間順序?qū)⒚恳粠瑘D片的臉部疲勞狀態(tài)參數(shù)矩陣Xt輸入LSTM,即可實(shí)現(xiàn)運(yùn)動(dòng)狀態(tài)下的司機(jī)疲勞狀態(tài)判斷。
LSTM輸出為是否疲勞的分類(lèi)狀態(tài),故采用softmax損失函數(shù),由于softmax損失函數(shù)在分類(lèi)時(shí)主要將不同類(lèi)之間的差異最大化,但對(duì)于同類(lèi)之內(nèi)的樣本差異不一定最小化,因此會(huì)使得模糊樣本的特征提取效果不佳,從而影響分類(lèi)的準(zhǔn)確率,為此,本文引入中心損失函數(shù)Lcenter為
(24)
式中:xi為第i個(gè)視頻疲勞特征矩陣;f(xi)為L(zhǎng)STM預(yù)測(cè)值;ci為該視頻樣本所屬聚類(lèi)的中心,聚類(lèi)中心在初始階段為隨機(jī)確定;m為處理批次的大小,本文選用m=128,在之后每批次中更新聚類(lèi)中心。則
L3=Lsoftmax+λLcenter
(25)
式中:L3為L(zhǎng)STM損失函數(shù);Lsoftmax為softmax 交叉熵?fù)p失函數(shù);Lcenter為中心損失函數(shù);λ為中心損失權(quán)重。
采用加權(quán)累積方法計(jì)算MTCNN-PFLD-LSTM模型的損失函數(shù)L,則有
(26)
式中:J為訓(xùn)練樣本數(shù);k∈{1,2,3};ωk為MTCNN、PFLD、LSTM 3個(gè)處理過(guò)程中的損失函數(shù)權(quán)重值。
基于視覺(jué)特征的火車(chē)司機(jī)和汽車(chē)司機(jī)疲勞檢測(cè)需要在司機(jī)駕駛臺(tái)上方安裝視頻采集裝置,本文算法的原理相同,但由于采集裝置、采集環(huán)境以及所采數(shù)據(jù)集的不同,導(dǎo)致MTCNN-PFLD-LSTM深度學(xué)習(xí)模型的訓(xùn)練參數(shù)會(huì)有所不同。由于篇幅限制,本文僅對(duì)汽車(chē)疲勞駕駛進(jìn)行試驗(yàn),以對(duì)算法的有效性進(jìn)行驗(yàn)證。
試驗(yàn)平臺(tái)采用Intel(R)Core(TM)i5-4210,主頻1.70 GHz,8 GB內(nèi)存,配置較低。在Windows10環(huán)境下使用Tensorflow深度學(xué)習(xí)框架,采用Adam優(yōu)化器,未使用GPU加速。
試驗(yàn)數(shù)據(jù)集使用YawDD視頻數(shù)據(jù)集[25]和自采人臉圖像數(shù)據(jù)集。YawDD數(shù)據(jù)集是一個(gè)公開(kāi)的視頻數(shù)據(jù)集,共有351個(gè)汽車(chē)司機(jī)駕駛視頻,每個(gè)視頻都標(biāo)注了正常、說(shuō)話、唱歌和疲勞打哈欠4種狀態(tài),本文將正常、說(shuō)話、唱歌的狀態(tài)標(biāo)注為非疲勞狀態(tài),將疲勞打哈欠標(biāo)注為疲勞狀態(tài)[27]。人臉定位的精確度對(duì)于疲勞檢測(cè)的結(jié)果至關(guān)重要,由于YawDD數(shù)據(jù)集中司機(jī)人數(shù)相對(duì)較少,用這些視頻關(guān)鍵幀圖像訓(xùn)練MTCNN模型時(shí),樣本數(shù)量略顯不足,因此,本文從網(wǎng)絡(luò)上不同的人臉圖像數(shù)據(jù)集中采集了4 792張不同的人臉照片構(gòu)成自采數(shù)據(jù)集,通過(guò)大量自采樣本數(shù)據(jù)提高M(jìn)TCNN模型訓(xùn)練質(zhì)量,訓(xùn)練好的MTCNN網(wǎng)絡(luò)模型直接用來(lái)對(duì)YawDD視頻數(shù)據(jù)集中的關(guān)鍵幀圖像進(jìn)行人臉定位檢測(cè),彌補(bǔ)YawDD數(shù)據(jù)集樣本較少的缺陷。圖7為自采人臉圖像數(shù)據(jù)集和YawDD數(shù)據(jù)集部分示例。
圖7 自采人臉圖像數(shù)據(jù)集和YawDD數(shù)據(jù)集(部分)
Step1自采數(shù)據(jù)集人臉區(qū)域及關(guān)鍵點(diǎn)標(biāo)注
樣本標(biāo)記的精確度對(duì)于深度學(xué)習(xí)的準(zhǔn)確性至關(guān)重要,Labelimg是一個(gè)可視化的圖像標(biāo)定工具,通過(guò)可視化操作可保證標(biāo)注的準(zhǔn)確性,因此本文選用Labelimg軟件為自采人臉數(shù)據(jù)集的4 792張照片添加人臉框以及關(guān)鍵點(diǎn)位置。自采集數(shù)據(jù)集中1419.jpg的Labelimg標(biāo)注示例見(jiàn)圖8。
圖8 自采圖像1419.jpg人臉區(qū)域及68關(guān)鍵點(diǎn)標(biāo)記Labelimg標(biāo)記
Step2MTCNN模型訓(xùn)練
將Step1中標(biāo)注好的自采數(shù)據(jù)集的50%作為訓(xùn)練集,10%作為驗(yàn)證集,40%作為測(cè)試集。將訓(xùn)練集數(shù)據(jù)引入MTCNN進(jìn)行訓(xùn)練,訓(xùn)練好的模型用驗(yàn)證集數(shù)據(jù)進(jìn)行模型過(guò)擬合驗(yàn)證,然后用測(cè)試數(shù)據(jù)集進(jìn)行測(cè)試,測(cè)試識(shí)別結(jié)果見(jiàn)表1。
表1 人臉區(qū)域識(shí)別結(jié)果
由表1可知,通過(guò)自采數(shù)據(jù)集對(duì)MTCNN模型進(jìn)行訓(xùn)練,人臉區(qū)域識(shí)別率達(dá)到99.18%,取得了較好的訓(xùn)練效果。
Step3YawDD數(shù)據(jù)集中人臉區(qū)域識(shí)別
將YawDD數(shù)據(jù)集的每個(gè)視頻文件按照關(guān)鍵幀分解出100張圖片,共35 100張照片,輸入訓(xùn)練好的MTCNN模型進(jìn)行人臉區(qū)域檢測(cè),識(shí)別結(jié)果見(jiàn)表2。
表2 YawDD數(shù)據(jù)集中人臉區(qū)域識(shí)別結(jié)果
表2的識(shí)別率達(dá)到99.24%,比表1的識(shí)別率增加了0.06%,這也反映了雖然MTCNN模型參數(shù)不變,但數(shù)據(jù)集不同,網(wǎng)絡(luò)輸出結(jié)果會(huì)有一定程度的變化。
Step4YawDD數(shù)據(jù)集中人臉關(guān)鍵點(diǎn)檢測(cè)
將Step3中檢測(cè)出的人臉區(qū)域引入PFLD網(wǎng)絡(luò)檢測(cè)68個(gè)關(guān)鍵點(diǎn),可得到所有關(guān)鍵幀照片的人臉關(guān)鍵點(diǎn)坐標(biāo),視頻24-FemaleNoGlasses-Normal.avi中第10幀圖像的人臉關(guān)鍵點(diǎn)坐標(biāo)及姿態(tài)角見(jiàn)圖9。
圖9 24-FemaleNoGlasses-Normal第10幀圖像人臉關(guān)鍵點(diǎn)坐標(biāo)及姿態(tài)角
圖9(a)為視頻24-FemaleNoGlasses-Normal.avi中第10幀圖像的人臉關(guān)鍵點(diǎn)及姿態(tài)角,藍(lán)色關(guān)鍵點(diǎn)為標(biāo)記點(diǎn),紅色關(guān)鍵點(diǎn)為檢測(cè)點(diǎn)。35 100張視頻幀照片的關(guān)鍵點(diǎn)檢測(cè)結(jié)果見(jiàn)表3。
表3 人臉關(guān)鍵點(diǎn)檢測(cè)結(jié)果
Step5計(jì)算疲勞參數(shù)矩陣
將Step4中檢測(cè)出的關(guān)鍵點(diǎn)坐標(biāo)及姿態(tài)角按照式(1)、式(5)、式(11)可以計(jì)算出相應(yīng)的疲勞特征參數(shù)。視頻24-FemaleNoGlasses-Normal.avi的疲勞參數(shù)計(jì)算結(jié)果見(jiàn)表4(前10幀)。
表4 視頻24-FemaleNoGlasses-Normal疲勞參數(shù)計(jì)算結(jié)果(前10幀)
Step6LSTM疲勞檢測(cè)
將Step5中計(jì)算出的疲勞參數(shù)輸入LSTM網(wǎng)絡(luò),其中將223個(gè)視頻(63.5%)作為訓(xùn)練集,128個(gè)視頻(36.5%)作為測(cè)試集,學(xué)習(xí)率為0.001,最后通過(guò)softmax得到疲勞檢測(cè)結(jié)果,見(jiàn)表5。
表5 疲勞檢測(cè)結(jié)果
司機(jī)疲勞狀態(tài)檢測(cè)屬于分類(lèi)問(wèn)題,可以采用準(zhǔn)確率以及檢測(cè)幀率FPS來(lái)進(jìn)行評(píng)估[28]。
根據(jù)表5可以計(jì)算出MTCNN-PFLD-LSTM疲勞檢測(cè)準(zhǔn)確率,結(jié)果見(jiàn)表6。
表6 MTCNN-PFLD-LSTM疲勞檢測(cè)準(zhǔn)確率
從表6可以看出,分別使用fp、Kmouth、hdown與3個(gè)空間姿態(tài)角yaw、pitch、roll共4個(gè)參數(shù)訓(xùn)練網(wǎng)絡(luò)時(shí),檢測(cè)準(zhǔn)確率分別為94.53%、93.75%、89.06%,而將fp、Kmouth、hdown與yaw、pitch、roll角度共6個(gè)參數(shù)輸入網(wǎng)絡(luò)訓(xùn)練時(shí),檢測(cè)準(zhǔn)確率達(dá)到99.22%。
損失函數(shù)loss用來(lái)表現(xiàn)預(yù)測(cè)值和實(shí)際值之間的差異程度,權(quán)重ωk的不同取值對(duì)于實(shí)驗(yàn)結(jié)果影響較大。假定ω1變化、ω2=ω3,分析ω1的變化對(duì)loss的影響,選取ω1∶ω2∶ω3=0.1∶0.45∶0.45、ω1∶ω2∶ω3=0.3∶0.35∶0.35、ω1∶ω2∶ω3=0.5∶0.25∶0.25、ω1∶ω2∶ω3=0.7∶0.15∶0.15,損失函數(shù)圖像見(jiàn)圖10(a),可以看出,當(dāng)ω1權(quán)重較低時(shí)模型收斂速度較慢,損失函數(shù)loss增大、準(zhǔn)確率降低,故應(yīng)增大ω1的權(quán)重,充分驗(yàn)證了人臉圖像分割精度對(duì)于疲勞檢測(cè)的重要性,但當(dāng)ω1取值過(guò)高時(shí)(如ω1=0.7),模型收斂速度反而又會(huì)降低,經(jīng)過(guò)反復(fù)試驗(yàn),當(dāng)ω1=0.5時(shí)模型收斂速度快、準(zhǔn)確率高。當(dāng)ω1=0.5時(shí),分析ω2、ω3變化對(duì)loss函數(shù)的影響,分別取ω2=0.1、ω3=0.4,ω2=0.2、ω3=0.3,ω2=0.25、ω3=0.25,ω2=0.3、ω3=0.2,ω2=0.4、ω3=0.1,loss曲線見(jiàn)圖10(b),可以看出,當(dāng)ω2=ω3=0.25時(shí)模型收斂速度快、準(zhǔn)確率高。經(jīng)過(guò)反復(fù)試驗(yàn),最終確定權(quán)重ωk的取值為ω1∶ω2∶ω3=0.5∶0.25∶0.25。
圖10 權(quán)值ωk取不同值時(shí)的loss曲線
當(dāng)ω1∶ω2∶ω3=0.5∶0.25∶0.25時(shí),通過(guò)損失函數(shù)曲線可以看出該模型收斂速度較快,在訓(xùn)練了500張圖像時(shí)的損失值和訓(xùn)練2 500張圖像時(shí)的損失值相差不大,在訓(xùn)練到2 500張圖像時(shí)損失函數(shù)波動(dòng)很小,顯示出模型具有較好的魯棒性。
為驗(yàn)證本文算法的優(yōu)越性,和其他最新的疲勞檢測(cè)算法進(jìn)行對(duì)比,結(jié)果見(jiàn)表7。
表7 對(duì)比實(shí)驗(yàn)結(jié)果
由表7可以看出,本文在低算力設(shè)備及無(wú)GPU加速情況下,采用MTCNN-PFLD-LSTM算法,準(zhǔn)確率達(dá)到99.22%,檢測(cè)幀率達(dá)到46;本文檢測(cè)準(zhǔn)確率比第2的模型(文獻(xiàn)[17])增加了0.26%,檢測(cè)幀率FPS比性能第2的模型(文獻(xiàn)[13])增加了1.3倍。文獻(xiàn)[14]和文獻(xiàn)[15]由于采用了GPU加速,所以FPS較高,但是硬件配置要求較高;文獻(xiàn)[17]的檢測(cè)準(zhǔn)確率較高,但是檢測(cè)幀率為8,運(yùn)算效率較低。對(duì)比試驗(yàn)結(jié)果表明,本文提出的算法在低算力設(shè)備上應(yīng)用時(shí)耗時(shí)較少,檢測(cè)準(zhǔn)確率較高,綜合檢測(cè)效果較好。
本文采用MTCNN-PFLD-LSTM模型進(jìn)行司機(jī)疲勞駕駛檢測(cè),無(wú)須GPU加速,便于在移動(dòng)設(shè)備等低算力設(shè)備上應(yīng)用。通過(guò)優(yōu)化MTCNN-PFLD-LSTM模型在不同階段任務(wù)的損失函數(shù)權(quán)重,在YawDD數(shù)據(jù)集中的檢測(cè)準(zhǔn)確率達(dá)到99.22%,檢測(cè)幀率達(dá)到46,檢測(cè)的效率與準(zhǔn)確性較好,能夠滿足基于視覺(jué)特征的司機(jī)疲勞駕駛檢測(cè)要求。