楊鳴鳴
(杭州電子科技大學(xué) 計(jì)算機(jī)學(xué)院,浙江 杭州 310000)
摘要:該文主要實(shí)現(xiàn)了在嵌入式系統(tǒng)上的人臉識別。采用PCA對圖像數(shù)據(jù)進(jìn)行降維,然后利用最短歐氏距離、支持向量機(jī)(Support Vector Machine,SVM)和BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了分類。在嵌入式系統(tǒng)上,沒有使用QT、OpenCV等占用空間大的工具,而使用自己編寫的C語言,以及Linux內(nèi)核,節(jié)省了空間,并且處理過程中使用了BMP圖片,稍微增加了存儲空間,但是運(yùn)算簡單,處理速度較快。
關(guān)鍵詞:PCA;SVM;神經(jīng)網(wǎng)絡(luò);嵌入式系統(tǒng);人臉識別
0引言
假如汽車上安裝了嵌入式人臉識別系統(tǒng),通過人臉識別才能啟動(dòng)汽車,那么安全系數(shù)就提高了很多。過去,大多數(shù)人借助于OpenCV等方式在嵌入式設(shè)備上進(jìn)行人臉識別,大大增加了嵌入式系統(tǒng)的負(fù)擔(dān),本文通過使用主成分分析(Principal Component Analysis,PCA)、支持向量機(jī)(Support Vector Machine,SVM)、神經(jīng)網(wǎng)絡(luò)等算法,拋開QT圖形界面、OpenCV等工具,僅借助LibSVM庫,以及C語言實(shí)現(xiàn)了一個(gè)完整的嵌入式人臉識別系統(tǒng)。盡管PCA以及SVM都可以實(shí)現(xiàn)人臉識別,但是本文實(shí)現(xiàn)了一種將PCA、SVM與神經(jīng)網(wǎng)絡(luò)相結(jié)合的方法,在滿足準(zhǔn)確率要求的情況下,將運(yùn)行時(shí)間降到最低。
1概述
人臉是人的主要身份信息。隨著人臉識別技術(shù)的發(fā)展,用機(jī)器來識別人臉已經(jīng)實(shí)現(xiàn),目前的人臉識別方法主要分為以下幾類:
?。?)基于幾何特征的方法,最早是由BLEDSOE于1966年提出,后來KANDE做出了一些改進(jìn),然而識別率也僅有45%~75%;
?。?)基于模型的方法,使用的模型主要為HMM隱馬爾可夫模型[1],它的識別效果較好;
(3)基于統(tǒng)計(jì)的方法,特征臉[2]的方法是由TURK M和PENTLAND A最早提出,一種新的人臉識別思路由此開始。后來在此基礎(chǔ)上有一系列的改進(jìn)方法[34],基于頻域的方法GABOR[5]小波變換也引入到人臉識別領(lǐng)域;基于支持向量機(jī)[67]的人臉識別,識別率很好。
本文主要研究使用PCA、SVM、神經(jīng)網(wǎng)絡(luò)方法在嵌入式系統(tǒng)上實(shí)現(xiàn)人臉識別。
2PCA及降維
在ORL人臉數(shù)據(jù)庫中,有40個(gè)人的400張像素為92×112的圖片,把每一張照片放到一個(gè)行向量上,那么將得到10 304維的數(shù)據(jù),這對于識別來說實(shí)在是太大了,因此需要對它進(jìn)行降維處理。
KIRBY M[8]等人使用KL變換對人臉圖像進(jìn)行了降維處理,把一張人臉圖像當(dāng)做一個(gè)高維的向量,人臉圖像的每個(gè)像素都是這個(gè)高維向量的一個(gè)元素,接著使用KL變換把圖像向量映射到一個(gè)特征空間。直到1991年P(guān)ENTLAND A[9]首先將PCA用在了人臉識別上,進(jìn)而引出了“特征臉”。
大部分研究都是使用OpenCV[10]、MATLAB[11]等工具在嵌入式設(shè)備上進(jìn)行人臉識別,然而這些工具對于嵌入式系統(tǒng)來說是非常消耗存儲資源的。因此筆者寫了一個(gè)精簡PCA的程序代碼。
編寫代碼的步驟如下:
(1)讀取一張圖片的數(shù)據(jù);
(2)先跳過bmp的前54 B的頭文件部分,接下來的是顏色數(shù)據(jù);
(3)轉(zhuǎn)換為灰度圖,連續(xù)的3 B構(gòu)成了一個(gè)像素,那么該像素的灰度值為GRAY=(R×30+G×59+B×11)/100;
(4)把測試圖片(50張)的灰度值存為一個(gè)10 304×50的矩陣中;
(5)利用Householder方法對矩陣進(jìn)行變換,進(jìn)而求出特征值和特征向量;
(6)把測試圖像投影到特征空間,將歐式距離最小的作為識別結(jié)果。
3SVM
在20世紀(jì)70年代,BOSER B E等人[12]開始研究統(tǒng)計(jì)學(xué)習(xí)理論,SVM[13]是基于統(tǒng)計(jì)學(xué)習(xí)理論的一種機(jī)器學(xué)習(xí)方法,它通過尋求結(jié)構(gòu)化風(fēng)險(xiǎn)最小來達(dá)到提高學(xué)習(xí)機(jī)泛
化能力,實(shí)現(xiàn)經(jīng)驗(yàn)風(fēng)險(xiǎn)和置信范圍的最小化。
本文中使用臺灣大學(xué)林智仁[14]教授開發(fā)的LibSVM庫,在Linux上使用非常方便。步驟如下:
(1)利用PCA降維獲得的數(shù)據(jù),然后將它修改為LibSVM所要求的格式;
(2)分別對訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)進(jìn)行SCALE;
(3)對于SCALE后的測試數(shù)據(jù)進(jìn)行分類。
4神經(jīng)網(wǎng)絡(luò)
1943年,首先由McCulloch和Pitts提出MP模型后,一直到今天,神經(jīng)網(wǎng)絡(luò)經(jīng)過幾十年的發(fā)展,取得了很大的發(fā)展,本次試驗(yàn)中使用BP神經(jīng)網(wǎng)絡(luò)對人臉數(shù)據(jù)進(jìn)行處理,經(jīng)過實(shí)驗(yàn)發(fā)現(xiàn)在一定量人臉的情況下,訓(xùn)練耗時(shí)較少,識別時(shí)間也較短,如表1所示。
5嵌入式相關(guān)移植
本文基于S3C2400的嵌入式設(shè)備,使用Linux操作系統(tǒng)在JZ2440上實(shí)現(xiàn)了一套完整的嵌入式人臉識別系統(tǒng), 由于嵌入式攝像頭的安裝位置相對固定,因此把主要精力放在了人臉識別的部分。主要分為以下兩個(gè)步驟:
?。?)圖片采集。使用攝像頭獲取動(dòng)態(tài)的圖片,當(dāng)需要識別時(shí),只需要觸摸顯示屏,就可以把圖片保存下來。
?。?)人臉識別。此時(shí)對圖片進(jìn)行預(yù)處理,然后使用PCA+歐式距離或者PCA+SVM等方法進(jìn)行識別。
6實(shí)驗(yàn)結(jié)果分析
本文分別使用PCA和SVM等方法,在ORL人臉圖像庫(如圖1所示),與本實(shí)驗(yàn)室人員的人臉圖像庫(如圖2所示)進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)證明識別效果很好。ORL人臉庫有40個(gè)人,每人有10張照片,本文使用一個(gè)人的前5張照片作為實(shí)驗(yàn)樣本,后5張作為測試樣本。如圖1所示,1~5為一個(gè)人的訓(xùn)練樣本照片,對應(yīng)的測試樣本是10 001~10 005。同樣的訓(xùn)練樣本6~10對應(yīng)的測試樣本是10 006~10 010。
為了驗(yàn)證此方法的通用性,還使用了一些本實(shí)驗(yàn)室人員的人臉圖像,識別率仍然可以達(dá)到很好的識別效果(如表2所示)。
7結(jié)論
經(jīng)過試驗(yàn)發(fā)現(xiàn),在ORL人臉圖像庫使用PCA+最近鄰識別率最高可達(dá)94%,而使用PCA+SVM的識別率可以達(dá)到98%,而使用BP神經(jīng)網(wǎng)絡(luò)時(shí),本文前期訓(xùn)練耗時(shí)較多,且實(shí)驗(yàn)過程中發(fā)現(xiàn)為了達(dá)到更高的準(zhǔn)確率不得不增加神經(jīng)網(wǎng)絡(luò)輸入的維度,這樣就更增大了神經(jīng)網(wǎng)絡(luò)的耗時(shí),并且實(shí)驗(yàn)結(jié)果發(fā)現(xiàn)實(shí)現(xiàn)的準(zhǔn)確率并沒有SVM高,因此本文最終選擇PCA+SVM作為嵌入式人臉識別的實(shí)驗(yàn)方法。
參考文獻(xiàn)
?。?] SAMARIA F, YOUNG S. HMM based architecture for face identification[J]. Image & Vision Computing, 1994, 12(8):537-543.
[2] TURK M, PENTLAND A. Eigenfaces for recognition[J]. Journal of Cognitive Neuroscience, 1991, 3(1):71-86.
?。?] HONG Z Q. Algebraic feature extraction of image for recognition[J]. Pattern Recognition, 1991, 24(3):211-219.
[4] NAKAMURA O, MATHUR S, MINAMI T. Identification of human faces based on isodensity maps[J]. Pattern Recognition, 1991, 24(3):263-272.
?。?] LIU D H, LAM K M, SHEN L S. Optimal sampling of Gabor features for face recognition[J]. Pattern Recognition Letters, 2004, 25(2):267-276.
?。?] PHILLIPS P J. Support vector machines applied to face recognition[J]. Advances in Neural Information Processing Systems, 2001, 11(7):803-809.
?。?] JONSSON B K, MATAS J K J, LI Y. Learning support vector vectors for face verification and recognition[C]. IEEE International Conference on Automatic Face and Gesture Recognition, 2000.
?。?] KIRBY M, SIROVICH L. Application of the karhunenloeve procedure for the characterization of human faces[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 1990, 12(1):103-108.
?。?] TURK M, PENTLAND A. Eigenfaces for recognition[J]. Journal of Cognitive Neuroscience, 1991, 3(1):71-86.
?。?0] 王威. 基于ARM9硬件平臺的人臉識別系統(tǒng)設(shè)計(jì)與研究[D]. 成都:電子科技大學(xué), 2013.
[11] 趙文琦. 基于ARM的嵌入式人臉識別系統(tǒng)研究實(shí)現(xiàn)[D]. 哈爾濱:哈爾濱工程大學(xué), 2011.
?。?2] BOSER B E, GUYON I M, VAPNIK V N. A training algorithm for optimal margin classifiers[C]. Proceedings of the 5th Annual Workshop on Computational Learning Theory, 1992(7):144-152.
[13] BURGES C J C. A tutorial on support vector machines for pattern recognition[J]. Data Mining & Knowledge Discovery, 1998, 2(2):121-167.
?。?4] CHANG C C, LIN C J. LIBSVM: a library for support vector machines[J]. Acm Transactions on Intelligent Systems & Technology, 2011, 2(3):389-396.