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