王增才,趙 磊,房素素,張國新,齊亞州
(1.山東大學(xué) 機(jī)械工程學(xué)院,山東 濟(jì)南 250061; 2.高效潔凈機(jī)械制造教育部重點實驗室,山東 濟(jì)南 250061)
近年來,我國鐵路事業(yè)不斷發(fā)展,隨著高鐵速度的不斷提升,到達(dá)的地域越來越廣,越來越多的人首選鐵路作為出行工具。高速列車與其他交通方式(如輪船、飛機(jī)和汽車)相比,安全系數(shù)較高,但是一旦出現(xiàn)交通事故,帶來的經(jīng)濟(jì)損失和人員傷亡是十分巨大的,而在所有列車事故發(fā)生的原因中,駕駛員疲勞及注意力不集中占比例最高[1],在列車長時間運行時,單一的駕駛環(huán)境極易引起駕駛員的疲勞,因此為了保證列車駕駛員和乘客的安全,對列車駕駛?cè)说钠跔顟B(tài)進(jìn)行識別是必要的[1]。而視線方向的變化往往能夠反映列車駕駛員的疲勞和注意力狀態(tài),瞳孔相對于眼角點的位置和運動狀態(tài)是視線方向估計的關(guān)鍵特征。
本文結(jié)合圖像紋理和學(xué)習(xí)模型,采用粗到精定位的策略來獲取列車駕駛員眼角點和瞳孔位置。首先,利用監(jiān)督下降法SDM[13]定位模型對列車駕駛?cè)说拿娌刻卣鼽c進(jìn)行定位和跟蹤,獲取眼角點初始位置。然后在區(qū)域中通過加權(quán)遍歷積分投影算法對瞳孔中心進(jìn)行粗定位獲得其初始位置。最后,將已定位的瞳孔和眼角點作為初始點,采用基于局部二值特征LBF的級聯(lián)回歸方法[14]對眼角和瞳孔點進(jìn)行進(jìn)一步精確定位。技術(shù)路線見圖1。
圖1 總體技術(shù)路線
采用SDM模型對面部特征點進(jìn)行定位,從而獲取眼睛區(qū)域和眼角點初始位置。SDM是牛頓法的改進(jìn),主要通過對機(jī)器學(xué)習(xí)模型進(jìn)行訓(xùn)練求出梯度的下降方向,解決復(fù)雜最小二乘問題。該方法訓(xùn)練用的目標(biāo)函數(shù)為
(1)
式中:x0為特征點坐標(biāo)初始值;h(d(x))為在關(guān)鍵點x附近提取的紋理特征(HOG和SHIFT等);φa=h(d(xa))為在標(biāo)定點附近提取的紋理特征。初始點坐標(biāo)x0可通過不同的特征點初始化策略得到。該方法通過對式(1)的迭代,使xk+1=xk+Δxk逐漸接近人工標(biāo)定值xa。首次迭代的式(1)的泰勒展開式為
(2)
式中:Jf(x0)為矩陣的一階導(dǎo)數(shù);H(x0)為矩陣的二階導(dǎo)數(shù)。將式(2)對Δx求導(dǎo)并設(shè)置為0,得到
Δx1=-H-1(x0)Jf(x0)=-2H-1(x0)Jf(x0)(φ0-φa)
(3)
其中,φ0=h(d(x0)),首次迭代可以看作特征差Δφ0=φ0-φa在R0=-2H-1(x0)Jf(x0)方向上的投影,其投影結(jié)果用Δx1表示。因此,可以用式(4)來表示首次迭代。
Δx1=R0φ0+b0
(4)
根據(jù)SDM算法,第k步迭代后式(4)改寫為
xk=xk-1+Rk-1φk-1+bk-1
(5)
式中:xk為第k次迭代后面部關(guān)鍵點的位置:φk-1為第k-1次迭代后關(guān)鍵點附近的特征;Rk-1為下降方向;bk-1為偏差項,Rk-1和bk-1通過訓(xùn)練得到。在訓(xùn)練過程中,該模型主要更新形狀差值Δxk=xa-xk-1和特征向量φk兩個參數(shù),來生成新的訓(xùn)練樣本,訓(xùn)練的過程為
(6)
式中:di為第i張圖像;j為特征點的編號。式(6)是最小二乘問題,可求解析解。定義F=[φ1],A=[Rb]。則
(7)
根據(jù)式(7),可求Ak的解析解為
(8)
得到Ak后,根據(jù)迭代公式和每張人臉圖片上的面部特征,可以得到
(9)
(10)
在訓(xùn)練過程中,只需要在每次迭代后的新坐標(biāo)附近計算紋理特征,然后通過式(9)和式(10)進(jìn)行多次迭代可以得到最終位置。將每次迭代得到的A保存,用于定位新的樣本圖像。
訓(xùn)練好模型后,其測試過程如下:(1)采用Adaboost人臉定位算法定位人臉區(qū)域;(2)根據(jù)人臉區(qū)域初始化人臉形狀,得到x0;(3)采用SDM學(xué)習(xí)到的參數(shù)下降方向Rk和bk不斷更新人臉形狀xk,回歸出最終的人臉形狀。本文采用3名駕駛員的視頻圖像來對模型進(jìn)行測試,部分定位結(jié)果見圖2。可以看出該方法能夠?qū)崿F(xiàn)駕駛員眼睛特征點的有效檢測。
圖2 面部特征定位檢測結(jié)果
在面部特征點定位后,確定眼角點的初始位置,但是該模型無法確定瞳孔的初始位置。因此,本文通過模板遍歷法[5]提取眼睛圖像的灰度比率,然后將其作為權(quán)值構(gòu)建積分投影曲線,用來粗定位駕駛員瞳孔位置。
利用滑動模板對眼睛區(qū)域進(jìn)行灰度分析:首先將在獲取眼睛區(qū)域圖像,然后用圖3所示的模板W從圖像左上角對其進(jìn)行遍歷。在每個位置上計算模板所覆蓋區(qū)域的灰度比率值。模板W區(qū)域內(nèi)灰度比率的計算公式為
(11)
圖3 圓形滑動模板的遍歷方法
將灰度比率作為權(quán)值,通過式(12)和式(13)來計算圖像的加權(quán)積分投影曲線。在瞳孔區(qū)域的位置,投影曲線在x軸和y軸兩個方向均有極小值,將兩個方向曲線的極小值作為粗定位的坐標(biāo)值,實現(xiàn)瞳孔位置的初始定位。
(12)
(13)
本文利用LBF特征和回歸模型同時定位瞳孔點和眼角點,該方法不僅能夠?qū)︸{駛員的眼角點和瞳孔點進(jìn)一步精確定位,而且還能將眼角點作為約束,避免干擾對瞳孔點定位精度的影響。
本文采用的回歸方法通過級聯(lián)形式來擬合得到總體形狀S。以S0作為初始形狀,利用每次迭代獲取的形狀增量ΔS對總體形狀S擬合。第t次迭代求得的ΔSt為
ΔSt=WtΦt(I,St-1)
(14)
式中:St-1為上一次迭代獲取的形狀;I表示輸入圖像;Фt為關(guān)鍵點的征映射函數(shù)向量,依賴I和St-1;Wt為回歸矩陣。利用這種方式學(xué)習(xí)的特征作為關(guān)鍵點的編碼特征。將ΔSt加入到St-1,進(jìn)行下一步計算。
映射函數(shù)向量Фt主要通過學(xué)習(xí)和手動設(shè)計得到。但是,若將所有樣本中關(guān)鍵點均在手動設(shè)計的映射函數(shù)中選擇,那么在較大空間中學(xué)習(xí)到較為理想的特征組合是很難的。因此,該模型通過基于局部學(xué)習(xí)的策略來獲取映射函數(shù)。
特征映射函數(shù)由多個局部特征映射函數(shù)構(gòu)成,本文Φt主要由3個關(guān)鍵點組成:左右兩側(cè)的眼角點和一個瞳孔點。因此映射函數(shù)向量為
(15)
(16)
本文用訓(xùn)練隨機(jī)森林RF(Random Forest)回歸模型作為每個關(guān)鍵點的映射函數(shù),提取每一個點的LBF特征,通過全局級聯(lián)回歸精確定位左右兩側(cè)的眼角點和瞳孔點。
RF是一種基于多個決策樹的組合算法,主要是以分類回歸樹為基礎(chǔ)的分類回歸模型。RF由多個決策樹構(gòu)成,模型通過Bootstrap算法隨機(jī)地在數(shù)據(jù)中有放回地抽取樣本來訓(xùn)練每一顆樹,每一次訓(xùn)練的決策樹都因為訓(xùn)練樣本不同而其參數(shù)也不一樣。因此,RF能夠隨機(jī)生成多個決策樹,最后選擇重復(fù)程度最高的決策樹作為結(jié)果。由回歸樹構(gòu)成的組合模型通過求每顆回歸樹的平均值形成RF模型的預(yù)測值。RF回歸算法的流程見圖4。
圖4 RF模型
與RF模型不同,本文利用基于RF結(jié)構(gòu)的模型來提取特征點局部特征。在特征提取的過程中,每一個特征點都對應(yīng)一個RF模型,而每個RF是由相互獨立的多個決策樹構(gòu)成。本文通過求圖像中兩個不同坐標(biāo)點像素的差值獲取形狀索引特征,并將其作為輸入。本文RF模型是針對單個特征點,每個RF回歸模型所對應(yīng)的點不會關(guān)聯(lián)到其他RF對應(yīng)的特征點。圖5中,隨著迭代次數(shù)的增加,隨機(jī)點生成的圓形區(qū)域半徑逐漸減少。
圖5 最優(yōu)局部區(qū)域選取
利用以上形狀索引特征的獲取方法,訓(xùn)練RF模型。在訓(xùn)練過程中,令輸入為X={I,S},預(yù)測目標(biāo)由Y=ΔS表示。在訓(xùn)練的過程中,每棵樹中的每個節(jié)點的訓(xùn)練過程都相同,從隨機(jī)生成的形狀索引特征集合中選取一個特征的集合,然后將獲取的樣本分配到每個決策樹的左右子樹中。對決策樹的每個節(jié)點,我們期望左右子樹的樣本數(shù)據(jù)方差減少最大。每一個決策樹的節(jié)點都利用這種方法進(jìn)行訓(xùn)練,而且每顆樹均相互獨立訓(xùn)練,且方法相同。訓(xùn)練完后,決策樹的所有葉節(jié)點都保存一個特征點的二維偏移量。利用RF輸出由0和1組成的二值特征。將所有樣本點的特征串聯(lián)起來,建立整個特征點形狀的LBF特征。該方法技術(shù)路線見圖6。
圖6 LBF特征提取
在得到LBF特征后,求出關(guān)鍵點的全局特征映射函數(shù)Wt,即
(17)
式中:λ為正則項系數(shù),防止模型出現(xiàn)過擬合;NT為樣本的個數(shù)。
該模型的優(yōu)化和檢測步驟過程為:(1)利用SDM模型和加權(quán)遍歷積分投影方法獲取基于NT個關(guān)鍵點的初始形狀S0;(2)根據(jù)真實特征點形狀S和圖像I學(xué)習(xí)每個點的RF模型并求LBF特征;(3)利用式(17)計算全局線性投影Wt;(4)重復(fù)步驟(2)和(3),一直到模型收斂,得到Фt和Wt;(5)在檢測過程中,將眼睛圖片和初始坐標(biāo)作為輸入,求出對應(yīng)的LBF特征,然后利用Wt和Фt得到關(guān)鍵點的形狀差值,并根據(jù)下式對形狀進(jìn)行更新
St=St-1+WtΦt
(18)
多次迭代后,獲得眼角點和瞳孔點的位置。
為了驗證本文方法的有效性,采用基于靜態(tài)圖像和視頻圖像的數(shù)據(jù)集進(jìn)行實驗。首先,利用公共圖像數(shù)據(jù)集進(jìn)行實驗并與之前提出的方法比較;然后,利用公共視頻和自建視頻數(shù)據(jù)集模型進(jìn)行實驗分析,并研究該算法的檢測精度和效率。
本文采用目前通用的定位精度判定準(zhǔn)則[7-12]來驗證提出方法的有效性,其計算方法為
(19)
式中:Ti(i=1, 2, …,N)為第i個需要定位的點與其標(biāo)定點之間的距離;UL和UR為左右眼睛中心的位置,可以通過標(biāo)對眼睛標(biāo)定點平均得到;D為每個需要定位的點的誤差值。錯誤特征曲線[7-12]是通用的特征點定位模型評價工具,因此本文用該曲線進(jìn)行模型精度比較,誤差曲線的x軸坐標(biāo)為D,y軸坐標(biāo)的值為正確率,即橫坐標(biāo)中點d對應(yīng)的縱坐標(biāo)的正確率為定位誤差率D≤d的樣本數(shù)量占測試樣本總數(shù)的比率,其公式為
(20)
式中:Ad為當(dāng)誤差值為d時的正確率;Md為定位誤差值在D≤d的情況下樣本的數(shù)量;M表示樣本總數(shù)量。
為了保證本文提出模型的有效性和魯棒性,采用MUCT[15],UULM[16]和Gi4E[17]數(shù)據(jù)集作為訓(xùn)練集,采用BioID[18]數(shù)據(jù)集作為測試集。訓(xùn)練用的3個數(shù)據(jù)集是由不同的研究機(jī)構(gòu)建立的,其圖像大小和分辨率互不相同。但是,與面部特征點定位模型的訓(xùn)練方法相似,本文模型在訓(xùn)練中僅需提取面部特征點位置附近區(qū)域的紋理特征,圖像的大小和分辨率并不影響模型的訓(xùn)練過程。因此,本文將這3個數(shù)據(jù)集合并訓(xùn)練模型。
BioID數(shù)據(jù)集包含了23個人的總共1 521張圖片。該數(shù)據(jù)集包含了不同的環(huán)境、被檢測人的頭部姿態(tài)和眼鏡狀態(tài),部分被檢測人有佩戴眼鏡。因此,能夠驗證檢測模型的有效性[7-12]。
BioID數(shù)據(jù)集是由靜態(tài)圖像構(gòu)成的,在實驗過程中采用以下定位步驟:(1)利用AdaBoost方法對圖像中的人臉進(jìn)行定位;(2)采用SDM方法得粗定位眼角點;(3)采用積分投影曲線粗定位瞳孔位置;(4)采用LBF判別形狀回歸模型精確定位眼睛特征點。在實驗過程中,需要去除BioID數(shù)據(jù)庫中無法定位人臉特征的圖片,但是并不影響最終的結(jié)果[7, 11],因為去除的圖片僅為5張圖片,不超過整個數(shù)據(jù)集的0.5%。
提取部分結(jié)果圖像并分析其有效性,見圖6。圖6(a)、圖6(c)和圖6(d)所示在駕駛?cè)伺宕餮坨R時,本文方法能夠有效定位。圖6(b)當(dāng)駕駛?cè)搜劬顟B(tài)改變時,本文方法能夠有效定位眼角點和瞳孔位置。圖6(c)所示光照改變時,本文方法的定位效果也沒發(fā)生較大改變。圖6(d)~圖6(f)所示,在被測試者的瞳孔位置發(fā)生大范圍改變時,該模型也能正確定位。
圖6 在BioID數(shù)據(jù)集中瞳孔和眼角點的定位結(jié)果
我們對瞳孔眼角點定位精度曲線進(jìn)行分析,實驗結(jié)果見圖7,其中GP為基于本文采用的瞳孔粗定位方法,即通過加權(quán)的灰度積分投影曲線定位瞳孔位置。結(jié)果顯示,與基于GP的瞳孔檢測方法比較,基于SDM的眼角粗定位精度較高。可以看出,本文采用的瞳孔和眼角點定位方法的定位精度均高于粗定位方法。另外,眼角點的定位精度比瞳孔點的定位精度差,這主要是由于不同數(shù)據(jù)集對眼角點的標(biāo)定位置略有不同。
圖7 在BioID數(shù)據(jù)集中瞳孔和眼角點的錯誤特征曲線
該部分將本文方法與之前提出的瞳孔定位方法進(jìn)行比較,來進(jìn)一步驗證本文算法有效性。本文將文獻(xiàn)[7-12]提出的方法與本文提出的算法進(jìn)行比較,這些算法的實驗數(shù)據(jù)均采用BioID[7-12]數(shù)據(jù)集。提取當(dāng)D≤0.05、D≤0.1和D≤0.25時的樣本占有率作為比較結(jié)果,其實驗結(jié)果如表1所示。根據(jù)實驗結(jié)果可以看出,本文模型在取D≤0.05時樣本占比為96.4%,而當(dāng)D≤0.1時,樣本占比達(dá)到100%,在其他方法中,除了文獻(xiàn)[12]的方法外,D≤0.05的樣本占比均未超過90%。其中,取D≤0.1時樣本占比最高為99.4%,D≤0.25時樣本占比均未達(dá)到100%??梢钥闯?,與之前提出的方法相比,本文提出方法的定位精度最高且誤差始終保持D≤0.1以內(nèi)。
表1 BioID數(shù)據(jù)集的瞳孔定位檢測結(jié)果 %
為了保證定位模型的有效性和魯棒性,本文將Gi4E、MUCT、BioID和UULM數(shù)據(jù)集作為訓(xùn)練集,采用FRANK視頻數(shù)據(jù)集[11,19]和自建的眼睛特征點定位HELD視頻數(shù)據(jù)集來對模型進(jìn)行測試。
FRANK數(shù)據(jù)集是說話的面部視頻數(shù)據(jù)集,該數(shù)據(jù)集包含了5 000幀圖像,共一位測試者。
HELD數(shù)據(jù)集為自建數(shù)據(jù)庫,共采集了6名測試者在不同頭部姿態(tài)和視線方向的面部視頻,并通過手動標(biāo)定的方法確定瞳孔和眼角點的正確位置,共包含2 103幀圖像。
由于視頻的圖像是連續(xù)的,因此實驗過程為:(1)如果是初始幀的圖像則根據(jù)4.1節(jié)的步驟對眼角點和瞳孔點進(jìn)行定位,并獲取定位結(jié)果;(2)根據(jù)前一幀的定位結(jié)果,建立眼睛特征點初始模型;(3)采用本文提出的模型精確定位眼睛特征點。
對瞳孔和眼角點定位精度進(jìn)行分析,實驗結(jié)果見圖8、圖9。通過實驗結(jié)果看出,基于由粗到精方法的眼角點和瞳孔點的檢測精度均高于粗定位方法,且基于GP的瞳孔位置檢測方法定位精度最低。與4.1節(jié)中的實驗結(jié)果相似,模型對于眼角點的定位精度仍然低于瞳孔點。由于HELD數(shù)據(jù)集中的被測試者多于FRANK數(shù)據(jù)集,模型在HELD數(shù)據(jù)集中的眼角點定位精度要略低于在FRANK數(shù)據(jù)集中的精度;但在兩個數(shù)據(jù)集中,瞳孔定位精度近似,并且眼角點和瞳孔點的定位精度幾乎均在D<0.1范圍達(dá)到100%(FRANK:99.9%,HELD:98.6%)。
圖8 在FRANK數(shù)據(jù)集中瞳孔和眼角點的定位結(jié)果
圖9 在HELD數(shù)據(jù)集中瞳孔和眼角點的定位結(jié)果
分別計算本文提出的模型在這兩個視頻數(shù)據(jù)集中每幀瞳孔和眼角點的定位誤差值D,其錯誤率結(jié)果如表2所示。FRANK數(shù)據(jù)集中,瞳孔點的誤差值D≥0.15的幀數(shù)有2幀(0.04%);D≥0.1的幀數(shù)的有5幀(0.10%)。眼角點誤差值D≥0.15的幀數(shù)有6幀(0.12%);D≥0.1的幀數(shù)的有20幀(0.40%)。HELD數(shù)據(jù)集中,瞳孔點的誤差值D≥0.15的幀數(shù)有0幀(0.00%),D≥0.1的幀數(shù)的有3幀(0.14%);眼角點誤差值D≥0.15的幀數(shù)有0幀(0.00%);D≥0.1的幀數(shù)的有29幀(1.40%)。可以看出,在這兩個數(shù)據(jù)集中,所有特征點誤差值D≥0.1的幀數(shù)均不超過30幀。因此,該方法能夠在不同的面部視頻中魯棒地定位瞳孔和眼角位置。
表2 視頻數(shù)據(jù)集中瞳孔與眼角點定位錯誤率 %
分析該模型在FRANK和HELD視頻數(shù)據(jù)集中的檢測效率。模型采用MATLABC++混合編程,其硬件運行環(huán)境為:Intel(R) Core (TM) i7-6700 CPU @ 3.40 GHz,軟件環(huán)境為Windows 10,MATLAB 2017a和VS 2015,其平均運行時間的計算結(jié)果如表3所示。從結(jié)果可以看出,在這兩個數(shù)據(jù)集中,模型的平均運行時間差距不大,分別為21 ms和23 ms;經(jīng)過換算可得出,模型的運行速度均超過43幀/s。因此,本文提出的模型在該軟、硬件環(huán)境中能夠滿足對瞳孔和眼角點的實時檢測。
表3 模型運行時間結(jié)果
本文提出一種由粗到精定位的列車駕駛員眼角點和瞳孔點定位方法。該方法采用SDM模型對進(jìn)行粗定位并提取眼睛區(qū)域,采用圓形滑動模板遍歷眼睛圖像,根據(jù)眼睛瞳孔區(qū)域灰度值的特點用加權(quán)遍歷積分投影算法對瞳孔進(jìn)行粗定位。將瞳孔中心點和眼角點作為初始點,采用基于LBF的定位技術(shù)對眼角點和瞳孔位置進(jìn)行精確定位。實驗結(jié)果表明:本文提出的方法能夠魯棒地定位瞳孔和眼角點位置,其瞳孔定位精度明顯優(yōu)于其他方法。因此,利用該方法能夠獲取更加精確的瞳孔相對于眼角點的運動信息,為研究列車駕駛?cè)说囊暰€方向、注意力分散和疲勞駕駛識別方法打下了基礎(chǔ)。