(惠州學院 電子信息與電氣工程學院,惠州 516007)
隨著社會的發展,科學技術的進步,生活水平的提高,人們的生活出現越來越多的安全隱患,諸如盜竊造成財產損失,丟失證件、遺忘密碼等特征物品的缺失給人們帶來不便的同時也暴露出缺陷。但將每個人的生物特征充分運用,比如人臉,指紋等,則可以避免這個問題,這也使生物識別技術越來越受歡迎。而人臉識別技術就是最受歡迎的其中之一。
運用人臉識別的門禁系統,將會更靈活,更安全,更便捷。人臉識別是讓機器思考并進行判斷,是機器視覺領域最具有挑戰性的課題之一。其自身容易推廣、安全性高、方便、準確度高、可以自學等優勢可以應用到公安偵查、安全鑒別、互聯網等領域。人臉識別具有很大的研究價值。因為它的研究涉及到機器視覺、圖像處理、數學等多門學科,常用于各種安全級別較高的系統,對提高系統安全程度和保障安全起到很大的作用。人臉識別的研究對推動系統安全的提升有著至關重要的意義。
1)圖像采集
用Open CV打開攝像頭,在屏幕上出現顯示窗口,在窗口中使用Open CV的畫圖工具畫一個正方形的框,只有當人臉在框內時才能進行人臉檢測、特征點定位、特征提取和比較。當人臉對準在框內時,點擊“樣本采集按鈕”捕捉一幀圖像,然后程序開始執行,提取圖像特征數據,將圖片信息轉換成數據信息存儲在bin文件中。
2)圖像灰度化
在程序中,首先,用一個if語句判斷圖像是否為灰度圖,是單通道圖像則直接使用;若返回的判斷結果為多通道圖像,則用cvtColor函數先把多通道圖像變成單通道的灰度圖后再進行操作。

圖1 灰度化效果圖
3)圖片尺寸縮放
為了縮短計算時間,可以將圖像縮小。圖像縮小有兩種方法:一、使用圖像金字塔改變圖片的像素進行縮放,圖像越小,像素越低;二、用函數resize改變圖像的長和寬進行縮放,但不改變圖像的像素,是真實意義上的縮放,可以避免因像素降低,圖片變模糊引起的識別率降低。
SeetaFaceEngine-master中的Face Detection模塊,基于一種結合經典級聯結構和多層神經網絡的人臉檢測方法[1],采用的漏斗型級聯結構專門針對多姿態人臉檢測而設計,其中運用的由粗到精的設計理念兼顧了精度和速度的平衡。如圖2所示,漏斗型級聯結構在頂部由多個針對不同姿態的快速LAB級聯分類器[2]構成,緊接著是若干個基于SURF特征的多層感知機(MLP)級聯結構,最后由一個統一的同樣基于SURF特征MLP級聯結構來處理所有姿態的候選窗口,整體上呈現出上寬下窄的漏斗形狀。從上到下,雖然隨著層次的遞增,每個層次的分類器及其所采用的特征逐步變得復雜,但可以保留人臉窗口并排除難以與人臉區分的非人臉候選窗口。

圖2 人臉檢測原理
真實場景下的人臉特征點定位會受到姿態、表情、光照和遮擋等因素的影響。為此,SeetaFaceEnginemaster中的FaceAlignment模塊采用一種由粗到精的自編碼器網絡來求解復雜非線性映射過程。如圖3所示,特征點定位模塊從像素低,分辨率較低的圖片開始進行人臉形狀的估算,用自編碼器網絡進行初步的特征點定位,得到第一級圖像S0;然后提高輸入圖片的像素,進行人臉形狀估算,并將S0中定位的特征進行局部提取,輸入到自編碼器網絡中進行對齊,得到S1,此時S1的定位精度就遠超過S0了,然后再選取更高像素的圖片進行人臉形狀估算,將S1中定位的特征進行局部提取,輸入到自編碼器網絡中進行對齊,得到定位精度更高的S2。以此類推,當選取的圖像像素達到最大是,級聯的自編碼網絡級數越多,特征點定位就越準確。

圖3 人臉特征點定位原理
FaceAlignment模塊中的函數PointDetectLandmarks可以在檢測出人臉并傳回人臉區域的基礎上標記人臉的五個(眼睛中心、鼻尖和嘴角)特征點。使用cvCircle函數畫五個點將特征點位置標記出來,可以直觀的看到所標記的地方,并判斷人臉是否在規定區域內,只有人臉在規定的框內才進行下一步的特征提取和比較。該標記可以改變大小,顏色,樣式等。
人臉特征點標記效果如圖4所示。

圖4 特征點定位效果圖
SeetaFaceEngine-master中的FaceIdentification模塊,提取特征向量,將圖片信息轉化成數據信息存儲在二進制的Identification.bin文件中,留做樣本數據。SeetaFace開源的人臉特征提取模塊也是基于卷積神經網絡的,其實現的是深度卷積神經網絡:包含7個卷積層與2個全連接層。該網絡將5×5的卷積核拆分為兩層3×3的卷積核,從而增加了網絡深度,且沒有增加計算量。人臉特征直接采用VIPLFaceNet FC2層的2048個結點的輸出,特征比對可簡單采用Cosine計算相似度,如圖5所示,將數據庫中的人臉進行特征提取后,得到特征向量,數據1,然后將實時檢測的人臉進行特征提取,得到特征向量數據2,然后將得到的向量數據1與向量數據2進行余弦值的比較,通過函數CalcSimilarity比較兩向量的相似度并輸出。最后進行閾值比較,將輸出的相似度值與預先設置好的閾值進行比較,當相似度大于閾值時,判斷識別成功,是管理員或者用戶,若小于閾值則判斷識別失敗。從而達到人臉識別智能門禁的效果。SeetaFace在多數人臉識別場景下均具有良好的性能。

圖5 人臉識別原理
使用SeetaFaceEngine-maste中的Face Detection模塊和FaceAlignment模塊檢測并定位人臉特征點,采用SeetaFaceEngine-master中的FaceIdentification模塊進行人臉特征點提取和比對,可以達到97.1%的識別正確率。速度方面,在單顆Intel i7-3770 CPU上,開源代碼提取一張人臉之特征的時間約為120ms。
1)檢測速度快:人臉檢測+人臉特征點定位+人臉特征點的提取和比對所用時間僅為120ms。
2)檢測準確率高:對人臉的識別率可達97.1%。
3)檢測范圍:該系統可用于平時生活中門禁,也可用于公安偵查等檢驗身份等領域。