朱彥穎,賴芝岑,李 凡,黃艷國
(江西理工大學 電氣工程與自動化學院,江西 贛州 341000)
目前人臉識別作為一種新技術在實際生活中得到了廣泛的擴展和應用[1]。由于信息技術的革新,進行人臉識別時對檢測到的圖像處理有了更深的要求,處理起來也更加復雜。在樣本重組背景較為單一的情況下,大部分算法都能取得較高的識別率。實際應用中,如何解決環境因素、人臉表情、姿態變化的影響,成為目前檢驗各類算法的難題。將人臉識別廣泛應用于生活中仍存在發展空間。對人臉進行特征化處理的人臉識別算法是將高維度轉化成低維度識別人臉面部特征[2],降低了計算復雜度,但是丟失了細小特征差異。近年來,卷積神經網絡在人臉識別領域取得了極大成果。本文將人臉識別應用于實驗室的簽到考勤,并在實際的實驗室中進行測試,避免了紙質簽到的不準確性,讓簽到富有實時性和準確性,使得實驗室學習氛圍更加濃厚。
人臉識別是利用攝像機采集現成人臉的靜態圖像,并通過定點方式等相關技術進行識別。人臉識別主要是檢測人臉特征中的關鍵信息,根據數據庫中已存在圖片進行區分,實現人類個體的分類以及精準識別。本系統主要利用實驗室里的攝像頭對人臉信息進行采集,以人臉識別技術為基礎采用Dlib庫、SQLite數據庫實現。系統結構主要包括人臉識別子系統、網頁端和微信端,用不同端反饋人臉識別得到的信息并匯總成表格便于查看。總體框架如圖1所示。人臉識別子系統包含了實驗室人臉識別的代碼部分以及相關原始面部數據,通過實驗室的攝像頭采集現場的人臉數據,再根據事先保存的數據圖像進行對比,得到實時簽到信息并把信息錄入到后臺保存,簽到信息可以通過微信端和網頁端進行查詢。

圖1 人臉識別考勤系統總體框架
微信端子系統通過進入CVPapers微信公眾號輸入一系列指令完成操作。網頁端子系統通過搭建的虛擬服務器進入并通過圖標信息直觀看出用戶考勤數據,其中包括當日以及當月的數據表格和簽到完成情況,還有具體的氣泡升降圖顯示實驗室當日簽到人員時間排序,便于管理員查看具體數據。
本系統使用基于OpenCV框架的人臉識別技術,人臉識別是對靜態或者動態圖像進行人臉檢測,檢測出人臉之后采集用戶的面部信息,提取出人臉的數據特征并進行量化處理,將計算機預先處理的數據與原始數據庫進行匹配,對比完成身份識別鑒定[3]。人臉識別子系統包含人臉識別的主要代碼,通過實驗室的攝像頭采集現場的人臉數據再對比數據庫,得到實時簽到信息并把信息錄入到后臺保存。微信端子系統通過進入CVPapers微信公眾號輸入一系列指令完成操作。網頁端子系統通過服務器進入,再通過圖表信息直觀看出用戶考勤數據,并通過具體氣泡升降圖顯示實驗室當日簽到人員時間排序,便于管理員查看具體數據。
直接對人臉的面部特征進行識別時錯誤率比較高,受環境影響較大,不容易識別出圖像,因此用實驗室攝像頭抓拍人臉圖像,然后對這些圖像進行預處理等一些操作后再進行人臉識別,完成考勤任務。在采集圖像的過程中,由于客觀因素的影響,常會導致采集到的圖像信息中存在一定誤差,故在進行人臉識別之前,需檢測出人臉所在位置后獲得面部信息,采取灰度化變換實現預處理。本文采用圖像處理OpenCV算法以及PyQt5來實現摘要算法計算并做出分離頁面,實際后端的人臉圖像由數組構成。獲取人臉特征向量的過程如圖2所示。

圖2 得到面部特征向量流程
檢測到圖片中的人臉,標記出人臉坐標,主要定位包括面部、眉眼、口鼻等關鍵點[4];然后進行人臉識別的預處理,彩色圖像可以通過b,g,r=cv2.split(image)實現分離,通過數組剪切實現通道分離b,g,r=image[:,:,0],image[:,:,1],image[:,:,2];彩色圖像調用 cv2.merge([b,g,r])實現通道并合。由于環境條件的干擾是復雜隨機的,所以必須對事先采集到的原始圖像進行預處理,包括灰度變換,匹配簽到時候的圖像與數據集中圖像的精度(閾值),對人臉圖像進行歸一化,完成后確認人臉匹配,完成打卡。
人臉定位是將臉部特征(如眼睛、鼻子、嘴唇、眉毛、臉部輪廓等)都標記出來,此特征通常是一個低維度到幾百個維度的特征表達[5];接著用不同人臉特征之間的相似度或者距離來進行判斷,相似度是越高越好,距離是越小越好,去刻畫新圖像和數據集存儲的各個圖像之間的關系。Dlib庫的人臉特征提取主要是通過其深度神經網絡ResNet(Residual Neural Network),對提取的人臉特征數據進行對比分類識別。調用Dlib庫中已經訓練好的模型“shape_predictor_68_face_landmarks.dat”進行定位,再用OpenCV進行圖像化處理,從而達到特征提取與定位的功能。具體定位結果如圖3所示。接著提取原庫圖像與實際圖像相關數據,得到向量值并對這部分向量值求歐氏距離[6]。

圖3 Dlib包定位面部器官分布
設兩個向量分別為x(x1,x2,...,xn)和y(y1,y2,...,yn),二者的歐氏距離計算公式為:

在檢測人臉時,即判斷68處標定點與實際人臉的距離。檢測選取鼻子、左眼、右眼及上唇部分的基準關鍵點,同時獲取當前圖像檢測處對應位置的關鍵點,計算上述兩個點集之間的相似變換矩陣,獲取當前人臉圖像相對于基準人臉間的旋轉角度、縮放系數及應該獲取的人臉區域的Rect坐標。相似變換即等距變換+均勻縮放,當圖像中的點用齊次坐標表示時,變換矩陣為:

當s=1是保向的,s=-1是逆向的,相似變換可以簡單地寫成:

其中:R是旋轉矩陣;t是平移矢量;s是縮放尺度,有4個自由度(1個旋轉角θ,2個平移tx、ty,1個縮放尺度),需要兩組點四個方程求解,相似變換的不變量是角度、長度的比例、面積的比例。識別出模型特征后再與數據庫中已存儲的人臉特征逐個進行匹配[7-8],并設定閾值,當相似度大于閾值時,確定識別成功,標記簽到成功并輸出簽到對象的信息。
用戶到達簽到地點,面對事先準備好的攝像頭進行人臉識別,在桌面客戶端可以看到人臉識別系統簽到頁面,如圖4所示。
中間大屏幕為主屏,用來識別人像。右側是簽到表,含有提前設定的個人信息和儲備圖像。左下角有當天開會的通知,此項可由管理者自行設定。對準攝像頭識別到人臉,機器對比幾秒后會在右側的簽到表中顯示簽到信息[9],包括簽到人姓名等,實現界面如圖4所示;人臉識別成功后即結束簽到,后臺即完成用戶簽到數據錄入。

圖4 實際考勤系統簽到界面
網頁端主要可以獲取圖標信息,更加直觀,打開網頁端可以看到事先設置好的考勤實驗室的信息頁面,如圖5所示。

圖5 服務器實時考勤信息頁面展示
網頁端的核心業務是實現對考勤數據的管理,主要包括出勤記錄和統計報表兩部分。出勤記錄模塊主要實現對具體人員的出勤信息按照時間段進行存儲,管理員可以直接調取后臺數據進行查詢,具體信息包括簽到人姓名、時間、實驗室以及是否簽到成功;同時提供了Excel報表,方便打印簽到情況,見表1所列。

表1 簽到表內容示例
為了更加直觀地得到考勤信息,網頁端還設置了考勤氣泡圖,氣泡的大小代表累積簽到的次數,氣泡越大越下沉,也就表示簽到的次數越多;橫坐標代表了各個人員簽到的具體時間段,并將不同人員設置為不同的氣泡顏色,方便更加直觀地觀察具體情況,如圖6所示。考勤成功后,會立刻返到網頁端數據頁面,以供管理者查看。

圖6 氣泡圖結果示例
利用微信公眾號開發工具創立一個新公眾號并與遠程服務器連接[10],將實時的簽到結果導入到微信端口,方便查看當日考勤信息。公眾號內預設提示信息,輸入實驗室標號可以獲取到實驗室的人員考勤情況,也可以通過多種指令獲得某年某月某日的實驗室人員考勤情況,如圖7所示,得到的結果以表格的形式呈現。

圖7 公眾號進入頁面及指令輸入顯示結果
本文使用了目前很成熟的人臉檢測與人臉識別算法進行系統的設計與實現,保證了該系統的可靠性,將人臉識別技術應用于實驗室的考勤管理。依托于實驗室攝像頭實現了自動化考勤管理,并進一步降低了考勤誤檢率和誤報率。此外還可以通過互聯網訪問考勤數據分析平臺,方便管理員實時查看考勤數據。通過不同時間的調試驗證,本系統能高效、準確地進行人臉識別考勤。