陳忠,潘迪夫,韓錕
(中南大學(xué) 交通運輸工程學(xué)院,湖南 長沙410075)
近年來,隨著我國鐵路營業(yè)里程、列車運行速度與行車密度等不斷攀升,列車司機(jī)的工作強度也在不斷加大,疲勞駕駛成為威脅鐵路運輸安全的重大隱患。因此,除不斷完善機(jī)務(wù)部門的監(jiān)管與乘務(wù)制度外,通過現(xiàn)代技術(shù)手段實時準(zhǔn)確地監(jiān)測列車司機(jī)駕駛狀態(tài)對于保障鐵路運輸安全具有重要意義。目前,學(xué)術(shù)界和產(chǎn)業(yè)界普遍采用基于機(jī)器視覺的非接觸式方法監(jiān)測列車司機(jī)的駕駛狀態(tài),并選用以PERCLOS[1](Percentage of Eyelid Closure Over Time)參數(shù)為代表的眼部疲勞參數(shù)、哈欠頻率[2]和點頭頻率[3]等作為列車司機(jī)疲勞程度判斷的重要指標(biāo)。獲取點頭頻率需要預(yù)先定位人臉,檢測人眼、嘴巴等細(xì)小區(qū)域也需要預(yù)先定位人臉以縮小檢測范圍、降低誤檢與檢測時間。因此,構(gòu)造一種快速準(zhǔn)確的人臉定位方法是實現(xiàn)司機(jī)駕駛狀態(tài)實時監(jiān)測的前提和基礎(chǔ)。Jayanthi 等[4]直接采用膚色檢測的方式定位駕駛員臉部區(qū)域,無法排除脖子、手掌等非面部膚色區(qū)域的干擾,誤檢率高;李強[5]結(jié)合YCbCr 高斯膚色模型和Adaboost 算法共同獲取列車司機(jī)的臉部位置,雖然誤檢有所抑制,但當(dāng)列車司機(jī)頭部擺動或轉(zhuǎn)動角度過大時其臉部區(qū)域無法有效定位;賀德強等[6]結(jié)合Adaboost 和Camshift 算法定位列車司機(jī)的臉部位置,提升了側(cè)臉和傾斜角度人臉的定位能力,但Adaboost 在圖像背景復(fù)雜時容易發(fā)生誤檢,誤檢會導(dǎo)致Camshift 跟蹤無效,且文中每隔20幀機(jī)械地啟動Adaboost 重定位人臉以減小誤檢和跟蹤失效對結(jié)果的影響,卻無法在跟蹤失效時及時重定位人臉。本文根據(jù)疲勞監(jiān)測實際應(yīng)用場景及其應(yīng)用需求,提出一種融合檢測與跟蹤算法的人臉定位方法。首先,利用膚色模型篩選圖像中的人臉候檢區(qū)域;若有候檢區(qū)域產(chǎn)生,啟動AdaBoost 作為主分類器在候檢區(qū)域中快速定位人臉,若未產(chǎn)生候檢區(qū)域,則直接利用AdaBoost 在整幅圖像中搜索人臉;當(dāng)AdaBoost 未定位或定位出多個人臉時,使用SVM 分類器檢測漏檢或排除被誤檢的人臉;在準(zhǔn)確獲取人臉位置后,啟動fDSST 算法進(jìn)行跟蹤,并利用Fmax和APCE(average peak-to correlation energy)2 個指標(biāo)對算法的跟蹤置信度進(jìn)行判定,以決定是否需要對列車司機(jī)的臉部進(jìn)行重定位。
攝像頭安裝在正對司機(jī)的駕駛臺上,它所采集到的視頻圖像中除列車司機(jī)的臉部外還包含司機(jī)室內(nèi)的復(fù)雜背景。若直接運用AdaBoost 或SVM 在圖像內(nèi)定位臉部,容易產(chǎn)生誤檢。由于膚色對于人臉姿態(tài)、表情變化魯棒性強,且和司機(jī)室內(nèi)的背景顏色存在差異,所以首先利用膚色檢測篩選出人臉候檢區(qū)域,減小分類器定位司機(jī)臉部區(qū)域的搜索范圍,抑制誤檢。
膚色檢測的首要環(huán)節(jié)是膚色建模,建模需要選定好顏色空間。目前常見的顏色空間有RGB,YCbCr,YCgCr和HSV等[7]。由于膚色像素在YCgCr和HSV 空間中聚類性能更好,且與非膚色重疊部分少。此外,亮度與色度在YCgCr 和HSV 空間中相互分離,能有效降低光照因素對檢測效果的干擾。因此,本文融合HSV 與YCgCr 空間膚色建模。
建模前首先準(zhǔn)備30 張包含膚色像素的彩色圖片,這些圖片涵蓋不同的種族、膚色及照明條件;接著提取圖片內(nèi)的膚色與非膚色像素并將其轉(zhuǎn)化到Y(jié)CgCr 和HSV 空間中進(jìn)行統(tǒng)計分析。在YCgCr空間中,發(fā)現(xiàn)膚色像素的Cg 和Cr 均聚集于固定區(qū)間內(nèi),且其分布基本不會受到亮度Y 的影響。HSV空間中,發(fā)現(xiàn)膚色像素在H-S 和H-V 子空間具有十分相似的分布規(guī)律,色調(diào)H 能顯著區(qū)分膚色與非膚色像素。統(tǒng)計YCgCr 和HSV 空間中膚色像素的分布如圖1所示。
由圖1結(jié)果可知,Cg,Cr 分量和H 分量均能有效區(qū)分膚色與非膚色像素。由于閾值模型簡單直接,在保證膚色檢測效果的同時具有更快的檢測速度[8],因此本文融合Cg,Cr 和H 3 個分量建立H-CgCr 膚色閾值模型。在H-CgCr 膚色模型中,膚色像素滿足以下規(guī)則:
列車行駛過程中司機(jī)室內(nèi)的光照條件會不斷發(fā)生改變,因此在膚色檢測前先利用參考白方法[9]對圖像進(jìn)行光照補償,結(jié)果如圖2(b)所示;接著使用本文H-CgCr 模型對圖像進(jìn)行二值化操作,結(jié)果如圖2(c)所示;膚色二值圖像中仍然含有假膚色像素及眼睛、嘴巴等形成的孔洞,接下來對H-CgCr結(jié)果進(jìn)行形態(tài)學(xué)處理(腐蝕膨脹等操作)以得到一個純凈的膚色區(qū)域,如圖2(d)所示;純凈膚色區(qū)域中除包含人臉外可能還含有手臂、手掌等不屬于臉部的元素,所以還可根據(jù)區(qū)域長寬比(根據(jù)人臉長寬比取0.8~2.4),區(qū)域中膚色像素數(shù)與圖像總像素數(shù)的比值r,區(qū)域長度l與寬度w進(jìn)一步篩選人臉候檢區(qū)域。
圖1 YCgCr 和HSV 空間中膚色像素的分布Fig.1 Distribution of skin color pixels in YCgCr and HSV color space
由于膚色檢測的實質(zhì)是利用膚色模型逐一對圖像內(nèi)全部像素點進(jìn)行膚色判別,故檢測速度較慢。為此,本文提出一種膚色加速檢測方法:首先利用最臨近插值法將圖像尺寸縮放至原圖的1/n,然后使用H-CgCr 模型檢測縮放后圖像內(nèi)的膚色區(qū)域,最后將檢測結(jié)果放大n倍即為原圖中的膚色區(qū)域。r,l,w和n的取值與圖像分辨率或司機(jī)臉部在圖像中的占比有關(guān),原則上圖像分辨率越高,膚色像素的識別效果越好,但隨之檢測耗時也會大大增加;若圖像分辨率偏低,又會影響后續(xù)眼部狀態(tài)判別的可靠性。故本文經(jīng)綜合比對后選用分辨率為640*480 的攝像頭拍攝列車司機(jī)駕駛視頻,且由于司機(jī)臉部在圖像中的比例不會太小,基于此,取r為0.012,l和w為60,n為4,直接剔除r小于0.012,l和w小于60 的區(qū)域。利用H-CgCr 模型篩選人臉候檢區(qū)域的結(jié)果如圖2(e)所示,利用H-CgCr 采用加速方法的篩選結(jié)果如圖2(f)。
由于篩選出的人臉候檢區(qū)域可能為誤檢或含有脖子等非人臉元素,因此還需要進(jìn)一步定位人臉。AdaBoost 對于正臉檢測率高,然而列車司機(jī)在值乘過程中需要瞭望軌旁信號和觀察線路環(huán)境,頭部時有偏轉(zhuǎn),其臉部不總以正面狀態(tài)呈現(xiàn),如果利用Haar 特征訓(xùn)練AdaBoost 多視角人臉分類器,除需收集大量的多姿態(tài)臉部圖像外,還需對Haar 特征進(jìn)行擴(kuò)展,不論是計算復(fù)雜度、訓(xùn)練耗時還是檢測耗時都會成倍增加。此時利用LBP 特征訓(xùn)練出具有旋轉(zhuǎn)不變性的SVM 分類器定位被AdaBoost 漏檢或誤檢的人臉,進(jìn)一步提升列車司機(jī)的臉部定位性能。
AdaBoost 算法最先由Viola 和Jones[10]將其用于人臉檢測領(lǐng)域,由于其檢測率高、實時性好,應(yīng)用最為廣泛。這主要得益于3 個關(guān)鍵因素:1)使用一種十分簡單有效的矩形Haar 特征,并且采用積分圖的方式計算特征值,方便快速;2)利用AdaBoost 算法從海量Haar 特征中篩選出樣本區(qū)分能力最佳的若干個組成強分類器;3)將強分類器串聯(lián)成級聯(lián)分類器,并提出一種由粗到精的檢測思路,大大提升了檢測速度。利用Haar 特征訓(xùn)練AdaBoost 人臉分類器的流程如圖3所示。
LBP 是由Ojala 等[11]設(shè)計的一種具有灰度不變性的局部紋理特征算子,這種傳統(tǒng)LBP 算子的鄰域半徑恒定,很難適應(yīng)各種不同的應(yīng)用場景。后來Ojala 將鄰域由傳統(tǒng)的方形變換為圓形,提出可自由設(shè)定鄰域半徑大小的圓形LBP,用LBP(P,R)表示,其中P為采樣點個數(shù),R是鄰域半徑。當(dāng)P和R大小選定之后,轉(zhuǎn)動圓形鄰域可獲取一組LBP 值,每次都將最小值設(shè)定為最終的特征值,此時的LBP 具有旋轉(zhuǎn)不變性,稱之為旋轉(zhuǎn)不變LBP 特征[12]。本文利用旋轉(zhuǎn)不變LBP 特征構(gòu)造一種新的融合LBP 特征,并對特征進(jìn)行歸一化處理,運用SVM 訓(xùn)練出具有旋轉(zhuǎn)不變性的人臉分類器。
2.2.1 構(gòu)造新的融合LBP 特征
由于提取LBP 特征時普遍先對整幅圖像進(jìn)行分塊化操作,此時即便是采用旋轉(zhuǎn)不變LBP 特征進(jìn)行特征提取,得到的特征向量對于整幅圖像而言也不再具備旋轉(zhuǎn)不變屬性。對此,本文通過不斷調(diào)整旋轉(zhuǎn)不變LBP 特征的P和R值不分塊直接對整張圖提取特征,從中挑選出若干個樣本分類能力最佳的旋轉(zhuǎn)不變LBP 特征融合成一個新的特征向量,新特征向量的構(gòu)造過程如下(以80*80 的圖片為例)。
Step 1:將圖片尺寸依次歸一化為5*5,10*10,15*15,…,80*80;
Step 2:調(diào)整P和R值,其中P=8:2:24,R=1:1:4;
Step 3:分別在不同圖片尺寸下根據(jù)不同的P和R值直接提取整幅圖片的旋轉(zhuǎn)不變LBP 特征,并利用該特征訓(xùn)練SVM 分類器,再對其分類能力進(jìn)行測試;
Step 4:多次實驗從中挑選出若干個樣本分類能力最佳且性能穩(wěn)定的旋轉(zhuǎn)不變LBP 特征,將所有特征串聯(lián)成最終的特征向量,即為新的融合LBP 特征。
本文采用5 個測試集驗證各個特征的分類能力,并從中篩選出不同圖片尺寸下的共計31 個最佳旋轉(zhuǎn)不變LBP 特征組成最終的融合LBP 特征。由于每個單獨LBP 特征對于整幅圖片而言都具有旋轉(zhuǎn)不變性,所以由它們?nèi)诤隙傻男绿卣饕餐耆皇軋D片旋轉(zhuǎn)角度的影響,因此利用新特征訓(xùn)練出來的人臉分類器可以很好地定位頭部存在傾斜的臉部區(qū)域。訓(xùn)練分類器時,在訓(xùn)練樣本中添加足夠的側(cè)臉樣本,則分類器還能對側(cè)面人臉具有很好的識別能力。
2.2.2 訓(xùn)練SVM 人臉分類器
支持向量機(jī)(SVM)是一種具有較強泛化能力和分類能力的機(jī)器學(xué)習(xí)算法,對于處理小樣本、非線性和高維數(shù)據(jù)問題具有顯著優(yōu)勢[13]。本文構(gòu)造的融合LBP 特征維數(shù)高達(dá)606 維(訓(xùn)練圖片尺寸為80*80),選用適用范圍廣、可調(diào)參數(shù)少的RBF 作為SVM 的核函數(shù)。SVM 分類器的訓(xùn)練步驟如下,基于SVM 的人臉檢測流程如圖4所示。
Step 1:構(gòu)建訓(xùn)練樣本集。選用FERET 人臉庫和手工截取的正臉及側(cè)臉圖片共2 000 張組成正樣本,選用互聯(lián)網(wǎng)收集、列車司機(jī)室背景等2 000 張非人臉圖片組成負(fù)樣本;
Step 2:提取訓(xùn)練樣本的融合LBP 特征;
Step 3:對特征向量進(jìn)行歸一化處理;
Step 4:訓(xùn)練生成SVM 人臉分類器。
圖4 基于SVM 的人臉檢測算法流程Fig.4 Face detection algorithmic flow based on SVM
基于相關(guān)濾波的fDSST[14](fast Discriminative Scale Space Tracking)跟蹤算法是KCF 算法的改進(jìn)版本,該算法設(shè)計了2 個相對獨立的濾波器:位置濾波器用于當(dāng)前幀目標(biāo)的定位、尺度濾波器用于估計目標(biāo)尺度,同時利用PCA 降維與QR 分解對兩者進(jìn)行加速,算法具有跟蹤精度高、實時性強等優(yōu)點。由于fDSST 在分類器訓(xùn)練過程中利用循環(huán)矩陣特性實現(xiàn)密集采樣,區(qū)分前景和背景時可信度更高,因此魯棒性會比Kalman 濾波、Camshift 這類生成式跟蹤方法更好。本文在獲取列車司機(jī)的臉部位置后,采用fDSST 算法進(jìn)行跟蹤,進(jìn)一步提升人臉定位速度。fDSST 進(jìn)行目標(biāo)跟蹤的流程如圖5所示。
本文融合Fmax與APCE 2 個指標(biāo)對算法的跟蹤置信度進(jìn)行判定,F(xiàn)max是指位置濾波器的最大響應(yīng)值,而APCE 值體現(xiàn)響應(yīng)圖的整體波動情況,計算公式如下:
式中:Fmax,F(xiàn)min和Fres(m,n)分別指大小為M×N的響應(yīng)圖中的最大響應(yīng)值、最小響應(yīng)值以及每一像素點所對應(yīng)的響應(yīng)值。在當(dāng)前幀,若Fmax與APCE 均以一定的比例超過其歷史幀均值時,如式(8)所示,可認(rèn)為算法此時置信度高、跟蹤效果好,若不滿足要求,則認(rèn)為算法在該幀跟蹤置信度低,可能出現(xiàn)跟蹤失敗情況,此時需要重新對列車司機(jī)的臉部進(jìn)行定位。β1和β2分別設(shè)為0.6 和0.4。
圖5 fDSST 算法進(jìn)行目標(biāo)跟蹤的流程Fig.5 Flow of target tracking based on fDSST algorithm
為驗證本文H-CgCr 模型、膚色加速檢測方法的性能及本文列車司機(jī)臉部定位方法的合理性與有效性,在CPU 為Intel Core i5,主頻為2.70 GHz,8 GB 內(nèi)存的計算機(jī)中編程開展實驗。
從Color FERET 人臉庫中抽取500 張人臉圖片(分辨率為512*768),這些圖片的背景較為單調(diào),但包含不同的膚色、年齡階段、光照、姿態(tài)及表情變化。分別使用YCgCr 和HSV 閾值模型、文獻(xiàn)[5]YCbCr 高斯模型、文獻(xiàn)[15]YCbCr 閾值模型、本文H-CgCr 模型及本文H-CgCr 模型的加速方式篩選經(jīng)參考白光照補償后的500 張圖片內(nèi)的人臉候檢區(qū)域,結(jié)果如表1所示。
表1 不同模型篩選臉部候檢區(qū)域的性能對比Table 1 Performance comparison of face regions screened by different skin color models
由實驗結(jié)果可知,融合模型(本文H-CgCr)比單一模型(YCgCr、HSV)性能更佳,能有效降低誤檢;與其他主流模型相比,本文H-CgCr 模型也更具優(yōu)勢;利用H-CgCr 模型采用加速方法(n取4)篩選人臉候檢區(qū)域,由于縮放后圖像內(nèi)的像素點數(shù)目大幅減少,使得候檢區(qū)域篩選耗時降低81.09%,誤檢進(jìn)一步得到抑制;膚色對圖片尺寸、姿態(tài)及表情變化魯棒性強,但膚色模型的共同缺陷是其檢測性能易受光照因素的影響。為此,本文在膚色檢測前先對圖像進(jìn)行參考白光照補償處理,其次選用亮度與色度信息相分離的HSV 和YCgCr 空間建模,最大限度降低光照因素產(chǎn)生的干擾,所以本文模型在光照變化時也表現(xiàn)出不錯的魯棒性。
根據(jù)列車司機(jī)疲勞駕駛監(jiān)測應(yīng)用需求及列車司機(jī)駕駛特點,提出一種先檢測后跟蹤的人臉定位方法,具體流程如圖6所示,接下來對流程的合理性與有效性展開驗證。
4.2.1 “加速H-CgCr+AdaBoost/SVM”檢測列車司機(jī)臉部區(qū)域
考慮到列車行駛過程中司機(jī)室內(nèi)的光照條件會不斷發(fā)生改變,司機(jī)的頭部也會時有偏轉(zhuǎn),而頭部姿態(tài)、光照條件均是公認(rèn)的影響人臉檢測算法性能的因素[15]。接下來,構(gòu)造3 個圖片集對不同人臉檢測方法的性能進(jìn)行測試,實驗結(jié)果如表2所示。圖片集1:500 張正常光照與正常姿態(tài)的人臉圖片;圖片集2:300 張正常姿態(tài)但偏暗或偏亮的人臉圖片;圖片集3:300 張正常光照條件下頭部存在轉(zhuǎn)動或擺動(轉(zhuǎn)角或擺角存在,但均小于45°)的人臉圖片。(正檢率=正確檢測的人臉數(shù)目/人臉總數(shù);誤檢率=檢測結(jié)果中的非人臉數(shù)目/人臉總數(shù))
圖6 本文列車司機(jī)臉部定位算法流程Fig.6 Flow of train driver’s face location algorithm
表2 不同人臉檢測方法的性能對比Table 2 Performance comparison of different face detection methods
觀察實驗結(jié)果,發(fā)現(xiàn)膚色模型篩選人臉候檢區(qū)域具有較高的檢測率,但當(dāng)圖像背景復(fù)雜時容易發(fā)生誤檢。此外,本文H-CgCr 模型雖已最大限度降低光照因素產(chǎn)生的影響,但當(dāng)光照偏差嚴(yán)重時,其性能還會一定程度下滑;AdaBoost 定位人臉基本不受光照變化影響,但其對側(cè)臉和傾斜角度人臉不敏感;將H-CgCr 模型與AdaBoost 相結(jié)合用于臉部定位,與僅利用AdaBoost 直接在整幅圖像內(nèi)檢測人臉相比,雖正檢略有下滑,但其對于誤檢的抑制程度大于正檢的下滑程度;SVM 定位人臉也不受光照變化影響,且由于訓(xùn)練SVM 分類器時所用的融合LBP 特征具有旋轉(zhuǎn)不變性,所以訓(xùn)練出的SVM 對于傾斜和偏轉(zhuǎn)的人臉仍具有很好的檢測能力。本文將H-CgCr 模型與AdaBoost 和SVM 雙分類器融合進(jìn)行人臉檢測,在提升正檢的同時能有效抑制誤檢,且當(dāng)光照條件及頭部姿態(tài)發(fā)生變化時其性能依舊穩(wěn)定,魯棒性強,能有效確保列車在行駛過程中司機(jī)的臉部區(qū)域被準(zhǔn)確定位。
利用本文方法檢測人臉,部分結(jié)果如圖7所示。其中,圖7(a)和7(c)為H-CgCr 加速方法篩選出的人臉候檢區(qū)域。圖7(a)為正臉圖片,利用AdaBoost可直接定位,由于未出現(xiàn)漏檢和誤檢,此時無需啟動SVM 輔助定位;圖7(c)為頭部傾斜圖片,Ada Boost 未成功定位臉部,此時啟動SVM 在候檢區(qū)域中成功定位。可知本文方法能進(jìn)一步提升列車司機(jī)的臉部定位性能。
圖7 本文方法人臉檢測結(jié)果Fig.7 Results of face detection based on our method
4.2.2 fDSST 算法跟蹤人臉
利用分辨率為640*480 的攝像頭在SS8 型電力機(jī)車和HXD3C 型電力機(jī)車司機(jī)室內(nèi)采集多段視頻并轉(zhuǎn)化為圖像序列,分別使用不同方法實現(xiàn)臉部定位并對比定位速度,如表3所示。
表3 不同方法獲取人臉位置的速度對比Table 3 Speed comparison of different face location methods
根據(jù)表3統(tǒng)計結(jié)果可知,由于攝像頭幀率一般為20~30 幀/s,若采用純檢測的方法定位人臉,顯然無法滿足疲勞駕駛監(jiān)測實時性要求。而本文在利用“加速H-CgCr+AdaBoost/SVM”獲取臉部位置后,啟動fDSST 算法進(jìn)行跟蹤的人臉定位方法,能將人臉定位平均速度提升至45 幀/s,大大節(jié)省了臉部定位時間,滿足實時性要求。
圖8為在2 段連續(xù)視頻內(nèi)采用本文“加速HCgCr+AdaBoost/SVM”方法獲取臉部位置后啟動fDSST 算法進(jìn)行跟蹤的結(jié)果,發(fā)現(xiàn)fDSST 在頭部擺動或轉(zhuǎn)動、臉部區(qū)域存在部分遮擋、尺度變化、光照變化時仍然具有很好的跟蹤效果,跟蹤精度高、魯棒性好。
圖8 fDSST 算法人臉跟蹤結(jié)果Fig.8 Results of face tracking using fDSST algorithm
1)提出的先檢測后跟蹤的人臉定位方法,能兼顧檢測率、誤檢率、檢測耗時綜合達(dá)到最優(yōu),當(dāng)列車司機(jī)頭部發(fā)生擺動、轉(zhuǎn)動或部分遮擋時,其臉部區(qū)域均能被準(zhǔn)確定位。
2)本文H-CgCr 模型綜合性能較為優(yōu)越,提出的膚色加速檢測方法能將人臉候檢區(qū)域篩選耗時降低81.09%;利用融合LBP 特征訓(xùn)練出具有旋轉(zhuǎn)不變性的SVM 分類器,能在AdaBoost 定位人臉的基礎(chǔ)上進(jìn)一步降低漏檢和誤檢;獲取人臉位置后啟動fDSST 算法進(jìn)行跟蹤,能將人臉定位平均速度提升至45 幀/s。
3)本文方法實時性好,魯棒性強,可為列車司機(jī)疲勞駕駛監(jiān)測提供理論和實踐參考,且能遷移應(yīng)用到汽車駕駛員疲勞駕駛監(jiān)測場景。