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