劉丙雨,李民政
(桂林電子科技大學 計算機科學與工程學院,廣西 桂林541004)
人臉檢測是判斷圖像中人臉存在與否,并確定人臉位置、個數及大小的過程,它是人臉識別的關鍵。1995年,Freund等[1]提出了一種快速人臉檢測算法——AdaBoost算法。Jones等[2]引入級聯器與積分圖像改進了AdaBoost算法,提高了人臉檢測率,加快了人臉的檢測速度。李文輝等[3]調整AdaBoost算法的權重更新規則,通過控制加權誤差分布來限制權重分配擴張。Li Xuchun等[4]采用SVM算法訓練弱分類器,并結合AdaBoost算法組成特征選擇與泛化能力更好的強分類器,提出一種AdaBoost-SVM算法。Ma Songyan等[5]結合膚色檢測與AdaBoost算法,采用膚色模型過濾檢測圖像,并用AdaBoost算法在候選區域進行精準檢測。
盡管這些改進使AdaBoost算法的收斂速度達到了對數級水平,但AdaBoost算法在訓練強分類器的過程中刪除了部分分類器(如錯誤率>0.5),對噪聲數據比較敏感,尤其是有難分樣本點存在時,生成的弱分類器之間仍存在較大的相關性和冗余信息[6]。為此,提出了一種改進的AdaBoost人臉檢測算法。
AdaBoost算法通過對同一個正負樣本集進行迭代,訓練出不同的弱分類器,再將分類能力一般的弱分類器經過一定的方法疊加,形成一個分類能力更好的強分類器[7]。AdaBoost算法的基本步驟為[8]:
1)給定一組訓練樣本(x1,y1),(x2,y2),…,(xn,yn),其中:yi=1為正樣本,即人臉;yi=0為負樣本,即非人臉。l+m=n。其中:l為人臉樣本數;m為非人臉樣本數;n為樣本總數。
2)樣本權重初始化:

3)當T=1,2,…,t:
a)歸一化權重,

b)每個特征j對應訓練出一個分類器hj。計算所有弱分類器hj的加權錯誤率,

c)選出具有最小錯誤率εt的弱分類器ht。
4)得到強分類器

由AdaBoost算法生成的子分類器的多樣性可知,在前幾次迭代中,因為每個新生成的弱分類器只考慮上一個弱分類器未正確分類的樣本,所以差異性比較大。但隨著迭代次數增加,難以被正確分類的樣本有可能一直被錯分,而后生成的弱分類器會越來越關注這些不能被正確分類的樣本,最終多樣性急劇下降。Krogh等[9]提出集成系統的泛化誤差E:

因此,在AdaBoost算法訓練弱分類器的過程中加入差異性度量作為弱分類器間的差異度判定,排除一些弱分類器,降低弱分類器間的相關性,增加強分類器集合的差異性,可提高最終強分類器的檢測率。
采用差異性度量Di,j作為分類器間的相關性判定。第i個弱分類器Ci和第j個弱分類器Cj對同一個樣本集的檢測差異性度量

其中為訓練樣本集中Ci檢測結果為a、Cj檢測結果為b的樣本個數,a,b∈{0,1}。由式(6)可知,2個分類器的差異性隨Di,j的增大而增大。
如果樣本總數為n,Ci、Cj的檢測差異性為:

其中,

那么l個分類器的平均差異性:

為了減少多樣性計算的耗時,加快訓練速度,利用多樣性查找表(diversity table)保存已選弱分類器間的差異性Di,j。改進的AdaBoost算法的最優弱分類器選擇過程為:
當T=1,2,…,t:
a)每個特征j對應訓練出一個分類器hj,計算所有弱分類器hj的加權錯誤率
b)選出具有最小錯誤率εt的弱分類器ht;
c)計算與已選弱分類器的差異性Di,j,j=1,2,…,t-1,并將其寫入多樣性查找表;
在P4 4.0 GHz處理器、內存4 GB的PC上采用VC++6.0作為編程平臺,對改進的AdaBoost算法進行性能檢測,并與AdaBoost算法的檢測效果加以對比。人臉庫測試集選用MIT-CBCL,并對2種算法訓練得到的人臉檢測器分別進行測試。為了定量且直觀地反映檢測性能,在實驗中選取人臉檢測率、錯誤檢測數分析檢測結果。
AdaBoost算法和改進的AdaBoost算法采用相同結構的強分類器進行人臉檢測的受試者工作特征曲線(ROC)如圖1所示。從圖1可看出,當誤檢的人臉數目相同時,改進的AdaBoost算法的人臉檢測率比AdaBoost算法高;當人臉檢測率相等時,改進的Ada-Boost算法的錯誤檢測數比AdaBoost算法少。在錯誤檢測數不斷增加的情況下,改進的AdaBoost算法的檢測率增加更快。

圖1 2種算法的受試者工作特征曲線Fig.1 The ROC of two algorithms
AdaBoost算法和改進的AdaBoost算法對同一個圖像集的人臉檢測率如圖2所示。從圖2可看出,改進的AdaBoost算法的檢測率高于AdaBoost算法。但隨著弱分類器數量的增加,改進的AdaBoost算法的檢測率升高,優于AdaBoost算法。

圖2 2種算法的人臉檢測率Fig.2 The face detection rate of two algorithms
在訓練弱分類器的過程中引入差異性度量判定,不僅提高了各個弱分類器之間的差異性,而且有效地將特征互補的弱分類器進行組合,從而提高強分類器的檢測能力,進一步說明改進的AdaBoost算法的人臉檢測性能優于AdaBoost算法。
采用相同結構的強分類器對同一張圖片進行人臉檢測,其結果如圖3所示。由圖3可知,AdaBoost算法的檢測率低于改進的AdaBoost算法,并且錯圖數目和漏檢數目有所增加,表明加入相關性判定的AdaBoost算法訓練的強分類器比AdaBoost算法有更好的檢測性能。

圖3 人臉檢測結果Fig.3 The results of face detection
針對AdaBoost算法忽略弱分類器之間的相關性,導致強分類器的集成性能降低的缺陷,提出一種改進的AdaBoost人臉檢測算法。該算法在訓練弱分類器的迭代過程中引入差異性判定,根據計算的判定值剔除相似的特征,最后將具有特征互補的弱分類器疊加到強分類器的集合中,保證強分類器有最快的收斂速度和最小的錯誤率。改進的AdaBoost算法提高了人臉檢測率,降低了錯誤檢測數。
[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]李文輝,倪洪印.一種改進的AdaBoost訓練算法[J].吉林大學學報:理學版,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]李闖,丁曉青,吳佑壽.一種改進的AdaBoost-AD Ada-Boost[J].計算機學報,2007,30(1):103-109.
[8]朱叢慶,劉建明,張霖,等.基于膚色分割與改進Ada-Boost算法的人臉檢測[J].桂林電子科技大學學報,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]蔣 焰,丁曉青.基于多步校正的改進AdaBoost算法[J].清華大學學報:自然科學版,2008,48(10):1613-1616.
[11]張君昌,樊偉.基于相關性的AdaBoost人臉檢測算法[J].計算機工程,2011,37(8):158-160.