閆 斌,梁嵐珍,2
(1.新疆大學(xué)電氣工程學(xué)院,新疆烏魯木齊830047;2.北京聯(lián)合大學(xué)自動(dòng)化學(xué)院,北京100101)
人臉檢測(cè)是人臉識(shí)別研究中的首個(gè)環(huán)節(jié),人臉檢測(cè)性能的好壞直接影響整個(gè)應(yīng)用系統(tǒng)的性能。AdaBoost算法是一種基于學(xué)習(xí)的方法,2001 年,P.Viola[1]將其應(yīng)用于人臉檢測(cè),是第一個(gè)實(shí)時(shí)的人臉檢測(cè)算法。使用AdaBoost算法訓(xùn)練分類器的缺點(diǎn)在于特征數(shù)目過多,且訓(xùn)練耗時(shí)較大。因此,許多研究者則致力于改進(jìn)Ada-Boost分類器的訓(xùn)練算法。文獻(xiàn)[2]提出用多塊LBP特征(MB-LBP)替代Haar特征,在同樣大小的窗口中,MB-LBP特征數(shù)量較Haar特征要少很多,從而加快了訓(xùn)練和檢測(cè)速度。文獻(xiàn)[3]采用Floating搜索方法優(yōu)化AdaBoost算法,用較少的分類器提高了分類性能。文獻(xiàn)[4]利用粒子群算法優(yōu)化 AdaBoost算法的訓(xùn)練過程(PSO-AdaBoost),采用提取最佳閾值和最佳特征的方式,避免了窮舉搜索,有效地提高了訓(xùn)練速度。但是該算法的初始化過程是隨機(jī)的,不能夠保證粒子個(gè)體質(zhì)量,并且粒子運(yùn)行會(huì)出現(xiàn)“惰性”,容易陷入局部最優(yōu)解。
本文在PSO-AdaBoost算法基礎(chǔ)上,結(jié)合混沌運(yùn)動(dòng)的優(yōu)點(diǎn),提出使用混沌粒子群算法結(jié)合AdaBoost人臉檢測(cè)算法(CPSO-AdaBoost),來訓(xùn)練人臉檢測(cè)分類器,改善了PSO-AdaBoost算法搜索最佳特征的能力,算法的收斂速度和精度也得到了提高。
AdaBoost算法的核心思想是將訓(xùn)練出來的分類器,通過篩選、確定一系列分類性能較好的弱分類器,然后通過線性疊加的方式將它們提升為強(qiáng)分類器。訓(xùn)練流程如圖1所示。
從流程圖中可以看出,訓(xùn)練的關(guān)鍵任務(wù)在于尋找到若干個(gè)性能較好的弱分類器ht。若這些分類器選擇得當(dāng),后續(xù)所獲得的強(qiáng)分類器性能則會(huì)更好。式中:x為子窗口圖像;f為特征;p為偏置;θ為閾值。
圖1 AdaBoost算法訓(xùn)練流程圖
對(duì)于每一個(gè)特征f,訓(xùn)練對(duì)應(yīng)的弱分類器,即尋找并確定閾值 θ和偏置p,使其分類錯(cuò)誤率函數(shù) εt=|h(xi,f,p,θ)- yi|的值最小(qi為歸一化后的權(quán)
弱分類器的數(shù)學(xué)結(jié)構(gòu)為重),然后再?gòu)乃械娜醴诸惼髦袑ふ页鲎顑?yōu)弱分類器。
AdaBoost算法訓(xùn)練弱分類器時(shí),是對(duì)每個(gè)特征進(jìn)行窮舉搜索。然而一個(gè)檢測(cè)窗口的特征數(shù)量是巨大的,一幅24×24的圖像中就含有162 336個(gè)特征,訓(xùn)練過程中,每循環(huán)一次都要計(jì)算一次目標(biāo)函數(shù)來尋找最優(yōu)弱分類器,這將導(dǎo)致時(shí)間和內(nèi)存上的巨大開銷。
PSO算法是通過對(duì)鳥群某些行為的觀察研究而提出的一種進(jìn)化算法[5]。算法中,每個(gè)粒子是由相應(yīng)的目標(biāo)適應(yīng)度函數(shù)值決定其適應(yīng)值,并由其速度調(diào)整粒子的移動(dòng)方向和距離,通過迭代尋找全局最優(yōu)解。迭代中,粒子根據(jù)下面的公式更新自己的速度和位置
式中:ω為慣性權(quán)重;c1和c2為加速常數(shù);r1和r2為[0,1]范圍內(nèi)的隨機(jī)數(shù)。
由此可見,PSO-AdaBoost算法在訓(xùn)練過程中能夠自動(dòng)衍變出一組良好的特征和弱分類器,從而改善Ada-Boost算法的性能。然而,若待優(yōu)化函數(shù)較為復(fù)雜,包含多個(gè)局部極值點(diǎn),或算法中的參數(shù)選擇不當(dāng),容易導(dǎo)致粒子的“早熟”現(xiàn)象,從而不能達(dá)到全局極值點(diǎn)。另外,由于算法迭代過程中僅僅依賴于pid和gid這兩個(gè)參數(shù)信息,沒有淘汰機(jī)制,而影響了算法的收斂速度。
混沌是在確定系統(tǒng)中出現(xiàn)的一種看似混亂無規(guī)則,實(shí)則存在精細(xì)規(guī)律的類似隨機(jī)的現(xiàn)象[6]?;煦缱兞烤哂须S機(jī)性、遍歷性和對(duì)初始條件高度敏感性等特點(diǎn)。混沌優(yōu)化不要求目標(biāo)函數(shù)具有連續(xù)性和可微性的性質(zhì)。
Logistic映射函數(shù)就是一個(gè)經(jīng)典的混沌系統(tǒng),在式(4)中,當(dāng)μ=4,0<z0<1時(shí),系統(tǒng)完全處于混沌狀態(tài)。
由于粒子群算法的隨機(jī)初始化過程僅能保證解群的均勻分布,但不能保證個(gè)體的質(zhì)量(如果離最優(yōu)解較遠(yuǎn)),初始化的效果將影響到搜索的效率和解的質(zhì)量。另外通過分析式(3)可發(fā)現(xiàn),當(dāng)粒子的當(dāng)前位置xid及局部最優(yōu)值pid靠近全局最優(yōu)值gid時(shí),vid的迭代僅依靠ω進(jìn)行,當(dāng)ω<1時(shí),它的速度會(huì)越來越慢,而出現(xiàn)“惰性”,在接下來的迭代中,其他粒子會(huì)逐漸靠近此粒子完成進(jìn)化,而無法達(dá)到全局最優(yōu)。
因此CPSO算法提出以下改進(jìn)措施:
1)利用混沌序列對(duì)粒子進(jìn)行初始化,保證了粒子的個(gè)體質(zhì)量和種群多樣性。具體作法為:隨機(jī)產(chǎn)生一個(gè)n維每個(gè)分量數(shù)值在[0,1]之間的向量,z1=(z11,z12,…,z1n),n為目標(biāo)函數(shù)中的變量個(gè)數(shù),根據(jù)式(4)得到N個(gè)向量z1,z2,…,zN。并將zi的各個(gè)分量加載到對(duì)應(yīng)變量的取值區(qū)間。
2)用當(dāng)前最優(yōu)位置產(chǎn)生混沌序列,將該粒子與其他任意位置的某粒子互換位置,以幫助惰性粒子擺脫局部極值點(diǎn)。具體做法為:當(dāng)粒子陷入局部最優(yōu)解Pg時(shí),將pgi(i=1,2,…,D)映射到 Logistic方程的定義域[0,1],并通過式(5)把其變換到優(yōu)化變量的取值區(qū)間
式中:ai,bi為第i維變量的取值范圍,用Logistic方程迭代產(chǎn)生混沌變量序列(m=1,2,…),再把通過逆映射到原解空間,得到
對(duì)每個(gè)混沌變量p(m)g經(jīng)歷的可行解計(jì)算適應(yīng)值,并保存性能最好的可行解p*。最后用p*隨機(jī)取代群體中任意粒子的位置。
為了測(cè)試CPSO的性能,本文使用測(cè)試函數(shù)GriewankFunction來進(jìn)行試驗(yàn),并與PSO算法的試驗(yàn)結(jié)果進(jìn)行比較。試驗(yàn)中各情況運(yùn)行了50次,維數(shù)n取30,求得平均最優(yōu)適應(yīng)值和最優(yōu)適應(yīng)值作為比較的依據(jù)。
GriewankFunction函數(shù)為
式中:當(dāng)xi=0時(shí),達(dá)到全局極小點(diǎn);當(dāng)xi=±kπ,i=1,2,…,n,k=1,2,…,n時(shí),達(dá)到局部極小點(diǎn)。
2種算法計(jì)算結(jié)果見表1。
表1 GriewankFunction的2種算法測(cè)試值
GriewankFunction函數(shù)平均適應(yīng)值隨迭代次數(shù)變化曲線如圖2所示。
圖2 GriewankFunction平均值/迭代次數(shù)曲線
從試驗(yàn)結(jié)果和圖2可以看出,CPSO算法性能優(yōu)于PSO算法,不但擁有較快的收斂速度,而且也有很強(qiáng)的全局搜索能力,CPSO的最優(yōu)適應(yīng)值和適應(yīng)值都比PSO的小,因此它的精度更高、更穩(wěn)定。從上述結(jié)果來看,CPSO方法適應(yīng)于復(fù)雜函數(shù)的優(yōu)化問題,能夠獲得一定精度的全局最優(yōu)解。
將弱分類器中的一組參數(shù)看成是搜索空間中的一個(gè)粒子,第i個(gè)粒子Pi可表示為式中:typei為矩形特征類型(取值范圍是[0,4]的整數(shù)),xi,yi為矩形特征左上角的坐標(biāo)值,wi,hi為矩形特征的寬和高,ci為矩形特征值對(duì)正、負(fù)樣本的均值的均值[7]。
粒子的目標(biāo)函數(shù)為
式中:iter表示當(dāng)前迭代次數(shù);itermax表示最大迭代次數(shù);ωmax表示慣性權(quán)重初值;ωmin為終值[8]。
用CPSO優(yōu)化AdaBoost訓(xùn)練算法的流程如下:
1)準(zhǔn)備n個(gè)樣本集合,(x1,y2),(x2,y2),…,(xn,yn),并標(biāo)示yi=0時(shí)為非人臉樣本,標(biāo)示yi=1時(shí)為其為人臉樣本。
2)樣本權(quán)重初始化。
對(duì)于m個(gè)正樣本Dt(i)=1/2m,對(duì)于q個(gè)負(fù)樣本Dt(i)=1/2q。
粒子的初始速度和位置均由混沌迭代出的序列初始化。ω取線性遞減慣性權(quán)重
While:
(1)混沌初始化粒子位置和速度。
(2)計(jì)算矩形特征與ci的大小,矩形特征大于ci,表示屬于正樣本,否則屬于負(fù)樣本,再計(jì)算各粒子的適應(yīng)值。
(3)任意粒子,如果其fitness<pid,則將其設(shè)置為局部最優(yōu)值。
(4)任意粒子,如果其fitness<gid,則將其設(shè)置為全局最優(yōu)值。
(5)根據(jù)式(3)調(diào)整粒子的速度和位置。
(6)對(duì)最優(yōu)位置Pg進(jìn)行混沌優(yōu)化。
(7)若達(dá)到搜索的停止條件,則輸出全局最優(yōu)位置及其fitness值(即最佳弱分類器),否則返回步驟(2)繼續(xù)搜索。
4)更新每個(gè)樣本對(duì)應(yīng)的權(quán)重。
5)形成強(qiáng)分類器。
為了對(duì)比效果,筆者使用傳統(tǒng)AdaBoost算法、PSO-AdaBoost算法和CPSO-AdaBoost算法,從分類器的訓(xùn)練和人臉檢測(cè)兩個(gè)方面進(jìn)行比較。所用樣本來自MIT CBCL樣本庫(kù)和網(wǎng)上下載的圖片,其中訓(xùn)練集樣本包括2 305個(gè)人臉樣本和3 216個(gè)非人臉樣本,測(cè)試集包括2 138個(gè)人臉樣本和3 623個(gè)非人臉樣本,并對(duì)樣本進(jìn)行尺寸調(diào)整和灰度歸一化的預(yù)處理操作。部分樣本如圖3所示。
圖3 部分人臉和非人臉樣本圖
首先進(jìn)行參數(shù)設(shè)置,CPSO的粒子個(gè)數(shù)設(shè)定為20個(gè),終止迭代代數(shù)為100代,當(dāng)特征的適應(yīng)值在50代以內(nèi)沒有明顯改變的情況下,迭代提前終止,c1,c2均為2.05。訓(xùn)練指標(biāo)為檢測(cè)率≥0.99,誤檢率≤0.01。
本次試驗(yàn)訓(xùn)練了一個(gè)強(qiáng)分類器,訓(xùn)練數(shù)據(jù)包括訓(xùn)練指定性能的分類器所需要的平均特征數(shù)量和訓(xùn)練耗時(shí)。表2中列出了3種算法的訓(xùn)練結(jié)果。AdaBoost算法訓(xùn)練時(shí),由于最后一層的錯(cuò)誤率下降速度過慢,且時(shí)間超過了4天,因此選擇了手動(dòng)終止。
表2 平均特征數(shù)量和訓(xùn)練時(shí)間的對(duì)比
從表2中可以看出,本文算法較其他算法在訓(xùn)練的過程中所需要的平均特征數(shù)要少很多,訓(xùn)練的時(shí)間復(fù)雜度也得到了降低。
檢測(cè)過程采用訓(xùn)練出來的強(qiáng)分類器對(duì)測(cè)試集中的樣本進(jìn)行檢測(cè),并統(tǒng)計(jì)檢測(cè)結(jié)果,表3中列出了檢測(cè)結(jié)果,部分檢測(cè)效果如圖4所示。測(cè)試性能曲線如圖5所示。
表3 檢測(cè)結(jié)果的對(duì)比
從檢測(cè)結(jié)果來看,本文算法相對(duì)另外兩種算法的檢測(cè)性能是最好的,只需要少量的弱分類器就能達(dá)到與其他算法相同的檢測(cè)率。究其原因,是因?yàn)镃PSO-Ada-Boost算法在構(gòu)造弱分類器具有比其他兩種算法更強(qiáng)的最佳特征搜索能力,這些最佳特征包括人臉的眼睛,鼻子和嘴巴周圍的特征,具有明顯的區(qū)分人臉和非人臉的特性,CPSO-AdaBoost算法有效地將這些特征挑選出來訓(xùn)練分類器,從而獲得較高的檢測(cè)性能。
本文提出使用混沌粒子群算法優(yōu)化AdaBoost算法的分類器訓(xùn)練過程,解決了僅使用粒子群優(yōu)化算法中存在的容易陷入局部最優(yōu)解的困擾,增強(qiáng)了系統(tǒng)的穩(wěn)定性,總體性能優(yōu)于PSO-AdaBoost算法。針對(duì)同一訓(xùn)練及測(cè)試樣本集,訓(xùn)練時(shí)間減少了23%,檢測(cè)率提高了0.94%。下一步需要研究的問題是如何通過對(duì)訓(xùn)練樣本集的選擇,或?qū)μ卣餍D(zhuǎn)特性的擴(kuò)展,來解決對(duì)側(cè)面和傾斜的人臉檢測(cè)難題。
:
[1] VIOLA P,JONES M.Robust real-time face detection[J].International Journal of Computer Vision,2004,57(2):137-154.
[2] ZHANG L,CHU R,XIANG S,et al.Face detection based on multiblock LBP representation[EB/OL].[2014-01-16].http://link.springer.com/chapter/10.1007%2F978-3-540-74549-5_2.
[3] LI S Z,ZHANG Z Q.Floatboost learning and statistical face detection[J].IEEE Trans.Pattern Analysis and Machine Intelligence,2004,26(9):1112-1123.
[4] MOHEMMED A W,ZHANG Mengjie,JOHNSTON M.Particle swarm optimization based AdaBoost for face detection[C]//Proc.IEEE Congress on Evolutionary Computation.Piscataway,NJ:IEEE Press,2009:2494-2501.
[5] MOHEMMED A W,ZHANG M J,JOHNSTON M.Particle swarm optimization based AdaBoost for face detection[EB/OL].[2014-01-16].http://www.researchgate.net/publication/221008163_Particle_Swarm_Optimization_based_Adaboost_for_face_detection.
[6]孫子文,王鑫雨,白勇.基于信度和早熟檢驗(yàn)的混沌粒子群優(yōu)化定位算法[J].傳感器與微系統(tǒng),2013,33(9):43-46.
[7] 李睿,張九蕊,毛莉.基于EREF的PSO-AdaBoost訓(xùn)練算法[J].計(jì)算機(jī)應(yīng)用研究,2012,29(1):127-129.
[8] SHI Y,EBERHART R.A modified particle swarm optimizer[C]//Proc.the IEEE World Congress on Computational Intelligence.Piscataway:IEEE Service Center,1998:69-73.