基于VC++.NET和OPENCV的身份識別系統開發
首先使用Adaboost方法檢測到視頻流中的人臉,然后將SIFT特征提取算法應用到人臉特征的提取環節中,提取出人臉的旋轉、縮放、平移和光照不變性SIFT特征。通過將檢測到的人臉的SIFT特征和人臉庫中的人臉SIFT特征進行匹配,找出匹配程度最大的對應的類別,即為匹配結果。整個系統用Visual C++.net 2008和OPENCV開發。
人臉識別涉及圖像處理、模式識別、計算機視覺等多個研究領域,是生物特征鑒別技術的一個主要方向,具有十分廣泛的應用前景,其中,基于人臉視頻流的身份識別是人臉識別中一個重要的分枝,在考勤和門禁系統中,該方法要求有較低的錯誤拒絕率(FRR)和零的錯誤接受率(FAR),在商業應用上尤其具有相當大的優勢。
人臉識別技術中一個重要的環節是特征提取。比較常見的人臉特征提取方法有EigenFace、FisherFace和非線性流形及其改進[1]。但是,EigenFace 是基于重建誤差最小,無法揭示數據的局部結構,對光照、表情等比較敏感。
FisherFace屬于有監督識別方法,一般先采用PCA 降維,然后利用線性判別分析(LDA),尋找使類間距和類內距比值最大化的投影方向,識別效果好于EgienFace。非線性流形法是最近提出的研究成果,主要有:等距映射(Isomap)、局部線性嵌入(LLE)和拉普拉斯特征映射(Laplacian EigenMaps)]等。
但這些方法都沒有明晰的投影矩陣,很難直接提取新樣本的特征,而且會出現小樣本問題,所以一般不能直接用于人臉識別領域。文獻[2]利用Adaboost特征提取人臉,取得了較好的效果,但如何識別人臉確沒有解決。
1 SIFT特征提取算法簡述
SIFT(Scale Invariant Feature Transform)特征提取方法用一個128維的向量來表示特征點。其基本思想是通過高斯核進行一系列的濾波來提取圖像的尺度空間中的穩定點[3]。
首先,原始圖像通過一系列的具有不同尺度因子的高斯核函數進行平滑濾波,并將每兩個相鄰尺度的平滑濾波后的圖像相減來計算高斯差分圖像。
其次,在尺度空間中,所有的局部極值通過比較其周圍鄰域的8個像素和相鄰尺度對應位置的周圍領域,總共26個像素而產生,見圖1。最后,這些極值點被作為候選關鍵點,通過它們的位置和尺度度量其穩定性,過濾掉具有低對比度和處于邊緣上的點,得到穩定的關鍵點。每一個關鍵點最終是一個128維的向量。
通過這種方式所獲取的特征點具有旋轉、縮放和平移不變性,最后,再將特征向量的長度歸一化,則可以進一步去除光照變換的影響。
圖1: 尺度空間表示
2 SIFT特征提取方法用于人臉識別的可行性及相關步驟
對于不同的人臉照片,其包含相似或相同SIFT特征的數量是非常少的,如圖2所示:
圖2: 人臉SIFT特征的匹配
圖3中共有4對人臉,上下兩張人臉進行對比,第1列到第3列的上下兩張臉均不是一個人的,其中第1列無相同的SIFT特征,第2、3列只有一個SIFT特征匹配,第4列為同一個人臉的不同光照和不同拍攝角度下的照片,卻包含了6個匹配的SIFT特征。
可見,相同的人臉其SIFT特征總體比較接近,不同的人臉,其SIFT特征差別較大。因此SIFT特征可以用于人臉識別。
3 系統開發
OPENCV(Open Source Computer Vision)近年來逐漸成為一個科學研究和商業應用的基礎開發平臺,它由著名的Inter公司資助,對于所有的商業和非商業應用均許可,因此本文使用Visual C++.net 2008和OPENCV編寫整個系統。
3.1 身份識別與考勤系統應具有的特點
員工考勤以及重要工作場合的門禁系統中,身份識別是一個必須解決的問題。基于視頻流的考勤或身份識別系統采用人機對話的方式,使用方便,被認為是一種較人性化的措施,系統具有如下要求:
1)對于人臉庫中存在的人臉,應該具有唯一準確性。在接受其身份的同時,又不會將其誤識別為人臉庫中的其他人。
2)對于人臉庫中不存在的人臉,應該準確的不予識別。
基于以上幾點,身份識別和考勤系統要求具有盡可能低的錯誤拒絕率(FRR)和零的錯誤接受率(FAR)。在傳統的人臉識別方案中,無論是特征臉還是Fisher臉,還是基于非線性流形的人臉識別方法,其FAR都很難做到為零,這明顯的不符合本身份識別和考勤系統的要求。而SIFT特征采用128維特征向量來表示,在不同人的臉上很難找到匹配的SIFT特征,因此,這里使用基于SIFT特征的身份識別方案。
3.2 身份識別系統的開發
要想在視頻流中準確的找到并提取人臉所在的區域,需要性能良好,速度很快的人臉檢測器。這里,我們使用了Adaboost特征檢測器[2]5]。同其他的人臉檢測算法相比, Adaboost人臉檢測器的檢測速度和檢測率均非常高。
對Adaboost檢測到的人臉圖片提取出SIFT特征后,為了身份識別,需要將提取到的SIFT特征和庫中的SIFT特征進行匹配,空間特征點最近鄰匹配操作的一種比較實用的索引方法是KD-Tree方法[4],他不僅適用于k-NN-Search問題,而且其空間復雜度與數據集的維數成線性關系。文中為了保證匹配的速度,在開始匹配前就將這些SIFT特征加載到KD-Tree中。
身份識別與考勤系統的運行步驟如下:(1)系統啟動,并以多線程方式啟動識別線程。(2)加載訓練樣本的SIFT特征集,將所有SIFT特征集用KD-Tree建立索引。(3)開啟視頻捕捉。(4)使用Adaboost特征檢測器進行人臉檢測。(5)對檢測到的人臉提取其SIFT特征,并和2)步加載的SIFT特征進行匹配。匹配方法為最近鄰NN匹配。(6)最大的匹配對應的類別即為識別結果,如果最大匹配小于某個閾值T,則可認為人臉庫中不存在該人臉,程序轉到4)繼續執行。
為了提取SIFT特征,文中還使用了令一個著名的開放源代碼的GSL庫。在人臉檢測方面,程序直接使用了由OPENCV提供的Adaboost特征檢測器[6]。
當程序檢測到合法用戶時,其畫面及提示信息如圖3所示。
圖3: 身份識別成功
圖3中,左圖為視頻捕捉窗口;右圖上為在視頻捕捉窗口中捕捉到的人臉,按子像素精度從左圖中提取,大小固定為180×200(也是樣本庫中樣本的大小);右圖下為在人臉庫中預先存儲的標準人臉中的任何一個。識別和考勤系統還同時在后臺記錄了和考勤有關的信息。圖4為非法用戶企圖欺騙識別系統的過程截圖,截圖中時間已經過去了將近10分鐘,其欺騙企圖仍舊沒有成功。
圖4: 非法用戶的欺騙企圖
在算法的實時性方面,這里設定工作線程每25ms從攝像頭中提取一幀圖片,人臉的檢測和識別所花費的時間應少于25ms,系統可以在CPU1.6Hz,內存512兆的聯想筆記本上的正常運行24小時以上,表明文中所用到的算法是有效的。
4 結論
文中利用Visual C++.NET 2008編寫系統,由于系統需要大量的圖像處理知識和運算,因此使用了OPENCV庫。本文創新點在于:1、首次將SIFT用于身份識別,并得到了較好的效果;2、結合Visual C++.NET 2008和OPENCV的強大功能,編寫了SIFT特征提取算法和特征分類算法,Visual C++.NET 2008和OPENCV的結合,既保證系統具有良好的人機界面,又保證系統具有C++語言的運行速度。
(摘編自《電氣技術》,原文標題為“基于VC++.NET和OPENCV的身份識別系統開發”,作者為崔世林、田斐。)
責任編輯:售電衡衡
-
權威發布 | 新能源汽車產業頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產業,設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
探索 | 既耗能又可供能的數據中心 打造融合型綜合能源系統
2020-06-16綜合能源服務,新能源消納,能源互聯網
-
新基建助推 數據中心建設將迎爆發期
2020-06-16數據中心,能源互聯網,電力新基建 -
泛在電力物聯網建設下看電網企業數據變現之路
2019-11-12泛在電力物聯網 -
泛在電力物聯網建設典型實踐案例
2019-10-15泛在電力物聯網案例
-
權威發布 | 新能源汽車產業頂層設計落地:鼓勵“光儲充放”,有序推進氫燃料供給體系建設
2020-11-03新能源,汽車,產業,設計 -
中國自主研制的“人造太陽”重力支撐設備正式啟運
2020-09-14核聚變,ITER,核電 -
能源革命和電改政策紅利將長期助力儲能行業發展
-
探索 | 既耗能又可供能的數據中心 打造融合型綜合能源系統
2020-06-16綜合能源服務,新能源消納,能源互聯網 -
5G新基建助力智能電網發展
2020-06-125G,智能電網,配電網 -
從智能電網到智能城市