一種實時人臉識別系統(tǒng)及其方法
【專利摘要】本發(fā)明公開了一種實時人臉識別系統(tǒng)及其方法,其中該系統(tǒng)包括:預處理子模塊,用于獲取視頻圖像,并對該視頻圖像進行預處理,以增強視頻圖像的對比度;人臉定位子模塊,用于從預處理后的所述視頻圖像中獲取正面人臉圖像;人臉識別子模塊,用于提取正面人臉圖像中的特征,并將該特征與目標人臉庫中的人臉特征進行比較,獲取相似度。為了提高人臉定位子模塊中人臉檢測與人臉跟蹤的性能和速度,本發(fā)明對人臉識別文件的訓練過程和人臉跟蹤過程均作了優(yōu)化改進,可滿足大多數(shù)情況下人臉識別的實時性要求。
【專利說明】一種實時人臉識別系統(tǒng)及其方法
【技術領域】
[0001]本發(fā)明涉及計算機視覺應用領域,具體是涉及一種實時人臉識別系統(tǒng)及其方法?!颈尘凹夹g】
[0002]隨著計算機科學和人工智能等學科的發(fā)展,計算機視覺的研究在最近十年取得了巨大的進步,并且在視頻監(jiān)控、多媒體會議、人機接口等領域得到了廣泛的應用。
[0003]人臉識別問題是計算機視覺領域中的一個關鍵問題,其涉及計算機視覺中的多個關鍵技術,包括:人臉檢測、人臉跟蹤、器官定位與人臉大小歸一化、人臉判定等。
[0004]人臉檢測,是指從輸入圖像中判斷是否有人臉,若有,則確定人臉的大小和位置。人臉檢測是自動化人臉識別系統(tǒng)中所有核心算法的第一步,是實現(xiàn)自動化人臉識別系統(tǒng)的關鍵。目前已有的人臉檢測方法包括特征臉、神經(jīng)網(wǎng)絡、支持向量機、Haar分類器等。基于Haar分類器的方法檢出率較高、檢測速度快,是目前主流的人臉檢測方法。
[0005]人臉跟蹤,是指從連續(xù)的視頻圖像中跟蹤人臉的運動軌跡。對于連續(xù)拍攝的視頻圖像,在已知人臉初始位置的前提下人臉跟蹤可以比人臉檢測更加快速的獲得人臉的新位置。人臉跟蹤本質(zhì)上是一類特定的運動跟蹤問題,目前已有的人臉跟蹤方法包括:角點檢測、運動預測、自適應均值漂移(Cam-Shift)算法、卡爾曼濾波器與粒子濾波器等?;谌四樳\動的特點——低速、非線性,Cam-Shift算法在人臉跟蹤中得到了廣泛的應用。
[0006]器官定位與人臉大小歸一化,是指從輸入的人臉圖像中確定眼睛、鼻子等重要面部器官的位置,根據(jù)器官的位置對輸入圖像進行適當裁剪和大小變換。器官定位與人臉大小歸一化的目的是盡量消除其他部位對識別過程的影響。器官定位主要依靠結(jié)合先驗知識和邊緣檢測的方法,人臉大小歸一化可以使用線性插值法來實現(xiàn)。
[0007]人臉判定,是指將輸入圖像與數(shù)據(jù)庫中的目標人臉圖像的某種特征進行比較,從而確定輸入圖像和數(shù)據(jù)庫中的目標圖像的相似度。由于原始光學圖像易受光照、人物表情等可變因素的影響,很難直接使用原始圖像進行比較。大多數(shù)人臉判定的方法都是通過提取圖像的特征,然后比對目標和輸入的特征,從而確定他們的相似度。在人臉判定過程中常用的人臉特征包括人臉的幾何特征、像素點的統(tǒng)計特征以及邊緣輪廓特征等。特征相似度的度量函數(shù)包括幾何距離、馬氏距離、相關系數(shù)等。
[0008]目前已有的人臉識別系統(tǒng)包括FaceIt、TrueFace Watch、FaceKey、FaceVACS,FaceFinder等,這些人臉識別系統(tǒng)可廣泛使用于視頻監(jiān)控、門控系統(tǒng)、圖像檢索等多個應用領域。由于人臉識別問題涉及數(shù)字圖像處理、機器學習等多方面的知識,上述的人臉識別系統(tǒng)都有一個共同點——都是在通用平臺上實現(xiàn)的。通用平臺的優(yōu)點在于可以借用很多已有的函數(shù)庫、開發(fā)速度快,缺點是應用場合受限。而嵌入式軟硬件技術的進步使得實現(xiàn)嵌入式人臉識別模塊成為可能。
【發(fā)明內(nèi)容】
[0009]本發(fā)明的目的在于提出一種實時人臉識別系統(tǒng)及其方法,用于解決現(xiàn)有技術中存在的適應性和實時性不強的缺陷。
[0010]為了實現(xiàn)上述目的,本發(fā)明提出了一種實時人臉識別系統(tǒng),其特征在于,包括:
[0011]預處理子模塊,用于獲取視頻圖像,并對該視頻圖像進行預處理,以增強視頻圖像的對比度;
[0012]人臉定位子模塊,用于從預處理后的所述視頻圖像中獲取正面人臉圖像;
[0013]人臉識別子模塊,用于提取正面人臉圖像中的特征,并將該特征與目標人臉庫中的人臉特征進行比較,獲取相似度。
[0014]所述的實時人臉識別系統(tǒng),其中,所述人臉定位子模塊包括:
[0015]人臉檢測模塊,用于加載人臉Haar分類器文件,從所述視頻圖像中檢測人臉,獲得人臉的初始位置;
[0016]人臉跟蹤模塊,用于根據(jù)人臉的初始位置,利用膚色模型建立膚色直方圖,并利用Cam-Shift算法進彳了人臉跟蹤。
[0017]所述的實時人臉識別系統(tǒng),其中,所述人臉檢測模塊對人臉Haar分類器文件使用非對稱決策樹代替原有的決策樹構造弱分類器的方式提高分類器中每個弱分類器的性能。
[0018]所述的實時人臉識別系統(tǒng),其中,所述人臉檢測模塊對人臉Haar分類器文件通過如下方式改進分類器的結(jié)構:
[0019]使用AdaBoost算法組合多個弱分類器構成強分類器后,以強分類器所使用的特征向量為依據(jù),利用K均值對正樣本樣本點進行聚類,并對聚類出的子類分別構造子類分類器,將子類分類器加入層級分類器,以子類分類器為兄弟節(jié)點,構成最終的樹形層級分類器。
[0020]所述的實時人臉識別系統(tǒng),其中,所述人臉跟蹤模塊以如下方式改進人臉跟蹤算法:
[0021]利用卡爾曼濾波器預測人臉圖像在整個圖像中的下一位置,并以預測的位置作為自適應均值漂移算法搜索的初始位置。
[0022]所述的實時人臉識別系統(tǒng),其中,所述實時人臉識別系統(tǒng)通過SOC芯片實現(xiàn)。
[0023]為了實現(xiàn)上述目的,本發(fā)明還提出了一種實時人臉識別方法,其特征在于,包括:
[0024]步驟1,獲取視頻圖像,并對該視頻圖像進行預處理,以增強視頻圖像的對比度;
[0025]步驟2,從預處理后的所述視頻圖像中獲取正面人臉圖像;
[0026]步驟3,提取正面人臉圖像中的特征,并將該特征與目標人臉庫中的人臉特征進行比較,獲取相似度。
[0027]所述的實時人臉識別方法,其中,所述步驟2中,包括:
[0028]步驟21,加載人臉Haar分類器文件,從所述視頻圖像中檢測人臉,獲得人臉的初始位置;
[0029]步驟22,根據(jù)人臉的初始位置,利用膚色模型建立膚色直方圖,并利用Cam-Shift算法進行人臉跟蹤。
[0030]所述的實時人臉識 別方法,其中,所述步驟21中,包括:
[0031]對人臉Haar分類器文件使用非對稱決策樹代替原有的決策樹構造弱分類器的方式提高分類器中每個弱分類器的性能。
[0032]所述的實時人臉識別方法,其中,所述步驟21中,包括:對人臉Haar分類器文件通過如下方式改進層級分類器的結(jié)構:
[0033]使用AdaBoost算法組合多個弱分類器構成強分類器后,以強分類器所使用的特征向量為依據(jù),利用K均值對正樣本樣本點進行聚類,并對聚類出的子類分別構造子類分類器,將子類分類器加入層級分類器,以子類分類器為兄弟節(jié)點,構成最終的樹形層級分類器。
[0034]所述的實時人臉識別方法,其中,所述步驟22中,包括:
[0035]利用卡爾曼濾波器預測人臉圖像在整個圖像中的下一位置,并以預測的位置作為自適應均值漂移算法搜索的初始位置的方式改進人臉跟蹤算法。
[0036]與現(xiàn)有技術相比,本發(fā)明的有益技術效果在于:
[0037](I)實時性高:獨立的硬件模塊、并行化的框架設計、優(yōu)化的算法可滿足大多數(shù)情況下人臉識別的實時性要求;
[0038](2)易于與其他設備對接:本系統(tǒng)對外的接口只需要一個標準的視頻輸入口和一個通信口,只要在使用前將其與其他平臺連接起來即可使用;
[0039](3)可廣泛使用于不同場合:本系統(tǒng)是一個自洽的“計算機”子系統(tǒng),具有獨立的存儲器和CPU。上電以后系統(tǒng)可獨立運行,一旦從視頻輸入口獲取到完整的視頻幀以后就可進行人臉識別。
【專利附圖】
【附圖說明】
[0040]圖1是本發(fā)明的人臉識別系統(tǒng)的總體結(jié)構框圖;
[0041]圖2是本發(fā)明的人臉識別系統(tǒng)的總體算法流程圖;
[0042]圖3是Haar分類器文件訓練算法流程圖;
[0043]圖4是本發(fā)明的非對稱決策樹對不純度曲線的影響示意圖;
[0044]圖5是本發(fā)明的使用K均值改進后的樹形Haar分類器結(jié)構圖;
[0045]圖6是本發(fā)明的改進人臉跟蹤算法前后效果對比圖。
【具體實施方式】
[0046]以下結(jié)合附圖和具體實施例對本發(fā)明進行詳細描述,但不作為對本發(fā)明的限定。
[0047]如圖1所示,是本發(fā)明的人臉識別系統(tǒng)的總體結(jié)構框圖。該圖給出了實時人臉識別系統(tǒng)100的硬件模塊和連接方式,軟件模塊的劃分及其關系。
[0048]硬件上,實時人臉識別系統(tǒng)100的中心是一塊SOC芯片。SOC芯片通過相應的引腳連接外部RAM和FLASH,F(xiàn)LASH中保存有相關的程序和數(shù)據(jù)。SOC芯片與通信口相連,可通過通信口獲取視頻數(shù)據(jù)、配置參數(shù)等,并通過該通信口輸出人臉識別的結(jié)果。傳輸視頻數(shù)據(jù)需要通信口具有較寬的帶寬和較大的緩沖區(qū),為了滿足這一需求需要SOC芯片支持DMA傳輸方式,并通過通信口驅(qū)動將通信口與RAM之間建立DMA連接。特別地,在圖1中省略了電源模塊和相應的時鐘電路,在實際設計中可根據(jù)需要自行添加。
[0049]在本實施例中,SOC芯片選擇海思公司的hisi3520芯片,除ARM CortexA9內(nèi)核以外,該芯片內(nèi)部還集成有圖像和視頻處理單元、視頻輸入和通信接口,并且其內(nèi)部通過固件技術實現(xiàn)了智能引擎,智能模塊可加速人臉識別過程的處理。為了保存程序數(shù)據(jù),在SOC芯片外擴展一個FLASH芯片和RAM芯片,F(xiàn)LASH芯片選擇S25GL256,RAM芯片采用NAND512W32B2A6E。為了方便和其他設備對接,外擴一個USB接口,通過USB接口從其他設備獲取視頻數(shù)據(jù)和配置參數(shù),并通過USB接口將識別結(jié)果返回給其他設備。
[0050]軟件上,其設計任務主要包括:系統(tǒng)搭建以及人臉識別算法及其實現(xiàn),相應的程序通過C編程實現(xiàn)。
[0051]在系統(tǒng)環(huán)境方面,為了降低整個軟件設計的難度,采用Uboot引導程序、嵌入式Iinux系統(tǒng)加busybox文件系統(tǒng)構成應用程序的運行環(huán)境。這些程序都可以通過從相應的官網(wǎng)或海思公司的網(wǎng)站上下載源碼,然后根據(jù)所選用的芯片進行相應配置并編譯成可執(zhí)行文件,通過J-Link或串口等工具將其下載到目標系統(tǒng)中運行。由于本實施例中使用USB接口作為人臉識別模塊和其他設備通信的接口,在配置Iinux內(nèi)核時注意一定要啟用USB驅(qū)動與管理模塊。
[0052]在算法方面,人臉識別系統(tǒng)100包括三個子模塊:預處理子模塊10、人臉定位子模塊20、人臉識別子模塊30。預處理子模塊10,用于從通信口獲取視頻數(shù)據(jù),通過銳化、去噪等操作增強圖像的對比度,改善圖像質(zhì)量;人臉定位子模塊20,主要負責快速的從輸入視頻中獲取大小合適的正面人臉圖像,又包括人臉檢測模塊21、人臉跟蹤模塊22 ;人臉識別子模塊30,用于進行器官定位與人臉大小歸一化和人臉判定,主要負責提取人臉圖像的特征并和目標人臉庫中的人臉特征進行比較以獲得其相似度。
[0053]人臉檢測模塊21,用于加載人臉Haar分類器文件,從視頻圖像中檢測人臉,獲得人臉的初始位置。
[0054]進一步地,對于人臉檢測模塊21,為了提高算法性能加快人臉檢測速度,對人臉Haar分類器文件使用非對稱決策樹代替原有的決策樹構造弱分類器的方式提高分類器中每個弱分類器的性能。
[0055]進一步地,對于人臉檢測模塊21,為了提高算法性能加快檢測速度,對人臉Haar分類器文件通過如下方式改進分類器的結(jié)構:使用AdaBoost算法組合多個弱分類器構成強分類器后,以強分類器所使用的特征向量為依據(jù),利用K均值對正樣本樣本點進行聚類,并對聚類出的子類分別構造子類分類器,以子類分類器為兄弟節(jié)點,構成最終的樹形層級分類器。
[0056]人臉跟蹤模塊22,用于根據(jù)人臉的初始位置,利用膚色模型建立膚色直方圖,并利用Cam-Shift算法進行人臉跟蹤。
[0057]進一步地,為了提高人臉跟蹤的效果,人臉跟蹤模塊22以如下方式改進人臉跟蹤算法:利用卡爾曼濾波器預測人臉圖像在整個圖像中的下一位置,并以預測的位置作為自適應均值漂移算法搜索的初始位置。
[0058]如圖2所示,是本發(fā)明的人臉識別系統(tǒng)的總體算法流程圖,其過程描述如下所示:
[0059]步驟201,獲取視頻數(shù)據(jù),通過去噪,銳化等圖像處理增強圖像的對比度進行視頻預處理,改善圖像質(zhì)量,將視頻幀輸出到緩沖區(qū),并繼續(xù)獲取視頻幀。步驟201對應圖1中的預處理子模塊10。
[0060]步驟202,主要包含人臉檢測與人臉跟蹤。人臉檢測過程首先加載人臉Haar分類器文件,然后從共享存儲區(qū)讀取一幀圖像,并進行人臉正面檢測,判斷是否檢測到了正面人臉,如檢測到,則進行人臉跟蹤,否則繼續(xù)從共享存儲器中讀取圖像;在進行人臉跟蹤的過程中,判斷是否達到指定幀數(shù)或跟蹤失敗。若是,輸出幀編號及人臉位置,否則繼續(xù)從共享存儲區(qū)中讀取圖像。步驟202對應圖1中的人臉定位子模塊20。
[0061]步驟203,進行器官定位與人臉大小歸一化和人臉判定。定位到人臉的位置后,先進行器官定位與人臉大小歸一化,然后進行特征提取,并將提取的特征輸入人臉判定過程進行人臉特征比對,獲得輸入人臉與數(shù)據(jù)庫中人臉的相似度向量。步驟203與圖1中的人臉識別子模塊30對應。
[0062]在人臉識別的整個算法中,人臉檢測與人臉跟蹤是非常關鍵的兩步。對于人臉檢測過程,其檢測性能和速度主要決定于分類器文件,分類器文件是通過對大量的正負樣本運行訓練程序得到的(若要獲得好的效果,每一次強分類器訓練需要大約5000個正樣本和5000個負樣本)。
[0063]目前,人臉檢測中常用的Haar分類器方法訓練人臉分類器文件的流程圖如圖3所示。其主要步驟是:
[0064]步驟301,訓練開始,倉Il建Haar特征;
[0065]步驟302,載入正樣本和負樣本,判斷虛警率是否達到指標,若達到,則執(zhí)行步驟304 ;若未達到,則執(zhí)行步驟303 ;
[0066]步驟303,判斷是否達到了最大層次,若是,則計算Haar特征值,訓練一個強分類器,保存強分類器信息到臨時文件,并返回到步驟302 ;
[0067]步驟304,保存級聯(lián)分類器信息到XML文件,測試最終分類器性能,訓練結(jié)束。
[0068]本發(fā)明對人臉檢測的改進,是針對分類器的訓練過程的,主要目標是在維持較高檢測性能的條件下提高使用其進行人臉檢測的速度,其主要思想是提高分類器中每個弱分類器的性能,從而減少使用的弱分類器數(shù)量,提高人臉檢測的速度;另一方面是改進層級分類器的結(jié)構,從而提聞人臉檢測的精確性。
[0069]提高分類器中每個弱分類器的性能的方式,是對人臉Haar分類器文件使用非對稱決策樹代替原有的決策樹構造弱分類器;改進層級分類器的結(jié)構的方式,是使用AdaBoost算法組合多個弱分類器構成強分類器后,以強分類器所使用的特征向量為依據(jù),利用K均值對正樣本樣本點進行聚類,并對聚類出的子類分別構造子類分類器,以子類分類器為兄弟節(jié)點,構成最終的樹形層級分類器。具體而言:
[0070]1、在構造Haar分類器的弱分類器計算不純度時,增大正樣本的權重,從而增加正樣本被錯分時的不純度。如圖4所示,假設正負樣本的特征值都滿足正態(tài)分布,對稱決策樹(計算不純度時正負樣本的權重相同)的不純度在正態(tài)分布密度曲線值相同時對應的不純度最小。增大計算不純度時正樣本的權重后,在原來閾值的左側(cè)正樣本被錯誤識別的概率很小,所以增加正樣本的權重對不純度曲線的影響較小,但在原來閾值的右側(cè),由于正樣本被錯分的概率增大,不純度曲線的變化率更大,最終使不純度曲線的最小值出現(xiàn)在比原來更偏左的位置,也就是正樣本被錯分為負樣本的概率更小。這種正負樣本具有不同權重的決策樹稱為非對稱決策樹,相比傳統(tǒng)的決策樹,非對稱決策樹在相同的檢出率條件下其虛警率更小。Haar分類器對層級分類器的要求即是在相同的檢出率條件下盡量降低虛警率,因此使用非對稱決策樹能夠提高Haar分類器訓練出的人臉分類器文件的檢測性能。另外,在同等性能的條件下,基于非對稱決策樹的Haar分類器使用的Haar特征更少,因此其檢測速度更快。
[0071]利用非對稱決策樹構造弱分類器的流程是:[0072](I)給定由正負樣本及其標簽構成的訓練集(X1, Y1),, (Xi, Yi),.., (xN, yN),N表示樣本個數(shù),為了獲得較好的檢測效果避免過擬合現(xiàn)象,N的值應不小于10000,正負樣本各5000個;Xi e Rk,表示第i個樣本的k個Haar特征值構成的特征向量,R為實數(shù),Ii e -1,1},表示第i個樣本的類別,-1表示第i個樣本是負樣本,I表示第i個樣本是正樣本;
[0073](2)通過遍歷Haar特征找到能使不純度最小的特征feature」及其閾值Θ咖,判斷左右節(jié)點的類別(若子節(jié)點中正樣本的加權和大于負樣本的加權和則當成候選正樣本節(jié)點);
[0074](3)增大被分錯的正樣本的權重重新尋找閾值Θ new,作為該特征劃分子節(jié)點的閾值。調(diào)整權重的方式是:令 P =maxflasealarm/1-min hiirate,其中maxflasealarm表示訓練程序命令行中
指定的每一層強分類器所允許的最大虛警率,minhitrate表示訓練程序命令行中指定的每一層強分類器所允許的最小檢出率,P即是分錯正樣本的權重因子;
[0075](4)重復步驟(2) (3)以找出足夠的弱分類器,使利用AdaBoost算法組合出來的強分類器其虛警率和檢出率都達到指標。
[0076]2、對于傳統(tǒng)的Haar分類器,其結(jié)構是由若干通過AdaBoost訓練出來的強分類器級聯(lián)而成的,在檢測時只有被上層分類器判定為人臉的圖像區(qū)域才能進入下一層分類器進行檢測。以某一層分類器使用的特征構成坐標軸,以每一個樣本的特征值向量作為其樣本點,觀察正樣本樣本點的分布可以發(fā)現(xiàn)其很多時候都會呈現(xiàn)區(qū)域聚集性,而負樣本的樣本點則在整個向量空間呈現(xiàn)均勻分布。利用正樣本樣本點的這種區(qū)域聚集特性可以改進層級分類器的性能,提高其檢測率。具體做法是:首先通過傳統(tǒng)的AdaBoost算法訓練出檢出率以及誤檢率符合要求的強分類器,然后以該強分類器所使用的特征向量為坐標軸,運用傳統(tǒng)的K均值算法對正樣本樣本點進行聚類;對聚類出來的子類分別構造子類分類器;若這些子類分類器使用的Haar特征數(shù)之和比傳統(tǒng)AdaBoost算法訓練出來的分類器使用的Haar特征要少,則將這些子類分類器加入到最后的層級分類器中,這些子類分類器彼此之間互為兄弟節(jié)點。通過這種改進以后,原來是串聯(lián)結(jié)構的分類器變成了樹形結(jié)構。由于同樣的性能條件下改進后的分類器使用的Haar特征數(shù)更少,因此其檢測速度更快。
[0077]在圖5中,每一個節(jié)點都是通過改進的AdaBoost算法訓練出來的強分類器節(jié)點,所有的節(jié)點構成一個樹形結(jié)構的分類器樹。其中節(jié)點I是第I層分類器唯一的節(jié)點;節(jié)點
2、3是節(jié)點I的子節(jié)點,節(jié)點2、3之間互為兄弟節(jié)點,節(jié)點2、3構成第二層分類器的節(jié)點;節(jié)點4是節(jié)點2的子節(jié)點,節(jié)點5、6、7是節(jié)點3的子節(jié)點,節(jié)點5、6、7之間互為兄弟節(jié)點,節(jié)點4、5、6、7是第三層分類器的節(jié)點。在檢測時,只要某個待檢區(qū)域通過了某一個節(jié)點的測試就可以進入其子節(jié)點進行檢測,而被本節(jié)點拒絕的待檢區(qū)域則進入本節(jié)點的下一兄弟節(jié)點進行檢測,若某一待檢區(qū)域被所有的兄弟節(jié)點拒絕,則該區(qū)域就不再進行檢測,而被標記為非人臉區(qū)域,而只有通過了最后一層的節(jié)點檢測的待檢區(qū)域才被最終標記為人臉區(qū)域。
[0078]在改進Haar分類器的AdaBoost算法時候,需要對正樣本點進行聚類分析,K均值算法是一種經(jīng)典的聚類算法。利用K均值改進AdaBoost算法的具體流程是:
[0079](I)通過Adaboost方法構造出滿足要求的強分類器;
[0080](2)獲得強分類器所使用的特征集合,去掉重復的特征以后計算每個正樣本對應的特征向量;
[0081](3)所有正樣本的特征向量構成一個向量集合,根據(jù)特征向量的分布利用K均值將正樣本集劃分成k個子集合。為了縮短訓練的時間,正樣本點被劃分的最大類別數(shù)是5,即k=5,K均值算法會在選擇一種劃分使各樣本點到中心點距離之和最小的劃分數(shù));
[0082](4)若每個子集合中的特征向量個數(shù)達到了要求的最小樣本數(shù),則利用這幾個子集合的正樣本和所有的負樣本構成樣本集重新利用經(jīng)典的Adaboost算法訓練強分類器;
[0083](5)若通過子集合訓練的強分類器其綜合性能比由完整的正樣本集合訓練出來的強分類器性能要高,則將其加入層疊分類器中;否則將開始的強分類器加入到層疊分類器中。
[0084]對于人臉跟蹤過程,雖然已有的Cam-Shift算法相比其他算法在進行人臉跟蹤時效果要好,但對于快速運動的人臉其效果仍不理想。經(jīng)過分析發(fā)現(xiàn)主要是因為Cam-Shift算法本質(zhì)上是一種鄰域極值搜索算法,若人臉運動較快,則下一幀時人臉的實際位置極有可能超出了 Cam-Shift算法搜索的范圍。而Kalman濾波器是一種在導航與制導等目標跟蹤領域廣泛使用的算法,其特點是對線性運動或近似線性運動的物體跟蹤效果較好。雖然在大的時間范圍內(nèi)人臉的運動不是線性運動(不可以直接由之前人臉的運動狀態(tài)推算出現(xiàn)階段的人臉運動狀態(tài)),但在較短的時間內(nèi)人臉運動仍然可以用線性方程組建模。基于這一原理,可以引入Kalman濾波器對Cam-Shift人臉跟蹤算法進行改進。具體來說就是在計算人臉的初始位置時,利用卡爾曼濾波器對搜索的初始位置進行預測(而不是以上一幀中人臉的位置為初始位置),從預測的位置開始搜索。通過這種改進,可以提高人臉快速運動情況下的跟蹤性能。改進后算法的跟蹤效果圖如圖6所示,從圖中可以看出在Al到A2點處,僅使用Cam-Shift算法目標已經(jīng)丟失,但使用改進后的人臉跟蹤算法在這段區(qū)間內(nèi)目標卻沒有丟失。
[0085]基于Kalman濾波器改進的Cam-Shift人臉跟蹤算法其算法流程是:
[0086](I)通過人臉檢測確定人臉的初始位置(xO,yO),其中xO表示人臉中心在圖像中的橫坐標,yO表示人臉中心位置在圖像中的縱坐標;
[0087](2)初始化Kalman濾波器,其人臉初始位置為(xO, yO),人臉運動的初始速度為(0,0);
[0088](3)使用建立的Kalman濾波器預測人臉下一時刻的狀態(tài)(xk, yk, v_xk, v_yk),其中(xk, yk)表示預測的下一時刻人臉的位置,(v_xk, v_yk)表示預測的人臉下一時刻的速度,時間間隔為視頻中兩幀之間的時間間隔,當幀率是25fbps是,時間間隔為0.04s ;
[0089](4)以預測的狀態(tài)值中的(xk,yk)作為起始位置,判斷該起始位置是否超出圖像邊緣,若超出則返回(I)重新進行人臉檢測,若未超出,則運行Cam-Shift算法獲得人臉位置的測量值(xk_0, yk_0);
[0090](5)通過當前的測量位置和上一幀的測量位置更新人臉運動的速度向量(v0_xk, y0_yk),運行Kalman濾波器獲得修正后的狀態(tài)值(-UV1K)3".[0091](6)返回步驟(3),重復以上跟蹤過程。
[0092]在程序設計方面,預處理子模塊10、人臉定位子模塊20、人臉識別子模塊30三個任務彼此之間以并行方式運行,實現(xiàn)這種任務級并行的方法包括多線程或多進程模型。多線程模型各任務之間通信方便,但任務之間的同步問題則比較復雜;多進程模型各任務之間同步問題相對簡單,但需要采用特殊的方法來實現(xiàn)進程間的通信??紤]到人臉識別算法各任務之間通信比較頻繁,在本實施例中采用多線程模型。另外,使用海思公司提供的多媒體處理套件MPP來輔助軟件開發(fā),MPP套件可以充分利用海思SOC芯片的硬件資源,提高軟件開發(fā)的效率。
[0093]整個人臉識別被劃分為主控線程、視頻輸入與預處理子線程、人臉定位子線程,人臉識別子線程。各個線程的功能和實現(xiàn)方式如下所示:
[0094]主控線程,是整個程序的入口點,其主要完成的任務包括:設置程序的運行環(huán)境、加載設備驅(qū)動,創(chuàng)建任務緩沖區(qū),安裝信號處理器,最后通過系統(tǒng)接口 pthread_create O創(chuàng)建三個子線程。
[0095]視頻輸入與預處理子線程,負責從USB 口獲取視頻流,獲取視頻流的過程是一個阻塞操作。根據(jù)視頻流的不同格式選擇是否需要解碼和格式轉(zhuǎn)換。對于獲取的視頻數(shù)據(jù),對其每一幀圖像都執(zhí)行以下預處理操作:色彩空間轉(zhuǎn)換,圖像大小歸一化,直方圖修正,圖像濾波,圖像銳化。預處理后將視頻數(shù)據(jù)存放在視頻緩沖區(qū)中。
[0096]人臉定位子線程,包括人臉檢測和人臉跟蹤,其主要任務是從視頻流中盡可能快地獲取滿足要求的正面人臉圖像。主要流程包括:獲取人臉檢測與跟蹤的參數(shù)(包括人臉檢測的掃描步長、掃描窗尺度變換系數(shù)、最小掃描尺寸、分類器文件路徑、候選區(qū)合并規(guī)貝U,人臉跟蹤的失效時間與采用的失敗標識策略);使用分類器文件初始化人臉檢測器對象detector,分類器文件是使用改進后的訓練算法對5000個人臉樣本訓練出來的;從視頻緩沖區(qū)讀取一幀視頻數(shù)據(jù)并調(diào)用人臉檢測方法detector, facedetect O進行檢測;使用detector, facedetect ()檢測出來的位置初始化卡爾曼濾波器對象kalman_f ilter,人臉的初始運動速度為O ;利用卡爾曼濾波器對象估計人臉圖像在下一幀中的位置;讀取下一幀視頻數(shù)據(jù),并以卡爾曼濾波器預測的位置為起始位置運行自適應均值濾波算法facetrack(kalman_filter, (Rect*)position, (Image*) image)獲得人臉的測量位置并更新卡爾曼濾波器的狀態(tài),函數(shù)中Pisition是人臉待檢區(qū)域變量的指針,image是待檢圖像在內(nèi)存中存儲位置的指針;判斷跟蹤到的人臉大小是否達到指標,若達到,則將其人臉圖像復制到待檢人臉圖像緩沖區(qū)中,程序流程返回到人臉檢測的過程,若未達到,則判斷跟蹤的幀數(shù)是否達到上限或者跟蹤失敗標志被設置,若滿足條件則結(jié)束跟蹤過程重新進行人臉檢測,否則繼續(xù)讀取視頻數(shù)據(jù)并運行人臉跟蹤算法。算法中判定人臉的大小是為了濾除掉比較小的人臉圖像,因為人臉圖像太小,則包含的個性化信息較少,在人臉判定過程中容易出現(xiàn)誤判。
[0097]人臉識別子線程,主要包括兩個任務:器官定位與人臉大小歸一化、人臉判定。在本實施例中,器官定位主要定位的是眼睛、嘴巴、鼻子、臉部輪廓線和發(fā)跡線,根據(jù)這些特征的位置將其他邊緣區(qū)域去除,以避免背景信息對人臉判定過程的干擾,這一過程稱為人臉分割。在本實施例中,人臉大小歸一化主要通過線性插值法來實現(xiàn)。人臉判定的過程利用人臉的局部器官特征和總體灰度分布特征構造特征向量,并通過傳統(tǒng)的Fisher準則將其投影到易分類的向量空間,然后用馬氏距離度量其和目標特征庫中人臉特征的相似度,最終輸出相似度矩陣。
[0098]本發(fā)明提出了實時人臉識別模塊的硬件組成、算法框架以及人臉識別中涉及的一些關鍵技術環(huán)節(jié)的改進。[0099]本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領域的技術人員當可根據(jù)本發(fā)明做出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明所附的權利要求的保護范圍。
【權利要求】
1.一種實時人臉識別系統(tǒng),其特征在于,包括: 預處理子模塊,用于獲取視頻圖像,并對該視頻圖像進行預處理,以增強視頻圖像的對比度; 人臉定位子模塊,用于從預處理后的所述視頻圖像中獲取正面人臉圖像; 人臉識別子模塊,用于提取正面人臉圖像中的特征,并將該特征與目標人臉庫中的人臉特征進行比較,獲取相似度。
2.根據(jù)權利要求1所述的實時人臉識別系統(tǒng),其特征在于,所述人臉定位子模塊包括: 人臉檢測模塊,用于加載人臉Haar分類器文件,從所述視頻圖像中檢測人臉,獲得人臉的初始位置; 人臉跟蹤模塊,用于根據(jù)人臉的初始位置,利用膚色模型建立膚色直方圖,并利用Cam-Shift算法進彳了人臉跟蹤。
3.根據(jù)權利要求2所述的實時人臉識別系統(tǒng),其特征在于,所述人臉檢測模塊對人臉Haar分類器文件使用非對稱決策樹代替原有的決策樹構造弱分類器的方式提高分類器中每個弱分類器的性能。
4.根據(jù)權利要求2所述的實時人臉識別系統(tǒng),其特征在于,所述人臉檢測模塊對人臉Haar分類器文件通過如下方式改進分類器的結(jié)構: 使用AdaBoost算法 組合多個弱分類器構成強分類器后,以強分類器所使用的特征向量為依據(jù),利用K均值對正樣本樣本點進行聚類,并對聚類出的子類分別構造子類分類器,將子類分類器加入層級分類器,以子類分類器為兄弟節(jié)點,構成最終的樹形層級分類器。
5.根據(jù)權利要求2、3或4所述的實時人臉識別系統(tǒng),其特征在于,所述人臉跟蹤模塊以如下方式改進人臉跟蹤算法: 利用卡爾曼濾波器預測人臉圖像在整個圖像中的下一位置,并以預測的位置作為自適應均值漂移算法搜索的初始位置。
6.根據(jù)權利要求1、2、3或4所述的實時人臉識別系統(tǒng),其特征在于,所述實時人臉識別系統(tǒng)通過SOC芯片實現(xiàn)。
7.一種實時人臉識別方法,其特征在于,包括: 步驟1,獲取視頻圖像,并對該視頻圖像進行預處理,以增強視頻圖像的對比度; 步驟2,從預處理后的所述視頻圖像中獲取正面人臉圖像; 步驟3,提取正面人臉圖像中的特征,并將該特征與目標人臉庫中的人臉特征進行比較,獲取相似度。
8.根據(jù)權利要求7所述的實時人臉識別方法,其特征在于,所述步驟2中,包括: 步驟21,加載人臉Haar分類器文件,從所述視頻圖像中檢測人臉,獲得人臉的初始位置; 步驟22,根據(jù)人臉的初始位置,利用膚色模型建立膚色直方圖,并利用Cam-Shift算法進行人臉跟蹤。
9.根據(jù)權利要求8所述的實時人臉識別方法,其特征在于,所述步驟21中,包括: 對人臉Haar分類器文件使用非對稱決策樹代替原有的決策樹構造弱分類器的方式提高分類器中每個弱分類器的性能。
10.根據(jù)權利要求8或9所述的實時人臉識別方法,其特征在于,所述步驟21中,包括:對人臉Haar分類器文件通過如下方式改進層級分類器的結(jié)構: 使用AdaBoost算法組合多個弱分類器構成強分類器后,以強分類器所使用的特征向量為依據(jù),利用K均值對正樣本樣本點進行聚類,并對聚類出的子類分別構造子類分類器,將子類分類器加入層級分類器,以子類分類器為兄弟節(jié)點,構成最終的樹形層級分類器。
11.根據(jù)權利要求8或9所述的實時人臉識別方法,其特征在于,所述步驟22中,包括:利用卡爾曼濾波器預測人臉圖像在整個圖像中的下一位置,并以預測的位置作為自適應均值漂移 算法搜索的初始位置的方式改進人臉跟蹤算法。
【文檔編號】G06K9/62GK103902960SQ201210587549
【公開日】2014年7月2日 申請日期:2012年12月28日 優(yōu)先權日:2012年12月28日
【發(fā)明者】陳攀, 徐學淼, 蘇威積, 肖鵬, 呂英, 申屠燕東, 范雄濤, 王雅云, 謝小權, 申世光, 袁曉光, 葉東升, 王清理, 任強, 裴彥杰, 何毅, 白松, 林秀春, 鐘松延, 趙薇, 董博, 黃敏君, 張力, 杜麗, 孟飛, 張春杰, 黃傳鶴 申請人:北京計算機技術及應用研究所, 北京航天愛威電子技術有限公司