于微波,趙 琳,佟 冬
(長春工業(yè)大學(xué)電氣與電子工程學(xué)院,長春130012)
人臉識別廣泛應(yīng)用于安全防護與身份驗證、媒體與娛樂和圖像搜索等多個領(lǐng)域,是計算機視覺和人工智能研究的重點課題。人臉檢測是人臉自動識別系統(tǒng)的第1步,是人臉識別的基礎(chǔ),因而研究人臉檢測技術(shù)具有重要意義。人臉檢測是指采用相關(guān)的方法判斷輸入圖像中是否包含人臉,如果存在人臉要告知其位置及大小[1]。最近幾年,基于簡單背景的人臉檢測技術(shù)已經(jīng)相當(dāng)成熟,但在光照變化、類膚色等復(fù)雜背景下的檢測效果并不理想,而復(fù)雜背景下人臉檢測在安全領(lǐng)域、實時監(jiān)控系統(tǒng)中有著廣泛的應(yīng)用潛能,又因其實現(xiàn)困難、沒有快速有效的算法而成為目前學(xué)術(shù)界和工業(yè)界具有挑戰(zhàn)性的課題。
國內(nèi)外對復(fù)雜背景下人臉檢測的研究取得了一定的成果,文獻[2]提出利用人臉輪廓近似橢圓形及面部器官的比例關(guān)系檢測人臉。文獻[3]和文獻[4]使用模板在待檢圖像中逐點掃描計算匹配度,根據(jù)匹配度判斷并定位人臉。文獻[5]采用基于神經(jīng)網(wǎng)絡(luò)的人臉檢測方法,利用人臉圖像模式和非人臉圖像模式對神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,然后利用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)進行人臉檢測。文獻[6]采用基于自適應(yīng)膚色分割的人臉定位算法,并采用局部奇異值的方法提取特征值,用PCA(Principal Component Analysis)算法進行識別。文獻[7]提出了基于膚色檢測和多級證實的彩色人臉檢測技術(shù)。但將上述方法應(yīng)用于復(fù)雜背景下人臉檢測時,其檢測速度較慢,且易受光照變化的影響,很難保證復(fù)雜背景下人臉檢測快速性準(zhǔn)確性實時性的要求。
筆者采用Adaboost(Adaptive Boosting)算法進行人臉檢測。分別對具有面部旋轉(zhuǎn)和復(fù)雜背景的圖像進行人臉檢測實驗,在OpenCV(Open Source Computer Vision Library)上實現(xiàn)其檢測過程并得到候選人臉區(qū)域。
Boosting算法是由Schapire[8]于1990年提出的,并受到了人們的廣泛關(guān)注。1995年,F(xiàn)reund等[9]針對Boosting算法存在的問題,對其進行了改進并提出了Adaboost算法,Adaboost算法是一種自適應(yīng)的Boosting算法。2001年Viola等[10]將Adaboost算法應(yīng)用到人臉檢測上,采用積分圖計算人臉的矩形特征,使用haar-like特征構(gòu)建弱分類器,并訓(xùn)練了級聯(lián)分類器,實現(xiàn)了人臉的實時檢測。筆者采用積分圖、Adaboost和級聯(lián)分類器綜合的方法完成人臉檢測。
圖1 矩形特征Fig.1 Rectangle features
人臉檢測過程是基于人臉特征值的,Papageorgiou等[11]首先提出用 haar-like特征表示人臉,他們采用簡單矩形模板,由兩個或多個黑色和白色矩形組成,特征值由白色矩形的像素和減去黑色矩形的像素和。常用的有3種特征(見圖1),分別是兩矩形、三矩形和四矩形特征。
圖1中,A和B是兩矩形特征,特征值計算公式為V=S白-S黑,C是三矩形特征,特征值計算公式為V=S白-2S黑,D是四矩形特征,特征值計算公式同A和B(其中S表示求和)。
假設(shè)檢測的圖像窗口大小為24×24像素,則需要的矩形特征數(shù)量為134 736,計算量很大,速度很慢,因此引入積分圖計算特征值。
矩形區(qū)域黑色像素點的個數(shù)可用積分圖快速地計算出來,提升了計算速度。積分圖在點(x,y)處的計算方法為
其中ii(x,y)是計算后的積分圖像,i(x,y)是原圖像。
運用遞歸公式
計算整幅圖像的積分圖。其中s(x,y)為每列的像素和,s(x,-1)=0;ii(-1,y)=0。
使用積分圖可通過4個頂點的值計算任意矩形的像素和。同理,雙矩形的像素和可用6個頂點計算,三矩形用8個點,四矩形用9個點,如圖2所示。
圖2中,點1積分圖像ii1的值為ii1=S(A),點2、點3和點4的積分圖像分別為
矩形D的計算公式為
圖2 矩形像素和可通過頂點計算Fig.2 The sum of the rectangle pixels can be computed with array references
矩形特征的特征值是通過計算白色區(qū)域和黑色區(qū)域像素和的差值得到的,以圖1中的A為例說明其特征值的計算。A的特征值為S(白)-S(黑),其中S(白)=(ii5+ii1)-(ii4+ii2),S(黑)=(ii6+ii2)-(ii5+ii3)。
采用弱學(xué)習(xí)算法選擇簡單的矩形特征,以更好地區(qū)分正負(fù)樣本,形成弱分類器。對于每個特征,弱學(xué)習(xí)決定最優(yōu)的閾值分類功能。因此一個弱分類器hj(x)由特征fj、閾值θj和方向符號pj組成,即
通過每次對訓(xùn)練樣本的學(xué)習(xí),尋找出最優(yōu)的弱分類器。
Adaboost算法的基本思想是針對同一個訓(xùn)練集,不斷調(diào)整樣本權(quán)重訓(xùn)練最優(yōu)的弱分類器,并將這些弱分類器組合成最終用于分類的強分類器[12]。每個弱分類器的分類效果有限,通過選擇多個弱分類器組成強分類器,訓(xùn)練強分類器的算法如圖3所示。
圖3 訓(xùn)練強分類器的算法流程圖Fig.3 Strong classifier training algorithm flow chart
圖3中訓(xùn)練樣本集合中yi=0,1分別表示正例樣本和負(fù)例樣本;正例樣本個數(shù)為m,負(fù)例樣本個數(shù)為l;訓(xùn)練弱分類器hj時要使錯誤率最小;最小的錯誤率εt=arg min εj;在更新樣本權(quán)重過程中,若樣本被正確分類,則ei=0,否則
弱分類器數(shù)目不斷增加,使其組成的強分類器更加復(fù)雜,從而增加了計算量。因此,將得到的強分類器以級聯(lián)的形式組成最終的分類器,即級聯(lián)Adaboost分類器。級聯(lián)分類器的基本思想是用非常簡單的分類器把不是主體的大量背景快速篩選出來,保留那些可能是待檢區(qū)域的子窗口,從而提高檢測性能并降低計算時間[13]。級聯(lián)分類器結(jié)構(gòu)如圖4所示。
級聯(lián)分類器的結(jié)構(gòu)實際上是一個遞減的決策樹。第1層分類正確的窗口觸發(fā)第2層分類器,第2層的正例觸發(fā)第3層,以此類推。筆者根據(jù)預(yù)先設(shè)定的檢測率和錯誤判對率確定每層的檢測率和錯誤判對率,并采用降低分類器閾值或增加層數(shù)的方法達到每層的檢測率或錯誤判對率。
圖4 級聯(lián)分類器結(jié)構(gòu)圖Fig.4 Cascade classifier structure
OpenCV是一個開源圖像處理算法庫,由一系列C函數(shù)和少量C++類組成,可快速有效地實現(xiàn)圖像處理和計算機視覺等方面的通用算法[14]。其自帶的createsamples和haartraining程序可進行haar-like分類器的訓(xùn)練,并形成xml文件,加載該文件實現(xiàn)級聯(lián)表的建立,大大節(jié)省了級聯(lián)表建立的時間[15]。將待檢測圖像和xml文件送入OpenCV的檢測算法即可得到人臉檢測結(jié)果。
Adaboost人臉檢測算法在OpenCV上的實現(xiàn)過程如下。
1)采集正負(fù)樣本,并生成正負(fù)樣本文件。其中正樣本圖像4 820張,負(fù)樣本圖像5 020張。
2)使用createsamples命令建立正樣本的向量輸出文件faces.vec。
3)使用haartraining訓(xùn)練生成相應(yīng)的face_classifier.xml文件。其中,級聯(lián)分類器共24層,每層的最低正確檢測率為99.8%,錯誤接受率為50%;弱分類器是只有一層分裂的決策樹。
4)加載face_classifier.xml文件,即加載訓(xùn)練好的人臉檢測分類器。
5)加載輸入的待檢測圖像。
6)將RGB圖像轉(zhuǎn)化成灰度圖像。
7)調(diào)整待檢測圖像的大小。
8)對灰度圖像進行直方圖均衡化操作。
9)進行人臉檢測并輸出候選的人臉區(qū)域。
10)標(biāo)出檢測到的人臉,保存并顯示人臉檢測后的圖像。
筆者選取ORL(Olivetti Research Laboratory)人臉標(biāo)準(zhǔn)圖像庫進行簡單背景下面部旋轉(zhuǎn)的人臉檢測實驗。該圖像庫共有40人每人10幅共400張人臉灰度圖像,圖像大小是112×92像素,包括表情變化、微小姿態(tài)變化且人臉旋轉(zhuǎn)角度達到20°。圖5所示為實驗中一部分的檢測結(jié)果,圖5中第1、3行是待檢測圖像,第2、4行是檢測后的結(jié)果圖像,其中矩形框內(nèi)的部分圖像為檢測到的人臉。
圖5 ORL人臉圖像部分檢測結(jié)果Fig.5 Part of the ORL face images test results
該實驗中,共檢測出340張人臉,正確檢測人臉個數(shù)340個,檢測率為85%,漏檢率為15%,平均檢測時間為16.67 ms/張。漏檢的主要原因是面部大角度傾斜(見圖5中第4行第1張和第3張圖片)。
選取加州理工學(xué)院彩色人臉圖像庫進行復(fù)雜背景下人臉檢測實驗。該圖像庫包括16人每人5~25張不等共247張人臉彩色圖片,具有不同的表情、復(fù)雜的室內(nèi)外背景及光照變化等特點,圖像大小為896×592像素。圖6所示為實驗中一部分的檢測結(jié)果,其中第1、3行是待檢測圖像,第2、4行是檢測后的結(jié)果圖像,其中矩形框內(nèi)的部分為檢測到的人臉。
圖6 人臉彩色圖像部分檢測結(jié)果Fig.6 Part of the facial color images test results
該實驗中,共檢測出257張人臉,正確檢測人臉個數(shù)是246個,檢測率為99%,誤檢率為4.5%,漏檢率為1%,平均檢測時間76 ms/張。如圖6第2行第3張圖片所示,誤檢的主要原因是存在類膚色背景。
該算法在ORL人臉圖像庫和加州理工學(xué)院彩色人臉圖像庫上進行的人臉檢測實驗結(jié)果如表1所示。由表1可知,人臉檢測器的檢測準(zhǔn)確率分別為85%和99%,平均檢測時間分別為16.67 ms/張和76 ms/張,基本達到了復(fù)雜背景下人臉檢測準(zhǔn)確性、快速性和實時性的要求。
表1 人臉檢測結(jié)果Tab.1 The results of face detection
筆者采用Adaboost算法對復(fù)雜背景下的人臉進行檢測研究,詳細(xì)闡述了Adaboost人臉檢測算法的原理及其在OpenCV平臺上的實現(xiàn)過程,該方法對復(fù)雜背景下的人臉檢測具有較好的性能,取得了較好的檢測效果。簡單背景下面部旋轉(zhuǎn)的實驗是在ORL人臉圖像庫上完成的,復(fù)雜背景下人臉檢測的實驗是在加州理工學(xué)院彩色人臉圖像庫上進行的,并分別實現(xiàn)了85%和99%的檢測率,平均檢測時間只有16.67 ms/張和76 ms/張,滿足復(fù)雜背景下人臉檢測快速性、準(zhǔn)確性和實時性的要求。當(dāng)出現(xiàn)面部傾斜角度較大和類膚色背景時,存在漏檢、誤檢問題。
[1]ZHAO W,CHELLAPPA R,ROSENFELD A,et al.Face Recognition:A Literature Survey[J].ACM Computing Surveys,2003,5(4):399-458.
[2]SIROHEY S A.Human Face Segmentation and Identification[R].Washington:Computer Vision Laboratory Center for Automation Research University of Maryland College Park,1993.
[3]DARIO MIAO,DAVIDE MALTONI.Real-Time Face Location on Gray-Scale Static Images[J].Pattern Recognition,2000,33(9):1525-1539.
[4]MIAO Jun,YIN Baocai,WANG Kongqiao,et al.A Hierarchical Multiscale and Multiangle System for Human Face Detection in a Complex Background Using Gravity-Center Template[J].Pattern Recognition,1999,32(7):1237-1248.
[5]SUNG K K,POGGIO T.Example-Based Learning for View-Based Human Face Detection[J].Pattern Analysis and Machine Intelligence,1998,20(1):39-50.
[6]仲澄,馮濤.復(fù)雜背景下的人臉定位識別方法[J].計算機工程與應(yīng)用,2012,48(1):205-207.ZHONG Cheng,F(xiàn)ENG Tao.New Algorithm for Face Location and Recognition in Complex Background [J].Computer Engineering and Applications,2012,48(1):205-207.
[7]朱長仁.復(fù)雜背景下的多姿態(tài)人臉識別技術(shù)研究[D].長沙:國防科學(xué)技術(shù)大學(xué)電子科學(xué)與工程學(xué)院,2001.ZHU Changren.Multi-Pose Recognition Technology Research under Complex Background[D].Changsha:College of Electronic Science and Engineering,National University of Defense Technology,2001.
[8]SCHAPIRE R E.The Strength of Weak Learnability[J].Machine Learning,1990,5(2):197-227.
[9]FREUND Y,SCHAPIRE R E.A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting[C]∥Second European Conf on Computational Learning Theory.Barcelona,Spain:[s.n.],1995:119-139.
[10]VIOLA P,JONES M.Rapid Object Detection Using a Boosted Cascade of Simple Features[C]∥Proc IEEE Conf on Computer Vision and Pattern Recognition.Kauai,HI:[s.n.],2001:511-518.
[11]PAPAGEORGIOU C,OREN M,POGGIO T.A General Framework for Object Detection[C]∥International Conference on Computer Vision.Bombay:[s.n.],1998:555-562.
[12]VIOLA P,JONES M.Robust Real-Time Face Detection [J].International Journal of Computer Vision,2004,57(2):137-154.
[13]唐立群,郭慶昌.數(shù)字圖像模式識別方法分析[M].哈爾濱:哈爾濱工程大學(xué)出版社,2008:197-204.TANG Liqun,GUO Qingchang.Analysis of Digital Image Pattern Recognition Methods[M].Harbin:Harbin Engineering University Press,2008:197-204.
[14]陳勇,劉勝.基于OpenCV的計算機視覺技術(shù)實現(xiàn)[M].北京:科學(xué)出版社,2008:8-10.CHEN Yong,LIU Sheng.The Realization of Computer Vision Technology Based on OpenCV[M].Beijing:Science Press,2008:8-10.
[15]于仕琪,劉瑞禎.學(xué)習(xí)OpenCV(中文版)[M].北京:清華大學(xué)出版社,2009:557-558.YU Shiqi,LIU Ruizhen.Learning OpenCV[M].Beijing:Tsinghua University Press,2009:557-558.