劉曉芳,夏哲雷,王孝衛(wèi)
(中國計量學院信息工程學院,浙江杭州310018)
人臉檢測是人臉識別的第一步,在嵌入式監(jiān)控系統(tǒng)和其他安全系統(tǒng)中有著重要作用。人臉檢測的目的是為了確定這幅圖片中是否存在人臉,如果存在則返回人臉的尺寸大小以及人臉所在位置[1]。在靜態(tài)和視頻模式下,大多數(shù)學者使用機器作為人臉檢測的工具[2]。由于數(shù)據(jù)采集過程受到年齡、姿態(tài)、表情、光照等因素影響,且存在“一人千面”的特點。正是因為存在這些固有的挑戰(zhàn)性,國內(nèi)外眾多研究人員都投身其中。在眾多的人臉檢測方法中,AdaBoost人臉檢測算法是迄今最為成功的算法之一。Viola等[3]等采用 AdaBoost(Adaptive-Boosting)算法構(gòu)建的層疊式的人臉檢測器是人臉檢測算法上的重大突破,其基本思想是通過反復訓練給定的訓練集,挑選出關鍵的分類特征建立弱分類器,最后由弱分類器級聯(lián)組合成強分類器。
在大多數(shù)圖像處理應用中,對圖像處理速度有較高要求,如面向人臉的實時控制、基于圖片內(nèi)容的圖片檢測活視頻搜索等。張平等人提出了基于膚色空間預處理的AdaBoost算法,提高了人臉檢測速度[4]。鄭峰等提出了一種新的自適應樣本權(quán)重更新算法,并將遺傳算法與AdaBoost算法結(jié)合構(gòu)建人臉檢測器,使得人臉檢測更加快速和精確[5]。Du等采用部分人臉遮擋樣本訓練分類器以實現(xiàn)被遮擋人臉圖片的檢測,且提高了訓練速度[6]。
研究者采用不同的方法來減少檢測所需時間,但是在實際檢測過程中,分類器對各個縮放下的圖片進行幾乎所有像素點的遍歷的這個過程存在著很大的冗余。基于此,本文主要從提升檢測速度入手,討論了AdaBoost人臉檢測算法中影響速度的主要因素,通過人臉尺寸模型以及人臉圖片權(quán)重模型,并在基礎上,改進了人臉檢測方法,提高了人臉檢測速度。
AdaBoost算法是一種自適應增強算法,其核心思想是將大量的分類能力一般的弱分類器通過一定的方法疊加起來,構(gòu)成一個更強大的強分類器。Viola最先提出將該算法用于人臉檢測,后來Ranier Lienhart對該方法進行了改善[7]。
AdaBoost人臉檢測是一種基于積分圖、級聯(lián)檢測器和AdaBoost算法的方法,根據(jù)人臉圖像中灰度值差異這一特性,主要利用人臉灰度圖像計算積分值獲取Haar特征值。
首先,利用人臉和非人臉樣本的Haar特征對分類器進行訓練,得到AdaBoost分類器。然后,在圖像中移動分類器窗口,檢測每個子窗口是否為人臉。最后,將每個縮放下的檢測結(jié)果進行總和,如果在一定尺寸范圍內(nèi)能夠檢測到人臉的子窗口數(shù)大于規(guī)定值,則判定檢測都是人臉。為了檢測較大的目標,通常需要放大子窗口尺寸或者對輸入圖像進行縮放處理,直至完成所有檢測。在硬件實現(xiàn)中圖像縮放的方法更有優(yōu)勢,首先,一旦完成圖像的縮放后,后續(xù)的處理完全相同,不需要對不同縮放進行特殊的處理。再次,采用流水設計可以將圖像縮放處理和檢測同時進行,從而不會增加額外的計算時間。所以本文采用圖像縮放處理的方法。
雖然AdaBoost人臉檢測的訓練過程非常耗時(需以小時計算),但其檢測效果較理想。然而在測試過程中發(fā)現(xiàn),對于尺寸較大的圖片,在PC機上的測試時間通常達到分鐘這一數(shù)量級。故而對于大尺寸圖片,如何快速檢測到目標對于減少復雜度至關重要。設n表示圖片的縮放次數(shù),則圖片的縮放倍數(shù)sf表示為
sf=1.1n(1)
對圖片進行檢測,發(fā)現(xiàn)只有當圖片中人臉尺寸縮放至分類器尺寸左右時,才能夠正確檢測到人臉,如圖1所示。
圖1 不同縮放系數(shù)下的檢測結(jié)果(原圖為彩色)
圖1中提取了幾種縮放下對圖片的檢測結(jié)果,紅色矩形框表示此時能夠完全通過分類器的子窗口。原圖片的分辨率為836×592,人臉尺寸在350×350左右,從圖1可以看出,當縮放倍數(shù)較小時,并不能正確檢測到人臉,反而會造成一些誤檢。在檢測過程中,每個縮放下的檢測子窗口總數(shù)隨著sf的增大而減小,即檢測時間也會隨著sf的增大而減小。所以對于較大尺寸的單幅人臉圖片,如果能夠快速確定出被檢測圖片的人臉尺寸范圍,就能針對該尺寸設置圖片的縮放倍數(shù),快速檢測到人臉所在位置和范圍。
對于單幅人臉圖片,若能夠快速定位出人臉的可能性尺寸,就可以有目的地對原始圖片進行放縮放,而無需進行所有的縮放檢測。如果首次縮放后仍未確定出人臉,那么如何確定出下一步縮放方向也很重要。所以本文主要針對640×480這一分辨率的人臉圖片,從人臉尺寸的分布以及縮放方式兩個方面進行研究。
對于同一分辨率下的人臉圖片,人臉所占的尺寸范圍具有隨機性?;诖?,隨機從網(wǎng)上下載1 000幅存在人臉且分辨率為640×480的圖片。統(tǒng)計圖片中所有人臉,按照人臉尺寸進行分類,統(tǒng)計不同尺寸范圍內(nèi)檢測到人臉的總個數(shù),得到如圖的星點圖分布。圖2中,每點對應的人臉尺寸范圍為[5x,5x+5)。
圖2 人臉按尺寸分布圖
對得到的人臉分布數(shù)據(jù)進行分析,發(fā)現(xiàn)其符合高斯分布(圖中曲線),如式(2)所示
式中:a0=62.34,b0=18.76,c0=2.143,a1=79.05,b1=13.88,c1=3.179,a2=67.6,b2=9.072,c2=2.407,a3=111.6,b3=30.54,c3=12.69,a4=-75.67,b4=32.51,c4=8.78。
從圖2可以清楚地看出,對于640×480這一分辨率的圖片,不同尺寸的人臉出現(xiàn)的概率。通過該概率模型,對于任何一幅該分辨率下的未知圖片,可以確定出縮放系數(shù)sf的大致走向。例如從圖中發(fā)現(xiàn),人臉尺寸在[90,95)這一范圍內(nèi)的可能性最大,本文實驗所用分類器尺寸為18×18,所以第一次的縮放系數(shù)sf應該設置為5.0。
通過上面的人臉分布的高斯模型可以看出,對于分辨率為640×480的單個人臉圖片,首先要將原圖縮小到原來的1/5進行檢測。此時若未發(fā)現(xiàn)人臉,縮放系數(shù)是增大還是減小(即sf的走向)對減少檢測的冗余也很重要。
AdaBoost是許多弱分類器級聯(lián)而成的強分類器。檢測時,按照一定的尺度參數(shù)(即每次移動的像素個數(shù),向左然后向下)進行移動,遍歷整個圖像,只有完全通過分類器時,表示該子窗口可能存在人臉。設分類器共有n級,只有當子窗口每一級的Harr特征值Ti都大于分類器該級的閾值θi時,才能夠完全通過分類器,如果在某一級時不能通過分類器,就不需要后續(xù)的檢測。所以子窗口的Ti越大,它通過分類器的可能性越大。當縮放系數(shù)sf=i時,此時若人臉尺寸在i×S(S表示分類器尺寸)左右,其Haar特征值就與分類器符合的程度最大,被成功檢測的可能性也最大。當人臉尺寸接近分類器大小,遍歷到人臉周圍的子窗口時,其通過分類器的可能性越大,也就意味著子窗口通過分類器的級數(shù)越多。當縮放次數(shù)n=i時,設此時圖片的閾值Wi為
式中:j分別表示分類器的級數(shù);x表示完全通過分類器的子窗口的個數(shù)。
對于分辨率為640×480的單幅人臉圖片,統(tǒng)計其人臉尺寸,按照大小對圖片進行排序。結(jié)果如圖3所示。
圖3 按照人臉尺寸排序后的640×480圖片
本文采用OpenCV提供的函數(shù)進行人臉檢測,由于所用分類器共20級,所以m1=19。當sf=5.0時,若m0=17,分別計算上面的300幅單人臉圖片的權(quán)重W。結(jié)果如圖4所示。
通過對權(quán)重W進行數(shù)據(jù)分析,發(fā)現(xiàn)其擬合高斯分布g(x)為
圖4 640×480的單人臉圖片權(quán)重分布
式中:θ=5.268,α =134.8 ,λ =42.91。根據(jù)該高斯分布模型,當在sf=5.0時未檢測到人臉,可以進一步判斷人臉尺寸范圍,從而判斷下一個縮放系數(shù)sf的走向。
通過以上兩個模型,發(fā)現(xiàn)在進行檢測時,縮放系數(shù)的走向是有規(guī)律可循的。首先,通過人臉尺寸模型,可以判斷出圖片中人臉尺寸的可能性,依此來設置縮放系數(shù)。然后,如果首次縮放下未檢測到人臉,則可根據(jù)單幅圖片人臉權(quán)重模型,了解到人臉尺寸所在范圍,此時結(jié)合人臉尺寸模型,不斷地設置縮放系數(shù),直至檢測到人臉。具體的檢測思路如下:
1)輸入原始圖像。
2)對照人臉尺寸分布模型,以人臉最可能出現(xiàn)的尺寸為基準,設置縮放系數(shù)并進行檢測。檢測到人臉,轉(zhuǎn)到步驟5),否則繼續(xù)下一步。
3)根據(jù)單幅人臉權(quán)重模型判斷人臉尺寸范圍,結(jié)合人臉尺寸模型設置縮放系數(shù)。
4)直至檢測出所有人臉或完成所有縮放。5)標記出人臉。
本實驗使用的是在VC6.0下使用OpenCV1.0版本,在PC機上分別使用原始程序模塊以及基于本文方法改進后的程序?qū)ν瑯拥膱D片樣本進行測試,實驗結(jié)果見表1。
表1 IDCT修剪算法的比特率和編碼時間測試結(jié)果
常規(guī)人臉檢測方法遍歷了所有縮放下的每個像素點,本文方法依照上述人臉尺寸模型以及單幅人臉權(quán)重模型設置縮放,這會造成誤判下提前終止檢測。從表1可以看出,雖然最終的檢測率略有下降(下降了1.7%),但是檢測時間卻大幅降低(降低了29.7%)。
本文基于AdaBoost人臉檢測算法,針對較大尺寸圖片,提出了一種基于人臉尺寸模型和單幅圖片人臉權(quán)重模型的人臉檢測方法。該方案針對單幅人臉圖片,從檢測時縮放系數(shù)的走向出發(fā),使得圖片中的人臉尺寸能夠快速縮放至與分類器相匹配,從而達到快速檢測到人臉、提高檢測速度的目的。實驗結(jié)果也證明了在檢測率略有下降的情況下,大幅度降低了檢測時間。
:
[1] YANG M H,KRIEGMAN O J,AHUJA N.Detecting faces in images:a survey[J].IEEE Trans.Pattern Analysis and Machine Intelligence,2002,24(1):34-58.
[2] ZULHADI Z,SHAHREL A S.Face detection using combination of neural network and Adaboost[C]//Proc.Tencon 2011-2011 IEEE Region 10 Conference.Bail:IEEE Press,2011:335-338.
[3] VOILA P.Rapid object detection using a boosted cascade of simple features[C]//Proc.the 2001 IEEE Computer Society Conference on Computer Vision and Pattern Recognition.Kauai:IEEE Press,2001:511-518.
[4]張平,王貴成,汪勇.Adaboost人臉檢測算法的速度影響因素分析及其改進方法[EB/OL].[2013-09-20].http://cpfd.cnki.com.cn/Article/CPFDTOTAL-XNCJ200905002069.htm.
[5]張君昌,張譯.基于改進AdaBoost算法的人臉檢測[J].計算機仿真,2011,28(7):167-169.
[6] DU Xingjing,ZHU Dongmei,ZHAO Hongyun.Study of fast Adaboost face detection algorithm[C]//Proc.2010 International Conference on Computer Application and System Modeling.Taiyuan:IEEE Press,2010:136-139.
[7]鄒志煌,孫鑫,程武山.人臉識別技術(shù)產(chǎn)品的發(fā)展概況[J].電視技術(shù),2008,32(1):91-93.