亢潔++王曉東++潘思璐



摘 要:由于PC環境下的人臉識別系統體積大、成本高、穩定性差、應用局限性大,因此設計了基于VPM642的人臉識別系統。該系統首先將待檢人臉圖片或視頻使用主成分分析算法提取圖像當中的人臉特征,然后用最近鄰法進行分類識別。再通過Visual Studio 2010開發平臺中的C語言進行軟件設計,最終將算法移植到VPM642硬件平臺上,并采取系統的相關優化措施實現DSP上的人臉識別。通過分析測試,優化后系統的運行速度得到了提高,能夠實現人臉識別的實時處理。
關鍵詞:人臉識別;VPM642;PCA;算法優化
中圖分類號:TP391.41 文獻標識碼:A 文章編號:2095-1302(2015)11-00-03
0 引 言
隨著物聯網中各種支撐技術的飛速發展,以生物特征識別技術為主的識別設備已成為門禁系統的新產品并逐步占領了市場。一系列的科技動態顯示,人臉識別市場正在迅猛發展,業界估計,截至2018年,全球生物特征識別市場年復合增長率約為22.9%,其中,人臉識別市場增長約為27.7%,人臉識別將成為未來生物特征識別市場的爆發性增長點[1]。
1 人臉識別系統
一個完整的人臉識別系統主要包括人臉檢測及定位、人臉特征提取及人臉識別比對三部分內容[2],大致流程如圖1所示。首先,我們對輸入的圖像或視頻流的一幀進行檢測并定位出人臉,然后對人臉數據進行人臉特征提取,最后將其與數據庫中的人臉樣本進行匹配,根據所比對的相似值鑒別出身份。
圖1 人臉識別系統的基本流程圖
人臉識別系統通常要求有較高的準確性及實時性,要實現一個高精度的快速人臉識別系統,不僅需要設計的算法簡單有效,還對系統的整體架構及具體實現有較高的要求?,F有的人臉識別系統多是針對PC環境下的應用,大都使用圖像采集卡加PC機進行人臉識別,該方案一是體積大,成本高,不易攜帶[3];二是隨著數據量的加大,PC的數據運算處理能力有限,處理速度直接影響用戶體驗,由此催生了嵌入式人臉識別系統。
隨著數字信號處理器(DSP)的飛速發展,DSP以高速、準確的性能為圖像獲取帶來了新的途徑,而且用硬件來實現人臉圖像識別價格比較低廉。TI公司的DM642是一款功能強大的DSP芯片,它在音視頻和圖像處理方面的強大功能使得DM642在人臉識別嵌入式系統中被廣泛應用。由于直接在DSP上進行算法開發,實現周期較長且調試不便,因此,本文先通過Visual Studio 2010開發平臺中的C語言進行軟件設計,最終移植到DSP上,然后針對DSP芯片硬件特性,借助DSP開發環境CCS軟件進行相關后期優化處理。
基于上述原因,本文選用合眾達公司的SEED-VPM642開發板作為人臉識別系統的實現平臺,該算法首先采用PCA進行特征提取,然后用最近鄰法分類識別,最終將算法移植到該硬件平臺上,從而實現DSP上的人臉識別。
2 硬件開發平臺
SEED-VPM642開發板是合眾達研發的一款可廣泛應用于多路視頻監控、視頻服務器、數字視頻錄像機(DVR)等場合的嵌入式軟硬件平臺。其核心芯片DM642是專用于數字媒體應用的高性能32位定點DSP,工作主頻高達720 MHz,處理性能可達5 760 MIPS,能夠實時實現多路數字視頻/音頻的編碼運算,如:MPEG4、H.264、G.729;4路標準PAL/NTSC制模擬視頻輸入,1路標準PAL或NTSC制模擬視頻輸出;2路可編程切換的RS 232/RS 422/RS 485異步串口,8路數字輸入以及8路數字輸出,可用于控制相關設備;標準的ATA硬盤接口用于本地大容量數據存儲;標準的32位33MHz支持主/從模式的PCI2.2 總線或10/100 M以太網接口,方便實現視頻服務器或網絡攝像機的功能;實時時鐘為數字音/視頻提供實時時基信號。此外,軟硬件加密功能更好地保護開發者的知識產權[4]。
本系統采用合眾達VPM642開發板,通過DSP開發板上的Video Port模塊對人臉圖像進行采集,對圖像進行特征提取之后,將人臉特征送入分類器進行分類識別。該系統的硬件結構框圖如圖2所示。
圖2 系統硬件結構框圖
本系統分兩部分處理。第一部分是視頻流處理:即利用CCD攝像機采集視頻,視頻圖像經過解碼芯片TVP5150解碼后保存為YUV格式,然后進入視頻口VPIN,由EDMA搬運至片上進行處理,處理完后再由EDMA搬運至視頻口VOUT,經編碼芯片SAA7121編碼后輸出到顯示器;第二部分是實時仿真控制:DSP目標板通過SEED-XDS560仿真器與主機相連,主機端則通過CCS 與仿真器建立連接,實現對DSP的實時JTAG仿真。
3 人臉識別算法及軟件設計
PCA(Principal Components Analysis)即主成分分析算法,是一種常用的基于變量協方差矩陣對信息進行處理的方法,由于其在降維和特征提取方面的有效性,在人臉識別領域得到了廣泛的應用。它的基本原理是:把原先的n個特征數目用更少的m個特征取代,新特征是舊特征的線性組合,這些線性組合可最大化樣本方差,盡量使新的m個特征互不相關。從舊特征到新特征的映射中捕獲數據中的固有差異性[5-8]。
本文利用PCA抽取人臉的主要成分,構成特征臉空間,識別時將測試圖像投影到此空間,得到一組投影系數,通過與各個人臉圖像比較進行識別。采用Visual Studio 2010開發平臺中的C語言進行軟件設計,該算法軟件設計的基本流程如圖3所示。
圖3 人臉識別算法的軟件設計流程圖
3.1 訓練階段
該訓練階段分六步進行,如下所示:
(1)選取ORL人臉庫200個樣本作為訓練集,由灰度圖組成,每個樣本大小為112×92。則訓練樣本矩陣為:x=(x1,x2,…,x200)T,其中,向量xi為由第i個圖像的每一列向量堆疊成一列的10 304維列向量。
(2)計算訓練樣本的平均臉。
(3)計算每一張人臉與平均臉的差值。
di=xi-Ψ,i=1,2,…,200
(4)構建協方差矩陣。
(5)求協方差矩陣的特征值和特征向量,構造特征臉空間。協方差矩陣的維數為10 304×103 04,考慮其維數過大,計算量很大,所以采用奇異值分解定理,通過求解ATA的特征值和特征向量來獲得AT的特征值和特征向量。求出ATA的特征值λi及其正交歸一化特征向量Vi。根據特征值的貢獻率選取前p個最大特征向量及其對應的特征向量。求出原協方差矩陣的特征向量,則特征臉空間為:W=(u1,u2,…,up)。
(6)將每一幅人臉與平均臉的差值臉矢量投影到特征臉空間,即:Ωi=wTdi(i=1,2,…,200)。
3.2 識別階段
該識別階段分三步進行,如下所示:
(1)將待識別的人臉圖像Γ與平均臉的差值臉投影到特征空間,得到其特征值向量:ΩΓ=wT(Γ-Ψ)。
(2)用歐氏距離來計算ΩΓ與每個人臉的距離:
。
(3)選取εi的最小值所對應的人臉圖像作為識別結果。
4 算法優化
直接移植的算法程序由于沒有考慮到DSP自身的硬件特點,未能合理利用片上資源,無法發揮DSP強大的并行處理能力,因此執行效率低下,不能滿足實時要求。本節針對 DM642上的片上資源對人臉識別系統進行優化,以實現更快的執行速度,主要使用了4種優化方法[9-11]。
4.1 浮點轉定點
由于在人臉識別系統中,對于處理精度都要求較高,因此程序中廣泛使用浮點類型作為數據處理類型,但是DM642是一款定點處理芯片,處理浮點操作數的速度遠低于處理定點操作數的速度,因此,本文在程序移植的過程中盡可能地將浮點數據轉換為定點數據來減少所耗費的不必要的指令周期。采用定標法,浮點數與定點數Xq轉換關系為:Xq=(int)X*2Q,現以加法為例,float X=1.5 ,Y=2.7 ;Z=4.2 ;
查表可知,Qx=14,Qy=13,Qz=12,則定點加法為:
int x,y,z; long temp;
x= 24576,y= 22118;//均采用向下取整
temp = y<<(Qx|Qy) = 22118<<1 = 44236;
temp = x + temp = 68812;
z = (int)(temp>>(Qx|Qz))=(int)(68812L>>2) =17203;
由于z的Q值為12,所以定點值z=17 203即為浮點值z=17 203/4 096=44.2。
4.2 編譯器優化
內嵌在CCS集成開發環境中的C/C++編譯器提供了多種優化選項,可以完成大量的代碼優化工作,選擇不同的編譯器選項,將產生性能差異很大的匯編代碼。本文的編譯器選項設置為-o3。
4.3 存儲空間的優化
DM642中的二級緩存共享片內RAM,因此增大了Cache,會使得片內可用空間減少。需要將經常使用到的數據放在L2里,此舉會大大提高數據訪問速度。在程序中使用偽指令pragma進行存儲空間的指定。經過實驗測試,本文將256 KB的L2中的128 KB分配給RAM,其余作為Cache使用。
4.4 線性匯編優化
線性匯編語言是一種效率接近匯編語言但編程比匯編語言簡單很多的編程語言。通過CCS中profile下的clock工具找出程序中計算效率低下的代碼,使用線性匯編語言重寫該代碼中的多重循環部分,線性匯編優化器會合理分配寄存器及功能單元的使用,使指令并行性更好,轉換得到的匯編代碼效率更高。
5 測試結果及分析
在硬件系統中移植人臉識別算法后,將ORL人臉庫作為數據集對算法進行了測試。ORL人臉庫共有40個不同年齡、不同種族、不同性別的對象。每個對象有10幅,庫中共計400幅灰度圖像。人臉的表情和細節均有變化,人臉姿態也有變化,深度旋轉和平面旋轉可達20度,人臉尺寸有多達10%的變化。由于該庫中含有大量的比較結果,成為目前使用最廣泛的標準數據庫。
將人臉庫每個人前5張圖片劃分為一個訓練集,后5張劃分為一個測試集。即訓練圖片200張,測試圖片200張時,其實驗結果如圖4所示,其中圖4(a)為CCS軟件仿真結果圖,圖4(b)為測試圖片,圖4 (c)為識別匹配結果圖片,可以看到圖片顯示的是同一個人。
最終由程序當中統計的識別率可達82%,通過改變訓練樣本與測試樣本的數目,識別率如表1所列。
對于大小為112×92像素的一幅ORL人臉圖像,和人臉模板庫進行一對一識別時,優化前完成一次操作需要15 s,根本無法滿足視頻圖像中的嵌入式人臉識別系統的要求,采用上述優化策略后,完成一次操作只需要367 ms,相比于優化前的速度大大提高,基本滿足實時人臉識別的要求。
6 結 語
隨著物聯網技術的不斷發展,人臉識別技術在生活中的應用也越來越廣泛。本文描述了基于PCA的人臉識別算法,并在VPM642硬件平臺上實現該算法,之后針對硬件特性采取了相關優化措施。通過實驗測試證明,本文的人臉識別系統基本能達到人臉識別實時處理的要求。
參考文獻
[1]勾蕊.6年突破200億美元&人臉識別市場大爆發[EB/OL]. http://security.zol.com.cn/381/3811 420.html, 2013-06-24.
[2]錢玥.基于物聯網技術的實名制檢票系統[D].蘇州:蘇州大學,2012.
[3]王昶.TMS320DM6446 DSP車牌識別系統設計與優化[J].中國交通信息化, 2012(5):68-73.
[4]合眾達電子.SEED-VPM642用戶指南(Rev. B) [Z].2005.
[5] Elarian Y, Abdel-Aal R, Ahmad I, et al. Handwriting synthesis: classifications and techniques[J].DocumentAnalysis & Recognition, 2014, 17(4):455-469.
[6]李康順, 李凱, 張文生.一種基于改進BP神經網絡的PCA人臉識別算法[J].計算機應用與軟件, 2014,31(1):158-161.
[7] Zhang S, Zhang C. Maize disease recognition based on local discriminant algorithm[J]. Transactions of the Chinese Society of Agricultural Engineering, 2014, 30(11):167-172.
[8] Xiang X, Yang J, Chen Q. Color face recognition by PCA-like approach[J]. Neurocomputing, 2015:231–235.
[9]朱明, 陸小鋒, 陸亨立,等. AdaBoost人臉檢測算法在DSP上的移植與優化[J]. 計算機工程與應用, 2014,50(20):197-201.
[10]湯達, 牛照東, 王丁禾,等.光學圖像高斯平滑濾波的DSP優化[J]. 激光與紅外, 2013, 43(12):1411-1415.
[11]苑瑋琦, 張麗麗.虹膜識別算法的DSP移植及其優化[J]. 微計算機信息, 2010(26):37-39.