王 帥, 趙魯陽, 何 為, 李鳳榮
(1.中國科學院上海微系統(tǒng)與信息技術研究所,上海 200050; 2.中國科學院大學,北京 100049)
現(xiàn)有的疲勞駕駛檢測手段大致分為三種:1)利用駕駛員生理信息,通過接觸式的裝置收集駕駛員生理參數(shù),判斷疲勞狀態(tài)[1,2];2)利用行車軌跡,檢測方向盤和剎車,油門踩踏頻率,從而判斷司機的疲勞狀態(tài)[3,4];3)基于計算機視覺,通過攝像頭獲取駕駛員面部特征信息,根據(jù)眼睛和嘴巴的狀態(tài)建立疲勞模型,輸入獲取到的圖像信息,輸出疲勞狀態(tài)。
通過計算機視覺的方法對人面部特征信息進行檢測和提取并結合相關的智能算法獲取到眼睛狀態(tài),這一問題已經(jīng)成為國內(nèi)外專家的研究熱點。目前對于人臉面部特征的分析和識別主要有:基于傳統(tǒng)圖像處理方法的顏色特征分析,這種方法受到環(huán)境的影響較大,在外部光線變化強烈的環(huán)境下,準確率較低[5,6]。基于分類器的人眼狀態(tài)判斷,這類算法得不到眼睛閉眼程度的準確判斷,無法收集到眼睛睜閉的程度信息,因此,無法進行PRECLOS準則的應用,從而無法進一步判斷疲勞狀態(tài)[7]。
由于鐵路列車的行駛時間無法確定,列車的司機駕駛室極易出現(xiàn)背光或者光線較強的情形,對面部狀態(tài)的判定造成了困難。因此該場景對于算法的魯棒性要求較高。
本文主要基于主動形狀模型(active shape model,ASM)人臉關鍵點提取算法。將獲取的人臉圖像進行特征點匹配,運用統(tǒng)計處理方法,進而分析出人眼狀態(tài)信息。同時,建立時間窗機制,在固定的時間窗內(nèi),收集駕駛員的人眼特征信息。為了判斷司機是否存在疲勞狀態(tài),本文利用支持向量機(support vector machine,SVM)分類器,訓練人眼模型,最后應用該模型做二值判斷。在實際列車中進行的驗證和評估結果表明,復雜光線環(huán)境下該算法對于司機人眼狀態(tài)的判定具有良好的性能。
在列車的行駛過程中,經(jīng)常出現(xiàn)兩列列車在會車情況下,駕駛員的面部被強光照射,而在背對著太陽行駛或者周圍有建筑物遮擋時,司機的駕駛室又會出現(xiàn)光線暗淡問題。此類情形下,往往導致傳統(tǒng)的計算機視覺算法準確度下降甚至失效。如何有效地解決光線問題,是進行關鍵點提取的前提。
利用近紅外光攝像頭對于駕駛員面部進行提取,可以有效解決可見光對于圖像質(zhì)量的影響。近紅外光指的是波長在700~1 000 nm之間的波段。本文的系統(tǒng)中使用了850 nm波長的紅外補光燈,在攝像頭前端加入紅外濾光片,可以過濾可見光,允許紅外光通過。利用反射在人臉上的紅外光,對于人臉圖像進行獲取。實驗證明,利用近紅外攝像頭可以有效地減弱可見光對于人臉圖像質(zhì)量的影響,即使在會車中強光的照射以及在夜晚無光的環(huán)境下,依然可以降低因為圖像質(zhì)量對于關鍵點提取算法的影響[8,9]。
本文人臉關鍵點的提取采用改進的ASM算法。ASM是一種基于統(tǒng)計學習模型的特征點提取方法,分為訓練和搜索兩個過程[10]。訓練階段,利用大量的樣本數(shù)據(jù),得到平均人臉模型和局部特征模型;搜索階段,在合理的范圍之內(nèi)調(diào)節(jié)參數(shù),使人臉形狀隨之發(fā)生變化,直至最終收斂,實現(xiàn)人臉關鍵點的快速定位和提取。
ASM算法的訓練階段就是對前期采集到的圖像進行關鍵點的標記,構建形狀向量,利用標記好的N幅圖像求取平均形狀向量和局部特征向量。假設在一幅圖像中構造的形狀向量為
Xi=[xi0,yi0,xi1,yi1,…,xi(n-1),yi(n-1)]T
(1)
構建N維向量
π=[X1,X2,X3,…,Xk,…,XN]T
(2)
然后將所有圖片經(jīng)過壓縮、旋轉(zhuǎn)、平移操作之后對齊,將該N維向量進行歸一化處理。為了減小數(shù)據(jù)量處理的大小,用主成分分析的方法建立形狀模型。首先計算平均形狀向量
(3)
計算協(xié)方差矩陣
(4)
計算協(xié)方差矩陣S的特征值并將其按照從大到小依次排序,得到λ1,λ2,…,λk,…,λq,其中λi>0。選擇前t個特征值及其對應的特征向量,使其滿足
(5)
式中α為維數(shù)降低之后的模型可以包含原數(shù)據(jù)的信息量比例,一般取98 %。前t個特征向量Pi組成變換矩陣P。
構建的形狀模型可以表示為
(6)
式中b為相對應的特征向量的權值參數(shù)。
ASM算法不僅僅需要關鍵點的形狀模型,還需要每個關鍵點局部區(qū)域的特征模型,用于搜索階段的對比。
本文基于多尺度局部二值模型(multi-scale block local binary pattern,MB-LBP)算子進行特征向量的構建。MB-LBP算子是原始LBP算子的改進,該算子不再基于單個像素,而是將特征向量的構建擴展到了任意大小的“子區(qū)域”。該“子區(qū)域”就是用于提取特征向量的結構大小,選擇不同的尺度,就得到了不同的尺度特征,增加了局部區(qū)域特征的多樣性。最后計算“子區(qū)域”的平均灰度值,增加了像素點之間的相關性,同時對噪聲具有一定的抗干擾能力[11]。
為了提取關鍵點局部特征模型,這里計算以該關鍵點為中心的3×3區(qū)域的MB-LBP編碼值作為關鍵點的局部特征向量。MB-LBP編碼值的計算是通過以下步驟計算得到[12]。
MB-LBP的尺度因子表示為(s,t),表示選取任意一個3s×3t大小的矩陣來計算某一點的LBP編碼。這里選擇的矩陣區(qū)域是以待計算點為中心的矩形區(qū)域。將該矩形區(qū)域分割為9個“子區(qū)域”,每個“子區(qū)域”大小為s×t,依次計算9個子區(qū)域的灰度平均值。之后9個子區(qū)域的平均灰度值就按照原始的LBP算子進行編碼,即可得到該計算點的MB-LBP編碼值。
圖1 MB-LBP計算示意
在ASM算法的搜索階段,模型的初始位置的定位比較關鍵,直接影響了搜索的時間和搜索結果的擬合質(zhì)量。本文采用Adaboost算法對人臉進行初始位置定位。Adaboost算法在人臉定位方面具有快速,準確度高的優(yōu)點。
假設初始化位置是X=M(s,θ)[xi]+Xc,其中,Xc為人臉模型中心,M(s,θ)[xi]為對于形狀向量進行旋轉(zhuǎn)、縮放的操作。再利用建立的局部特征向量模型進行關鍵點的匹配度計算,原位置是Xi,更新的位置量為dx,則可調(diào)整更新后的位置為X′=Xi+dx。然后更新平移、旋轉(zhuǎn)、縮放參數(shù)和形狀參數(shù)bi,當X收斂時,則認為人臉關鍵點匹配完成。
ASM算法可以對人臉的關鍵點進行有效提取和擬合,得到人臉關鍵點的坐標信息。利用人眼和人嘴巴區(qū)域相關的關鍵點坐標信息,計算出人眼和人嘴巴的睜閉程度。
如圖2,人眼張開程度的計算是通過定位到人眼上邊沿的凸點和下邊沿的凹點,計算兩者y坐標系上的高度差,將此高度差除以臉部區(qū)域的高度,即為眼睛所占臉部的比例,該比例可作為人眼張開程度的一種表示方式
(7)
圖2 眼部區(qū)域
其中,人眼張開程度的計算將分為左眼和右眼,于是可以獲得2個參數(shù)ηl-eye,ηr-eye。
在利用關鍵點提取算法獲得人眼的狀態(tài)特征信息之后,需要建立疲勞判斷模型。輸入為獲取到的駕駛員面部圖像,輸出為駕駛員是否出現(xiàn)疲勞狀態(tài)的判定。該模型是一個二分類問題,利用SVM分類器可以獲得很好的效果[13]。
在二分類的問題中,核函數(shù)的選擇以及參數(shù)的選取方法是:首先通過預先設定一個單一的核函數(shù),并且假設一個合適的參數(shù),通過不斷地實驗測試,并且調(diào)整參數(shù)值,直到選擇一個合適的參數(shù)使得分類效果比較好,最終以此參數(shù)來構建分類器。
駕駛員的疲勞狀態(tài)不僅僅與單幅圖像的人眼特征有關,還與時間參數(shù)有關系,因此加入時間參數(shù) ,并且建立滑動時間窗機制,作為SVM分類器的輸入?yún)?shù)。本文為了建立疲勞檢測模型,在前文已經(jīng)提取出人臉局部關鍵點信息之后,設計了一種SVM分類模型,用于對駕駛員的人眼狀態(tài)進行檢測。
連續(xù)的N幀圖像稱為一段長度為N的時間窗。取一段時間窗,并對時間窗內(nèi)的圖像依次運用上文介紹的算法進行人臉圖像關鍵點的提取,計算人眼和人嘴巴區(qū)域的睜閉程度,得出ηl-eye,ηr-eye,可以得到2N個參數(shù),組成SVM分類器的輸入向量
(8)
該級分類器采用徑向基核函數(shù),即高斯核函數(shù),K(x,xi)=exp(-‖x-xi‖2/σ2)。主要是因為徑向基核函數(shù)是一種普適函數(shù),通過參數(shù)的適當選擇,可以適用于任意分布的樣本。
SVM是一個二分類分類器,輸入為每一幀圖像提取出來的左眼比例,右眼比例,輸出為該幀圖像顯示的駕駛員是否出現(xiàn)閉眼
(9)
本文利用帶有850 nm紅外補光燈和紅外濾光片的攝像頭采集系統(tǒng)和視頻采集模塊,安裝在列車的駕駛室座椅前方,用于采集列車司機實時的駕駛過程中的面部狀態(tài),共采集到50 h的列車司機駕駛場景,包括夜晚、白天、逆光和自然光環(huán)境下的不同司機的視頻數(shù)據(jù)。
圖3 前端采集設備
實驗在Intel i7的PC上進行測試,以MATLAB為開發(fā)環(huán)境,實現(xiàn)SVM分類器的訓練和測試。
測試樣本1 在列車司機駕駛室采集到的現(xiàn)場視頻的截取片段。在列車行駛過程中,采集了不同駕駛員,不同的光線環(huán)境和不同的行駛時間下的司機駕駛員人臉圖像,并截取其中駕駛員工作狀態(tài)下的圖像作為測試分析場景。同時,為了排除復雜條件下的干擾,剔除駕駛員停車休息場景。測試樣本集示例圖像如圖4所示。該樣本集用于測試人眼狀態(tài)的分類準確性。
圖4 列車司機駕駛現(xiàn)場樣本
測試樣本2CASPEAL數(shù)據(jù)庫[14],該數(shù)據(jù)庫包含了不同光照條件下,不同人臉的數(shù)據(jù)集,可以用于測試改進后ASM算法的性能。
實驗過程分為以下步驟完成:
1)先利用Adaboost算法針對紅外攝像頭獲取到的圖像進行人臉區(qū)域的定位,獲取到人臉圖像,為接下來的ASM算法提供了初始化位置。
2)ASM算法提取人臉關鍵點,獲得眼部區(qū)域的人眼上邊沿凸點和下邊沿的凹點坐標,計算人眼張開比例。
3)通過ASM算法得到的3個特征值作為SVM分類器的輸入,分類得出該幀圖像中駕駛員的人眼狀態(tài)。
將第一部分測試樣本分出4個不同的場景樣本集進行測試。采用交叉驗證的方式訓練和測試SVM。在測試樣本集中,人為地標記出來每一幀圖像人臉的眼睛狀態(tài),作為SVM分類器的訓練和測試樣本。最終測試的分類結果如表1所示,可以看出:分類器較好地將人眼狀態(tài)分類。
表1 人眼狀態(tài)分類結果
改進的ASM算法通過計算標定點和最終獲取到的關鍵點之間的平均歐氏距離作為衡量性能的標準, 計算得到的歐氏距離作為對本文算法的評測標準
(10)
式中N為測試圖片數(shù)量,n為單幅圖片關鍵點數(shù)量。本文N取50,n取20。改進前傳統(tǒng)ASM算法平均誤差為42.51像素,改進后ASM算法平均誤差為37.72像素,性能提高了11.2 %。
實驗結果表明:SVM分類器可以將獲取到的每一幀駕駛員人眼狀態(tài)較好地進行分類,同時改進的ASM算法對于光線的變換具有較好的魯棒性。
列車行駛過程中涉及到復雜的機車操作和瞭望等動作,駕駛員會頻繁出現(xiàn)低頭操作和張望動作,該算法針對此類場景還存在無法檢測的情形。如何進一步排除真實環(huán)境下駕駛過程中噪聲的干擾,依舊是一個需要研究的問題。