唐美霞,何 勇
(1.南寧職業(yè)技術(shù)學(xué)院 信息工程學(xué)院,廣西 南寧 530008;2.湖南科技大學(xué) 計算機科學(xué)與工程學(xué)院,湖南 岳陽 414000)
基于計算機視覺方式檢測駕駛員疲勞狀態(tài)的主要依據(jù)是檢測駕駛員的雙眼狀態(tài),如果駕駛員兩個眼睛都已經(jīng)閉合,那么說明駕駛員已經(jīng)處理疲勞狀態(tài)[1-7]。譬如,文獻[8]提出了一種非侵入式駕駛員疲勞狀態(tài)檢測方法。首先,采用AdaBoost算法檢測到臉部區(qū)域。然后,基于臉部幾何形狀來定位眼睛的感興趣區(qū)域。在這個區(qū)域,通過徑向?qū)ΨQ變換精確定位眼睛瞳孔。通過主成分分析訓(xùn)練3個特征空間來識別眼睛狀態(tài)。但該方法在定位眼睛的感興趣區(qū)域時精度不高,后續(xù)定位眼睛瞳孔所采用的徑向?qū)ΨQ變換對于閉眼狀態(tài)定位效果差。文獻[9]提出一種改進的眼睛狀態(tài)檢測方法,利用“參考白”算法對原始幀圖像做光照補償處理,基于膚色特征檢測出人臉區(qū)域,利用積分投影法將人臉和眼睛分割出來,結(jié)合眉毛和眼睫毛之間距離的變化、眼睛區(qū)域黑色像素點的個數(shù)變化這兩個參數(shù)對眼睛的狀態(tài)做出判斷。該方法盡管效率很高,但是適應(yīng)性較差。首先是采用膚色特征檢測的人臉區(qū)域可靠度較低,尤其是駕駛員頭發(fā)稍長時會造成面部上半部確實太多,眼睛定位很困難。而且積分投影方法定位眼睛區(qū)域的可靠性也不高,受黑框眼鏡以及面部姿態(tài)的影響較大。而且特征的魯棒性弱,易受分割誤差、尺度等影響。文獻[5]為了解決頭部多位置眼睛精確定位的問題,提出了一種基于膚色和紋理特征的算法,根據(jù)皮膚顏色以及眼睛和其它部位之間的灰度差異檢測臉部,采用二值化和形態(tài)學(xué)圖像處理方法,找到眼睛候選區(qū)域。通過計算候選區(qū)域的紋理特征值來檢測眼睛。用橢圓擬合的方法來檢查雙眼的真實性,并測量眼睛的開放程度,從而判斷駕駛員是否疲勞。該方法定位眼睛的精度同樣受駕駛員發(fā)型的影響,而且采用橢圓擬合方法檢測閉眼狀態(tài)的雙眼的精確度較低。
針對現(xiàn)有方法定位眼睛精度不高、特征魯棒性不強的問題,本文提出了一種非侵入方式駕駛員疲勞狀態(tài)檢測方法,采用一種時空約束的Adaboost方法從視頻中快速檢測駕駛員面部區(qū)域,結(jié)合先驗知識從面部區(qū)域中定位雙眼的可能區(qū)域,接著采用大數(shù)據(jù)Haar-like特征和Adaboost分類器快速、精確定位雙眼區(qū)域。在此基礎(chǔ)上,采用卷積神經(jīng)網(wǎng)絡(luò)的LeNet5網(wǎng)絡(luò)架構(gòu)訓(xùn)練眼睛狀態(tài)分類器和檢測雙眼狀態(tài),依據(jù)雙眼是否閉合的特性判別駕駛員是否疲勞。其中,本文采用Haar-like特征和Adaboost分類器在可能雙眼區(qū)域定位眼睛位置,相對于現(xiàn)有的采用投影、徑向?qū)ΨQ變換、橢圓擬合等方法而言,雙眼定位精度可以得到明顯提高。
本文首先選擇文獻[10]所述的時空約束的Adaboost方法從駕駛員視頻中快速可靠定位面部區(qū)域,該方法不需要面部的膚色信息,受光照以及駕駛員發(fā)型的影響小。而且該方法結(jié)合了相鄰幀之間的相關(guān)性以及駕駛員面部活動的先驗知識,檢測面部區(qū)域的效率和精確度都很高。然后,本文依據(jù)雙眼在面部區(qū)域分布的先驗知識,確定雙眼的大致區(qū)域,該區(qū)域范圍大,肯定可以包含雙眼區(qū)域,但是包含的背景區(qū)域也很多。接著,我們在該區(qū)域上采用Haar-like特征和Adaboost分類器檢測精確的雙眼區(qū)域,由于雙眼的大致區(qū)域相對于面部整個區(qū)域來說尺寸很小,而且排除了面部其它區(qū)域的干擾,因此雙眼精確檢測的效率和精度都比較高。
文獻[10]指出,在駕駛員疲勞檢測系統(tǒng)中,駕駛員面部有兩個先驗條件:①在駕駛過程中,相鄰視頻幀檢面部的位置變化不大;②駕駛員面部視頻中最多只有一張臉。
基于這兩個先驗條件,文獻[10]提出了一種時空約束的Adaboost方法。首先,根據(jù)前一幀計算當(dāng)前視頻幀中駕駛員臉部的可能位置。其次,設(shè)計了空間限制策略來抑制Adaboost方法的檢測窗口和尺度,從而減少了人臉檢測的時間消耗和誤檢。最后,設(shè)計面部知識限制策略,用于確認Adaboost方法檢測到的面部。流程如圖1所示。相對于傳統(tǒng)的基于Haar-like和Adaboost的人臉檢測方法,該方法的主要貢獻在于設(shè)計了3個限制策略:
(1)時間限制策略。首先,執(zhí)行幀差分法來檢測移動目標(biāo);然后,根據(jù)前一幀計算當(dāng)前幀中的面部的可能位置;最后,根據(jù)臉部的可能位置來限制Adaboost方法的檢測窗口,以避免在非面部窗口中的臉部檢測的時間消耗和誤檢。
(2)空間限制策略。Adaboost方法的檢測規(guī)模根據(jù)前一幀和已檢測到的面部大小進行限制,以避免在非臉部尺度上的臉部檢測的時間消耗和虛假檢測。
(3)知識限制策略。通過Adaboost方法檢測到的子窗口可以根據(jù)面部知識進行確認,以減少臉部檢測的誤檢率。如果子窗口符合知識限制,可以根據(jù)前期檢測結(jié)果立即結(jié)束臉部檢測過程,以減少時間消耗。
時空限制策略的詳細過程描述如下:
步驟1 尋找面部的可能位置。
令P0(P0x,P0y)為前一幀中f0w×f0h大小的檢測面部的中心位置。如果前一幀中沒有檢測到任何面部,則P0x=P0y=-1,f0w=f0h=0。當(dāng)前幀中可能的位置P(Px,Py)可以計算如下:
(1)采用三幀差分法檢測當(dāng)前幀中的移動目標(biāo),并記錄所有檢測到的目標(biāo)的大小和位置。
(2)找到面積最大的目標(biāo)區(qū)域S,記中心位置為P1。這個目標(biāo)比其它目標(biāo)更有可能成為一個面部區(qū)域,因為真正的面部在駕駛員視頻中占據(jù)較大的面積。
(3)由于駕駛員的面部有時候不會移動或移動,所以當(dāng)S 如果Px=Py=-1,或f0w=f0h=0,則不限制Adaboost方法的檢測窗口和比例尺度,轉(zhuǎn)到步驟4;否則,轉(zhuǎn)到步驟2。 步驟2 限制Adaboost方法的檢測尺度。 根據(jù)先驗條件1,兩個連續(xù)幀之間的面部大小的變化不大,所以尺度限制策略可以描述為 (1) 其中,(MaxW,MaxH)是Adaboost方法的最大尺度(MinW,MinH)是Adaboost方法的最小尺度,k1和k2是系數(shù)。其中,k1=1.5,k2=0.5。 步驟3 限制Adaboost方法的檢測窗口。 限制策略可以描述如下 (2) 其中,(x,y)是Adaboost方法的檢測窗口中的任一像素,k3和k4是系數(shù)。其中,k3=k4=1.0。 步驟4 更新參數(shù)。 如果在當(dāng)前幀中檢測到真實人臉,尺寸為fw×fh,中心為P(Px,Py),則更新參數(shù)應(yīng)如下:P0=P、f0w=fw、f0h=fh。 圖1 面部檢測流程 獲取視頻中的面部區(qū)域以后,本文進一步定位雙眼區(qū)域,最終依據(jù)雙眼狀態(tài)辨別駕駛員是否疲勞。雙眼區(qū)域定位主要有3種方法,一是依據(jù)面部圖像分割結(jié)果和五官的先驗分布知識,定位雙眼區(qū)域。該方法效率很高,實現(xiàn)也很方便,但存在的問題是受分割誤差影響大,譬如,如果光照不均勻?qū)е旅娌糠指铄e誤,或者黑框眼鏡等干擾導(dǎo)致分割中存在干擾目標(biāo)塊時,雙眼區(qū)域的定位可能完全錯誤,如定位到眉毛或黑框眼鏡區(qū)域。二是依據(jù)霍夫圓或者橢圓擬合檢測瞳孔位置,間接實現(xiàn)雙眼區(qū)域的定位。該方法效率也較高,但對于駕駛員疲勞檢測應(yīng)用而言是不適用的,因為駕駛員疲勞的主要特征是眼睛閉合,這樣,瞳孔就不明顯。而且,當(dāng)帶眼鏡時可能由于反光等因素影響,導(dǎo)致瞳孔不明顯。三是基于紋理特征定位雙眼區(qū)域。目前應(yīng)用效果較好的是基于Haar-like特征和Adaboost分類器來檢測眼睛區(qū)域。但該方法效率偏低,且虛檢較多??紤]到前面我們已經(jīng)檢測到面部區(qū)域,因此我們可以依據(jù)眼睛分布的先驗知識來縮小眼睛檢測的范圍,這樣可以大幅提高運算效率,而且大幅降低虛檢現(xiàn)象。具體的實現(xiàn)方法是: 步驟1 采用雙線性插值方法,將上一小節(jié)檢測到的面部區(qū)域圖像尺寸變換為256×256。 步驟2 依據(jù)眼睛分布的先驗知識,從面部圖像中切分雙眼的可能區(qū)域圖像。記(xl,yl,wl,hl)和(xr,yr,wr,hr)分別表示左眼和右眼的可能的矩形框區(qū)域,依據(jù)先驗知識,有 (3) 步驟3 分別在左眼和右眼的可能矩形框區(qū)域(xl,yl,wl,hl)和(xr,yr,wr,hr)上進行眼睛檢測,尋找真實的眼睛區(qū)域。本文采用基于Haar-like特征和Adaboost分類器的方法,具體是使用OpenCV中自帶的眼睛檢測分類器來實現(xiàn)這一功能。 步驟4 依據(jù)檢測到的雙眼真實區(qū)域,從面部圖像中分別裁剪左眼區(qū)域圖像和右眼區(qū)域圖像,并采用雙線性插值方法進行尺度變換,變換后的眼睛區(qū)域尺寸為64×32。記變換后左眼圖像為Sl,右眼圖像為Sr。 對于變換后的左眼和右眼圖像,分別采用卷積神經(jīng)網(wǎng)絡(luò)判別眼睛狀態(tài)。這里,首先需要訓(xùn)練眼睛狀態(tài)分類器,采用的是卷積神經(jīng)網(wǎng)絡(luò)常用的LeNet5網(wǎng)絡(luò)架構(gòu)[11],如圖2所示。該網(wǎng)絡(luò)架構(gòu)主要包括5層,即3個卷積層和兩個抽樣層。具體實現(xiàn)是使用Caffe工具集中的LeNet5網(wǎng)絡(luò)。 圖2 LeNet5網(wǎng)絡(luò)結(jié)構(gòu) 訓(xùn)練時需要構(gòu)建正負樣本數(shù)據(jù)集。本文要建立的是眼睛狀態(tài)分類器,眼睛有兩種狀態(tài),一種是睜開狀態(tài),一種是閉合狀態(tài)。我們要檢測的是閉合狀態(tài)的眼睛。因此,正樣本集由閉合的眼睛圖像構(gòu)成,負樣本集由睜開的眼睛圖像構(gòu)成。由于目前沒有公開的眼睛狀態(tài)數(shù)據(jù)集,因此我們自己構(gòu)建數(shù)據(jù)集。我們拍攝了50個志愿者的共1000幅眼睛閉合面部圖像,從中裁剪出2000幅閉合眼睛圖像(不區(qū)分左右眼),構(gòu)成正樣本數(shù)據(jù)集。同時從ORL、YALE人臉數(shù)據(jù)集中裁剪出6000幅睜開眼睛圖像(不區(qū)分左右眼),構(gòu)成負樣本數(shù)據(jù)集。其中,圖像尺寸都變換為64×32。部分樣本如圖3所示。然后,使用LeNet5網(wǎng)絡(luò)結(jié)構(gòu)對數(shù)據(jù)集進行訓(xùn)練,構(gòu)建眼睛狀態(tài)分類器。測試時,將圖像輸入給分類器,即可輸出眼睛狀態(tài),輸出值為1是表示眼睛是閉合狀態(tài),否則表示眼睛是睜開狀態(tài)。記左眼圖像Sl的分類輸出為vl,右眼圖像Sr的分類輸出為vr。 圖3 部分樣本圖像 駕駛員是否疲勞可以通過檢測兩眼是否閉合來判決。結(jié)合前兩節(jié)的闡述,本文所述的駕駛員疲勞狀態(tài)檢測方法的實現(xiàn)流程如圖4所示。首先,從視頻中快速定位面部區(qū)域位置,然后精細檢測雙眼區(qū)域位置,得到尺寸規(guī)范化的雙眼圖像。接著,分別將雙眼圖像送入已經(jīng)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)分類器,輸出雙眼狀態(tài)。如果某幀圖像中輸出兩個眼睛都是閉合的結(jié)果,那么我們認為該幀圖像中的駕駛員存在疲勞狀態(tài)。否則,不存在疲勞狀態(tài)。 圖4 駕駛員疲勞狀態(tài)檢測實現(xiàn)流程 為了驗證算法性能,本文設(shè)計如下仿真實驗。 首先,建立算法驗證所需的大數(shù)據(jù)集。由于計算機視覺領(lǐng)域目前還沒有公開的測試數(shù)據(jù)集。本文考慮自建構(gòu)建大數(shù)據(jù)集。實現(xiàn)方法是:拍攝50個志愿者模擬的駕駛視頻(仿真實驗時車輛是靜止的),每一個志愿者拍攝兩個視頻片段,一個片段中雙眼始終睜開,另一個片段中雙眼始終閉合。將雙眼睜開的視頻片段放入負樣本集,將雙眼閉合的視頻片段放入正樣本集。視頻片段的時長為2 s~4 s,視頻幀率為25 fps,視頻分辨率為720×576。視頻中面部區(qū)域所占整幅圖像的面積超過50%。后續(xù)實驗都是在該數(shù)據(jù)集上進行的。 其次,制定算法測試的評價指標(biāo)。本文從駕駛員疲勞狀態(tài)檢測和可靠性和效率兩個方面綜合考慮,采用檢測正確率和檢測幀率兩個指標(biāo)進行性能評價。檢測正確率是指檢測結(jié)果正確的視頻片段數(shù)量所占視頻片段總數(shù)的比值??紤]到視頻與圖像不同,難以做到每幀圖像都能得到一個穩(wěn)定正確的結(jié)果。因此,通常采用濾波的方法對視頻中多幀檢測結(jié)果進行濾波。本文所指的檢測結(jié)果正確的含義是,檢測結(jié)果正確的視頻幀數(shù)量超過了視頻中幀數(shù)的80%。譬如,對于正樣本中某一個視頻,假設(shè)視頻幀數(shù)為100,算法對每一幀的輸出結(jié)果中如果得出的駕駛員疲勞的次數(shù)超過80次,則我們認為算法對該視頻片段的檢測結(jié)果是正確的。同樣地,對于負樣本中某一個視頻,仍假設(shè)視頻幀數(shù)為100,算法對每一幀的輸出結(jié)果中如果得出的駕駛員非疲勞的次數(shù)超過80次,則我們認為算法對該視頻片段的檢測結(jié)果是正確的。檢測幀率的計算方法是:每一個視頻片段檢測所耗費的總時間除以視頻片段所包含的幀數(shù)。在統(tǒng)計時,檢測幀率指標(biāo)統(tǒng)計所有視頻檢測幀率的平均值。實驗所用的計算機性能參數(shù)為:Intel I7 CPU、DDR3 16 G RAM。計算機安裝的操作系統(tǒng)為:Windows 7 64 bits。算法運行的軟件開發(fā)環(huán)境為:Visual Studio 2013。 接下來進行仿真實驗,結(jié)合本文方法的兩個優(yōu)勢,首先測試眼睛定位正確率,然后測試疲勞狀態(tài)檢測的正確率和檢測幀率。參與測試的除了本文方法外,還有文獻[5,8,9]所述方法,這3種方法與本文方法一樣,都是基于眼睛狀態(tài)進行疲勞狀態(tài)檢測的,所以具有可對比性。 首先測試定位正確率,方法是將各種方法定位的眼睛區(qū)域圖像保存下來,然后人工核對保存的圖像中是否包含一只眼睛,如果包含則認為該圖像定位正確。最后,統(tǒng)計定位正確的圖像數(shù)量,然后除以數(shù)據(jù)集中的眼睛總數(shù),作為眼睛定位正確率。該值越大說明定位效果越好。圖5顯示了4種方法的定位結(jié)果,很明顯,本文方法的定位結(jié)果優(yōu)于其它3種方法。 圖5 眼睛定位正確率對比 表1給出了4種方法的疲勞狀態(tài)檢測性能對比結(jié)果。首先從檢測正確率來分析,本文方法明顯高于其它3種方法,高出其它方法17%以上。這不僅是因為本文方法在眼睛定位階段的定位正確率明顯高于其它方法,而且還因為本文方法采用深度學(xué)習(xí)方法進行特征的提取和分類,特征魯棒性更強,尤其是相對于采用幾何特征的眼睛狀態(tài)判別方法而言,眼睛狀態(tài)分類的正確率得到明顯提高。接著從檢測幀率來分析,本文方法和檢測幀率與文獻[8]相當(dāng),高于文獻[10],但低于文獻[9]。綜合考慮兩個指標(biāo),本文方法明顯優(yōu)于文獻[8,10],盡管檢測幀率低于文獻[9],但檢測正確率高出文獻[9]45%。因此,綜合評價,本文方法是一種快速、可靠的非侵入式駕駛員疲勞檢測方法。 表1 疲勞狀態(tài)檢測性能對比 非侵入式的駕駛員疲勞檢測是目前駕駛員疲勞檢測系統(tǒng)研究的重要方向。本文針對現(xiàn)有方法在眼睛定位精度不高和特征魯棒性不強兩個的問題,提出一種非侵入方式駕駛員疲勞狀態(tài)檢測方法。主要創(chuàng)新工作之一是采用一種時空約束Adaboost方法從視頻中快速檢測駕駛員面部區(qū)域,采用Haar-like特征和Adaboost分類器在雙眼可能區(qū)域快速、精確定位雙眼區(qū)域,提高雙眼定位精度。主要創(chuàng)新工作之二是采用卷積神經(jīng)網(wǎng)絡(luò)的LeNet5網(wǎng)絡(luò)架構(gòu)訓(xùn)練眼睛狀態(tài)分類器和檢測雙眼狀態(tài),提高特征的魯棒性和分類的可靠性。實驗結(jié)果也表明了本文方法在眼睛定位和眼睛狀態(tài)檢測方面的優(yōu)勢。但本文方法的檢測幀率還沒有達到實時,下一步還需完善。 參考文獻: [1]Jiao Y,Peng Y,Lu B L,et al.Recognizing slow eye movement for driver fatigue detection with machine learning approach[C]//International Joint Conference on Neural Networks.IEEE,2014:4035-4041. [3]JIANG Jianchun,JIANG Li,TANG Hui,et al.Detection of driver fatigue based on pulse IMF frequency characteristics and SVDD[J].Journal of Computer Science,2016,43(7):314-318(in Chinese).[蔣建春,蔣麗,唐慧,等.基于脈搏IMF時頻特征和SVDD的駕駛員疲勞檢測[J].計算機科學(xué),2016,43(7):314-318.] [4]Horng W B,Chen C Y,Peng J W,et al.Improvements of driver fatigue detection system based on eye tracking and dynamic template matching[J].Wseas Transactions on Information Science & Applications,2012,9(1):14-23. [5]Zhang W,Wang Z,Li Y.Eye localization and state analysis for driver fatigue detection[J].Jornal of Hongqng Nvry,2013,36(1):22-28. [6]BAI Zhonghao,JIAO Yinghao,BAI Fanghua.Driver fatigue detection based on active shape model and fuzzy reasoning[J].Chinese Journal of Instrument and Meters,2015,36(4):768-775(in Chinese).[白中浩,焦英豪,白芳華.基于主動形狀模型及模糊推理的駕駛疲勞檢測[J].儀器儀表學(xué)報,2015,36(4):768-775.] [7]Fu R,Wang H,Zhao W.Dynamic driver fatigue detection using hidden Markov model in real driving condition[J].Expert Systems with Applications,2016,63(C):397-411. [8]Gao X Y,Zhang Y F,Zheng W L,et al.Evaluating driving fatigue detection algorithms using eye tracking glasses[C]//International IEEE/EMBS Conference on Neural Engineering.IEEE,2015:767-770. [9]ZHAO Xiaolin,WANG Shigang,JIANG Xiuhong,et al.Driver fatigue detection based on human eye condition[J].Journal of Jilin University (Information Science Edition),2015,33(4):449-453(in Chinese).[趙曉琳,王世剛,姜秀紅,等.基于人眼狀態(tài)的駕駛員疲勞檢測[J].吉林大學(xué)學(xué)報(信息科學(xué)版),2015,33(4):449-453.] [10]Liu T,Xie J,Yan W,et al.Driver’s face detection using space-time restrained Adaboost method[J].Ksii Transactions on Internet & Information Systems,2012,6(9):2341-2350. [11]Yu N,Jiao P,Zheng Y.Handwritten digits recognition base on improved LeNet5[C]//Control and Decision Conference.IEEE,2015:4871-4875.1.2 雙眼區(qū)域定位
2 基于卷積神經(jīng)網(wǎng)絡(luò)的雙眼狀態(tài)檢測
3 駕駛員疲勞狀態(tài)檢測
4 仿真實驗
4.1 眼睛定位實驗
4.2 疲勞狀態(tài)檢測實驗
5 結(jié)束語