李穎聰 陳貝文 廖曉芳 朱皓霖 龔焯賢



摘要:人臉識別是目前較為流行的一種生物特征識別技術,其應用廣泛,常被應用于門禁、移動支付等方面。為了彌補其他生物特征識別技術在身份認證方面的缺陷,發展人臉識別技術,文章立足輕量以及實用的思想,開發了一套基于Python+OpenCV的人臉識別系統。該系統分為三個部分,分別是人臉錄入、人臉訓練和人臉識別。文章將會對系統的架構、開發系統所采用的技術等進行詳細的介紹。
關鍵詞:人臉錄入;人臉訓練;人臉識別;LBPH算法
中圖分類號:TP391? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)18-0053-03
開放科學(資源服務)標識碼(OSID):
1 引言
隨著社會的發展和科技的進步,當今世界對于快捷有效的自動身份認證有著迫切的需求。而生物特征識別技術剛好可以有效地解決身份認證的問題。生物特征識別技術是通過采集人的生物特征樣本進行人的身份識別。常見的生物特征識別技術有DNA識別、虹膜識別、指紋識別等[1]。基于DNA的身份驗證是最為準確的身份驗證方法之一。通常情況下,每個體都具有獨一無二的DNA信息,基于此通過DNA身份驗證可以準確地識別出個體的身份。但是由于該方法采集和驗證DNA信息所需的時間成本和金錢成本較高,因此該方法很難得到大規模的推廣與應用。基于虹膜的身份驗證具有唯一性和穩定性,但是該方法所需的設備難以小型化,因此該方法在市面上很難得到推廣。基于指紋的身份驗證具有穩定性和可靠性,但是其對環境的要求較高,手指的清潔度和完整性均會對識別的結果產生影響[2]。相較于上述的生物特征識別技術,人臉識別技術具有快捷、隱蔽、非接觸等特點。人臉識別技術的特點使得人臉驗證具有巨大的應用潛力和研究價值。目前人臉識別技術應用于我們身邊的各個領域,例如基于人臉識別的門禁、基于人臉識別的移動支付、基于人臉識別的車站驗票等[3-4]。為了彌補上述生物特征識別技術的不足,本文將基于Python+OpenCV設計一款人臉識別系統。該系統首先通過攝像頭采集人臉圖像并收集錄入者的身份信息,然后基于LBPH算法[5]對收集到的人臉進行訓練。人臉識別階段,系統通過調用攝像頭對識別者進行人臉匹配,攝像頭先識別出畫面中的人臉,再將其人臉圖像與數據庫中的人臉信息進行匹配,進而確定其身份。
2 人臉識別技術的研究現狀
典型的傳統的人臉識別方法有基于模型的人臉識別方法、基于幾何特征的人臉識別方法、基于代數特征的人臉識別方法、基于局部保值映射的人臉識別方法、基于稀疏表示的人臉識別方法等。傳統的人臉識別方法雖然發展比較成熟,但是仍然存在一定的缺陷:一些傳統的人臉識別方法必須要有人為設定的特征作為幫助,但是人為設定的特征往往會給特征提取和識別過程帶來誤差;在沒有人為干預的情況下,傳統人臉識別方法往往不能自動地從原始圖像中提取有用的特征;傳統人臉識別方法產生的特征被認定為淺層特征,不能從原始圖像中獲取更加深入的高語義特征以及深度特征。由于非線性因素的影響,同時人臉識別自身的復雜性等條件的制約,傳統的人臉識別方法存在的這些缺陷,極大地降低了人臉識別的精度,因此需要更好的方法解決此類問題。
深度學習通過模擬人腦神經系統來處理消息,能夠處理人臉識別中的復雜問題。在海量人臉數據時代,基于深度學習的人臉識別無論在速度還是準確性方面都已經取得了最好的效果,對深度學習的理論研究和人臉識別的實際應用具有重要的意義。基于深度學習的人臉識別方法的流程主要包括了人臉預處理(人臉檢測、人臉對齊、標準化、數據增強等)、特征學習、特征比對等步驟,其中人臉識別的關鍵是特征學習,如何提取強判別性和強魯棒性的特征是人臉識別的研究重點。本系統是在深度學習的基礎上進行開發的。
3 系統結構設計
3.1 系統設計
基于對人臉識別場景和應用的了解后,對系統的結構和內容進行了劃分與構思。由于一般的系統設計都需要圖形化界面、系統功能以及相對應的子系統。因此,我們基于Python的Tinker模塊設計了人臉識別的使用界面,并添加了人臉識別,人臉訓練,人臉錄入以及視頻識別這四大功能。
1)使用界面。系統的使用界面采用單開窗口,即在當前界面下進行功能操作會跳轉到新的窗口,在新的窗口下完成該功能,這使得界面更加整潔,操作更加清晰。在使用界面窗口下會顯示當前時間,并在下拉選項中有使用方法介紹和團隊介紹。剩余的兩個功能選項可以讓用戶自由選擇操作,在完成當前操作可以進行后續的人臉識別功能,使用界面如圖1所示。
2)人臉錄入功能。在進行人臉識別操作前需要完成對被識別人員的信息登記和錄入。在信息錄入部分,對于首次進行信息錄入的人員,錄入信息填寫姓名處需要填寫英文字母縮寫。對于非首次進行信息錄入的人員,重復進行信息錄入會提示信息錄入失敗。錄入完信息后,系統將自動采取被識別者的人臉圖像,并將其保存到數據庫中。人臉錄入以及采集過程如圖2所示。
3)人臉訓練功能。人臉訓練功能是基于LBPH算法對圖像進行特征提取和識別。通過訓練大量的圖片從而提高對圖像的識別的準確率和速度。該功能的主要原理為將一個圖像分為若干個區域,對每一塊區域都進行LBP特征提取,再將這些特征建立為直方圖。這樣操作的目的是縮減模型識別圖像所需要的時間。
4)人臉識別功能。人臉識別功能是系統的主要功能。它是將攝像頭抓拍到的人臉與人臉錄入收集到的存放到數據庫中的人臉進行匹配,若在數據庫中找到與之匹配的人臉用綠框框識人臉并且標注識別的信息;若在數據庫中未找到與之相匹配的人臉則用紅色框框識人臉并且標注為unknownface(陌生人臉)。人臉識別過程如圖3、圖4所示。
5)視頻識別功能。除了對人像采集的識別,系統還可以通過導入視頻文件對視頻畫面中出現的人臉進行識別偵測,并且會自動評判識別出的人臉的相似度。視頻識別結果如圖5所示。
3.2 系統配置信息
本人臉識別系統利用的是Python3語言編寫,OpenCV對應的版本為3.4.1。使用的平臺為Anaconda 3.6版本以及Pythcharm x64位編程軟件。實驗以及執行的電腦環境系統為Windows10操作系統,運行內存為4GB,CPU為Intel(R) Core(TM)i5-8265處理器,處理速度為1.6GHz。
3.3 系統采用技術介紹
本系統設計采用的是OpenCV,全稱Open Source Computer Vision Library,是一個開源的計算機視覺庫,可以從它的官網http://opencv.org免費獲取,作為一款跨平臺的計算機視覺和機器學習軟件庫,它可以運行在Linux、Windows、Android以及Mac Os操作系統上。OpenCV的優點在于它輕量級而且高效——通過一系列C函數和少量C++類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的多種通用算法。
OpenCV主要包含圖像處理、高層用戶交互、機器學習、目標檢測以及視頻等多種模塊。其中,系統主要應用于opencv_video、opencv_objdetect、opencv_imgpro等功能,圖像處理方面主要運用了灰度圖轉換模塊,目標檢測則運用了Haar的各類特征檢測,如對人眼,耳朵,鼻子以及對手的人體檢測。視頻模塊則是采用了目標跟蹤、背景減除等方法來實現對視頻中提取檢測到的人臉圖像。
在本次人臉識別系統中,采用的是LBPH算法(局部二值模式法)。建立在LBPH基礎之上的人臉識別法基本思想如下:首先以每個像素為中心,判斷該像素與周圍像素灰度值大小的關系,并對其進行二進制編碼,從而獲取整幅圖像的LBP編碼圖像[2];再將LBP圖像分為gradx*grady個區域,獲取每個區域的LBP編碼直方圖[6],繼而得到整幅圖像的LBP編碼直方圖。通過比較不同人臉圖像的LBP編碼直方圖,達到人臉識別的目的,其優點是不受光照、縮放、旋轉和平移的影響。
4 系統的設計與實現
4.1 系統執行整體架構
基于輕量實用的考慮,該人臉識別系統分為用戶層、控制層以及執行層。其中,用戶層主要通過用戶一系列的指令來執行對應的功能,并且從中獲取相對應的反饋。控制層主要是將用戶傳達的指令,傳送到下一層即執行層進行操作。執行層則是執行上一層提交的指令,然后將結果反饋給控制層。以上是本系統所執行的整體架構。
4.2 系統邏輯步驟
人臉識別系統主要分為三大結構:人臉錄入、人臉訓練以及人臉識別。其整體的結構邏輯步驟如圖6所示,在人臉識別系統首界面上選擇視頻識別或者人臉錄入后,便可進行對應選擇的后續的訓練模式和人臉識別模式。
圖7為人臉錄入的邏輯步驟。首先,需要輸入錄入者的身份信息。信息錄入成功后,調用本地攝像頭進行人像采集。在此過程中,系統會將圖像轉換成灰度圖進而簡化矩陣,這將有利于提高運算的速度,進而更快地識別出圖像中的人臉。隨后將抓拍檢測到的人臉圖像,并與錄入的信息保存到數據庫中。完成錄入后便可執行訓練模式或繼續進行人臉錄入。
圖8為人臉訓練的邏輯步驟。開始訓練前,系統將采樣的300張人臉圖像作為數據進行圖像訓練。若收集到的圖像少于300張,則訓練失敗。若被抓拍的人臉達到所對應的要求,則系統將進行訓練模式。首先加載抓取成功的圖像并進行灰度轉化,將圖像矩陣簡化,從而提高圖像的計算能力;再將其轉化為NumPy數組,并交給分類器進行進一步的處理。然后通過LBPH算法對數據進行訓練,使機器更好地理解圖像的人臉,從而強化機器對人臉的識別。最后將訓練的結果保存在相應的文件中。
圖9為人臉識別的邏輯步驟。系統通過調用攝像頭對識別者進行人臉匹配,識別出畫面中的人臉后,再將其人臉圖像與數據庫中的人臉信息進行匹配,進而確定其身份。若識別成功,則用綠框框選人臉并標注出識別者的姓名;若識別失敗,則用紅框框選人臉并標注為陌生人臉。
5 結束語
本文設計并實現了一個基于Python+OpenCV的人臉識別系統。該系統可實現對人臉的輕松識別,其輕量便捷,使用簡單易懂。方便移植的特點也使得系統能夠在各個場合上隨時應用。該系統對硬件的要求不高,在大多數的電腦設備上都能快速使用到該系統的各個功能。通過設計該系統的人臉識別、人臉訓練等功能,從而能夠滿足用戶在對人員進出記錄或上班簽到等多種情景的需要,方便其管理。在該系統設計與實現的過程中,也學習到了豐富的知識和經驗。
參考文獻:
[1] 劉永信,李琳莉,巴雅日圖.人臉識別方法綜述[J].內蒙古大學學報(自然科學版),2009,40(4):493-498.
[2] 李成勇,王莎,陳成瑞.基于OpenCV的人臉識別系統設計與實現[J].國外電子測量技術,2021,40(11):168-172.
[3] 莊薪霖.人臉識別方法綜述[J].科技創新與應用,2022,12(2):130-132.
[4] 劉衛凱,郝雅倩,鄭晗,等.人臉識別綜述[J].信息記錄材料,2018,19(7):13-14.
[5] 王振宇.面向人臉識別的特征提取技術應用研究[D].南京:東南大學,2016.
[6] 宋俊芳,馬浩軒,趙海莉,等.基于Haar級聯分類器和LBPH算法的人臉識別[J].軟件,2021,42(4):45-47.
【通聯編輯:謝媛媛】