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