本帖最后由 賈延安 于 2009-9-22 12:13 編輯 趙雪竹 王秀 朱學峰 華南理工大學自動化科學與工程學院 2009-09-08 來源:電子產品世界 引言 眨眼是一種睜閉眼睛的生理活動,眨眼的速度會受疲勞程度、情感壓力、行為種類、睡覺數量、眼睛受傷程度、疾病等因素影響[1~2]。眨眼識別是駕駛員疲勞檢測的基礎,本文采用 Adaboost算法[3][4][5]訓練和檢測眼睛睜閉狀態,把睜眼和閉眼圖片分類出來。 Adaboost算法 Adaboost是一種自適應 boosting算法,它的原理就是將一些簡單的弱分類器 (矩形特征 )通過特定的訓練需求 (一般為檢測率和誤檢率的要求)組合成為一個強分類器,在訓練和檢測時每一個強分類器對待檢測的矩形特征進行判決,將這些強分類器級聯起來就可以生成一個準確的、快速的分類器。它的特點就是檢測速度快,因為每一個強分類器都可以否決待檢測的矩形特征,所以前面的強分類器就可以把大部分錯誤的特征給排除掉。 下面介紹Adaboost算法對強分類器的訓練。本文正樣本為包含各種姿態人眼的圖片(睜眼、閉眼、帶眼鏡),負樣本為不包含眼睛的任意圖片。設輸入的n個訓練樣本為:{(x1,y1),(x2,y2),......(xn,yn)},其中xi是輸入的訓練樣本,yi∈{0,1}分別表示正樣本和負樣本,其中正樣本數為 l,負樣本數m。n=l+m,具體步驟如下: (1) 初始化每個樣本的權重w1,i∈D(i); (2)對每個t=1,..., T(T為弱分類器的個數) ①把權重歸一化為一個概率分布 ![]() ②對每個特征f,訓練一個弱分類器hj計算對應所有特征的弱分類器的加權錯誤率 ![]() ③選取最佳的弱分類器ht(擁有最小錯誤率):et ④按照這個最佳弱分類器,調整權重 ![]() 其中ei=0表示被正確地分類,ei=1 表示被錯誤地分類 ![]() (3)最后的強分類器為: ![]() 基于Adaboost算法的眨眼識別 要保證視頻流中圖像處理的實時性就必須采用特定的算法。Adaboost算法由于它特殊的算法模式,可以進行快速的目標檢測,因此我們的人眼狀態檢測的定位,系統就選擇了 Adaboost算法。基于Adaboost的眨眼識別系統主要包含兩個模塊:訓練和檢測。其中訓練過程起著決定性的作用。 訓練 樣本的選擇至關重要,包括兩個方面,首先是樣本源,本文采用BioID-EyeDatabase和AR人臉庫(來源于網絡)[6],樣本庫提供了人臉圖片和人眼坐標,根據人眼坐標用Matlab編程來提取人眼。正樣本從截取出的人眼圖片中選取閉眼圖片,負樣本為剩下的睜眼圖片。樣本的訓練過程就是按第2部分算法所闡述的方法選擇弱分類器, 形成強分類器, 再由強分類器級聯成為一個有效的分類器。在訓練時給出檢測率和誤檢率的要求,如檢測率為0.99,誤檢率為0.3,若一共有n個強分類器,則最終的檢測率為0.99n,最終的誤檢率為0.3n。 檢測 檢測就是根據訓練所得到的分類器特征一般存儲為.xml文件對輸入圖片進行檢測。分類器是一個有若干個強分類器組成的級聯分類器,檢測結果是一系列的目標矩形,也就是圖像中目標所在的位置。 實驗結果分析 本文采用三種不同的負樣本選擇方法,進行了三次對比實驗。 實驗一:正樣本582張閉眼圖片,歸一化為24×24,負樣本1285張睜眼圖片,正負樣本如圖1、圖2所示,實驗結果如圖3所示。 ![]() 從實驗結果可以看出睜眼圖片中把眉毛誤檢為閉眼圖片,原因是負樣本數量和種類少,導致誤檢率高。 ![]() 本文提出了一種新的負樣本選擇方法,這樣給我們擴展訓練樣本量提供了很大的幫助,就是在Opencv[7]中修改程序,利用已經訓練好的分類器,來檢測大量視頻圖片,把誤檢的圖片保存下來加入到負樣本中來作為下次訓練的新的負樣本,并繼續訓練,然后利用下次訓練好的新的分類器來繼續添加負樣本。負樣本截取軟件界面如圖4所示。 ![]() 實驗二:正樣本582張閉眼圖片,與實驗一相同,負樣本2300張,其中除了實驗一中的負樣本,還包括從負樣本截取軟件中收集到的誤檢圖片。添加的負樣本如圖5所示。 ![]() 實驗結果如圖6所示。 ![]() 從實驗結果可以看出睜眼圖片中把兩內眼角以外一定范圍誤檢為閉眼,說明負樣本的種類還是沒有達到要求。所以繼續利用負樣本截取軟件收集誤檢到的圖片作為負樣本。 實驗三:正樣本582張閉眼圖片,與實驗一相同,負樣本為2965張,其中除了實驗二中的負樣本,還包括從負樣本截取軟件中收集到的誤檢圖片。添加的負樣本如圖7所示。 ![]() 實驗結果如圖8所示。 ![]() 從實驗結果中可以看出利用最終的負樣本訓練生成的分類器能有效的區分出睜眼和閉眼狀態,誤檢率大大降低,說明這樣的負樣本選擇方法行之有效。 三個實驗結果誤檢率比較如表1所示。誤檢率為錯誤檢測的圖片數除以圖片總數。 ![]() 結語 本文通過實驗,提出了一種新的負樣本選擇方法,這樣給我們擴展訓練樣本量提供了很大的幫助,即應用一個負樣本截取軟件,通過載入先前訓練好的分類器,不斷的收集誤檢的部分來添加進負樣本中,作為下次訓練的新的負樣本,訓練新的分類器。不斷循環重復這個步驟,直到達到能產生有滿意效果的分類器。從三個實驗結果看出誤檢率逐漸減少,證明了方法的有效性。在以后的實驗中繼續采用層層迭代的方式,不斷利用訓練好的新的分類器來增加負樣本,直到訓練出更加精確的分類器,為后續判斷汽車駕駛員疲勞檢測做鋪墊。 參考文獻: [1] Karson C, Spontaneou eye-blink rates and dopaminergic systems[J].Brain, vol. 106, pp.643-653, 1983 [2] Tsubota K, Tear Dynamics and Dry Eye[J]. Progress inRetinal and EyeResearch, vol.17, no.4,pp565-596, 1998 [3] Viola P, Jones M. Rapid object detection using a Boosted cascade of simple features[C]. Proc. of IEEE Conf. on CVPR 2001. 511- 518 [4] Yong Ma, Xiaoqing Ding, Zhenger Wang, Ning Wang. Robust precise eye location under probabilistic framework[C]. Proceedings of the sixth IEEE International Conference on Automatic Face and Gesture [5] 趙江,徐魯安. 基于 AdaBoost算法的目標檢測 [J]. 計算機工程,2004(2) [6] Martinez A.M. and Benavente R. The AR Face Database[R]. CVC Technical Report #24, June 1998 [7] Gao W, Cao B, Shan S G, Zhou D L, Zhang X H, Zhao D B. The CAS-PEAL large-scale Chinese face database and evaluation protocols[R]. Technical report No.JDLTR04 F R001, Joint Research & Development Laboratory, CAS, 2004 [8]Gang Pan,Lin Sun,Zhaohui Wu,Shihong Lao.Eyelink-based Anti-spoofing in Face Recognition from a Generic Webcamera[R].The 11th IEEE International Conference on Computer Vision(ICCV’07),Rio de Janeiro,Brazil,October 14-20,2007 |