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