?

面部多特征融合的列車司機疲勞檢測方法研究

2022-01-09 05:49陳小強陳思彤
鐵道學報 2021年12期
關鍵詞:人眼眼動嘴巴

陳小強,熊 燁,王 英,陳思彤

(1.蘭州交通大學 自動化與電氣工程學院,甘肅 蘭州 730070;2.光電技術與智能控制教育部重點實驗室,甘肅 蘭州 730070)

隨著我國鐵路的發展,列車司機作業由傳統的列車操控,轉變為列車實時運行信息的長時間監控[1]。由于列車運行時間長且路況復雜的特點,列車司機的工作量日益加大,疲勞駕駛的可能性也日益增大。因此,實時檢測出列車司機疲勞程度并預警,對保證列車的安全運營有重大意義。但我國鐵路現有線路上機車車載行車安全裝置主要是依靠司機一段時間后重復按無人警惕鍵來確定列車處于正常駕駛狀態,大部分機車所配備的能夠反映司機駕駛疲勞的車載裝置也僅用于事后分析機車狀態數據和司機操作數據的機車運行監控記錄儀,基本不具備駕駛過程中的在線監測功能。

目前國內外對疲勞檢測的研究多是從面部表現、人體生理指標、駕駛行為出發[2]。面部表現以其操作簡單、成本低、無需穿戴特殊設備的優點成為近年來的研究熱點。

面部表現可大致分為基于眼睛、嘴巴、多面部特征融合三種。

在眼睛特征中,文獻[3]利用眼睛開合度計算單位時間內閉眼百分比判斷司機是否疲勞。文獻[4]構建雙流雙向卷積神經網絡(BCNN)利用雙目一致性進行信息交互以檢測眼睛凝視方式,并提出基于瞳孔距離的人眼遮擋機制(ESM),以消除側臉檢測時遮擋人眼帶來的疲勞檢測誤差。文獻[5]分析疲勞前后人眼瞳孔直徑大小隨時間的波動的情況,司機清醒狀態時以低波幅、快頻率為主;相反,疲勞狀態時,波形的變化幅度很大,振動頻率中存在明顯的低頻慢波。文獻[6]通過頭部姿態估計,建立眼睛逆投影開合度和真實開合度的變換關系,修正了凝視方向對眼睛開合度檢測的影響。文獻[7]通過人眼在臉部的位置來跟蹤人眼區域,定位虹膜中心計算眼動速率實時檢測疲勞。文獻[8]提出一種基于PCA/ICA的迭代補償算法摘除眼鏡以檢測疲勞。文獻[9]提出一種動態滑動窗口算法以睜閉眼的最佳閾值來檢測疲勞。文獻[10]利用眨眼頻率、PERCLOS、注視方向和注視時間等眼睛特征分析了各自的最優時窗,針對不同眼睛特征最優時窗差異,提出了滑移時窗的數據融合方法以檢測司機疲勞。文獻[11]設計一種基于模糊綜合評價算法,通過眼部高寬比,瞳孔黑色素占比,眼部擬合的橢圓面積三個評價因素判斷眼睛開閉狀態來檢測疲勞。文獻[12]提出一種利用深度殘差卷積神經網絡對不同光照條件下的睜眼和閉眼圖像進行分類的方法,以消除光照變化對疲勞檢測的影響。文獻[13] 通過級聯卷積神經網絡得到人眼的6個特征點識別人眼狀態并檢測疲勞。

在嘴巴特征中,文獻[14]通過Hough變換定位駕駛員嘴部的特征實現疲勞預警。文獻[15]使用Fisher分類器提取嘴巴的形狀,將其幾何特征作為特征值構成特征向量輸入BP網絡中,以區別司機在正常、說話、瞌睡時的嘴巴狀態。

在多面部特征融合中,對特征信息的融合算法多是模糊邏輯融合方法和貝葉斯分類,文獻[16]將PERCLOS、閉眼時間、眨眼頻率、點頭頻率等輸入模糊推理系統進行疲勞檢測。文獻[17]通過自適應神經模糊推理系統判斷駕駛員的疲勞程度。文獻[18-19]通過貝葉斯算法對多個面部特征進行融合判斷司機是否疲勞。文獻[20]分別將眼睛嘴巴圖像構建識別網絡,對采集到的眼睛嘴巴狀態進行融合并建立疲勞特征判斷模型,提高了因司機頭部傾斜、偏轉時疲勞檢測的準確率。此外,文獻[21]利用LBP、Gabor、HOG 三種特征測度矩陣,采用多模態特征的距離測度學習算法從司機面部表情判斷是否疲勞。文獻[22]從疲勞表情機理和經驗獲取司機疲勞時的表情特征,將特征量化得到疲勞表情指標作為判據。文獻[23]利用卷積神經網絡學習到的面部特征替代傳統預先定義的面部特征,使用softmax層將特征分為疲勞與非疲勞兩類,判斷司機疲勞狀態。文獻[24]通過采集到的司機面部圖像建立其特征空間,與疲勞訓練樣本進行比較,判斷司機是否疲勞。

本文提出一種面部多特征融合方法,根據K-means++算法得出不同司機人眼自適應閾值,利用相鄰兩幀瞳孔和內眼角的特征點位置的差值實現眼動跟蹤,計算出眼動速率,通過模糊推理系統將眼睛開合度、嘴巴開合度、眼動速率三個判斷指標相結合進行疲勞檢測。該方法不僅能在一定程度上解決因個體面部特征差異導致固定閾值無法適用于每位司機以及面部特征判斷指標單一的情況,還考慮前后幀圖像的相關性,提高了駕駛員疲勞檢測的可靠性。

1 疲勞檢測方法流程

疲勞檢測方法流程見圖1,輸入采集到的司機人臉圖像進行特征點定位,提取和計算疲勞檢測相關面部特征,并定位到瞳孔和內眼角計算得到眼動速率。通過眼睛開合度判斷眼睛開閉,用嘴巴開合度判斷駕駛員是否打哈欠,用眼動速率判斷眼球運動是否變得遲緩。將眼睛開合度、嘴巴開合度、眼動速率作為模糊控制系統的輸入,根據設計的規則庫進行推理,得到的模糊量為疲勞狀態,將輸出的疲勞程度值輸入到疲勞判定模塊,輸出值即為列車駕駛員的疲勞狀態從而實現疲勞檢測。

圖1 疲勞檢測方法流程

2 人臉檢測與特征點定位

為了提高疲勞檢測方法對光照條件變化的適應能力,使用基于HOG特征檢測人臉區域,在人臉區域運用ERT算法定位人臉特征點,從而計算出用于檢測疲勞的各個判斷指標。

2.1 基于HOG特征的人臉檢測

HOG特征的基本思想是利用梯度信息很好地反映圖像目標的邊緣信息,并通過局部梯度的大小將圖像局部的外觀和形狀特征化[25]。具體流程見圖2。

圖2 人臉檢測流程

2.2 基于ERT法的特征點定位

ERT(Ensemble of Regression Trees)法是2014年由Vahid Kazemi 和Josephine Sullivan提出的人臉對齊算法[26]。此算法通過建立一個級聯的殘差回歸樹GBDT(Gradient Boosting Decision Tree)來使人臉形狀從當前形狀一步一步回歸到真實形狀,即每級回歸器學習的都是當前初始形狀與真實形狀的殘差。當輸入落到一個節點上時,就將殘差加到該輸入上,起到回歸的目的,最終將所有殘差疊加在一起,完成人臉對齊的目的。具體步驟如下:

Step1給定訓練樣本。有訓練數據集(I1,S1),…,(In,Sn),其中Ii為圖像,Si為人臉特征點的位置,數據組織形式可以表示為

( 1 )

式中:N=nR,n為圖片數,R為初始化倍數;i=1,…,N;πi∈{1,…,n},π為滿映射,πi(i=1,2,…,n)為第1到第n張圖片的滿映射,即圖像中所有的人臉信息。

Step2初始化:

( 2 )

式中:ρ為面部特征的坐標位置的個數;γ為標準人臉信息。

( 3 )

Step4更新回歸器:學習率0<υ<1

( 4 )

( 5 )

Step5更新位置:

( 6 )

( 7 )

圖3 人臉識別與特征點定位效果

3 疲勞檢測相關特征參數提取

3.1 瞳孔定位及眼動速率的計算

常用的瞳孔定位方法有灰度投影法、模板匹配法、Hough變換法、統計學習法等??紤]疲勞檢測的實時性以及駕駛員與攝像頭存在一定距離,所提供的像素信息較少,使用灰度投影法實現瞳孔定位,但該方法不適用于整張臉中檢測人眼,由此利用ERT算法定位得到的人眼特征點外接的一個最小矩形框中使用積分投影函數對人眼進行定位,即

( 8 )

( 9 )

式中:I(x,y)表示圖像在(x,y)處的灰度值,[xn,xm]和[yn,ym]分別表示圖像在水平和垂直的邊界。

在不同區域的邊界,即當圖像的某一列與其前一列或某一行與其前一行相比,發生了較大變化,通過積分得到極大或極小值是人眼的邊界位置,在得到的人眼區域將灰度人眼圖分別進行水平和垂直方向上的疊加,取疊加后數值最小的部分即為瞳孔的位置。人臉在不同狀態下的瞳孔定位效果見圖4。

圖4 不同情況下的瞳孔定位效果

當人處于疲勞狀態時,眼球運動速率會大幅降低。通過瞳孔定位,采用幀差分法計算相鄰兩幀圖像瞳孔與內眼角的距離差值L除以處理這兩幀圖像所用時間t從而得到眼動速率v[25],見圖5。

圖5 相鄰兩幀的眼睛狀態

(10)

(11)

L=|L1-L2|

(12)

(13)

3.2 眼睛特征參數提取

PERCLOS(Percentage of Eyelid Closure Over the Pupil Over Time)是目前國際上公認的最有效的疲勞檢測算法,它表示一定時間內人眼閉合時間占總時間的比例,有EM、P70、P80三種判斷標準,其中P80效果最好,因此采用眼睛閉合80%代表眼睛處于閉合狀態。眼睛的開閉狀態通常情況下是采用眼部高寬比r來判斷的,圖6為眼部高寬比,即

圖6 眼部高寬比

(14)

式中:h和w分別為眼睛的高度和寬度。

3.3 嘴巴特征參數提取

當人處于疲勞狀態時會打哈欠,判斷嘴巴開閉狀態也是疲勞的評價因素之一。將嘴巴高寬比k作為判斷嘴巴開閉的依據(圖7),即

圖7 嘴巴高寬比

(15)

式中:m和n分別表示為嘴巴的高度和寬度。

4 疲勞檢測相關判斷指標閾值選取

4.1 基于K-means++法的人眼自適應閾值法

眼睛是判斷是否疲勞最明顯的特征,但司機的眼睛大小及形態個體差異明顯,固定閾值可能并不適用于判斷每位列車司機眼睛開閉狀態,針對這個現象,本文提出基于K-means++法的人眼自適應閾值法,相較于傳統的K-means法,K-means++法優化了初始中心的選擇,使聚類結果更可靠,收斂速度更快,更滿足實時檢測要求[27]。使用當值列車司機眼睛開合度r的數據制定其自適應閾值。通過K-means++法將疲勞周期內的眼睛開合度聚類為兩類,得到兩個聚類中心r1、r2,先判斷r1與r2的距離,若距離小于0.03,說明聚類效果不明顯,這個周期內眼睛都屬于同一狀態,這時用絕對閾值0.2判斷眼睛開閉狀態,若小于絕對閾值,則為閉眼,反之為睜眼,下一個周期繼續進行聚類直到成功聚類為兩類。若距離較遠,將眼睛開合度分為兩類,較小的一類為閉眼狀態,較大的一類為睜眼狀態,得到人眼自適應閾值。計算每個眼睛開合度到兩個聚類中心r1和r2的距離,距離哪個聚類中心更近,眼睛就屬于哪個狀態,人眼自適應閾值法具體流程見圖8。

圖8 人眼自適應閾值法具體流程

為證明本算法的可行性,選用5名眼睛大小形態不同的志愿者分別在正常和疲勞狀態下的眼睛開合度用K-means++法進行聚類,得到的聚類中心如表1所示,可以看出在正常狀態下,眼睛開合度聚類效果不明顯,在疲勞狀態下,眼睛開合度聚類效果良好,滿足實際要求。同時,每名志愿者的眼睛開合度聚類中心不盡相同,說明閾值的選取具有自適應能力。

表1 眼睛開合度在不同狀態下的聚類中心

4.2 基于K-means的嘴巴開合度閾值選取

為進一步區別列車司機打哈欠與其他張嘴行為,使用YawDD公用數據集自行檢測了32名志愿者在嘴巴自然狀態、說話以及打哈欠狀態下的48 557個嘴巴開合度數據,通過K-means聚類將其分3類,聚類結果見圖9,相同顏色的點為同一類,三類邊界分別為[0,0.109],[0.11,0.324],[0.325,0.875],分別對應嘴巴在自然狀態、說話以及打哈欠狀態下的嘴巴開合度區間,由此將判斷打哈欠的閾值設為0.325用以區分其他張嘴方式。

圖9 嘴巴開合度聚類結果

5 疲勞檢測

在提取到眼睛、嘴巴特征以及計算出眼動速率的基礎上,將眼睛開合度、嘴巴開合度、眼動速率三個判斷指標作為輸入變量經過設計的模糊控制系統來確定駕駛員的疲勞程度,其中眼動速率還沒有統一標準,采用室內環境下均勻光照拍攝人清醒狀態下的視頻求取其1 800幀眼動速率平均值作為眼動速率標準值。根據司機產生疲勞駕駛現象和形成機制的先驗知識制定規則,疲勞等級分為不疲勞、輕度疲勞、中度疲勞、重度疲勞。斯坦福睡意表表明,疲勞的產生是一個隨時間漸變的過程,司機從亢奮到沉睡之間存在著注意力處于高水平但不在峰值以及雖反應時間較之前慢但可以對外界做出反應等能安全駕駛的狀態,采用疲勞分級不僅能反映出這些狀態,還能提醒司機潛在的駕駛風險,使檢測更加靈敏,提高駕駛安全性,模糊控制過程見圖10。

圖10 模糊控制過程

根據第4節疲勞特征相關閾值的選取,眼睛狀態的模糊集為{睜開,閉合},論域為[0,1],值得注意的是判斷眼睛狀態采用自適應閾值,不同閾值情況下,隸屬度函數也會不同,此處取表1中志愿2的眼睛開合度數據,其隸屬度函數為

(15)

嘴巴狀態的模糊集為{張開,閉合},論域為[0,1],其隸屬度函數為

(16)

眼動速率快慢的模糊集為{快,慢},論域為[0,4],其隸屬度函數為

(17)

由模糊推理得到的模糊輸出值為疲勞程度,其模糊集為{不疲勞,輕度疲勞,中度疲勞,重度疲勞},論域為[0,1],根據疲勞區間的劃分,輸出隸屬度函數為

(18)

制定的模糊控制規則如表2所示。

表2 模糊控制規則

考慮檢測的準確性和靈活性,選用的檢測周期太短容易捕捉不到疲勞特征的變化過程,選用的檢測周期太長會導致檢測系統不夠靈敏,取每50幀為一個檢測周期,單位周期內占比最高的疲勞等級為當前周期的疲勞等級。

由于列車司機疲勞駕駛缺少公共的數據集,采用在室內環境下均勻光照自行拍攝視頻。實驗分四部分進行,第一部分分別檢測司機正常狀態和逐漸進入疲勞狀態下的疲勞等級;第二部分是司機逐漸進入疲勞狀態下對比本文方法與單一判斷指標眼睛開合度以及眼動速率的疲勞等級;第三部分是司機逐漸進入疲勞狀態下對比本文方法與PERCLOS法的檢測結果;第四部分檢測本文方法的準確性。

圖11給出了駕駛員在正常狀態下的檢測結果,疲勞等級大多穩定分布在0.166~0.5之間,檢測到的疲勞等級大多都是不疲勞或輕度疲勞,但由于駕駛員眨眼,導致在58~66幀、114~126幀、154~168幀以及203~215幀疲勞等級曲線出現峰值,275幀以后是因為駕駛員說話或大笑導致疲勞等級曲線出現波動,實驗結果符合駕駛員實際狀態,且能捕捉到駕駛員眨眼以及說話的行為。

圖11 正常狀態下檢測結果

圖12給出了駕駛員逐漸進入疲勞狀態的檢測結果,疲勞等級曲線在1~25幀時大多處在0.16~0.5之間,檢測到的疲勞等級都為不疲勞或輕度疲勞,26~36幀疲勞等級曲線出現突變是由于眨眼所致,47~160幀疲勞等級的值在0.52~0.8之間波動,檢測到的疲勞等級大多為中度疲勞或重度疲勞,表明駕駛員處于打瞌睡狀態,168~204幀疲勞等級的值穩定在0.85左右,表明駕駛員處于重度疲勞狀態,210~234幀眼睛短暫睜開后,疲勞曲線出現波動,之后駕駛員逐漸入睡,疲勞等級的值又穩定在0.85左右,表明駕駛員進入睡眠狀態。實驗結果符合駕駛員實際狀態,且能正確實現不疲勞、輕度疲勞、中度疲勞以及重度疲勞這四個疲勞分級。

圖12 逐漸進入疲勞狀態的檢測結果

圖13中,考慮駕駛過程中駕駛員可能出現睜眼但可能很快又陷入疲勞的情況,如139~160幀時眼睛開合度的疲勞等級曲線降低到0.24左右,但實際上并未真正清醒,僅僅使用眼睛開合度來判斷容易造成誤判。而這段時間內眼動速率疲勞等級曲線在0.5~0.82之間,本文方法融合了眼動跟蹤,結合眼動速率與眼睛開合度協同判斷眼睛狀態,本文方法的疲勞曲線的值在兩者中間,起到了修正的作用。

圖13 單一參數檢測方法與本文方法檢測結果對比

此外,可以看出本文方法與單一參數眼睛開合度以及眼動速率的疲勞等級曲線存在一定差異,這是由于駕駛員逐漸進入疲勞的狀態變化過程中,嘴巴特征變化明顯,僅僅用眼睛特征來檢測疲勞不夠準確。如0~24幀時駕駛員清醒狀態嘴巴完全閉合,本文方法疲勞曲線的值較低,更能反映駕駛員不疲勞的狀態。65~124幀是嘴巴開合度較大,本文方法疲勞曲線的值較高,判斷出駕駛員處于中或重度疲勞狀態,而用單一特征眼睛開合度與眼動跟蹤方法僅考慮眼睛特征,在眼睛還未完全閉合時疲勞等級曲線較本文方法更低,顯然不夠準確。本文方法將多個判斷指標相融合,使準確率得到提高。

兩種方法的對比結果如表3所示,PERCLOS法由于本身限制只能識別疲勞與不疲勞,且兩者的檢測結果也有一定差異,本文方法將PERCLOS法、眼動跟蹤的判斷指標相融合,不僅僅實現了疲勞分級,在檢測能力上也更強。

表3 逐漸進入疲勞狀態檢測結果對比

如表4所示,采集5名測試人員從清醒到疲勞反復的視頻進行測試,分別統計出被測視頻的準確率,漏檢主要是由于頭部偏轉角度過大未識別出人臉,誤檢則主要是由疲勞特征變化較大時,人臉特征點定位不準確造成的,得到的平均準確率為95.04%。

表4 本文方法性能測試

實時性是疲勞檢測的一個重要指標,根據人的視覺暫態理論分析,檢測系統的處理速度在每秒20幀以上時能達到視頻流效果,即50 ms/f及以上的處理速度可達到實時檢測要求。

對采集的5段視頻中每幀各個模塊耗時進行統計,其中特征點定位還包括人眼及瞳孔定位,如表5所示,總耗時平均為36.6 ms。此外,基于K-means++法的人眼自適應閾值法是以疲勞周期進行聚類的,而何時找到自適應閾值也是根據人眼開合度聚類情況而定,并未統計在每幀耗時的模塊里。但K-means++法本身運算速度極快,一個疲勞周期內的聚類時間只需不到1 ms,所以并不影響實時性。綜上兩部分,滿足要求。

表5 各模塊耗時測試結果

如表6所示,本文方法準確率較文獻[17]和文獻[19]更高,具有良好的性能。

表6 疲勞檢測準確率對比

綜上所述,通過模糊推理系統融合了眼動速率、眼睛開合度以及嘴巴開合度這三個判斷指標,不僅修正了駕駛員短暫轉醒但很快又陷入疲勞導致誤判的情況,還解決了單一判斷指標導致疲勞檢測靈敏度不高的情況,準確率可達到95%。

6 結論

本文引入眼動速率將其通過模糊推理系統與眼睛和嘴巴疲勞檢測相關面部特征相融合,不僅在一定程度上修正了駕駛員短暫睜眼而非真正清醒造成誤判的情況,還考慮了圖像前后幀的相關性代替了傳統方法僅使用單幅圖像面部特征檢測疲勞,提出了基于K-means++的人眼自適應閾值法,得到自適應閾值,解決了因不同司機面部特征差異而導致固定閾值無法適用于每位司機的問題。實驗結果表明,本文方法檢測準確率達到95%。

由于本文在室內均勻光照下進行檢測的,下一步考慮減少光照條件對檢測的影響以提高疲勞檢測系統的魯棒性。

猜你喜歡
人眼眼動嘴巴
田志強
基于眼動的駕駛員危險認知
基于ssVEP與眼動追蹤的混合型并行腦機接口研究
嘴巴嘟嘟
嘴巴不見了
海豹的睡眠:只有一半大腦在睡覺
好好的嘴巴
閃瞎人眼的,還有唇
靜止眼動和動作表現關系的心理學機制
看人,星光璀璨繚人眼
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合