劉吉
【摘要】 本文通過基于Adaboost實(shí)現(xiàn)的人臉檢測實(shí)驗(yàn),總結(jié)了在此方法的程序設(shè)計(jì)中需要關(guān)注的幾個(gè)問題,并根據(jù)實(shí)際的實(shí)驗(yàn)數(shù)據(jù)給出了針對這些問題的解決方法。在去光照問題上,介紹了Viola和Jones的局部歸一化解決方法。在級聯(lián)分類器的設(shè)計(jì)和訓(xùn)練中,介紹了級聯(lián)結(jié)構(gòu)的設(shè)計(jì),以及在每一級的訓(xùn)練中訓(xùn)練數(shù)據(jù)的設(shè)計(jì)及訓(xùn)練方法。
【關(guān)鍵字】 Adaboost 人臉檢測 Haar特征 分類器
Abstract :In this paper ,based on the practice of face detecting using Adaboost algorithm ,several problems are listed that need to be focused on in programming .In order to eliminate the impact of light, Viola and Jones presented a local normalization method which is simple and effective .The design of cascade classifiers is showed next. In the phase of planning the structure of training data ,how the positive and negative samples are organized and taken from is proposed .
Key words :Adaboost ,face detector ,Haar feature ,classifier
一、光照問題的處理
光照在許多圖像處理方面中都是十分重要的問題,在本文所涉及的人臉檢測中,光照也是影響人臉檢測效果的重要因素。光照影響體現(xiàn)在兩方面:光照強(qiáng)度變化和光照角度變化。光照強(qiáng)度變化會使圖片數(shù)據(jù)在整體上同幅變化;而光照角度變化會產(chǎn)生不同的明暗區(qū)域,相應(yīng)會產(chǎn)生附加的邊緣信息。這些都嚴(yán)重的影響人臉檢測的效果。在采用Haar特征的情況下,光照會在很大程度上改變Haar特征值,進(jìn)而影響人臉檢測的效果。為了削弱這種影響,非常必要引入去光照技術(shù)。
在去光照的方法分類中主要有光照歸一化方法和光照不變量提取方法等。由于歸一化方法簡單高效,被采用的比較廣泛。歸一化的方法包括:直方圖均衡化、對數(shù)變換、伽瑪校正、同態(tài)濾波、小波直方圖均衡化等。
在歸一化方法中,Viola和Jones給出了一種解決方案:在每次計(jì)算Haar特征值時(shí),將Haar特征值除以一個(gè)歸一化參數(shù)δ。
在上面式子中的參數(shù)都是關(guān)于該Haar特征的覆蓋區(qū)域定義的。其中:m為均值,x為每個(gè)像素的值,N為像素?cái)?shù)。m可以通過積分圖快速計(jì)算,而可以通過平方積分圖快速計(jì)算。該歸一化過程在訓(xùn)練和檢測中每一次Haar特征計(jì)算時(shí)均需使用。
從圖1中可以看出,在不同光照的情況下,使用上面所述歸一化方法的檢測程序在人臉檢測中可以檢測到不同光照條件下的人臉,無論是整體光照強(qiáng)度的變化,還是光照不均勻而產(chǎn)生陰影,都實(shí)現(xiàn)了正常的識別,從而證實(shí)該方法的有效性。
二、級聯(lián)分類器設(shè)計(jì)
直接構(gòu)造一個(gè)強(qiáng)分類器來實(shí)現(xiàn)人臉檢測,無論是在訓(xùn)練的復(fù)雜度,還是檢測時(shí)的性能,都是滿足不了實(shí)踐的要求。而通過串聯(lián)多個(gè)分類器來構(gòu)造一個(gè)級聯(lián)式強(qiáng)分類器,能夠很好的解決了上面的問題。
由于人臉檢測是一個(gè)非對稱的情況,非人臉的子窗口會占絕大多數(shù),這樣在每一級的級聯(lián)子分類器中都會拒絕大部分的檢測子窗口,而傳到下一級的窗口數(shù)量會極大的減少,從而很好的實(shí)現(xiàn)了人臉的檢測,也極大的提高了檢測性能。
從級聯(lián)檢測器的構(gòu)造來看,通過第一級的子窗口會傳給第二級來進(jìn)一步檢測確認(rèn),如果仍然認(rèn)為是人臉則傳遞給下一級,以此類推。每一級的級聯(lián)子分類器的運(yùn)行頻率會相差很大,前面的級聯(lián)子分類器的運(yùn)行頻率會是后面的數(shù)十倍,所以前面級聯(lián)子分類器的性能要優(yōu)于后面的級聯(lián)子分類器。
三、分類器的訓(xùn)練
在設(shè)計(jì)第一級級聯(lián)子分類器時(shí),為了達(dá)到速度最快的目的,可以采用了如下的設(shè)計(jì)思想:忽略考慮光照問題;計(jì)算數(shù)量極少。
具體設(shè)計(jì)如下:在一個(gè)24x24的子窗口中,將9-12行像素值的和減去5-8行像素值的和(等同于采用一個(gè)特殊的Haar特征),如果結(jié)果為正,則表示為人臉,如果結(jié)果為負(fù),則表示為非人臉。
這種方法在PIE人臉庫上面的識別率為99.75%。出現(xiàn)無法識別的圖片為眼鏡反光或者是圖片出現(xiàn)臉部周邊背景。這種方法的誤識率較高,但是對于這一級并不是考慮的問題。而這種方法在不包含人臉的圖片上進(jìn)行識別,并將這一級認(rèn)為是人臉的子窗口保存起來。采用這種設(shè)計(jì)時(shí)子窗口通過率小于50%,也就說明大于50%的子窗口在這一級被過濾掉了,是比較有價(jià)值的。
在設(shè)計(jì)第二級級聯(lián)子分類器時(shí),可以采用較少的基本Haar特征(不含位置信息)。具體設(shè)計(jì)時(shí)可以先選定幾個(gè)簡單特征,然后進(jìn)行比例放大。例如:
HaarLike=[1 -1],放大倍數(shù)=[1 2 4 6 8 10 12]
這樣就選定了7個(gè)基本Haar特征。然后分別用這7個(gè)Haar特征在子窗口中自左上至右下每個(gè)像素或每兩個(gè)像素移動,即可構(gòu)造出一個(gè)圖片的Haar特征集。這個(gè)Haar特征集即可用于訓(xùn)練或識別。在這一級可以采用大小為1000左右Haar特征集。
在adaboost的訓(xùn)練中,可以采用PIE人臉庫和MIT人臉庫,筆者設(shè)計(jì)中采用了這兩個(gè)人臉庫各一半的數(shù)據(jù),共9320個(gè)正樣本。負(fù)樣本使用在第一級測試中通過的樣本(上一級使用沒有人臉的圖片檢測出的“正樣本”是下一級的負(fù)樣本),具體數(shù)量可以采用20000-30000之間。訓(xùn)練完成后,即可用于識別。經(jīng)過這兩級的級聯(lián)分類器,已經(jīng)可以得到一定的識別率和誤檢率。
在設(shè)計(jì)第三級級聯(lián)子分類器時(shí)基本采用第二級的思想,可以采用更加豐富的Haar特征及放大比例,為了實(shí)驗(yàn)的目的,加快訓(xùn)練和識別的速度,可以采用3000左右的Haar特征集。在adaboost的訓(xùn)練中,依然采用和第二級相同的正樣本。負(fù)樣本采用使用前面已經(jīng)設(shè)計(jì)好的兩級級聯(lián)分類器過濾出的“正樣本”(其實(shí)是誤檢的非人臉樣本),數(shù)量依然采用20000-30000。
在設(shè)計(jì)后面的級聯(lián)子分類器時(shí)仍然采用前面相同的思想即可。其中一個(gè)較大的問題是在固定時(shí)間內(nèi)得到前一級的誤檢樣本(作為本級的負(fù)樣本)數(shù)量會急劇減少,所以影響是大大增加了實(shí)驗(yàn)的時(shí)間。
四級級聯(lián)分類器就基本滿足了實(shí)驗(yàn)?zāi)繕?biāo),在人臉基本沒有傾斜的情況下,檢測率大于95%,誤檢率小于10%。在Matlab的實(shí)驗(yàn)環(huán)境中,由于Matlab處理循環(huán)的效率不高,所以檢測一幅480x320的圖片中,會耗時(shí)2-4分鐘左右。