朱彥穎,賴芝岑,李 凡,黃艷國
(江西理工大學(xué) 電氣工程與自動化學(xué)院,江西 贛州 341000)
目前人臉識別作為一種新技術(shù)在實際生活中得到了廣泛的擴(kuò)展和應(yīng)用[1]。由于信息技術(shù)的革新,進(jìn)行人臉識別時對檢測到的圖像處理有了更深的要求,處理起來也更加復(fù)雜。在樣本重組背景較為單一的情況下,大部分算法都能取得較高的識別率。實際應(yīng)用中,如何解決環(huán)境因素、人臉表情、姿態(tài)變化的影響,成為目前檢驗各類算法的難題。將人臉識別廣泛應(yīng)用于生活中仍存在發(fā)展空間。對人臉進(jìn)行特征化處理的人臉識別算法是將高維度轉(zhuǎn)化成低維度識別人臉面部特征[2],降低了計算復(fù)雜度,但是丟失了細(xì)小特征差異。近年來,卷積神經(jīng)網(wǎng)絡(luò)在人臉識別領(lǐng)域取得了極大成果。本文將人臉識別應(yīng)用于實驗室的簽到考勤,并在實際的實驗室中進(jìn)行測試,避免了紙質(zhì)簽到的不準(zhǔn)確性,讓簽到富有實時性和準(zhǔn)確性,使得實驗室學(xué)習(xí)氛圍更加濃厚。
人臉識別是利用攝像機(jī)采集現(xiàn)成人臉的靜態(tài)圖像,并通過定點方式等相關(guān)技術(shù)進(jìn)行識別。人臉識別主要是檢測人臉特征中的關(guān)鍵信息,根據(jù)數(shù)據(jù)庫中已存在圖片進(jìn)行區(qū)分,實現(xiàn)人類個體的分類以及精準(zhǔn)識別。本系統(tǒng)主要利用實驗室里的攝像頭對人臉信息進(jìn)行采集,以人臉識別技術(shù)為基礎(chǔ)采用Dlib庫、SQLite數(shù)據(jù)庫實現(xiàn)。系統(tǒng)結(jié)構(gòu)主要包括人臉識別子系統(tǒng)、網(wǎng)頁端和微信端,用不同端反饋人臉識別得到的信息并匯總成表格便于查看??傮w框架如圖1所示。人臉識別子系統(tǒng)包含了實驗室人臉識別的代碼部分以及相關(guān)原始面部數(shù)據(jù),通過實驗室的攝像頭采集現(xiàn)場的人臉數(shù)據(jù),再根據(jù)事先保存的數(shù)據(jù)圖像進(jìn)行對比,得到實時簽到信息并把信息錄入到后臺保存,簽到信息可以通過微信端和網(wǎng)頁端進(jìn)行查詢。
圖1 人臉識別考勤系統(tǒng)總體框架
微信端子系統(tǒng)通過進(jìn)入CVPapers微信公眾號輸入一系列指令完成操作。網(wǎng)頁端子系統(tǒng)通過搭建的虛擬服務(wù)器進(jìn)入并通過圖標(biāo)信息直觀看出用戶考勤數(shù)據(jù),其中包括當(dāng)日以及當(dāng)月的數(shù)據(jù)表格和簽到完成情況,還有具體的氣泡升降圖顯示實驗室當(dāng)日簽到人員時間排序,便于管理員查看具體數(shù)據(jù)。
本系統(tǒng)使用基于OpenCV框架的人臉識別技術(shù),人臉識別是對靜態(tài)或者動態(tài)圖像進(jìn)行人臉檢測,檢測出人臉之后采集用戶的面部信息,提取出人臉的數(shù)據(jù)特征并進(jìn)行量化處理,將計算機(jī)預(yù)先處理的數(shù)據(jù)與原始數(shù)據(jù)庫進(jìn)行匹配,對比完成身份識別鑒定[3]。人臉識別子系統(tǒng)包含人臉識別的主要代碼,通過實驗室的攝像頭采集現(xiàn)場的人臉數(shù)據(jù)再對比數(shù)據(jù)庫,得到實時簽到信息并把信息錄入到后臺保存。微信端子系統(tǒng)通過進(jìn)入CVPapers微信公眾號輸入一系列指令完成操作。網(wǎng)頁端子系統(tǒng)通過服務(wù)器進(jìn)入,再通過圖表信息直觀看出用戶考勤數(shù)據(jù),并通過具體氣泡升降圖顯示實驗室當(dāng)日簽到人員時間排序,便于管理員查看具體數(shù)據(jù)。
直接對人臉的面部特征進(jìn)行識別時錯誤率比較高,受環(huán)境影響較大,不容易識別出圖像,因此用實驗室攝像頭抓拍人臉圖像,然后對這些圖像進(jìn)行預(yù)處理等一些操作后再進(jìn)行人臉識別,完成考勤任務(wù)。在采集圖像的過程中,由于客觀因素的影響,常會導(dǎo)致采集到的圖像信息中存在一定誤差,故在進(jìn)行人臉識別之前,需檢測出人臉?biāo)谖恢煤螳@得面部信息,采取灰度化變換實現(xiàn)預(yù)處理。本文采用圖像處理OpenCV算法以及PyQt5來實現(xiàn)摘要算法計算并做出分離頁面,實際后端的人臉圖像由數(shù)組構(gòu)成。獲取人臉特征向量的過程如圖2所示。
圖2 得到面部特征向量流程
檢測到圖片中的人臉,標(biāo)記出人臉坐標(biāo),主要定位包括面部、眉眼、口鼻等關(guān)鍵點[4];然后進(jìn)行人臉識別的預(yù)處理,彩色圖像可以通過b,g,r=cv2.split(image)實現(xiàn)分離,通過數(shù)組剪切實現(xiàn)通道分離b,g,r=image[:,:,0],image[:,:,1],image[:,:,2];彩色圖像調(diào)用 cv2.merge([b,g,r])實現(xiàn)通道并合。由于環(huán)境條件的干擾是復(fù)雜隨機(jī)的,所以必須對事先采集到的原始圖像進(jìn)行預(yù)處理,包括灰度變換,匹配簽到時候的圖像與數(shù)據(jù)集中圖像的精度(閾值),對人臉圖像進(jìn)行歸一化,完成后確認(rèn)人臉匹配,完成打卡。
人臉定位是將臉部特征(如眼睛、鼻子、嘴唇、眉毛、臉部輪廓等)都標(biāo)記出來,此特征通常是一個低維度到幾百個維度的特征表達(dá)[5];接著用不同人臉特征之間的相似度或者距離來進(jìn)行判斷,相似度是越高越好,距離是越小越好,去刻畫新圖像和數(shù)據(jù)集存儲的各個圖像之間的關(guān)系。Dlib庫的人臉特征提取主要是通過其深度神經(jīng)網(wǎng)絡(luò)ResNet(Residual Neural Network),對提取的人臉特征數(shù)據(jù)進(jìn)行對比分類識別。調(diào)用Dlib庫中已經(jīng)訓(xùn)練好的模型“shape_predictor_68_face_landmarks.dat”進(jìn)行定位,再用OpenCV進(jìn)行圖像化處理,從而達(dá)到特征提取與定位的功能。具體定位結(jié)果如圖3所示。接著提取原庫圖像與實際圖像相關(guān)數(shù)據(jù),得到向量值并對這部分向量值求歐氏距離[6]。
圖3 Dlib包定位面部器官分布
設(shè)兩個向量分別為x(x1,x2,...,xn)和y(y1,y2,...,yn),二者的歐氏距離計算公式為:
在檢測人臉時,即判斷68處標(biāo)定點與實際人臉的距離。檢測選取鼻子、左眼、右眼及上唇部分的基準(zhǔn)關(guān)鍵點,同時獲取當(dāng)前圖像檢測處對應(yīng)位置的關(guān)鍵點,計算上述兩個點集之間的相似變換矩陣,獲取當(dāng)前人臉圖像相對于基準(zhǔn)人臉間的旋轉(zhuǎn)角度、縮放系數(shù)及應(yīng)該獲取的人臉區(qū)域的Rect坐標(biāo)。相似變換即等距變換+均勻縮放,當(dāng)圖像中的點用齊次坐標(biāo)表示時,變換矩陣為:
當(dāng)s=1是保向的,s=-1是逆向的,相似變換可以簡單地寫成:
其中:R是旋轉(zhuǎn)矩陣;t是平移矢量;s是縮放尺度,有4個自由度(1個旋轉(zhuǎn)角θ,2個平移tx、ty,1個縮放尺度),需要兩組點四個方程求解,相似變換的不變量是角度、長度的比例、面積的比例。識別出模型特征后再與數(shù)據(jù)庫中已存儲的人臉特征逐個進(jìn)行匹配[7-8],并設(shè)定閾值,當(dāng)相似度大于閾值時,確定識別成功,標(biāo)記簽到成功并輸出簽到對象的信息。
用戶到達(dá)簽到地點,面對事先準(zhǔn)備好的攝像頭進(jìn)行人臉識別,在桌面客戶端可以看到人臉識別系統(tǒng)簽到頁面,如圖4所示。
中間大屏幕為主屏,用來識別人像。右側(cè)是簽到表,含有提前設(shè)定的個人信息和儲備圖像。左下角有當(dāng)天開會的通知,此項可由管理者自行設(shè)定。對準(zhǔn)攝像頭識別到人臉,機(jī)器對比幾秒后會在右側(cè)的簽到表中顯示簽到信息[9],包括簽到人姓名等,實現(xiàn)界面如圖4所示;人臉識別成功后即結(jié)束簽到,后臺即完成用戶簽到數(shù)據(jù)錄入。
圖4 實際考勤系統(tǒng)簽到界面
網(wǎng)頁端主要可以獲取圖標(biāo)信息,更加直觀,打開網(wǎng)頁端可以看到事先設(shè)置好的考勤實驗室的信息頁面,如圖5所示。
圖5 服務(wù)器實時考勤信息頁面展示
網(wǎng)頁端的核心業(yè)務(wù)是實現(xiàn)對考勤數(shù)據(jù)的管理,主要包括出勤記錄和統(tǒng)計報表兩部分。出勤記錄模塊主要實現(xiàn)對具體人員的出勤信息按照時間段進(jìn)行存儲,管理員可以直接調(diào)取后臺數(shù)據(jù)進(jìn)行查詢,具體信息包括簽到人姓名、時間、實驗室以及是否簽到成功;同時提供了Excel報表,方便打印簽到情況,見表1所列。
表1 簽到表內(nèi)容示例
為了更加直觀地得到考勤信息,網(wǎng)頁端還設(shè)置了考勤氣泡圖,氣泡的大小代表累積簽到的次數(shù),氣泡越大越下沉,也就表示簽到的次數(shù)越多;橫坐標(biāo)代表了各個人員簽到的具體時間段,并將不同人員設(shè)置為不同的氣泡顏色,方便更加直觀地觀察具體情況,如圖6所示。考勤成功后,會立刻返到網(wǎng)頁端數(shù)據(jù)頁面,以供管理者查看。
圖6 氣泡圖結(jié)果示例
利用微信公眾號開發(fā)工具創(chuàng)立一個新公眾號并與遠(yuǎn)程服務(wù)器連接[10],將實時的簽到結(jié)果導(dǎo)入到微信端口,方便查看當(dāng)日考勤信息。公眾號內(nèi)預(yù)設(shè)提示信息,輸入實驗室標(biāo)號可以獲取到實驗室的人員考勤情況,也可以通過多種指令獲得某年某月某日的實驗室人員考勤情況,如圖7所示,得到的結(jié)果以表格的形式呈現(xiàn)。
圖7 公眾號進(jìn)入頁面及指令輸入顯示結(jié)果
本文使用了目前很成熟的人臉檢測與人臉識別算法進(jìn)行系統(tǒng)的設(shè)計與實現(xiàn),保證了該系統(tǒng)的可靠性,將人臉識別技術(shù)應(yīng)用于實驗室的考勤管理。依托于實驗室攝像頭實現(xiàn)了自動化考勤管理,并進(jìn)一步降低了考勤誤檢率和誤報率。此外還可以通過互聯(lián)網(wǎng)訪問考勤數(shù)據(jù)分析平臺,方便管理員實時查看考勤數(shù)據(jù)。通過不同時間的調(diào)試驗證,本系統(tǒng)能高效、準(zhǔn)確地進(jìn)行人臉識別考勤。