陳暉
(中興軟件技術(shù)(濟(jì)南)有限公司 山東省濟(jì)南市 250000)
人臉識別技術(shù)是提取人的面部特征信息對用戶的身份進(jìn)行識別判定,相比指紋、虹膜等生物識別技術(shù),人臉識別技術(shù)體現(xiàn)出非強(qiáng)制性與非接觸性的優(yōu)勢,用戶無需被動配合識別設(shè)備即可完成高效、智能化的身份識別。人臉識別的基本流程包括圖像采集、人臉檢測、圖像預(yù)處理、特征提取及人臉識別等步驟:
首先,系統(tǒng)通過圖像采集設(shè)備獲取包含人臉的照片,拍攝過程中可能會受到拍攝角度、光照環(huán)境、圖像清晰度、圖像大小不統(tǒng)一等客觀因素的影響,系統(tǒng)就需要通過豐富訓(xùn)練的人臉數(shù)據(jù)庫對照片進(jìn)行圖像預(yù)處理,解決拍攝角度不佳的問題,并對圖片進(jìn)行適當(dāng)?shù)纳炜s變換,保證圖像的統(tǒng)一性,解決圖像大小不統(tǒng)一的問題,采用灰度變換解決光照環(huán)境及圖像清晰度的問題。其次,人臉檢測及定位,利用人臉與非人臉區(qū)域的特征差異標(biāo)定出人臉位置,為后續(xù)人臉區(qū)域的特征提取做準(zhǔn)備。第三步進(jìn)行圖像預(yù)處理,包括灰度變換、直方圖均衡化等處理方法,為提高人臉特征提取的準(zhǔn)確性,還需要通過人臉對齊、歸一化等圖像預(yù)處理技術(shù)提高人臉的標(biāo)準(zhǔn)性。第四步提取人臉特征,人臉識別技術(shù)中提取的面部物征包括幾何視覺特征、形狀與紋理特征、變換域特征、代數(shù)特征等,其中幾何視覺特征是指人臉五官特征,這種特征提取容易,計(jì)算量小,但是光照變化、人頭部姿勢變化會影響到特征提取效果。形狀與紋理特征是指人臉物理性差異導(dǎo)致的成像邊緣輪廓、灰度信息及顏色信息的差異,提取這類特征具有旋轉(zhuǎn)不變性的優(yōu)勢,但是要求圖像具有更高的分辨率。變換區(qū)域特征是指對圖像進(jìn)行傅里葉變換、小波變換等獲取圖像在另一個域的特征,提取這類特征可以有效解決幾何形變的問題。代數(shù)特征是指將二維圖像展開為一維向量,通過正交變換消除樣本之間的相關(guān)性,最終獲得依次遞減的特征值所對應(yīng)的一組特征向量。第五步進(jìn)行特征對比。在提取到合適的人臉特征后再通過分類器對人臉進(jìn)行分類,分類器可計(jì)算輸入人臉與數(shù)據(jù)庫中人臉的匹配值,如果計(jì)算結(jié)果滿足設(shè)定的閾值即可輸出人臉身份信息,完成特征對比。常見的分類器包括最近鄰分類器、支持向量機(jī)分類器、Adaboost級聯(lián)分類器等。第六步,身份匹配及驗(yàn)證。完成特征對比后獲得人臉在數(shù)據(jù)庫中的匹配對象,輸出人類對象的身份信息,驗(yàn)證識別結(jié)果。
本研究提出的考勤系統(tǒng)的基本業(yè)務(wù)流如下:考勤系統(tǒng)管理員具有系統(tǒng)管理與用戶權(quán)限管理的權(quán)限,能夠建立普通用戶。企業(yè)員工在管理員模塊注冊賬號,采集普通企業(yè)員工的個人信息,企業(yè)員工的個人信息包括基本信息及人臉信息兩部分,系統(tǒng)檢測人臉圖片質(zhì)量,采集到的人臉圖片與系統(tǒng)要求相符,避免因?yàn)榻嵌葐栴}或光照問題導(dǎo)致人臉圖片質(zhì)量與系統(tǒng)要求不符??记跁r間即為企業(yè)規(guī)定的員工上下班時間。在考勤打卡時開啟系統(tǒng)攝像頭采集人臉信息,將采集到的數(shù)據(jù)與數(shù)據(jù)庫錄入的人臉信息進(jìn)行檢測匹配,匹配成功即為考勤成功。企業(yè)員工能夠登錄自己注冊的賬號查看考勤結(jié)果。
系統(tǒng)具有數(shù)據(jù)管理、人臉信息管理及用戶登錄等功能。通過系統(tǒng)數(shù)據(jù)管理功能可以查詢、修改數(shù)據(jù),并能夠?qū)ο到y(tǒng)進(jìn)行初始化操作,管理員通過初始化操作將企業(yè)員工的個人基本信息及人臉信息輸入數(shù)據(jù)庫中。人臉信息管理主要是在用戶注冊系統(tǒng)賬號時采集人臉信息,員工需要提交兩到三張人臉照片,系統(tǒng)人臉識別模塊將人臉信息轉(zhuǎn)變?yōu)槿四樚卣飨蛄?,再將其保存于?shù)據(jù)庫中。通過人臉圖像信息管理功能能夠添加、修改人臉信息及員工的基本信息,此處需要注意,人臉信息存儲于數(shù)據(jù)庫時主要是特征向量,這一向量對人無可視性,因此無法查詢?nèi)四樞畔ⅲ荒懿樵內(nèi)四樞畔⑤斎肭闆r。雖然檢測系統(tǒng)在既定范圍內(nèi)具有魯棒性,但是仍然需要定期更新一次人臉數(shù)據(jù)庫,才能保證人臉信息的時效性與安全性。用戶登錄功能可以根據(jù)用戶類型設(shè)定不同的權(quán)限,系統(tǒng)管理員具有最高權(quán)限,能夠修改所有用戶的信息,普通員工權(quán)限相對較低,通常只能夠查詢自己的個人信息。
本研究提出的基于人臉識別的考勤系統(tǒng)主要運(yùn)行于帶有攝像頭的電腦主機(jī),經(jīng)過檢測系統(tǒng)軟件基本環(huán)境需求如下:采用Win10 Professional 64bit,顯卡NvidiaGTX1060,CPU采用Inter第七代酷睿,i5 700,內(nèi)存16G。本系統(tǒng)主要適用于中小型公司,因此對數(shù)據(jù)庫的存儲容量、傳輸速度要求相對較低,因此采用MySQL數(shù)據(jù)庫,體積小且訪問速率高。
目前軟件設(shè)計(jì)架構(gòu)主要包括多層系統(tǒng)結(jié)構(gòu)及客戶端-服務(wù)器兩種方式。多層系統(tǒng)結(jié)構(gòu)主要是將大程序拆分成幾個子目標(biāo)程序,每個子程序又有固定的邏輯及功能關(guān)系,子程序又能夠拆分為功能劃分更細(xì)致的子功能。多層系統(tǒng)結(jié)構(gòu)應(yīng)用最為普遍的為4層結(jié)構(gòu),包括業(yè)務(wù)邏輯層、表示層、數(shù)據(jù)訪問層、應(yīng)用層等。多層系統(tǒng)結(jié)構(gòu)具有結(jié)構(gòu)簡單、研究簡單、目標(biāo)設(shè)計(jì)簡單的優(yōu)勢,且程序系統(tǒng)與子程序互相獨(dú)立,每個子程序均能夠單獨(dú)檢測,提高了接口調(diào)試的便利性。當(dāng)然其不足在于可養(yǎng)護(hù)性較差,設(shè)計(jì)功能不佳且繁瑣,系統(tǒng)升級也比較復(fù)雜,程序拓展功能較差,一旦用戶請求暴增需要逐級修改代碼,導(dǎo)致架構(gòu)擴(kuò)展十分困難。客戶端-服務(wù)器模式主要包括主服務(wù)器、子客戶端兩大模塊,客戶端組件向服務(wù)器組件發(fā)送請求,服務(wù)器針對客戶端的需求提供對應(yīng)服務(wù)。服務(wù)器能夠同時完成多個客戶端的服務(wù)申請。相比上述多層系統(tǒng)結(jié)構(gòu),客戶端-服務(wù)器結(jié)構(gòu)在程序拓展方面的優(yōu)勢十分突出,該結(jié)構(gòu)將信息數(shù)據(jù)存儲為內(nèi)存信息模塊的形式,信息模塊可以復(fù)制,且信息模塊并未應(yīng)用中央信息庫,因此大大提高了程序的可擴(kuò)展性。且該結(jié)構(gòu)會對特殊功能的處理單元封裝成特定的處理單元,需要添加新功能時可以重新建立新的處理單元,需要縮減相關(guān)功能時直接將對應(yīng)的處理單元去掉即可。
本研究軟件框架設(shè)計(jì)綜合了多層系統(tǒng)結(jié)構(gòu)及客戶端-服務(wù)器兩種模式的優(yōu)點(diǎn),系統(tǒng)整體架構(gòu)采用多層系統(tǒng)結(jié)構(gòu)方式,數(shù)據(jù)庫、模型更新的訪問操作則采用客戶端-服務(wù)器模式。系統(tǒng)結(jié)構(gòu)包括UI操作層、應(yīng)用功能層、內(nèi)部邏輯層及數(shù)據(jù)接口層,UI操作層的主要功能是提供簡潔的人機(jī)交互界面,包括考勤圖像、員工信息及考勤信息的顯示,應(yīng)用功能層主要實(shí)現(xiàn)與用戶交互的操作,包括人臉圖像采集、人臉檢測識別、修改或存儲考勤信息等。內(nèi)部邏輯層即為系統(tǒng)后臺,主要功能的處理考勤數(shù)據(jù),訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型;數(shù)據(jù)庫接口層主要功能包括存儲員工信息與考勤信息,并提供對應(yīng)的接口。
人臉測試模塊的主要功能包括測試、識別及錄入人臉圖像信息,系統(tǒng)先通過實(shí)時測試攝像頭抓取人臉圖像,通過深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)模型對抓取到的人臉圖像進(jìn)行檢測、評估,根據(jù)要測結(jié)果記錄員工的考勤信息。本文提出的人臉識別系統(tǒng)中,人臉的查找采用OpenCV內(nèi)部設(shè)計(jì)的級聯(lián)檢測器,該檢測器中包含有視覺庫,視覺庫中的臉部級聯(lián)分類器是訓(xùn)練好的,只需加載級聯(lián)文檔,即可利用級聯(lián)檢測器中的人臉檢測功能模塊,實(shí)現(xiàn)人臉信息的動態(tài)或靜態(tài)檢測。待檢測的人臉圖像載入系統(tǒng)后,系統(tǒng)會由攝像頭或視頻資料中獲取人臉的幀圖片,然后對圖片進(jìn)行預(yù)處理。根據(jù)攝像機(jī)的編碼,視頻資料的文件名調(diào)取VideoCapture函數(shù),讀取攝像頭中的圖像,再對其進(jìn)行灰度轉(zhuǎn)換,圖像的預(yù)處理即可完成。然后再對人臉圖像進(jìn)行檢測,在輸入圖像中提取邊界并框取出來。
完成人臉檢測后即進(jìn)行人臉識別,在訓(xùn)練分類器時要使用一定數(shù)量的圖像作為訓(xùn)練集,一個優(yōu)秀的訓(xùn)練集一定是涵蓋了人臉變化的各種情況。比如只需要識別正面的人臉,訓(xùn)練集圖像中僅有正面人臉即可滿足訓(xùn)練要求;如果識別圖像中的人臉是側(cè)臉或者向上的角度,則訓(xùn)練集中也可包含對應(yīng)角度的人臉圖像,否則人臉識別算法很難完成這類圖像的識別。因此需要通過數(shù)據(jù)預(yù)處理模塊對人臉圖像進(jìn)行預(yù)處理,盡量避免這類問題。攝像頭采集到的人臉圖像與神經(jīng)網(wǎng)絡(luò)輸入的圖片大小不統(tǒng)一,需要通過伸縮變換統(tǒng)一圖片的大小,并將多余的邊框填充為黑色。對人臉圖像按照注冊編號保存于本地?cái)?shù)據(jù)庫,并能夠以圖像的本地路徑為標(biāo)準(zhǔn)從數(shù)據(jù)庫中讀取圖像。
搭建卷積神經(jīng)網(wǎng)絡(luò)采用python+keras+tensorflow 做后臺,網(wǎng)絡(luò)結(jié)構(gòu)包括4層卷積層、2層最大池化層及全連接層,其中Activation函數(shù)以Relu為激活函數(shù),結(jié)合全連接及Dropout層搭建網(wǎng)絡(luò)。在卷積神經(jīng)網(wǎng)絡(luò)中,卷積類似于圖像處理中提取特征的操作,池化包括最大池化和平均池化,類似于降維處理;Dense全連接層即經(jīng)典的神經(jīng)網(wǎng)絡(luò)全連接。為了實(shí)現(xiàn)更高的訓(xùn)練速,避免過擬合的問題,Dropout訓(xùn)練時會按照特定的概率隨機(jī)丟棄一些神經(jīng)元;Flatten用于卷積層與全連接層之間,卷積輸出的多維數(shù)據(jù)通過Flatten拍扁為一維數(shù)據(jù)輸送至全連接層;最后一層采用Softmax函數(shù)作為激活涵數(shù),該函數(shù)在多分類的情況下應(yīng)用非常普遍。員工基本信息與考勤信息采用MySQL數(shù)據(jù)庫進(jìn)行操作與管理,采用Python3中PyMySQL連接MySQL數(shù)據(jù)庫。
系統(tǒng)運(yùn)行界面包括登錄界面、管理員界面、員工注冊界面、考勤識別界面及員工信息界面。通過登錄界面登錄系統(tǒng),輸入正確的用戶名及密碼,選擇正確的用戶類型即可登錄,如數(shù)據(jù)庫中不存在用戶信息,登錄界面顯示登錄失敗。管理員界面主要用于員工信息的錄入操作,通常只有管理員才能進(jìn)入該界面,在該界面可以采集員工的人臉信息及基本信息。數(shù)據(jù)采集完成后點(diǎn)擊“訓(xùn)練”即開始訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型;此外,管理員還可以通過管理界面查詢員工的簽到信息、個人信息數(shù)據(jù)等。企業(yè)員工通過員工注冊界面錄入個人信息,填寫完基本資料后即采集人臉信息。點(diǎn)擊“采集”系統(tǒng)會自動啟動攝像采集員工圖片,當(dāng)攝像窗口中顯示出大小正確、人臉位置準(zhǔn)確、圖像清晰的圖像信息時,系統(tǒng)會自動完成人臉識別,并保存于本地文件夾。采集人臉圖像信息時可以多拍攝幾張不同角度的圖片,提高數(shù)據(jù)質(zhì)量及訓(xùn)練模型的魯棒性,避免人臉發(fā)生細(xì)微變化導(dǎo)致模型識別失敗。考勤識別界面主要進(jìn)行人臉識別,人臉對準(zhǔn)攝像頭后系統(tǒng)會自動框出識別到的人臉,完成識別后通過員工信息界面可查詢到員工信息,點(diǎn)擊“確定”即表示打卡成功。