周 瑾,王元慶+,范科峰
(1.南京大學 電子科學與工程學院,江蘇 南京 210093;2.中國電子技術(shù)標準化研究所,北京 100007)
在人臉檢測領(lǐng)域,國內(nèi)外研究者已經(jīng)提出了多種方法[1]。近年來,研究的熱點集中于數(shù)據(jù)和特征驅(qū)動的統(tǒng)計學習方法[2-5],目前該方法對于弱干擾的場景有令人滿意的效果,同時也存在一些問題:基于統(tǒng)計學習的方法主要依賴面部器官分布的共性,而實際場景中不可避免地存在灰度分布和面部十分相似的區(qū)域;實際場景中大部分人臉都會受到不同程度的干擾,這些干擾包可能包括環(huán)境因素、姿態(tài)、表情以及遮擋;統(tǒng)計學習的訓練十分耗時。對于這些問題已經(jīng)有研究者提出多種方法[6-11],但沒有能較好解決上述所有問題的方案。針對上述問題,本文提出若干方法:基于膚色團塊特征提取有效候選窗口,可剔除絕大部分類人臉區(qū)域;利用人臉中某些部位比其他部位特征更穩(wěn)定的先驗知識,通過合理化訓練樣本分布以及人工干預弱分類器權(quán)重,使得系統(tǒng)對光照、表情和姿態(tài)變化有較好的魯棒性,特別是對于大面積的遮擋有很好的性能,同時有效利用幀間冗余加速檢測;針對訓練耗時的問題,將Ada-Boost算法移植到圖形處理器(GPU)上實現(xiàn),顯著提高了訓練速度。
針對傳統(tǒng)幾何和圖像特征處理耗時、魯棒性低的缺點,本文提出了一種基于膚色團塊特征的快速篩選候選區(qū)域的方法。該方法的優(yōu)勢在于:不涉及細節(jié)性的特征,在圖像分辨率較低和有遮擋的條件下也有很好的效果;不涉及形狀分析和形態(tài)學處理等復雜的計算,結(jié)合金字塔結(jié)構(gòu)和積分圖可進一步加速運算。
本文采用了YCbCr空間基于K-L 變換的橢圓模型[12]進行膚色檢測,如式(1)和(2)所示
本文定義了膚色覆蓋率r來標記有效的膚色團塊,如式(3)所示
式(3)中,m和n分別表示一個矩形窗口的長和寬,∑colorPixels表示該矩形窗口中被檢測為膚色的像素總數(shù)。在實際檢測過程中,r的計算是在金字塔搜索的過程中進行的,事先對圖像進行膚色檢測,并構(gòu)建一個膚色積分圖,在對某一個尺度的圖像使用檢測窗口進行遍歷的時候,先計算該窗口膚色覆蓋率r,如果r超過了某個預設(shè)閾值,則將該窗口送入后級的人臉-人眼兩層檢測器處理,否則忽略該窗口。利用積分圖計算一次r,僅需要三次整數(shù)加(減)法的運算,這樣避免了將大量無效窗口送入分類器,節(jié)省了大量的運算。圖1中定性地給出了候選區(qū)域選取的結(jié)果,原圖尺寸的為640×480,而圖中給出的是160×160層次的有效窗口。
圖1 候選區(qū)域選取的結(jié)果
本文使用了6種Haar-Like型特征構(gòu)建特征空間,如圖2所示,其中a-e是5類經(jīng)典特征,而標簽為“f”的特征是本文提出的一種分離型特征,這種特征主要針對人臉的對稱性。
本文用連續(xù)型AdaBoost訓練人臉分類器。在訓練過程中,得到第k個弱分類器的離散概率分布的公式如式(4)所示
圖2 Haar-Like型特征
在式(4)中,ε是平滑因子,它的作用為保證真數(shù)為一個有界正數(shù),以及抑制過學習的出現(xiàn)。在一般的Ada-Boost算法中該因子是一個常數(shù),當其取得過小時,無法有效抑制過學習,取得過大又會影響概率分布,在原始算法中,該因子始終為一個定值,考慮到過學習現(xiàn)象一般出現(xiàn)在訓練過程的后期,本文提出了一種改進策略,在第一輪訓練時為平滑因子取定一個初始值ε0,在訓練過程中,該因子以一個固定步長Δε遞增,如式(5)所示,這樣可以有效地解決ε的取值問題,使得訓練過程在初期快速收斂,在后期防止過擬合
泛化能力是指機器學習算法對輸入集以外的樣本的適應(yīng)能力,當人臉分類器有很好的泛化能力時,可以有效克服環(huán)境因素、運動和姿態(tài)變化和遮擋的影響。
在樣本數(shù)量多到一定程度時,再用增加樣本數(shù)量的方式提高分類器的泛化性能很困難,因此本文使用了兩個方法進一步提高泛化能力:①使訓練樣本分布合理化;②人工調(diào)整弱分類器權(quán)重。
在第一個方法中,使訓練樣本中盡可能地包含合理比例的各種模式的樣本,每個模式都代表實際場景中一類典型的灰度分布模式,見表1。
表1 訓練樣本的分布情況
在第二個方法中,本文首先對人臉的灰度分布特點進行分析,得出的結(jié)論是:人臉中某些區(qū)域的灰度分布相比其他區(qū)域更加集中,即這部分特征更穩(wěn)定。如圖3 所示,區(qū)域A 中包含雙眼和鼻子,這些部位總體上受姿態(tài)、表情和個體差異等影響較小,而區(qū)域B 易受發(fā)型和裝飾物的干擾,區(qū)域C的灰度分布最為離散,因為該區(qū)域包含無數(shù)種表情,且容易被遮擋。本文采用人工干預弱分類器權(quán)重的方法減小實際檢測中的干擾,具體做法是降低B和C 區(qū)域中細節(jié)性特征的權(quán)重。表2 中給出了最終訓練得到的Haar-Like特征在各個區(qū)域中的分布情況。
圖3 人臉各區(qū)域灰度分布分析
表2 人臉各區(qū)域中的特征分布情況
如圖4所示,人臉檢測器由一系列強分類器級聯(lián)組成,第一級強分類器較為簡單,從前級到后級分類器的復雜度逐級增加,主要體現(xiàn)在每一級包含的弱分類器個數(shù)上,采用這種結(jié)構(gòu)可以在前級剔除絕大多數(shù)的無效窗口,只有少數(shù)窗口可以進入后級分類器進行決策。在圖4中,箭頭的粗細定性地表示樣本的數(shù)量多少。
圖4 級聯(lián)分類器結(jié)構(gòu)
卡爾曼濾波算法被用于估計該人臉在下一幀中的位置,同時對當前檢測到的位置進行濾波??柭鼮V波器可以有效提高搜索速度,同時通過濾除噪聲提高檢測的穩(wěn)定性。
考慮真實的運動情景,相對于25fps的視頻流,人臉的運動在大部分情況下是慢速且平滑的,我們假設(shè)待檢目標在x-y平面上的運動是一個被隨機的加速度所擾動的勻速直線運動,加速度a滿足:a~N(0,σw2)。該模型的狀態(tài)方程和量測方程如式(6)和式(7)所示
其中,x(k)和z(k)分別是時刻k的狀態(tài)向量和測量向量,x(k+1|k)表示對k+1 時刻狀態(tài)的預測。w(k)和v(k)分別是過程噪聲和觀測噪聲,它們均服從零均值多元正態(tài)分布,它們的協(xié)方差分別為Qk和Rk。A(k+1|k)和H(k)分別是狀態(tài)轉(zhuǎn)移矩陣和觀測矩陣。將x(k)、A(K+1|k)與H(k)寫成矩陣形式如式(8)和(9)所示
其中,Δt為相鄰幀的時間間隔,在本文的系統(tǒng)中為40ms(1/25s)。在算法運行過程中,卡爾曼濾波器構(gòu)造了一個“預測-校正”模型,預測過程起到預估器的作用,而校正過程進行去噪濾波。
不同于靜態(tài)圖像,實時視頻中有相當?shù)娜哂嘈畔?,基于這一點,本文將視頻幀分為檢測幀(D 幀)和跟蹤幀(T幀)。在處理D 幀時,過程等同于對靜態(tài)圖像的處理,而在處理T 幀時,將只對上一幀檢測到的人臉進行跟蹤,整個過程如圖5所示。
圖5 檢測和跟蹤動態(tài)結(jié)合
兩個相鄰的D 幀中間是K個T 幀,一般情況下K 是常數(shù),而在當前幀檢測到的人臉數(shù)少于上一幀的情況下,下一幀將自動切換為D 幀,以確認是否發(fā)生跟蹤失敗。這種切換策略能在降低運算量的同時,避免檢測目標的丟失。
本文的總體算法流程如圖6所示,分為離線訓練和在線檢測兩個部分,圖中左邊的虛線框表示離線訓練部分,基于GPU 運算的連續(xù)型Adaboost算法對大量正負樣本的訓練,得到一系列的查找表型(look-up-table,LUT)弱分類器,經(jīng)過對這些分類器的人工權(quán)重調(diào)整,最終構(gòu)成級聯(lián)強分類器組;圖中右邊的虛線框表示在線檢測部分,從圖中可以看出級聯(lián)分類器的輸入源有兩個,即利用膚色覆蓋率提取的結(jié)果或者利用上一幀數(shù)據(jù)預測的結(jié)果。
圖6 系統(tǒng)總體流程
圖7中定量地給出了基于膚色覆蓋率的候選窗口篩選的結(jié)果,圖7中縱坐標表示候選窗口的數(shù)目,橫坐標表示膚色覆蓋率閾值,五條曲線分別代表5種尺度。閾值取0.6時,有效窗口的數(shù)量約為總窗口數(shù)的5%,再結(jié)合卡爾曼預測和金字塔結(jié)構(gòu),最終只有少于1%的檢測窗口會被送入后級分類器。
圖7 不同閾值下有效窗口數(shù)量
在人臉檢測器的訓練中,正樣本數(shù)為5000,每一級的負樣本數(shù)為40000,樣本大小為20×20像素,最終得到11級AdaBoost分類器,共由790個弱分類器構(gòu)成。AdaBoost算法的運算量非常大,在本文所用樣本數(shù)量的情況下,用普通PC(單核,主頻2.6GHz)機訓練一個弱分類器的時間約為1.5 小時,總訓練時間為:790*1.5(小時)=1185(小時),約50 天。針對這個問題,本文使用基于CUDA 技術(shù)的GPU 并行計算,運行在NVIDIA GTS450顯卡上,將每個弱分類器訓練時間減少到38秒,總訓練時間為8.3小時,實現(xiàn)了一百多倍的加速,當然,這里并沒有計入樣本庫生成的時間,但足可以說明將訓練程序移植到GPU 實現(xiàn)帶來的加速效果是顯著的,且性價比極高。
攝像頭分辨率為640×480,主機處理器為奔騰雙核E5300(只用單核),主頻為2.6GHz。經(jīng)過對超過5萬個視頻幀的測試,本文的系統(tǒng)對基本沒有干擾的正面人臉檢測率達到98.8%,對有大面積遮擋的人臉檢測率達到91.5%。單幀的平均處理時間如表3 所示,本文的系統(tǒng)每幀的平均處理時間僅為7.7ms。圖8給出了部分檢測結(jié)果,其中包括了不同的光照條件、表情變化、姿態(tài)變化、大面積遮擋和多人的情況。
表3 平均單幀處理時間
圖8 部分實時檢測結(jié)果
綜上所述,使用基于積分圖和膚色覆蓋率的方法提取候選區(qū)域可以有效去除復雜背景中與人臉有相似灰度分布的區(qū)域,同時通過減少送入分類器的窗口數(shù)量提高檢測速度;有良好泛化性能的AdaBoost級聯(lián)分類器保證了低誤檢率和魯棒性,基于GPU的實現(xiàn)的訓練程序?qū)z測速度提高了兩個數(shù)量級;卡爾曼濾波和D/T 幀切換充分利用了視頻的冗余信息,在不影響檢測效果的情況下加快了處理速度。最終系統(tǒng)的檢測速度完全達到實時系統(tǒng)的要求。考慮到同一類樣本的分布不能過于離散,現(xiàn)有的方法只能檢測小角度傾斜的對象。檢測更多姿態(tài)和偏轉(zhuǎn)角度的用戶,是下一步的改進方向。
[1]SUN Ning,ZOU Cairong,ZHAO Li.Face detection:A survey[J].Journal of Circuits and Systems,2006,11(6):101-108(in Chinese).[孫寧,鄒采榮,趙力.人臉檢測綜述[J].電路與系統(tǒng)學報,2006,11(6):101-108.]
[2]YANG Chengping,WANG Yuanqing.A face detection based on frontal-inverse adaboost algorithm[J].Chinese Jourml of Electron Devices,2008,31(1):355-358.
[3]Tsao Wen Kwang,Anthony J T Lee,LIU Yingho,et al.A data mining approach to face detection[J].Pattern Recognition,2010,43(3):1039-1049.
[4]YANG Jie,LING Xufeng,ZHU Yitan,et al.A face detection and recognition system in color image series[J].Mathematics and Computers in Simulation,2008(77):531-539.
[5]ZHANG Jianming,WANG Daqing.Building multi-view realtime video face detection system based on Adaboost algorithm[J].Computer Engineering and Design,2010,31(18):4065-4067(in Chinese).[張建明,汪大慶.基于Adaboost算法的多姿態(tài)人臉實時視頻檢測[J].計算機工程與設(shè)計,2010,31(18):4065-4067.]
[6]YAO Jian,ZHAO Xunjie.Face detection combined skin colormodel and Adaboost algorithm[J].Journal of Suzhou University(Natural Science Edition),2009,25(3):63-67(in Chinese).[姚建,趙勛杰.結(jié)合膚色模型和Adaboost算法的人臉檢測[J].蘇州大學學報(自然科學版),2009,25(3):63-67.]
[7]YANG Weiguo,DONG Shufeng,CHEN Juzi.Fast composite color face detection algorithm of adaptive search object[J].Computer Engineering and Design,2011,32(4):1441-1444(in Chinese).[楊衛(wèi)國,董蜀峰,陳聚祉.自適應(yīng)搜索目標的快速彩色復合人臉檢測方法[J].計算機工程與設(shè)計,2011,32(4):1441-1444.]
[8]ZHONG Xiang,WANG Yuanqing.Real-time face detection by Adaboost based on infrared illumination[J].Computer Engineering,2009,35(8):222-224(in Chinese).[鐘翔,王元慶.基于紅外照明的Adaboost 實時人臉檢測[J].計算機工程,2009,35(8):222-224.]
[9]HAN Jing,WANG Yuanqing.Eye detection based on real Ada-Boost and bright pupil effect[J].Electronic Measurement Technology,2009,32(8):114-117(in Chinese).[韓晶,王元慶.基于亮瞳效應(yīng)的連續(xù)AdaBoost人眼檢測[J].電子測量技術(shù),2009,32(8):114-117.]
[10]YAN Chao,WANG Yuanqing,ZHANG Zhaoyang.Robust real-time multi-user pupil detection and tracking under various illumination and large-scale head motion[J].Computer Vision and Image Understanding,2011,115(1):1223-1238.
[11]DU Xingjing,BAI Tingzhu,HE Yuqing.Study of fast partial obscured face detection algorithm[J].Computer Engineering and Design,2011,32(3):984-987(in Chinese).[杜杏菁,白廷柱,何玉青.快速局部遮擋人臉檢測算法研究[J].計算機工程與設(shè)計,2011,32(3):984-987.]
[12]GAO Jianpo,WANG Yujian,YANG Hao,et al.An elliptical model based on KL transform for skin color detection[J].Journal of Electronics &Information Technology,2007,29(7):1739-1743(in Chinese).[高建坡,王煜堅,楊浩,等.一種基于KL變換的橢圓模型膚色檢測方法[J].電子與信息學報,2007,29(7):1739-1743.]