眨眼是一種睜閉眼睛的生理活動,眨眼的速度會受疲勞程度、情感壓力、行為種類、睡覺數(shù)量、眼睛受傷程度、疾病等因素影響[1~2]。眨眼識別是駕駛員疲勞檢測的基礎(chǔ),本文采用 Adaboost算法[3][4][5]訓(xùn)練和檢測眼睛睜閉狀態(tài),把睜眼和閉眼圖片分類出來。
Adaboost算法
Adaboost是一種自適應(yīng) boosting算法,它的原理就是將一些簡單的弱分類器 (矩形特征 )通過特定的訓(xùn)練需求 (一般為檢測率和誤檢率的要求)組合成為一個強分類器,在訓(xùn)練和檢測時每一個強分類器對待檢測的矩形特征進行判決,將這些強分類器級聯(lián)起來就可以生成一個準確的、快速的分類器。它的特點就是檢測速度快,因為每一個強分類器都可以否決待檢測的矩形特征,所以前面的強分類器就可以把大部分錯誤的特征給排除掉。
下面介紹Adaboost算法對強分類器的訓(xùn)練。本文正樣本為包含各種姿態(tài)人眼的圖片(睜眼、閉眼、帶眼鏡),負樣本為不包含眼睛的任意圖片。設(shè)輸入的n個訓(xùn)練樣本為:{(x1,y1),(x2,y2),......(xn,yn)},其中xi是輸入的訓(xùn)練樣本,yi∈{0,1}分別表示正樣本和負樣本,其中正樣本數(shù)為 l,負樣本數(shù)m。n=l+m,具體步驟如下:
(1) 初始化每個樣本的權(quán)重w1,i∈D(i);
(2)對每個t=1,..., T(T為弱分類器的個數(shù))
?、侔褭?quán)重歸一化為一個概率分布
?、趯γ總€特征f,訓(xùn)練一個弱分類器hj計算對應(yīng)所有特征的弱分類器的加權(quán)錯誤率
?、圻x取最佳的弱分類器ht(擁有最小錯誤率):et
?、馨凑者@個最佳弱分類器,調(diào)整權(quán)重
其中ei=0表示被正確地分類,ei=1
表示被錯誤地分類
(3)最后的強分類器為:
基于Adaboost算法的眨眼識別
要保證視頻流中圖像處理的實時性就必須采用特定的算法。Adaboost算法由于它特殊的算法模式,可以進行快速的目標檢測,因此我們的人眼狀態(tài)檢測的定位,系統(tǒng)就選擇了 Adaboost算法。基于Adaboost的眨眼識別系統(tǒng)主要包含兩個模塊:訓(xùn)練和檢測。其中訓(xùn)練過程起著決定性的作用。
訓(xùn)練
樣本的選擇至關(guān)重要,包括兩個方面,首先是樣本源,本文采用BioID-EyeDatabase和AR人臉庫(來源于網(wǎng)絡(luò))[6],樣本庫提供了人臉圖片和人眼坐標,根據(jù)人眼坐標用Matlab編程來提取人眼。正樣本從截取出的人眼圖片中選取閉眼圖片,負樣本為剩下的睜眼圖片。樣本的訓(xùn)練過程就是按第2部分算法所闡述的方法選擇弱分類器, 形成強分類器, 再由強分類器級聯(lián)成為一個有效的分類器。在訓(xùn)練時給出檢測率和誤檢率的要求,如檢測率為0.99,誤檢率為0.3,若一共有n個強分類器,則最終的檢測率為0.99n,最終的誤檢率為0.3n。
檢測
檢測就是根據(jù)訓(xùn)練所得到的分類器特征一般存儲為.xml文件對輸入圖片進行檢測。分類器是一個有若干個強分類器組成的級聯(lián)分類器,檢測結(jié)果是一系列的目標矩形,也就是圖像中目標所在的位置。
實驗結(jié)果分析
本文采用三種不同的負樣本選擇方法,進行了三次對比實驗。
實驗一:正樣本582張閉眼圖片,歸一化為24×24,負樣本1285張睜眼圖片,正負樣本如圖1、圖2所示,實驗結(jié)果如圖3所示。
從實驗結(jié)果可以看出睜眼圖片中把眉毛誤檢為閉眼圖片,原因是負樣本數(shù)量和種類少,導(dǎo)致誤檢率高。
本文提出了一種新的負樣本選擇方法,這樣給我們擴展訓(xùn)練樣本量提供了很大的幫助,就是在Opencv[7]中修改程序,利用已經(jīng)訓(xùn)練好的分類器,來檢測大量視頻圖片,把誤檢的圖片保存下來加入到負樣本中來作為下次訓(xùn)練的新的負樣本,并繼續(xù)訓(xùn)練,然后利用下次訓(xùn)練好的新的分類器來繼續(xù)添加負樣本。負樣本截取軟件界面如圖4所示。
實驗二:正樣本582張閉眼圖片,與實驗一相同,負樣本2300張,其中除了實驗一中的負樣本,還包括從負樣本截取軟件中收集到的誤檢圖片。添加的負樣本如圖5所示。
實驗結(jié)果如圖6所示。
從實驗結(jié)果可以看出睜眼圖片中把兩內(nèi)眼角以外一定范圍誤檢為閉眼,說明負樣本的種類還是沒有達到要求。所以繼續(xù)利用負樣本截取軟件收集誤檢到的圖片作為負樣本。
實驗三:正樣本582張閉眼圖片,與實驗一相同,負樣本為2965張,其中除了實驗二中的負樣本,還包括從負樣本截取軟件中收集到的誤檢圖片。添加的負樣本如圖7所示。
實驗結(jié)果如圖8所示。
從實驗結(jié)果中可以看出利用最終的負樣本訓(xùn)練生成的分類器能有效的區(qū)分出睜眼和閉眼狀態(tài),誤檢率大大降低,說明這樣的負樣本選擇方法行之有效。
三個實驗結(jié)果誤檢率比較如表1所示。誤檢率為錯誤檢測的圖片數(shù)除以圖片總數(shù)。
結(jié)語
本文通過實驗,提出了一種新的負樣本選擇方法,這樣給我們擴展訓(xùn)練樣本量提供了很大的幫助,即應(yīng)用一個負樣本截取軟件,通過載入先前訓(xùn)練好的分類器,不斷的收集誤檢的部分來添加進負樣本中,作為下次訓(xùn)練的新的負樣本,訓(xùn)練新的分類器。不斷循環(huán)重復(fù)這個步驟,直到達到能產(chǎn)生有滿意效果的分類器。從三個實驗結(jié)果看出誤檢率逐漸減少,證明了方法的有效性。在以后的實驗中繼續(xù)采用層層迭代的方式,不斷利用訓(xùn)練好的新的分類器來增加負樣本,直到訓(xùn)練出更加精確的分類器,為后續(xù)判斷汽車駕駛員疲勞檢測做鋪墊。
電子發(fā)燒友App




















評論