劉丙雨,李民政
(桂林電子科技大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,廣西 桂林541004)
人臉檢測(cè)是判斷圖像中人臉存在與否,并確定人臉位置、個(gè)數(shù)及大小的過程,它是人臉識(shí)別的關(guān)鍵。1995年,F(xiàn)reund等[1]提出了一種快速人臉檢測(cè)算法——AdaBoost算法。Jones等[2]引入級(jí)聯(lián)器與積分圖像改進(jìn)了AdaBoost算法,提高了人臉檢測(cè)率,加快了人臉的檢測(cè)速度。李文輝等[3]調(diào)整AdaBoost算法的權(quán)重更新規(guī)則,通過控制加權(quán)誤差分布來限制權(quán)重分配擴(kuò)張。Li Xuchun等[4]采用SVM算法訓(xùn)練弱分類器,并結(jié)合AdaBoost算法組成特征選擇與泛化能力更好的強(qiáng)分類器,提出一種AdaBoost-SVM算法。Ma Songyan等[5]結(jié)合膚色檢測(cè)與AdaBoost算法,采用膚色模型過濾檢測(cè)圖像,并用AdaBoost算法在候選區(qū)域進(jìn)行精準(zhǔn)檢測(cè)。
盡管這些改進(jìn)使AdaBoost算法的收斂速度達(dá)到了對(duì)數(shù)級(jí)水平,但AdaBoost算法在訓(xùn)練強(qiáng)分類器的過程中刪除了部分分類器(如錯(cuò)誤率>0.5),對(duì)噪聲數(shù)據(jù)比較敏感,尤其是有難分樣本點(diǎn)存在時(shí),生成的弱分類器之間仍存在較大的相關(guān)性和冗余信息[6]。為此,提出了一種改進(jìn)的AdaBoost人臉檢測(cè)算法。
AdaBoost算法通過對(duì)同一個(gè)正負(fù)樣本集進(jìn)行迭代,訓(xùn)練出不同的弱分類器,再將分類能力一般的弱分類器經(jīng)過一定的方法疊加,形成一個(gè)分類能力更好的強(qiáng)分類器[7]。AdaBoost算法的基本步驟為[8]:
1)給定一組訓(xùn)練樣本(x1,y1),(x2,y2),…,(xn,yn),其中:yi=1為正樣本,即人臉;yi=0為負(fù)樣本,即非人臉。l+m=n。其中:l為人臉樣本數(shù);m為非人臉樣本數(shù);n為樣本總數(shù)。
2)樣本權(quán)重初始化:
3)當(dāng)T=1,2,…,t:
a)歸一化權(quán)重,
b)每個(gè)特征j對(duì)應(yīng)訓(xùn)練出一個(gè)分類器hj。計(jì)算所有弱分類器hj的加權(quán)錯(cuò)誤率,
c)選出具有最小錯(cuò)誤率εt的弱分類器ht。
4)得到強(qiáng)分類器
由AdaBoost算法生成的子分類器的多樣性可知,在前幾次迭代中,因?yàn)槊總€(gè)新生成的弱分類器只考慮上一個(gè)弱分類器未正確分類的樣本,所以差異性比較大。但隨著迭代次數(shù)增加,難以被正確分類的樣本有可能一直被錯(cuò)分,而后生成的弱分類器會(huì)越來越關(guān)注這些不能被正確分類的樣本,最終多樣性急劇下降。Krogh等[9]提出集成系統(tǒng)的泛化誤差E:
因此,在AdaBoost算法訓(xùn)練弱分類器的過程中加入差異性度量作為弱分類器間的差異度判定,排除一些弱分類器,降低弱分類器間的相關(guān)性,增加強(qiáng)分類器集合的差異性,可提高最終強(qiáng)分類器的檢測(cè)率。
采用差異性度量Di,j作為分類器間的相關(guān)性判定。第i個(gè)弱分類器Ci和第j個(gè)弱分類器Cj對(duì)同一個(gè)樣本集的檢測(cè)差異性度量
其中為訓(xùn)練樣本集中Ci檢測(cè)結(jié)果為a、Cj檢測(cè)結(jié)果為b的樣本個(gè)數(shù),a,b∈{0,1}。由式(6)可知,2個(gè)分類器的差異性隨Di,j的增大而增大。
如果樣本總數(shù)為n,Ci、Cj的檢測(cè)差異性為:
其中,
那么l個(gè)分類器的平均差異性:
為了減少多樣性計(jì)算的耗時(shí),加快訓(xùn)練速度,利用多樣性查找表(diversity table)保存已選弱分類器間的差異性Di,j。改進(jìn)的AdaBoost算法的最優(yōu)弱分類器選擇過程為:
當(dāng)T=1,2,…,t:
a)每個(gè)特征j對(duì)應(yīng)訓(xùn)練出一個(gè)分類器hj,計(jì)算所有弱分類器hj的加權(quán)錯(cuò)誤率
b)選出具有最小錯(cuò)誤率εt的弱分類器ht;
c)計(jì)算與已選弱分類器的差異性Di,j,j=1,2,…,t-1,并將其寫入多樣性查找表;
在P4 4.0 GHz處理器、內(nèi)存4 GB的PC上采用VC++6.0作為編程平臺(tái),對(duì)改進(jìn)的AdaBoost算法進(jìn)行性能檢測(cè),并與AdaBoost算法的檢測(cè)效果加以對(duì)比。人臉庫(kù)測(cè)試集選用MIT-CBCL,并對(duì)2種算法訓(xùn)練得到的人臉檢測(cè)器分別進(jìn)行測(cè)試。為了定量且直觀地反映檢測(cè)性能,在實(shí)驗(yàn)中選取人臉檢測(cè)率、錯(cuò)誤檢測(cè)數(shù)分析檢測(cè)結(jié)果。
AdaBoost算法和改進(jìn)的AdaBoost算法采用相同結(jié)構(gòu)的強(qiáng)分類器進(jìn)行人臉檢測(cè)的受試者工作特征曲線(ROC)如圖1所示。從圖1可看出,當(dāng)誤檢的人臉數(shù)目相同時(shí),改進(jìn)的AdaBoost算法的人臉檢測(cè)率比AdaBoost算法高;當(dāng)人臉檢測(cè)率相等時(shí),改進(jìn)的Ada-Boost算法的錯(cuò)誤檢測(cè)數(shù)比AdaBoost算法少。在錯(cuò)誤檢測(cè)數(shù)不斷增加的情況下,改進(jìn)的AdaBoost算法的檢測(cè)率增加更快。
圖1 2種算法的受試者工作特征曲線Fig.1 The ROC of two algorithms
AdaBoost算法和改進(jìn)的AdaBoost算法對(duì)同一個(gè)圖像集的人臉檢測(cè)率如圖2所示。從圖2可看出,改進(jìn)的AdaBoost算法的檢測(cè)率高于AdaBoost算法。但隨著弱分類器數(shù)量的增加,改進(jìn)的AdaBoost算法的檢測(cè)率升高,優(yōu)于AdaBoost算法。
圖2 2種算法的人臉檢測(cè)率Fig.2 The face detection rate of two algorithms
在訓(xùn)練弱分類器的過程中引入差異性度量判定,不僅提高了各個(gè)弱分類器之間的差異性,而且有效地將特征互補(bǔ)的弱分類器進(jìn)行組合,從而提高強(qiáng)分類器的檢測(cè)能力,進(jìn)一步說明改進(jìn)的AdaBoost算法的人臉檢測(cè)性能優(yōu)于AdaBoost算法。
采用相同結(jié)構(gòu)的強(qiáng)分類器對(duì)同一張圖片進(jìn)行人臉檢測(cè),其結(jié)果如圖3所示。由圖3可知,AdaBoost算法的檢測(cè)率低于改進(jìn)的AdaBoost算法,并且錯(cuò)圖數(shù)目和漏檢數(shù)目有所增加,表明加入相關(guān)性判定的AdaBoost算法訓(xùn)練的強(qiáng)分類器比AdaBoost算法有更好的檢測(cè)性能。
圖3 人臉檢測(cè)結(jié)果Fig.3 The results of face detection
針對(duì)AdaBoost算法忽略弱分類器之間的相關(guān)性,導(dǎo)致強(qiáng)分類器的集成性能降低的缺陷,提出一種改進(jìn)的AdaBoost人臉檢測(cè)算法。該算法在訓(xùn)練弱分類器的迭代過程中引入差異性判定,根據(jù)計(jì)算的判定值剔除相似的特征,最后將具有特征互補(bǔ)的弱分類器疊加到強(qiáng)分類器的集合中,保證強(qiáng)分類器有最快的收斂速度和最小的錯(cuò)誤率。改進(jìn)的AdaBoost算法提高了人臉檢測(cè)率,降低了錯(cuò)誤檢測(cè)數(shù)。
[1]Freund Y,Schipare R E.Experiments with a new boosting algorithm[C]//International Conference on Machine Learning,1996:148-156.
[2]Jones M J,Viola P.Method and system for object detection in digital images:US,7099510[P].2006-08-29.
[3]李文輝,倪洪印.一種改進(jìn)的AdaBoost訓(xùn)練算法[J].吉林大學(xué)學(xué)報(bào):理學(xué)版,2011,3(49):498-504.
[4]Li Xuchun,Wang Lei,Sung E.AdaBoost with SVM-based component classifiers[J].Engineering Applications of Artificial Intelligence,2008,21(5):785-795.
[5]Ma Songyan,Du Tiancang.Improved AdaBoost face detection[C]//IEEE International Conference on Measuring Technology and Mechatronics Automation,2010:434-437.
[6]姚旭,王曉丹.基于AdaBoost匹配追蹤的選擇性集成算法[J].控制與決策,2014,29(2):208-214.
[7]李闖,丁曉青,吳佑壽.一種改進(jìn)的AdaBoost-AD Ada-Boost[J].計(jì)算機(jī)學(xué)報(bào),2007,30(1):103-109.
[8]朱叢慶,劉建明,張霖,等.基于膚色分割與改進(jìn)Ada-Boost算法的人臉檢測(cè)[J].桂林電子科技大學(xué)學(xué)報(bào),2013,33(4):319-322.
[9]Krogh A,Vedelsby J.Neural network ensembles,cross validation,and active learning[C]//Advances in Neural Information Processing Systems,1995:231-238.
[10]蔣 焰,丁曉青.基于多步校正的改進(jìn)AdaBoost算法[J].清華大學(xué)學(xué)報(bào):自然科學(xué)版,2008,48(10):1613-1616.
[11]張君昌,樊偉.基于相關(guān)性的AdaBoost人臉檢測(cè)算法[J].計(jì)算機(jī)工程,2011,37(8):158-160.