侍新蘭 杜友福 王同喜



摘要:由于人臉極易用照片、視頻等方式進行復制,對人臉識別與認證系統安全造成威脅,使用dlib人臉識別與關鍵點檢測,實時追蹤視頻中人臉關鍵點,進行人臉活體檢測(Face Anti-spoofing),以此來抵御照片、換臉、面具、遮擋以及屏幕翻拍等常見的攻擊手段,保障用戶的利益。
關鍵詞:人臉關鍵點;dlib;活體檢測;深度學習
中圖分類號:TP391 文獻標識碼:A
文章編號:1009-3044(2020)15-0211-03
1引言
隨著人臉識別系統在日常生活中更加普遍的應用,從智能手機上的人臉識別解鎖、到人臉識別打卡、門禁系統等等。活體檢測是在一些身份驗證場景確定對象真實生理特征的方法,在人臉識別應用中,活體檢測能通過眨眼、張口、搖頭、點頭等組合動作,使用人臉關鍵點定位和人臉追蹤等技術,驗證用戶是否為真實活體本人操作。本次實驗主要針對眨眼和張口檢測。
2相關技術
2.1Dlib
一個很經典的用于圖像處理的開源庫,shape_predictor_68_face_landmarks.dat是一個用于人臉68個關鍵點檢測的dat模型庫,使用這個模型庫可以很方便地進行人臉檢測,并進行簡單的應用。臉部特征圖如圖1。
2.2眨眼檢測原理
在進行眨眼檢測之前,首先需要確定眼睛的位置,在確定眼睛位置之后,選擇6個點來表示眼睛。如圖2所示,基于人臉特征圖從眼睛的左角開始,順時針繞著眼睛進行編號。
根據圖2標定的6個點來表示眼睛睜開和閉上的狀態。當睜眼時,上圖中垂直方向的黃色箭頭會變得伸長;閉眼時,這個箭頭相應縮短。由于觀看的距離、角度的不同,單從這一點來判斷人眼的狀態容易出現誤差,所以借助Soukupov6和cech在其2016年的論文“Real-Time Eye Blink D~ecfion using FacialLandmarks”中推導出反映這種關系的方程,稱為眼睛縱橫比EAR(Eve Aspect Ratio)。如下所示:
其中p1,……,p6是2D眼睛地標位置。
由圖2所示的EAR曲線圖可知,當人眼睜開時,EAR在某個值上下波動;當人眼閉合時,EAR迅速下降,理論上會接近于零。鑒于當時的技術限制,人臉檢測模型不是很精確,所以認為當EAR低于某個閾值時,眼睛處于閉合狀態。由于眨眼速度比較快,完成眨眼動作一般需要1-3幀,所以為檢測眨眼次數,需要設置同一次眨眼的連續幀數。關于閾值的設置要根據實際情況來定。
2.3張口檢測原理
張口檢測原理類似于眨眼檢測。如圖3所示,同樣選擇6個關鍵點編號。
3人臉活體檢測實現
3.1提取臉部特征部位
基于dlib的shape_predictor 68 face landmarks模型檢測出人臉的68個特征點,獲取面部標志的索引,由特定面部的索引來提取特定的臉部結構。
實現過程中對于輸入圖像,先做人臉檢測,再做關鍵點定位。首先檢測人臉所在位置(人臉框),再檢測關鍵點相對于人臉框的位置,用回歸算法去預測每一個點在圖像當中的位置,得到坐標點。進而對檢測到的框進行遍歷,對人臉框進行關鍵點定位,根據位置畫點,獲得凸包位置,并提取RIO區域,實驗結果如圖4所示。
考慮到多目標出現,關鍵點檢測都是基于人臉框進行,對于出現的人臉,遍歷每一個人臉框,得到坐標,檢查定位。
3.2人臉檢測
人臉特征點檢測用到了兩個關鍵函數:dlib.get_fton-tal_face_detectorO和dlib.shape_predictor(predictor_path)。前者是內置的人臉檢測算法,使用HOGpyramid,檢測人臉區域的界限(bounds)。后者是用來檢測一個區域內的特征點,并輸出這些特征點的坐標。使用開源模型shape_predictor 68 face land-marks.dat,可以得到68個特征點位置的坐標,效果如圖5所示。
3.3人臉活體檢測實現
3.3.1眨眼檢測
首先初始化DLIB的人臉檢測器(HOG),然后創建面部標志物預測,分別獲得臉部位置檢測器和臉部特征位置檢測器以及左右眼面部標志的索引。調用攝像頭,從視頻流循環幀,讀取圖片,對圖片做維度擴大,并進灰度化,使用detector(gray,0)進行臉部位置檢測,循環臉部位置信息,使用predictor(gray,rectl獲得臉部特征位置的信息,將臉部特征信息轉換為數組ar-ray的格式,提取左眼和右眼坐標,構造函數計算左右眼的EAR值,使用平均值作為最終的EAR。用cv2.convexHull獲得凸包位置,使用drawContours畫出輪廓位置,用矩形框標注人臉。分別計算左眼和右眼的評分求平均作為最終的評分,如果小于閾值,則加1,如果連續3次都小于閾值,則表示進行了一次眨眼活動,同時使用cv2.putText將眨眼次數進行顯示。最后基于68個特征點標識,進行畫圖操作。
3.3.2張口檢測
基于DLIB獲取唇部標志的索引,對輸入的視頻流提取幀圖像檢測人臉,先對唇部粗定位進行膚色分割,然后精確定位,獲取唇部特征值MAR,若MAR小于閾值,則加1,如果連續3次都小于閾值,則表示張口一次,同一次張口大約在3幀。
3.3.3實驗結果
本次實驗設置眼部閾值為0.2,唇部為0.5。但每個人的眼睛、嘴巴大小比例不同,應該采取平均值計算方法——閾值的獲取方式是:先采集30次數據,取其平均值作為默認的值。為了數據的準確,采集數據時應該平視攝像頭。實驗結果如圖6。
4總結
人臉識別系統逐漸向著自動化、無人監督化的趨勢發展,然而目前人臉識別技術能識別人臉圖像的身份但無法準確辨別所輸人人臉的真偽。那么如何自動地、高效地辨別圖像真偽抵抗欺騙攻擊以確保系統安全已成為人臉識別技術中一個迫切需要解決的問題。本文基于dlib人臉檢測和關鍵點獲取的基礎上對視頻流中采集到的人臉進行追蹤與判斷,實驗中采集到的人臉較多為平視攝像頭,對于側臉,遮擋等處理效果需要進一步設計與改進。