動態(tài)百分比樣本裁剪AdaBoost人臉檢測算法
【技術領域】
[0001] 本發(fā)明涉及一種動態(tài)百分比樣本裁剪AdaBoost人臉檢測算法,屬于模式識別技 術領域。
【背景技術】
[0002] 生物特征識別技術是通過每個個體所獨有的生理特征和行為特征來實現(xiàn)身份證 實或個體鑒別的目的。人臉作為生物特征的一種,具有易于獲取,接口友好等特點,相較于 現(xiàn)在常用的方式,如口令、信用卡、身份卡等,具有不可復制、攜帶方便、鑒別性強等優(yōu)勢。因 此在視頻監(jiān)控、智能家居和刑事偵查等領域具有廣闊的前景。隨著嵌入式設備運算能力越 來越強,智能算法越來越多地應用于嵌入式開發(fā)領域,實現(xiàn)不同的功能。其中人臉檢測作為 人臉識別的基礎,成為了人工智能領域的研究熱點。
[0003] AdaBoost算法其核心是通過迭代的方法從大量的Haar特征中提取出分類效果最 好的特征作為弱分類器,而最終生成的強分類器是由大量的弱分類器組成。AdaBoost實 用而簡單,而基于AdaBoost算法的人臉檢測算法對于單一人臉圖像的檢測不僅具有極高 的檢測精度,而且具備很快的檢測速度,因此基于該算法的人臉識別技術得到了廣泛的應 用。
[0004] 當訓練樣本,樣本特征,弱分類器個數(shù)較多的時候,采用AdaBoost算法訓練的分 類器會消耗大量的訓練時間。特征個數(shù)決定了算法的迭代次數(shù),每次迭代獲取相應特征在 訓練樣本集中的錯誤率,最后通過比較錯誤率取得最佳弱分類器。每訓練完一個最佳弱分 類器,訓練樣本的權重會相應的發(fā)生變化,因此如果需要更多的弱分類器,則需要重復相應 次數(shù)的上述步驟。由此可見,當訓練樣本,樣本特征個數(shù)和弱分類器個數(shù)增加時,訓練時間 會以三次方的數(shù)量級增加。
【發(fā)明內容】
[0005] 本發(fā)明的目的在于克服現(xiàn)有技術中的不足,提供一種動態(tài)百分比樣本裁剪 AdaBoost人臉檢測算法,解決現(xiàn)有技術中采用AdaBoost算法訓練的分類器會消耗大量的 訓練時間的技術問題。
[0006] 為解決上述技術問題,本發(fā)明所采用的技術方案是:動態(tài)百分比樣本裁剪 AdaBoost人臉檢測算法,在每次迭代開始的時候,首先確定所需裁剪樣本個數(shù)的百分比f, 每一輪按照f裁剪掉權重較小的樣本,用剩余樣本進行訓練;
[0007] 當訓練得到的本次迭代的最佳弱分類器錯誤率大于隨機值產生的錯誤率,通過減 小裁剪的常量f,擴大樣本集數(shù)量,對于本次迭代重新進行訓練;
[0008] 如果當采用全部樣本進行訓練時,錯誤率仍然超過0. 5,則停止迭代;
[0009] 具體算法包括如下步驟:
[0010] 步驟一:設輸入的訓練樣本總數(shù)為N,其中負樣本為m個,正樣本為η個,訓練樣本 集為S = ((X1, Y1), . . . (xn,yn)},其中Xi表示第i個樣本,y ;= {1,0},分別用于標識正負樣 本;
[0011] 步驟二:初始化樣本權重:
[0012]
[0013] 步驟三:假設每一輪舍去的樣本百分比為f,那么每一輪參與訓練的樣本個數(shù)為 NX (Ι-f),迭代次數(shù) t = 1,2,…,T ;
[0014] 步驟四:獲取最優(yōu)弱分類器,求得弱分類器匕在強分類器中的加權系數(shù)a t,方法 如下:
[0015] 步驟401 :歸一化樣本的權重值 J-*
[0016] 步驟402 :針對每個特征j,訓練一個簡單弱分類器h, (X,f ,,Ρ],Θ P :
[0017]
[0018] 其中,f.,00為特征值,P]表示不等號方向,Θ ^為弱分類器閾值;
[0019] 步驟403 :選擇最小錯誤率對應的弱分類器ht(x),其中最小錯誤率定義為:
[0020]
[0021] 步驟404 :如果ε t= 〇或者在第一輪訓練時就出現(xiàn)ε 〇. 5,則令T = t-Ι,跳 到步驟六;如果ε 〇. 5且不是第一輪,則令T = t-1,判斷f是否大于2/3,若大于則令 f = 2Xf_l,否則令f = f/2跳轉到步驟五;
[0022] 步驟405 :更新樣本權重:W
[0023] 當樣本Xi被錯誤分類時e 0,反之e 1,爲-卜ε,
[0024] 步驟406 :求得弱分類器ht在強分類器中的加權系數(shù):
[0025]
[0026] 步驟五:對訓練集中樣本,按權重值從小到大進行排列,根據(jù)裁剪的百分比f,裁 剪掉權重較小的前nXf個樣本;
[0027] 步驟六:輸出強分類器:
[0028]
[0029] 與現(xiàn)有技術相比,本發(fā)明所達到的有益效果是:適用于參與訓練的樣本個數(shù)過多 時,通過選取部分對性能提升效果更好的樣本,來達到節(jié)省訓練時間的目的。
【附圖說明】
[0030] 圖1是本發(fā)明方法的流程圖。
[0031] 圖2是獲取最優(yōu)弱分類器的流程圖。
【具體實施方式】
[0032] 下面結合附圖對本發(fā)明作進一步描述。
[0033] 附圖中各函數(shù)所表示的含義如下:
[0034] 函數(shù)cvGetTickCount ():返回從操作系統(tǒng)啟動到當前所經(jīng)過的毫秒數(shù),通過計算 兩個返回量的差值便可以統(tǒng)計訓練所耗費的時間。
[0035] 函數(shù)Single_Classifier(int i):用于產生一個強分類器,傳入的參數(shù)表示構成 此強分類器的弱分類器個數(shù)。
[0036] 函數(shù) Generate_AllFeatures (int count):用于生成所有 Haar-like 的特征, count表示使用特征類型的數(shù)量。本發(fā)明選用了 5種常用特征模板,因此count值為5。
[0037] 函數(shù)Input_Samples ():從指定目錄中讀入正負樣本。
[0038] 函數(shù)SelectJVeakClassifier ():用于獲取最優(yōu)弱分類器。
[0039] 函數(shù)Output_WeakClassifier ():用于輸出生成的弱分類器。
[0040] 函數(shù)Cal_HaarValue (j, k):用于計算第k個樣本的第j個特征。
[0041] 函數(shù)qsortO :根據(jù)特征值的大小對樣本進行排序。
[0042] 如圖1所示,動態(tài)百分比樣本裁剪AdaBoost人臉檢測算法,在每次迭代開始的時 候,首先確定所需裁剪樣本個數(shù)的百分比f,每一輪按照f裁剪掉權重較小的樣本,用剩余 樣本進行訓練;
[0043] 當訓練得到的本次迭代的最佳弱分類器錯誤率大于隨機值產生的錯誤率,通過減 小裁剪的常量f,擴大樣本集數(shù)量,對于本次迭代重新進行訓練;
[0044] 如果當采用全部樣本進行訓練時,錯誤率仍然超過0. 5,則停止迭代;
[0045] 具體算法包括如下步驟:
[0046] 步驟一:設輸入的訓練樣本總數(shù)為N,其中負樣本為m個,正樣本為η個,訓練樣本 集為S = ((X1, Y1), . . . (xn,yn)},其中Xi表示第i個樣本,y ;= {1,0},分別用于標識正負樣 本;
[0047] 步驟二:初始化樣本權重:
[0048]
[0049] 步驟三:假設每一輪舍去的樣本百分比為f,那么每一輪參與訓練的樣本個數(shù)為 NX (Ι-f),迭代次數(shù) t = 1,2,…,T ;
[0050] 步驟四:獲取最優(yōu)弱分類器,求得弱分類器匕在強分類器中的加權系數(shù)a t,如圖 2所示,方法如下:
[0051] 步驟401 :歸一化樣本的權重值:
.,
[0052] 步驟402 :針對每個特征j,訓練一個簡單弱分類器h, (X,f ,,Ρ],Θ P :
[0053]
[0054] 其中,f?為特征值,P]表示不等號方向,Θ ^為弱分類器閾值;
[0055] 來驄4的.詵諢晶/丨、錯彳呈末 1甜命的韶分類器ht(x),其中最小錯誤率定義為:
[0056]
[0057] 步驟404 :如果ε t= 〇或者在第一輪訓練時就出現(xiàn)ε 〇. 5,則令T = t-Ι,跳 到步驟六;如果ε 〇. 5且不是第一輪,則令T = t-1,判斷f是否大于2/3,若大于則令 f = 2Xf_l,否則令f = f/2跳轉到步驟五;
[0058] 步驟405 :更新樣本權重,山· = KiA1I . .,
[0059] 當樣本Xi被錯誤分類時e 0,反之e 1,爲~ ^
[0060] 步驟406 :求得弱分類器ht在強分類器中的加權系數(shù):
[0061]
[0062] 步驟五:對訓練集中樣本,按權重值從小到大進行排列,根據(jù)裁剪的百分比f,裁 剪掉權重較小的前nXf個樣本;
[0063] 步驟六:輸出強分類器:
[0064]
[0065] 以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人 員來說,在不脫離本發(fā)明技術原理的前提下,還可以做出若干改進和變形,這些改進和變形 也應視為本發(fā)明的保護范圍。
【主權項】
1.動態(tài)百分比樣本裁剪AdaBoost人臉檢測算法,其特征在于,在每次迭代開始的時 候,首先確定所需裁剪樣本個數(shù)的百分比f,每一輪按照f裁剪掉權重較小的樣本,用剩余 樣本進行訓練; 當訓練得到的本次迭代的最佳弱分類器錯誤率大于隨機值產生的錯誤率,通過減小裁 剪的常量f,擴大樣本集數(shù)量,對于本次迭代重新進行訓練; 如果當采用全部樣本進行訓練時,錯誤率仍然超過0. 5,則停止迭代; 具體算法包括如下步驟: 步驟一:設輸入的訓練樣本總數(shù)為N,其中負樣本為m個,正樣本為n個,訓練樣本集為S= {(Xi,yi), . . . (x",y。)},其中X;表示第i個樣本,yi= {1,0},分別用于標識正負樣本; 步驟二:初始化樣本權重:步驟假設每一輪舍去的樣本百分比為f,那么每一輪參與訓練的樣本個數(shù)為NX(1-f),迭代次數(shù)t= 1,2,…,T; 步驟四:獲取最優(yōu)弱分類器,求得弱分類器ht在強分類器中的加權系數(shù)at,方法如 下: 步驟401 :歸一化樣本的權重值9. 步驟4O2:針對每個特征j,訓練一個簡單弱分類器h,(x,f,,p,,0,):其中,f,(x)為特征值,P,表示不等號方向,0,為弱分類器闊值; 步驟403 :選擇最小錯誤率對應的弱分類器ht(x),其中最小錯誤率定義為:步驟404:如果Et=0或者在第一輪訓練時就出現(xiàn)et>〇.5,則令T=t-1,跳到步 驟六;如果e0. 5且不是第一輪,則令T=t-1,判斷f是否大于2/3,若大于則令f= 2Xf-1,否則令f=f/2跳轉到步驟五;步驟405:更新樣本權重 . 9 當樣本被錯誤分類時6 1=0,反之6i= 1 步驟406 :求得弱分類器ht在強分類器中的加權系數(shù): .5.步驟五:對訓練集中樣本,按權重值從小到大進行排列,根據(jù)裁剪的百分比f,裁剪掉 權重較小的前nXf個樣本; 步驟六:輸出強分類器:
【專利摘要】本發(fā)明公開了一種動態(tài)百分比樣本裁剪AdaBoost人臉檢測算法,具體為:在每次迭代開始的時候首先確定所需裁剪樣本個數(shù)的百分比f,每一輪按照f裁剪掉權重較小的樣本,用剩余樣本進行訓練,當訓練得到的本次迭代的最佳弱分類器錯誤率大于隨機值產生的錯誤率,通過減小裁剪的常量f,擴大樣本集數(shù)量,對于本次迭代重新進行訓練。如果當采用全部樣本進行訓練時,錯誤率仍然超過0.5則停止迭代。本發(fā)明適用于參與訓練的樣本個數(shù)過多時,通過選取部分對性能提升效果更好的樣本,來達到節(jié)省訓練時間的目的。
【IPC分類】G06K9/00
【公開號】CN105005768
【申請?zhí)枴緾N201510391152
【發(fā)明人】李東新, 張鴻鵬
【申請人】河海大學
【公開日】2015年10月28日
【申請日】2015年7月6日