姬秋敏,張 靈,羅 源,陳云華,向 文
(廣東工業(yè)大學 計算機學院,廣東 廣州 510000)
道路交通事故是與非健康有關的主要死因之一[1]。一般的,疲勞可以分為身體疲勞和精神疲勞,本文主要研究精神疲勞。在近些年的文獻中,已經(jīng)對疲勞測量方法進行了各種努力,并提出了以下幾種檢測方法:①基于生理指標的檢測方法;②基于駕駛員行為特征的疲勞檢測方法;③基于機器視覺與人臉表情識別的非接觸式疲勞檢測方法。Rajiv Ranjan Singh等[2]通過測量人的皮膚電與光容積和脈搏等生理指標來判斷視疲勞狀態(tài),但這類方法在一定程度上會影響駕駛操作。王斐等[3]通過結合被采集者的電腦測試信號和駕駛方向盤的數(shù)據(jù)來判斷疲勞狀態(tài),由于每個人的駕駛習慣不同,該方法的魯棒性不強。謝國波等[4]采用曲線擬合嘴巴輪廓的檢測方法,判斷嘴巴是否打哈欠。周云鵬等[5]基于面部視覺多特征融合的駕駛員疲勞狀態(tài)檢測算法,通過分析駕駛員眼睛,嘴巴以及整體面部表情的狀態(tài),通多模糊處理判斷駕駛員的狀態(tài)。Masrullizam等[6]利用紋理特征首先判斷嘴部是否被遮擋,然后計算嘴部張開的高度與嘴部顯著性區(qū)域的比值,設定閾值來判斷嘴部狀態(tài)。以上方法從不同角度進行探索并且達到一定的檢測效果,但存在識別率低的問題。
由人的先驗知識知,人產(chǎn)生疲勞時,嘴部和眼睛部位動作緩慢,動作強度低,所以本文應用全局光流技術于疲勞表情。光流計算方法有相位[7]、能量[8]、匹配[9]和梯度[10]這4種。光流法具體分為:全局平滑法(HS)和局部平滑法(LK)[11]。由于局部平滑法對區(qū)域邊緣的運動估計不準確的缺點。全局平滑法可在低噪聲的干擾下跟蹤目標,故本文采用了基于梯度的多幀間局部性全局光流計算方法。對嘴部區(qū)域和眼部區(qū)域分別計算光流,在嘴部區(qū)域得到運動光流后,計算光流加速度,設置加速度模值和閾值參數(shù)提取出嘴部由小位移到大位移動作強度大的開始幀。統(tǒng)計各個區(qū)域的光流方向,設定其方向閾值,得到一段時間內打哈欠和閉眼的頻率。采用計算光流峰值的方法區(qū)分說話和打哈欠,疲勞眨眼和正常眨眼。實驗結果表明,本文方法提高了識別精度,減少了誤報的可能性。
一段疲勞表情的識別過程包括樣本采集、預處理、特征提取和識別4個步驟,成功識別疲勞狀態(tài)的關鍵在于特征提取,在處理序列圖像時,不僅僅要提取單幀圖像的形變特征,還要考慮連續(xù)幀間的運動信息。結合引言部分的思考,使用全局光流法提取特征。
我們的興趣是運動目標在幀上的位置,是通過跟蹤點從這一幀到下一幀的運動變化,在這一幀中的點檢測到在下一幀中這個點所在的位置,得出點所在時間變化的位置。在這里使用基于梯度的全局光流算法。
光流算法在算法范疇上屬于光學算法,大多數(shù)光學算法有一個重要的假設就是亮度恒定約束(BCC),也就是說一個點的亮度從一幀到另一幀的亮度不變,即像素灰度值不隨位移變化,假定點a=(x,y)T在t時刻的灰度值為I(x,y,t),根據(jù)運亮度恒定假設,BCC的一階近似即為光流約束方程,可表示為
It+vIx+uIy=0
(1)
光流的第二個假設是給定鄰域內的速度向量場變化是緩慢的。根據(jù)這一假設可以得出以下的速度平滑項
(2)
對于圖像上的所有像素點,需要滿足式(1)和式(2)的和最小。結合光流約束條件和速度平滑約束條件,建立以下的極小方程
(3)
式中:α是平滑權重系數(shù),表示速度光滑項所占的權重。
(4)
(5)
從上式可知對于圖像中一個特定的點,前后兩次解得的速率值之間沒有直接的聯(lián)系。通常需要迭代上百次才能求解。迭代多次后得到的解能最大程度上滿足光流的兩個約束條件,解得的u,v為最優(yōu)光流,能夠真實體現(xiàn)所求區(qū)域的運動變化。由于全局光流的計算量比較大,實驗結果表明計算相隔5幀的光流能取得較好的效果。
在打哈欠的過程中肌肉會產(chǎn)生一定的力F使嘴部區(qū)域發(fā)生一定的變形,該力產(chǎn)生一個加速度α。假設在此過程中質量相同,則F∝α。加速度模值的大小可以反應嘴部區(qū)域的變化程度,α模值大,嘴部區(qū)域變化大;α模值小嘴部區(qū)域變化小,從而可以確定打哈欠發(fā)生的時刻。
(6)
式中:Δx, Δy=1。像素點p的加速度近似估計的算式如下
(7)
加速度的模值的和α的計算公式如下
(8)
本文使用全局閾值方法確定嘴部區(qū)域發(fā)生打哈欠的關鍵幀。具體的步驟如下:
步驟1 讀入當前幀視頻圖像Ft進行以下處理;
步驟2 對圖像Ft進行灰度化,提取嘴部區(qū)域,得到處理后的圖像Fm;
步驟3 利用H-S光流法得到每一幀像素點的光流信息,計算出每一幀的速度值矩陣Vectort;
步驟4 基于相鄰兩幀嘴部區(qū)域的速度值矩陣計算每一幀的加速度模值的和sumt,得到時間段k內所有圖像的加速度模值和的矩陣a;
步驟5 計算一段時間k內加速度模值和的最大值pk,最小值mk;
步驟7 進入下一個時間段k,返回步驟2。
嘴部區(qū)域的箭頭代表光流,圖像中光流箭頭的方向表示像素點的運動方向,這體現(xiàn)了兩幀間點的運動信息。圖1為一個人打哈欠的過程中隨機抽取的2幀。圖1中嘴巴張開時光流變化明顯,光流的方向反映了該區(qū)域的運動趨勢。圖2為一個人眨眼過程中抽取的2幀。圖2中光流的方向很好地反應了眼部區(qū)域像素點的運動趨勢。
圖1 打哈欠光流圖
圖2 眨眼光流圖
為了能夠識別表情,需要將光流的方向量化。打哈欠和眨眼的動作反映出的光流的方向大約為上和下,故光流的模式分類可分為上、下、左、右。如圖3所示。
圖3 光流運動模式分類
圖4 光流方向統(tǒng)計
由于說話和打哈欠的光流方向特征統(tǒng)計圖極其相似。分析到說話的速度相比于打哈欠要快很多,可以使用光流的另一個峰值ΔIn來量化,ΔIn是In和In-1之間的光流,對圖像中所有的像素點光流速度求和,生成光流峰值
(9)
其中,f(n)是當前幀嘴部區(qū)域所有像素點光流速度的總和,X是圖像矩陣。設定一個閾值參數(shù)M,當
(10)
則判定為打哈欠。由于疲勞時眨眼動作比較緩慢,和非疲勞時眨眼速度相比慢很多,同理,設定一個閾值參數(shù)N,當
(11)
即判別為疲勞時眨眼。其中f(n)為眼部區(qū)域的所有像素點光流速度的總和。
打哈欠頻率可有下式求得
(12)
同時疲勞時眼睛緩慢眨眼次數(shù)增加,采用PERCLOS值K進行眼部疲勞識別,表示如下
(13)
其中,時間窗長度T=10 s,ti為眼睛疲勞閉合時間。在實驗中,幀率為24幀/s。當K>15%時,系統(tǒng)會發(fā)出疲勞預警。
本文使用測試集進行實驗,本實驗所用的樣本均是模擬駕駛環(huán)境在室內、外采集的。該疲勞狀態(tài)的樣本主要包括了閉眼、張嘴以及伴隨打哈欠過程出現(xiàn)的一些表情變化。本文對10個人在正常狀態(tài)和模擬疲勞的狀態(tài)下采集了112個正常樣本和108個疲勞樣本,然后隨機抽取50個正常樣本和40個疲勞樣本作為測試集。圖5是在疲勞樣本點中抽取的4個樣本。在實驗中,首先從模擬駕駛的視頻中選取6組測試樣本進行眼睛、嘴部及表情的狀態(tài)判斷,根據(jù)判斷結果來確定實驗閾值參數(shù)。表1是抽取的6組測試集樣本的驗證結果,其中包含4名疲勞實驗者,2名正常狀態(tài)實驗者。
圖5 疲勞樣本點
測試者YpK實際狀態(tài)檢測狀態(tài)10.290.55疲勞疲勞20.250.47疲勞疲勞30.330.40疲勞疲勞400.32疲勞疲勞500.12正常正常600.10正常正常
本文使用MATLAB作為實驗仿真平臺,其中全局閾值β=0.6,使用光流法對動態(tài)序列幀提取光流特征后,計算得到加速度模值和的圖形如圖6所示。
圖6 不同幀下加速度模值的分布
圖6橫軸是幀數(shù),縱軸是加速度模值和,經(jīng)過選取多組實驗數(shù)據(jù)確定β的取值范圍,β的取值會影響關鍵幀數(shù)的多少,實驗表明當β=0.6時,可以選出打哈欠發(fā)生的幀。
本文選取108個疲勞樣本點作為實驗數(shù)據(jù)來測試加速度算法的捕捉能力,該樣本點中連續(xù)圖像序列為24幀/s,在這108個樣本點中,捕捉的正確數(shù)為98個,漏檢數(shù)為10個,正確的識別率為90.7%。
表1中Yp表示在時間窗T=10內打哈欠的頻率,當Yp>0.2時判斷為疲勞。K為PERCLOS值,當K>15%時,判斷為疲勞。根據(jù)常識,一般情況下,人在打哈欠的同時伴隨著眼睛閉合的狀態(tài)。所以表1中有4中情形:第一種是眼部和嘴部都出現(xiàn)疲勞狀態(tài);第二種是嘴部出現(xiàn)疲勞狀態(tài)而眨眼頻率較低,此時則以嘴部狀態(tài)為依據(jù);第三種是眼部經(jīng)常閉合并且閉合時間相比正常狀態(tài)下長,但是嘴部卻沒有出現(xiàn)打哈欠動作,此時則以眼部狀態(tài)為依據(jù);第四種是嘴部和眼部均為出現(xiàn)疲勞狀態(tài),所以當嘴部頻率Yp或者眼部K值有一個大于設定的閾值時,則判別為疲勞狀態(tài)。
表2為PECLOS算法,及嘴部行為判別法和本文算法對疲勞表情的識別結果對比。PECLOS算法和文中方法計算量都比較大,處理起來會消耗一定的時間。PECLOS眼瞼間的測量距離隨機性較強,并且在短時間內不能完全遍歷眼瞼間距離的各個值,這就使得識別率較低,本文算法對距離和時間的要求相比較寬松。
表2 實驗驗證結果
筆者將全局光流技術應用于慢性精神疲勞表情識別領域中,但由于光流計算量大,本文采用區(qū)域性多幀間光流計算,只對眼部區(qū)域和嘴部區(qū)域使用基于梯度的全局光流計算。采用光流峰值和方向投票的方法提取得到光流特征。本文融合打哈欠的頻率和眼睛閉合時間兩個因素進行實時檢測。實驗結果表明,該方法相對于單一的利用眼睛或嘴巴的方法檢測結果較穩(wěn)定高效。