程榮標,方向堯,曾思偉,姜大志
基于Adaboost和回歸樹集合技術的疲勞識別研究
程榮標,方向堯,曾思偉,姜大志
VDT(Visual Display Terminal)作業是指用計算機視覺顯示終端進行各類信息處理工作的總稱.VDT作業人群的疲勞識別是維護工作健康的重要手段.本文使用普通攝像頭獲取人臉數據,用Adaboost人臉識別與基于回歸樹集合的人臉特征標記準確定位眼睛和嘴部,最后用統計學的方法對用戶的工作狀態進行實時識別.與傳統方法相比,本文提出的方法在準確度和實時性方面有了較大的提升,為疲勞診斷提供一條可借鑒的方案.
VDT,疲勞監測,Adaboost,回歸樹集合
VDT(Visual Display Terminal)作業是指用計算機視覺顯示終端進行各類信息處理工作的總稱.VDT的作業方式雖大幅提升生產效率,但易激增工作壓力,誘發過度疲勞,甚至過勞死.《中國青年報》報道:我國每年過勞死人數達60萬人,位列全球第一,每天約超過1 600人因勞累引發疾病而死亡.對VDT作業者的疲勞狀態進行識別,從而進行及時的干預與調節,避免過度疲勞,具有良好的理論與應用價值.
國內對疲勞識領域取得不少的成果.例如,趙琳采用基于積分投影變換的方法定位眼睛和嘴部位置,然后進行駕駛員的疲勞駕駛識別[1].申琳采用人臉的結構特征和經驗知識提取眼睛和嘴巴的位置塊圖像[2].朱婧采用積分投影函數與混合投影函數相結合的方法來定位眼睛位置[3].提取出眼睛和嘴部位置后再對眼睛和嘴巴的狀態進行疲勞判斷.
從上述的研究來看,對疲勞狀態的研究一般都面向疲勞駕駛研究,而對疲勞狀態的檢測,則取決于人的眼睛和嘴部信息.這就給后續的研究帶來兩點,其實,一是拓展疲勞檢測的外延,二是提升技術手段,提高眼睛與嘴部識別的效率.本文拓展疲勞檢測的外延,通過攝像頭采集VDT作業者的眼睛與嘴部的信息,分析其狀態變化從而對VDT作業者的疲勞狀態作出判斷.具體方式是:首先是通過Adaboost算法對人臉進行檢測,然后通過Vahid Kazemi和Josephine Sullivan提出的基于回歸樹集合的方法獲得出眼睛和嘴部的標記點[4].通過標記點計算出眼瞼的高度和嘴部的大小,采取PERCLOS方法[5]對VDT作業者進行疲勞判定.
面向VDT作業者的疲勞實時識別系統的實現,對算法的運行效率提出了更高的要求,本文采取的方法是對攝像頭采集到的圖像進行壓縮,在保證檢測人臉的精確度下提升人臉的檢測速度來達到實時的目的,對整個系統的實時性、可用性來說具有重要的意義.本文融合Adaboost和回歸樹集合技術,提出一種新的混合算法,對眼睛和嘴巴的定位準確,具有較好的魯棒性和實時性,可以快速而準確地提取眼睛和嘴部信息,同時能適應一定的環境復雜度.
因為Adaboost和回歸樹集合算法在識別率和處理速度方面能夠很好地滿足本系統對識別正確率和實時性的要求,所以本系統分別采用這兩個算法進行人臉和人臉關鍵點檢測.
1.1 Adaboost算法
Schapire提出了Boosting算法,它是一種用來提高弱分類算法準確度的方法[6].后來,Freund和Robert E.Schapire根據Boosting算法,提出了Adaboost算法,它是自適應的Boosting算法[7].其基本思想是利用大量的分類能力一般的弱分類器,通過某種方法疊加起來,形成一個分類能力比較強的強分類器.之后再將這些強分類器進行級聯,形成級聯分類器.
理論上,如果弱分類器的分類正確率要比隨機判斷的正確率要高,當弱分類器的個數無窮多時,強分類器的正確率將趨于100%.在人臉識別方面,Adaboost算法正是因為這點而有著很高的識別率.除此之外,此算法使用了積分圖對人臉特征進行計算以及使用級聯的思想構造分類器,這有效提高識別的速率.
Adaboost算法流程如下:
(1)初始化,給每個訓練樣本賦予相同的權值:1/N

(2)迭代,循環下面4個步驟,m=1,2,…,n(m表示迭代的次數)
1)基本分類器:

2)計算訓練數據集上的分類誤差率:

3)計算基本分類器在最終分類器中所占的權重:

4)計算樣本的新的權值分步,用于下一輪迭代:


1.2 回歸樹集合算法
Vahid Kazemi和Josephine Sullivan提出了一種用于人臉關鍵點檢測算法,Ensemble of Regression Trees(這里稱作回歸樹集合).該算法的處理速度極快(單人人臉關鍵點檢測需時約為1ms),在實時性和高質量檢測方面具有很大的優勢.除此之外,它還能處理訓練集中部分關鍵點標定缺失的情況.回歸樹集合算法是一種基于樹的級聯回歸器,其主要思想描述如下:
(1)級聯的回歸器
假設S(shape)是圖像I中包含p個面部標記的坐標矢量,t是級聯序號,是S的現行估計值,對于每個回歸器rt(·,·),下一級的估計值為S?(t+1),則:

(2)訓練級聯回歸器
1)初始化

(3)基于樹的回歸器
回歸函數rt的核心是在梯度上升的過程中適應殘余目標.其過程如下:
1)形狀不變分割試驗
假設u和v分別是圖像中兩個像素的位置,ku是mean shape中離u最近的面部標記,定義其到u的偏移為:

在mean shape中u的近似值為

其中si和Ri是用于將shape轉化為mean shape的矩陣,目的是使下面的值最小化:

v的偏移v′也是同樣的定義.

2)選擇分割結點
對于每棵回歸樹,隨機生成候選分割集θ′s,然后采用貪心策略選擇θ*,通過候選分割集,可以最小化平方誤差.如果 是一個節點的候選值,這相當于最小化

3)特征選取
這里提供一種指數級的優先選取法使距離更接近的點更容易選取:

(4)處理關鍵點標定缺失
式(20)可以更新為

其中Wi是一個含有向量(wi1,wi1,wi2,wi2,…,wip,wip)T的對角矩陣.如果wi,p為0,代表面部標記缺失,如果wi,p為1,代表存在.
2.1 實驗描述
本文采用的硬件設備為:英特爾第三代酷睿i5-3230M,@2.60GHz雙核處理器,Nvidia GeForce GT 740M顯卡,12G內存.為了檢驗Adaboost和回歸樹集合算法相結合之后的準確性和實時性,本研究使用由丹麥技術大學所提供的人臉數據庫對不同的算法進行眼睛和嘴部的精確度測試,隨后使用相應的算法對單位視頻流進行疲勞判別.實驗程序的總體流程圖如圖1所示,該實驗先從攝像頭獲取的視頻流中進行幀提取,然后對每一幀圖像進行預處理、人臉識別和特征提取,最后根據提取的特征進行疲勞判別并作出疲勞預警.實驗結果表明,使用Adaboost和回歸樹集合算法對眼睛和嘴部進行精確定位計算,不但擁有單獨使用回歸樹集合算法對眼睛和嘴部進行精確定位計算的準確性,而且擁有單獨使用Adaboost的實時性,從而為疲勞判別的準確性和實時性提供了進一步保障.
2.2 眼睛和嘴部的疲勞信息提取
2.2.1 PERCLOS值原理
PERCLOS是 PercentEye Closure的縮寫,指在一段時間內眼睛閉合所占時間的百分比.該方法是卡內基梅隆大學經過大量的實驗和反復的研究后提出的,通過計算PERCLOS值的方法來檢測疲勞狀態[6].
對于眼睛閉合的判斷,通常有三種標準:
(1)P70:以眼瞼遮住瞳孔的面積至少超過70%計為眼睛閉合,統計閉合時間的百分比作為標準;(2)P80:以眼瞼遮住瞳孔的面積至少超過80%計為眼睛閉合,統計閉合時間的百分比作為標準;(3)EM:以眼瞼遮住瞳孔的面積至少超過一半計為眼睛閉合,統計閉合時間的百分比作為標準;
根據美國高速公路安全管理局(National Highway Traffic Safety Administration,NHTSA)的實驗顯示,P80最能夠接近于真實的疲勞發展狀態.本文采用P80作為眼睛閉合的判斷.

圖1 實驗總體流程圖
下列公式(22)給出了PERCLOS的計算方法:

在公式中:fp表示PERCLOS值;t1表示眼睛睜開程度減小到80%的時刻;t2表示眼睛睜開程度減小到20%的時刻;t3是眼睛再次睜開到20%的時刻;t4是眼睛再次睜開到80%的時刻.
在圖像視頻序列中,幀數與時間相對應,故將時間比換算為幀數的百分比:

在公式(23)中,h代表眼睛閉合幀數,H代表總幀數.
2.2.2 打哈欠次數
在一般情況下,VDT工作者的嘴部處于閉合狀態;當VDT工作者交談時,其嘴部處于半張開狀態,而不會一直處于大幅度張開的狀態.如果VDT工作者出現疲勞并開始打哈欠時,嘴部會在一定時間內處于大幅度的張開狀態,并不斷重復這個過程.如果嘴部處在大幅度的張開狀態一段時間,我們可以認為VDT工作者打了一個哈欠.
因為在圖像視頻序列中,幀數和時間相對應.所以在實驗當中,我們記錄VDT工作者的嘴部張開狀態的最大程度M,然后在規定時間內,通過檢測嘴部張開程度超過80%M的幀數來記錄一次打哈欠的情況.
2.2.3 眨眼頻率
眨眼頻率即單位時間內的眨眼次數,在正常情況下,人的眨眼次數為15~20次/分鐘,每次眨眼耗時0.25~0.3 s.VDT工作者在疲勞時,眨眼的頻率會發生變化.
在實驗中,實時記錄1 min內眼睛高度的極大值和極小值,一次極大值和極小值的出現記為一次眨眼.設Sblink為1 min內的眨眼次數,則眨眼頻率為(單位:次/s):

當VDT工作者的眨眼頻率大于或小于一定閾值時,可視為進入疲勞狀態.
2.3 疲勞判別
2.3.1 測眨眼原理
本文計算作業者眼瞼高度,眨眼時眼瞼高度呈現大-小-大的變化,即在一幀視頻的前后鄰域表現為極小值,在眼瞼高度為平均高度的80%以下時判斷.而鄰域的取值基于:人眼平均眨眼時間為0.2~0.3 s內,視頻幀率為25/s,所以取整后可取5或6幀作為一次眨眼過程.
2.3.2 疲勞判別過程
疲勞判定流程如圖2所示,首先收集30 s為一段分析視頻,判斷PERCLOS值是否大于30%,如果是,則判斷為疲勞.若PERCLOS小于30%,則看眨眼頻率是否大于15次/30 s,如果是,則判斷為疲勞.若眨眼頻率小于15次/30 s,則看平均眼瞼高度是否為眼睛最大高度的80%,如果是,則判斷為疲勞,若否,則視為清醒.

3.1 疲勞判別結果
表1所示為其中10段視頻的實驗結果,分別計算fp值、fblink值、平均眼瞼高度以此來判斷實驗者的疲勞狀態,同時與實驗者的
實際疲勞狀態進行對比.實驗結果表明,本疲勞判斷方法的準確率為90%.

表1 疲勞判別實驗結果表
3.2 特征數據集分析與對比
為了驗證本文提出的算法對人眼睛和嘴巴部分識別的準確性,本文使用不同的算法對丹麥大學所提供的人臉數據庫(http://www2.imm.dtu.dk/~aam/)中40個人的6種不同角度共240張圖片提取人眼高度和嘴部面積,其中算法包括單獨使用Adaboost、單獨使用回歸樹集合、Adaboost+回歸樹集合算法.然后將3種算法所測出來的特征數據和人臉數據庫的準確數據進行對比.另外,在3種算法運行過程中,記錄其計算每一幀所耗費的時間,然后對比3種算法的運行時間.
圖3為用折線圖的方式繪制出了丹麥技術大學人臉數據庫的準確數據和分別使用3種算法對其測試的結果.從折線圖可以看出,單獨使用Adaboost算法可以定位到眼睛,但是幾乎無法精確刻畫出眼睛的高度;單獨使用回歸樹集合算法可以定位到眼睛,同時可以準確刻畫出眼睛的高度,總體平均準確率達84.17%;而使用Adaboost結合回歸樹集合算法,不但可以定位到眼睛,而且刻畫眼睛高度的總體平均準確率可達到84.24%.
圖4為分別使用3種算法計算丹麥技術大學人臉數據庫每張人臉圖片的嘴部面積后繪制的折線圖.從圖中可以發現,單獨使用Adaboost算法雖然定位到了嘴部區域,但是無法精確刻畫出嘴部面積;單獨使用回歸樹集合算法可以定位到嘴部區域,其刻畫嘴部面積的準確率可達到76.13%;而使用Adaboost算法結合回歸樹集合算法,不但可以定位到嘴部區域,而且其刻畫嘴部面積的準確率可到達81.20%.

圖3 眼睛高度圖
圖5為記錄分別使用3種算法對丹麥技術大學人臉數據庫的每張人臉圖片計算眼睛高度和嘴部面積所耗費的時間.由結果可以發現,單獨使用回歸樹集合算法計算每張人臉圖片所花費的時間平均約為322.08 ms;單獨使用Adaboost算法每張耗費的時間平均約為266.29 ms;而使用Adaboost算法結合回歸樹集合算法,其計算每張圖片所花費的時間平均約為176.88 ms.
從實驗的結果表明,使用Adaboost結合回歸樹集合算法,其測試眼睛高度和嘴部面積的準確率可以達到單獨使用回歸樹集合算法的精度,甚至更高.另外,其檢測一張圖片所花費的時間最短,比單獨使用Adaboost算法每張圖片少約89.41 ms,比單獨使用回歸樹集合算法每張圖片少約145.20 ms.可以說明,使用Adaboost結合回歸樹集合算法檢測人臉眼睛高度和嘴部面積,不但比單獨使用Adaboost算法具有更好的實時性,而且準確性可以與單獨使用回歸樹集合算法相媲美.

圖4 嘴部面積圖

圖5 運行時間圖
本研究針對VDT工作者的工作環境特點,提取工作者眼睛和嘴部的特征進行疲勞識別.因此,眼睛和嘴部識別的精確度決定了疲勞識別的準確性.基于這種環境下,算法不但必須具有實時性,而且需要較高的準確性.本文采用Adaboost算法和回歸樹集合算法相結合.使對VDT工作者進行疲勞判別的過程中,不但具有Adaboost算法的實時性,而且還具有回歸樹集合算法的準確性.實驗結果表明,將Adaboost算法和回歸樹集合算法相結合來進行疲勞判別,是可行、有效的.不足之處在于我們只對眼睛和嘴部信息進行判別,那么難免會產生誤差.有機會我們將與醫學界人士一起進一步探究出引起人疲勞的真正原因,這將給疲勞預測帶來新機.
隨著科技的進步和人們對自已的身體健康的更加注重,相信疲勞識別的準確度和實時性會在將來有不少的提高.單靠眼睛和嘴部的信息也存在準確率不高的缺點,所以我們還將尋找其他有效的非接觸特征進行實驗研究,比如VDT作業者的心率變化等.
參考文獻
[1]趙琳.基于人臉識別的疲勞駕駛監控方法研究[D].長春:長春工業大學,2015.
[2]申琳.基于視頻圖像的駕駛員疲勞檢測[D].天津:天津大學,2012.
[3]朱婧.基于視頻圖像信息提取的疲勞駕駛檢測技術研究[D].南京:南京理工大學,2009.
[4]KAZEMI V,SULLIVAN J.One millisecond face alignment with an ensemble of regression trees[C]//IEEE Conference on Computer Vision and Pattern Reagnitirn.IEEE,2014:1867-1874.
[5]苑瑋琦,滕紅艷.眼睛疲勞程度判定方法研究[J].計算機工程與應用,2013,49(17):199-203.
[6]SCHAPIRE R E.The strength ofweak learnability[J].Machine Learning,1990,5(2):197-227.
[7]FREUND Y,SCHAPIRE R E.A decision-theoretic generalization of on-line learning and an application to boosting[C]//European Conference on Computational Learning Theory.Springer-Verlag,1995:119-139.
Research on Fatigue Identification Based on Adaboost and Ensemble of Regression Trees
CHENG Rongbiao,FANG Xiangyao,ZENG Siwei,JIANG Dazhi
(Department of Computer,Shantou University,Shantou 515063,Guangdong,China)
VDT(Visual Display Terminal)operation is the general term that describes the use of computer visual display terminal to do different kinds of information processing works.Fatigue recognition is an important means of maintaining a healthy work for VDT workers.In this paper, an ordinary camera is used to acquire the image information and the Adaboost algorithm is used for face recognition.A method based on ensemble of regression trees is applied to find out the accurate coordinates of eyes and mouth.The job status of worker in real time can be identified. Compared with traditional methods,the new method significantly improves accuracy and real-time performance,and provides a reference for the diagnosis of fatigue.
VDT;fatigue recognition;Adaboost;ensemble of regression trees
TP 391.4
A
2016-08-22
姜大志(1982—),男,江蘇南京人,博士,副教授.研究方向:智能計算.E-mail:dzjiang@stu.edu.cu.
國家自然科學基金項目(61502291);廣東省高等學校優秀青年教師培養計劃項目(YQ2015070);廣東省普通高校特色創新項目(2015KTSCX039,2016WTSCX035);廣東省教育科學研究教育科研項目(2015GXJK037);廣東大學生科技創新重點項目(pdjh2016b0192);汕頭大學國家基金培育項目(NFC15005).
1001-4217(2017)02-0066-09