趙雪娟
(寧夏大學(xué)新華學(xué)院信息與計算機科學(xué)系,寧夏 銀川750001)
近年來,汽車給人們帶來便利的同時也帶來了極大的安全隱患,其中因疲勞駕駛造成的交通事故日趨增加,因此,檢測駕駛員的疲勞狀態(tài)并有效預(yù)防對減少交通事故的發(fā)生具有重要的意義。
隨著科學(xué)技術(shù)的進步,研究學(xué)者提出了多種檢測疲勞的方法,主要有基于生理行為的方法、基于車輛行為的方法以及基于計算機視覺的方法。國外對于疲勞檢測的研究早在20 世紀初就已經(jīng)取得了顯著進展,而我國對此問題的研究相對較晚,與國外存在一定差距。何俊等人提出了一種基于ASM與膚色模型的疲勞檢測方法,首先利用膚色模型定位人臉,然后利用ASM跟蹤人眼和嘴巴,再利用Canny 算子對兩個區(qū)域進行精準定位,提高檢測準確率,但是該方法中人眼和嘴巴的初始定位困難,當頭部擺動幅度過大時定位不準確[1]。文獻[2]中介紹了一種基于Haar 特征的AdaBoost 級聯(lián)分類器進行人臉檢測,對人臉圖像進行水平投影后,定位出人眼的位置,但本文中僅依據(jù)PERCLOS 值作為疲勞檢測的標準,方法比較單一,易受外界環(huán)境干擾。Nawal 等[3]提出利用圓形霍夫變換來分析眼睛和嘴巴的狀態(tài),通過識別虹膜來檢測疲勞程度,但是當駕駛員頭部發(fā)生偏移時檢測效果不好。
對于以上分析,本文提出了一種基于主動形狀模型(ASM)與多個信息融合的疲勞檢測技術(shù)。將攝像頭采集到的駕駛員面部圖像經(jīng)預(yù)處理后利用MB-LBP 特征的級聯(lián)AdaBoost 算法進行人臉檢測,然后再結(jié)合ASM進行眼睛和嘴巴的特征點定位,得出眼睛、嘴巴以及頭部的狀態(tài)參數(shù),最后根據(jù)狀態(tài)參數(shù)計算PERCLOS 值、哈欠頻率、點頭頻率等疲勞特征,融合以上疲勞特征信息判定駕駛員是否疲勞。
駕駛環(huán)境下采集的圖像會有多種噪聲和光線差異,對后續(xù)人臉的檢測和特征點定位會有一定影響。因此,需要對采集的圖像進行灰度化,直方圖均衡化、光照補償這樣的預(yù)處理達到去除噪聲,提高圖像質(zhì)量??紤]到駕駛員在整個行車過程中,頭部轉(zhuǎn)動的角度并不大,并且考慮到光照帶來的影響,所以本文采用Ojala 等人提出MB-LBP 特征的級聯(lián)Adaboost 算法來檢測人臉[4]。該方法簡單、可靠、高效,MB-LBP 特征表達了圖像紋理信息,它將中心像素灰度值和全部周圍像素灰度值進行比較,比較的結(jié)果轉(zhuǎn)化為二進制碼,若周圍像素灰度值大于中心像素灰度值則為1,否則為0,從并依次從二值化窗口的左上角順時針取得MB-LBP 特征的二進制編碼,最終再轉(zhuǎn)換為十進制即為MB-LBP 特征值。Adaboost 算法的核心思想是針對同一個訓(xùn)練集訓(xùn)練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構(gòu)成一個更強的分類器(強分類器)。該算法步驟如下:
Step1:選取人臉數(shù)據(jù)庫,本文選取的是Yale 大學(xué)人臉數(shù)據(jù)庫,數(shù)據(jù)庫中的人臉和模擬環(huán)境下駕駛員的圖片作為正樣本,任意拍攝一組非人臉照片作為負樣本。T 為訓(xùn)練的最大循環(huán)次數(shù)。
Step2:樣本權(quán)重初始化,為1/n。
Step3:進行第一次迭代:先訓(xùn)練弱分類器,計算弱分類器的錯誤率,并選取合適的閾值,使得誤差最小
Step4:更新樣本權(quán)重,經(jīng)T 次循環(huán)后,得到T 個弱分類器,按更新的權(quán)重疊加,最終得到的強分類器。
在不同角度下駕駛員人臉檢測的結(jié)果如圖1 所示:
ASM算法有著在復(fù)雜背景下人臉跟蹤效果好的優(yōu)點,被廣泛運用于人臉特征點提取。ASM也是一種統(tǒng)計學(xué)習(xí)方法,包括模型建立和搜索定位,前者通過訓(xùn)練大量的人臉樣本獲取特征點初始形狀模型,后者通過建立好的模型匹配圖像中的形狀參數(shù)。ASM算法的具體步驟如下:
Step1:選取Yale 大學(xué)人臉數(shù)據(jù)庫作為樣本集,在每個樣本中標記出特征點的坐標信息,本文嘴巴標記出4 個特征點,每只眼睛分別標4 個特征點,共計12 個,如圖2 所示。各標記點的坐標采用向量的記為:xi=[xi0,yi0,…xij,yij,…xin,yin],(xij,yij)表示第i 幅圖第j 個特征點的坐標,n 為圖像的個數(shù);
Step2:對向量xi進行歸一化處理。一般以第一個向量為基準,將其他向量進行平移、縮放、旋轉(zhuǎn)等與基準向量進行對齊,歸一化后的向量記為S={x1,x2,…xn};
Step3:通過主成分分析法對向量進行降維,計算向量S 的所有特征值,并按大小順序取前t 個值,記為P=[p1,p2,…,pt],因此可得一個初始形狀模型,記為:a=a+pb,其中a 為均值向量,P為特征向量矩陣,b 為形狀參數(shù)向量;
Step4:構(gòu)建局部灰度模型,為搜索定位做準備;
Step5:通過對每一個特征點進行初始化來建立初始模型;
Step6:迭代搜索所有特征點并判斷是否收斂,并更新調(diào)整模型參數(shù)直至收斂,最終與目標圖像中的特征點進行匹配。
圖1 AdaBoost 算法人臉檢測的結(jié)果
圖2 人臉的特征點的標記圖
一般情況下,駕駛員疲勞都會伴有閉眼睛、打哈欠、點頭等行為,本文就是將這三者特征信息融合后來判斷駕駛員的疲勞狀態(tài)。檢測過程如圖3 所示。
圖3 疲勞檢測流程圖
PERCLOS 是最能反映駕駛員疲勞狀態(tài)的一個參數(shù),眼睛的大小正好符合人的精神狀態(tài),越疲勞,眼睛越閉合。PERCLOS 是指單位時間內(nèi)眼睛閉合時間總和的占比[5],大量實驗結(jié)果表明,PERCLOS 的值為80%時最能反映疲勞狀態(tài),計算公式為:
打哈欠也是判斷一個人疲勞的主要特征,在打哈欠的過程中,嘴巴相對于正常狀態(tài)明顯張大,且持續(xù)時間較長,不同于說話,可定義PMRCLOS 參數(shù)為哈欠判斷標準,
伴隨著閉眼睛、打哈欠的同時,疲勞也會有點頭的現(xiàn)象,本文取上述12 個特征點中的2 和4 的縱坐標作為頭部的狀態(tài)參數(shù),因為這兩個點能準確的反映頭部的運動狀態(tài)。閉眼睛、打哈欠、低頭時ASM匹配的結(jié)果如圖4 所示。
圖4 不同狀態(tài)下ASM 匹配的結(jié)果
通過觀察統(tǒng)計,取眼睛閉合時PERCLOS 超過80%認為閉合,駕駛員處于疲勞狀態(tài),小于20%認為完全睜開;駕駛員正常說話嘴巴張開閉合的頻率很快,當打哈欠時,嘴巴張開度很大,PMRCLOS 值保持在60%以上。疲勞駕駛的點頭閾值取在正常頭部活動范圍的30%,當超過30%時則認為是處于點頭狀態(tài)。
本課題以提高駕駛員疲勞檢測效率為目標,提出ASM與多特征信息融合的駕駛員疲勞檢測方法,先對采集的圖像進行預(yù)處理后,利用MB-LBP 特征的AdaBoost 算法進行人臉檢測,對檢測后的人臉運用ASM進行特征點定位,本文基于ASM算法選取了12 個特征點,簡化了算法的復(fù)雜度,通過特征點計算PERCLOS、PMRCLOS、點頭頻率參數(shù),結(jié)合這三個特征參數(shù),從而判定駕駛員是否疲勞。本文采用KL-MN06 型號的工業(yè)CCD人臉攝像頭,分辨率為704*576,幀數(shù)為25fps,仿真環(huán)境選擇的是Visual Studio Code、OpenCV 軟件,通過仿真實驗結(jié)果表明,該測方法具有良好的可靠性和準確性。