張高銘,馮 瑞
(復(fù)旦大學(xué) 計算機(jī)科學(xué)技術(shù)學(xué)院,上海 201203)
基于人臉的活體檢測系統(tǒng)①
張高銘,馮 瑞
(復(fù)旦大學(xué) 計算機(jī)科學(xué)技術(shù)學(xué)院,上海 201203)
人臉識別技術(shù)由于其成本低、用戶友好、效率高等特點(diǎn)被廣泛應(yīng)用,同時也出現(xiàn)了針對人臉識別的身份偽造攻擊,主要包括照片人臉攻擊、視頻人臉攻擊、三維人臉模型攻擊等方式,對于這些攻擊方式的防范方法都是圍繞著基于人臉的活體檢測這個中點(diǎn)進(jìn)行展開. 本文著重研究的活體檢測方法為眨眼檢測與背景分析算法,通過區(qū)域增長算法進(jìn)行人眼定位、形態(tài)學(xué)操作進(jìn)行人眼張合判斷、感知Hash 算法進(jìn)行背景差異對比,構(gòu)造出一個復(fù)合的活體檢測系統(tǒng). 基于復(fù)合的眨眼檢測與背景分析算法,本文設(shè)計了一個包含眨眼檢測模塊與背景分析模塊的活體檢測系統(tǒng),使用OpenCV2.4.9 與vs2012 的MFC 架構(gòu)實(shí)現(xiàn)了一個可以抵御照片攻擊與視頻攻擊的活體檢測系統(tǒng),并對系統(tǒng)進(jìn)行實(shí)驗(yàn)與評估,在與其它同類型的系統(tǒng)進(jìn)行比較的結(jié)果來看,本文實(shí)現(xiàn)的系統(tǒng)性能表現(xiàn)優(yōu)異.
人臉識別; 活體檢測; 眨眼檢測; 人眼定位; 環(huán)境背景分析
隨著計算機(jī)視覺技術(shù)的飛速發(fā)展,基于人臉識別的身份驗(yàn)證系統(tǒng)正在被廣泛地應(yīng)用在各個場所[1],包括門禁系統(tǒng),軟件登錄系統(tǒng),人群監(jiān)測系統(tǒng)等. 在人臉識別技術(shù)廣泛應(yīng)用的背景下,針對人臉識別系統(tǒng)的身份偽造攻擊也相應(yīng)地逐漸出現(xiàn),最主要的攻擊手段包括照片人臉攻擊與視頻人臉攻擊. 對于這些身份偽造攻擊手段,主要采用的防治方法為基于人臉的活體檢測技術(shù). 比如分析人臉旋轉(zhuǎn)時的面部光流分析法[2],通過分析人臉旋轉(zhuǎn)時產(chǎn)生的光流特征判別活體與照片視頻;傅利葉頻譜與紋理分析法[3],通過分析活體人臉與照片、視頻人臉的傅利葉頻譜以及紋理特征的差異來區(qū)分活體用戶與偽造攻擊; 動態(tài)紋理分析法[4],通過動態(tài)分析人臉的紋理特征來區(qū)別活體人臉與二維人臉. 以上介紹的基于特征的檢測方式對特征提取方式的依賴較大,當(dāng)環(huán)境變化時,特別是光照條件差異懸殊時,特征提取效果就較為不理想,從而影響活體檢測的結(jié)果,所以本文另辟蹊徑,從行為方面著手進(jìn)行活體檢測. 對人對于照片人臉攻擊,可以使用基于眨眼檢測的方式進(jìn)行判別; 對于視頻人臉攻擊,則可以使用背景分析的方式判別. 使用眨眼檢測與背景分析法,構(gòu)造一個復(fù)合的活體檢測系統(tǒng),只有當(dāng)待檢測用戶同時通過眨眼檢測模塊與背景分析模塊,才認(rèn)為待檢測用戶通過活體檢測系統(tǒng),否則不通過. 在實(shí)際的應(yīng)用中,這樣的活體檢測系統(tǒng)可以有效地檢測照片人臉攻擊與視頻人臉攻擊.
復(fù)合活體檢測系統(tǒng)主要分成兩個大的模塊,一個是環(huán)境背景分析模塊,一個是眨眼檢測模塊,各模塊的功能與系統(tǒng)框架如圖1所示.
圖1 系統(tǒng)流程圖
環(huán)境背景分析模塊: 分析人臉環(huán)境與系統(tǒng)環(huán)境背景的區(qū)域圖像是否一致,一致,則環(huán)境背景分析檢測通過,否則拒絕.
眨眼檢測模塊: 分析待檢測對象在規(guī)定時間內(nèi)是否完成眨眼動作,若在一定時間內(nèi)未眨眼,則認(rèn)為待檢測對象為照片攻擊.
本系統(tǒng)的實(shí)現(xiàn)主要基于表1和表2的硬件與軟件系統(tǒng)
表1 硬件配置
表2 軟件配置
環(huán)境背景分析[5,6]的原理是,系統(tǒng)初始化時先保存攝像頭前的圖像作為系統(tǒng)背景,當(dāng)檢測到人臉時,提取人臉周圍區(qū)域的圖像,并提取系統(tǒng)環(huán)境對應(yīng)區(qū)域的圖像,進(jìn)行比較,判斷人臉背景與系統(tǒng)背景的一致性.
環(huán)境背景分析模塊主要包括幾個子模塊:
① 讀取視頻模塊.
② 系統(tǒng)背景更新模塊.
③ 人臉環(huán)境截取與系統(tǒng)環(huán)境截取模塊.
④ 感知Hash值對比模塊.
OpenCV2.4.9提供的類庫屏蔽了繁雜的硬件層的工作,使用其封裝的類可以輕松完成讀取視頻的工作,其中主要用到的類:
cv::VideoCapture;
這個類封裝了讀取視頻流的方法,包括讀取文件視頻流以及攝像頭視頻流,在類構(gòu)造函數(shù)中傳入0,則可以獲取默認(rèn)攝像頭的視頻流. 之后每隔一段時間就調(diào)用該類的方法:
VideoCapture::bool read(cv::Mat& image);
就可以將視頻流的一幀讀入到cv::Mat類型的image變量中,將圖像繪制到系統(tǒng)界面上,則可以顯示視頻流圖像.
對于系統(tǒng)環(huán)境背景,設(shè)置一個變量cv::Mat background表示,系統(tǒng)剛啟動時,將視頻的第一幀賦值給background變量,此后每一幀判斷是否檢測到人臉,若未檢測人臉,判斷距離上次更新環(huán)境背景的時間是否超過60秒,是,則將當(dāng)前幀圖像拷貝給background:
background=img.clone();
其中img表示當(dāng)前幀.
當(dāng)攝像頭傳來的當(dāng)前幀檢測到人臉時,提取人臉周圍區(qū)域的圖像,并提取系統(tǒng)背景相對應(yīng)區(qū)域的圖像.如圖2,由于在人臉照片或人臉視頻中,人臉的背景與系統(tǒng)的背景不相同,所以通過檢測背景的一致性,就可以判斷是否遭受到照片人臉攻擊或視頻人臉攻擊了.
圖2 人臉環(huán)境背景與系統(tǒng)環(huán)境背景
提取出系統(tǒng)與人臉的背景圖像,接下來就要進(jìn)行圖像的相似度比較,這里使用感知Hash算法[7,8],算法的主要過程如下:
① 將圖像縮小到8×8尺寸,目的是為了去除圖像的細(xì)節(jié),只保留大體的結(jié)構(gòu)以及明暗等信息.
② 將縮小尺寸后的圖像轉(zhuǎn)換為64級灰度級.
③ 計算64個像素的平局值.
④ 將每一個像素與平均值進(jìn)行比較,大于平均值則記為1,否則記為0.
⑤ 按照像素的位置順序排列64個0或1數(shù)字,得到一個64位的二進(jìn)制數(shù),被稱為圖像的“指紋”.
比較兩張圖像Hash值的漢明距離,如圖3,距離越小,圖像相似度越高; 距離越大,圖像相似度越低.
圖3 相似圖像與不相似圖像的Hash值差異
眨眼檢測模塊的主要工作原理是,活體人眼會進(jìn)行不自覺的眨眼動作,而照片等靜態(tài)人眼圖像是無法進(jìn)行眨眼動作的,所以進(jìn)行眨眼檢測,可以有效地區(qū)分照片攻擊與合法的用戶登錄.
眨眼檢測主要有以下幾個子模塊:
① 人眼定位模塊.
② 人眼張合狀態(tài)判斷模塊.
③ 張合狀態(tài)序列分析模塊.
使用區(qū)域增長算法[6,7]進(jìn)行人眼定位,該算法的主要流程:
① 通過人臉檢測模塊首先估計出鼻尖的坐標(biāo)位置(x0,y0),估計鼻尖-瞳孔的矩形框初始大小為w0、h0,并定義閾值D.
② 設(shè)矩形框初始的左下角為(x0,y0),矩形框的初始寬度為w0,初始高度為h0,計算初始平局灰度值Imean(0).
③ 進(jìn)行迭代,在i+1步,矩形框保持寬高比例進(jìn)行固定,左下角坐標(biāo)固定,進(jìn)行向右、向上增大,計算每次迭代新的平均灰度值.
提取人眼區(qū)域中的人眼圖像,做灰度值轉(zhuǎn)化、自適應(yīng)閾值二值化后,就得到一個人眼區(qū)域的二值圖像,分析人眼張開與閉合時的形態(tài): 當(dāng)人眼張開時,眼珠露出,二值圖像中黑色區(qū)域較大; 人眼閉合時,人眼二值圖像只有一條狹窄的眼縫黑色區(qū)域.
先對人眼圖像做一次形態(tài)學(xué)開操作[11],消除眼珠中的高亮區(qū)域; 再做一次閉操作,消除狹窄的眼縫區(qū)域;如圖4,形態(tài)學(xué)操作后圖像中黑色像素的個數(shù),根據(jù)人眼張合狀態(tài)的不同呈現(xiàn)出巨大的差異,所以可以統(tǒng)計操作后黑色像素的個數(shù)來判斷人眼的張合狀態(tài).
圖4 不同狀態(tài)人眼形態(tài)學(xué)操作后
通過對一系列幀人眼圖像的張合狀態(tài)判斷,得到一個人眼張合狀態(tài)的序列.
定義一個人眼張合狀態(tài)的集合Q:
其中,O代表睜眼狀態(tài),C代表閉眼狀態(tài). 則兩次眨眼動作包含以下序列:
在規(guī)定時間內(nèi)若檢測到張合狀態(tài)序列中包含以上子序列,則認(rèn)為眨眼檢測通過,否則不通過.
通過將系統(tǒng)各個模塊組織起來,利用VS2012與OpenCV庫,實(shí)現(xiàn)了一個基于Windows系統(tǒng)的活體檢測
系統(tǒng)應(yīng)用程序,其主界面如圖5所示,界面上有包括顯示實(shí)時視頻圖像區(qū)域、背景分析區(qū)域以及眨眼檢測區(qū)域,其中背景分析區(qū)域與眨眼檢測區(qū)域包含參數(shù)設(shè)置以及中間結(jié)果顯示的功能. 兩個模塊任一個檢測結(jié)果為拒絕則活體檢測結(jié)果為拒絕,兩個模塊檢測結(jié)果均為通過活體檢測為通過.
架好攝像頭并開啟活體檢測系統(tǒng),調(diào)整參數(shù)后,將包含人臉的靜態(tài)照片放在攝像頭前,觀察系統(tǒng)的反饋行為(圖6).
圖5 系統(tǒng)界面
如圖6,當(dāng)數(shù)碼照片放置在攝像頭前時,首先觀察背景分析的結(jié)果,通過系統(tǒng)界面可以看到,人臉環(huán)境背景與系統(tǒng)環(huán)境背景的對比值為13,超過閾值5,所以背景分析模塊給出了拒絕的檢測結(jié)果.
圖6 數(shù)碼照片攻擊
對于眨眼檢測模塊,從直方圖上可以看出,由于靜態(tài)照片的人眼不發(fā)生眨眼行為,所以直方圖上沒有表現(xiàn)出明顯的波谷,所以眨眼檢測模塊也給出了拒絕的檢測結(jié)果.
綜合眨眼檢測模塊與背景分析模塊,活體檢測系統(tǒng)的檢測結(jié)果為拒絕.
另一種照片攻擊的方式是使用實(shí)體照片,將照片打印出,并沿著人臉輪廓剪下,用裁剪下的人臉進(jìn)行攻擊,如圖7 所示.
圖7 裁剪人臉攻擊
由于使用裁剪的人臉,不同于數(shù)碼照片,人臉周圍的環(huán)境圖像與系統(tǒng)環(huán)境圖像相同,環(huán)境分析給出了接受的檢測結(jié)果,同時眨眼檢測的結(jié)果為拒絕,所以活體檢額的綜合結(jié)果為拒絕.
將活體檢測系統(tǒng)啟動后,將帶有眨眼動作的人物視頻在攝像頭前播放,觀察系統(tǒng)的反饋行為(圖8).
圖8 視頻攻擊
如圖8,當(dāng)包含眨眼動作的視頻放置在攝像頭前時,首先觀察背景分析的結(jié)果,通過系統(tǒng)界面可以看到,人臉環(huán)境背景與系統(tǒng)環(huán)境背景的對比值為35,超過閾值10,所以背景分析的結(jié)果為拒絕.
再觀察眨眼檢測的結(jié)果,由于視頻人臉擁有眨眼行為,通過觀察直方圖可以看出,直方圖上有許多低谷,代表人眼閉合的瞬間. 通過分析人眼狀態(tài),眨眼檢測模塊給出了接受的結(jié)果.
由于背景分析與眨眼檢測有一個模塊給出了拒絕的結(jié)果,所以活體檢測系統(tǒng)給出的整個檢測結(jié)果為拒絕.
活體檢測系統(tǒng)啟動后,合法的活體用戶在攝像頭前保持幾秒,觀察系統(tǒng)的反饋行為(圖9).
如圖9,當(dāng)合法活體用戶站在攝像頭前時,首先觀察背景分析的結(jié)果,通過系統(tǒng)界面可以看到,人臉環(huán)境背景與系統(tǒng)環(huán)境背景的對比值為0,低于閾值,所以背景分析的結(jié)果為接受.
圖9 合法登錄
再觀察眨眼檢測的結(jié)果,由于活體用戶擁有眨眼行為,通過觀察直方圖可以看出,直方圖上有許多低谷,代表人眼閉合的瞬間,通過分析人眼狀態(tài),眨眼檢測模塊給出了接受的結(jié)果.
背景分析與眨眼檢測均給出了接受的結(jié)果,所以活體檢測系統(tǒng)給出的整個檢測結(jié)果為接受.
為了測試結(jié)合了眨眼檢測與環(huán)境背景分析的復(fù)合活體檢測系統(tǒng),使用100張照片、20段視頻以及20次合法登錄,記錄并分析結(jié)果,如表3所示.
通過實(shí)驗(yàn),對活體檢測系統(tǒng)進(jìn)行120次照片、視頻攻擊,116 次正確拒絕,4 次錯誤接收,錯誤接受率(FAR): 3%. 對活體檢測系統(tǒng)進(jìn)行 20 次合法登錄,1 次錯誤拒絕,19 次正確接受,錯誤拒絕率 5%. 故系統(tǒng)的等錯誤率 (EER): 4%. 總體來說,本算法在能以較低的錯誤接受率來識別照片攻擊與視頻攻擊的同時,能以較低的錯誤拒絕率來辨別合法的人臉識別登錄,性能良好.
表3 照片攻擊、視頻攻擊及合法登錄對比
為了測試系統(tǒng)的魯棒性,在不同光照條件下對系統(tǒng)進(jìn)行實(shí)驗(yàn),結(jié)果如表4所示.
表4 不同光照條件下的等錯誤率
可以看出,系統(tǒng)在光線較為充足的情況下表現(xiàn)良好,而對于光線很暗的環(huán)境里,系統(tǒng)無法工作.
為了對本系統(tǒng)的性能有個具體的了解,與同類型的其它文獻(xiàn)所提出的方法進(jìn)行比較,情況如表5.
表5 各系統(tǒng)等錯誤率對比
表5中,文獻(xiàn)[4]使用的是動態(tài)紋理法,文獻(xiàn)[3]采用傅利葉頻譜與紋理分析結(jié)合的方法,文獻(xiàn)[2]采用的是面部光流法,文從對比中可以看出,本系統(tǒng)的等錯誤率比文獻(xiàn)[2]、文獻(xiàn)[3]都要高,而與文獻(xiàn)[4]相同,在同類系統(tǒng)中處于相對優(yōu)秀的水平.
本文探討了對人臉識別的攻擊手段,并針對照片攻擊與視頻攻擊設(shè)計、實(shí)現(xiàn)了一個活體檢測系統(tǒng),包括背景分析與眨眼檢測模塊.
對于背景分析模塊,關(guān)鍵技術(shù)有背景更新、背景提取、背景比對,對于眨眼檢測模塊,關(guān)鍵技術(shù)包括人眼定位、人眼張合判斷、張合狀態(tài)序列分析等. 利用VS2012以及OpenCV開源庫,實(shí)現(xiàn)了一個基于Windows操作系統(tǒng)的桌面應(yīng)用程序,在對系統(tǒng)的實(shí)驗(yàn)測評結(jié)果來看,本系統(tǒng)在同類系統(tǒng)中表現(xiàn)較好.
1Chellappa R,Wilson CL,Sirohey S. Human and machine recognition of faces: A survey. Proc. of the IEEE,1995,83(5): 705–741. [doi: 10.1109/5.381842]
2Smiatacz M. Liveness measurements using optical flow for biometric person authentication. Metrology and Measurement Systems,2012,19(2): 257–268.
3Kim G,Eum S,Suhr JK,et al. Face liveness detection based on texture and frequency analyses. 2012 5th IAPR International Conference on Biometrics. New Delhi,India. 2012.67–72.
4de Freitas Pereira T,Komulainen J,Anjos A,et al. Face liveness detection using dynamic texture. EURASIP Journal on Image and Video Processing,2014,2014: 2.
5Yan JJ,Zhang ZW,Lei Z,et al. Face liveness detection by exploring multiple scenic clues. 2012 12th International Conference on Control Automation Robotics & Vision.Guangzhou,China. 2012. 188–193.
6Komulainen J,Hadid A,Pietik?inen M,et al. Complementary countermeasures for detecting scenic face spoofing attacks. 2013 International Conference on Biometrics.Madrid,Spain. 2013. 1–7.
7Buldas A,Kroonmaa A,Laanoja R. Keyless signatures’infrastructure: How to build global distributed hash-trees.Proc. of the 18th Nordic Conference on Secure IT Systems.Ilulissat,Greenland. 2013. 313–320.
8Phash POHO. pHash.org: Home of pHash,the open source perceptual hash library. Phash.
9Yuille AL,Hallinan PW,Cohen DS. Feature extraction from faces using deformable templates. International Journal of Computer Vision,1992,8(2): 99–111. [doi: 10.1007/BF 00127169]
10Deng JY,Lai FP. Region-based template deformation and masking for eye-feature extraction and description. Pattern Recognition,1997,30(3): 403–419. [doi: 10.1016/S0031-3203(96)00086-6]
11Mohammed AA,Anwer SS. Efficient eye blink detection method for disabled-helping domain. International Journal of Advanced Computer Science & Applications,2014,5(5):202–206. [doi: 10.14569/IJACSA.2014.050530]
Liveness Detection System Based on Human Face
ZHANG Gao-Ming,FENG Rui
(School of Computer Science and Technology,Fudan University,Shanghai 201203,China)
The face recognition technology is widely used for its low cost,user-friendly and high efficiency. At the same time,identity forgery attack has also been the corresponding occurrence. The face recognition system attacks include photo face attacks,video face attacks and three-dimensional face model attacks,etc. For these attacks,prevention methods are carried out around the midpoint of in liveness detection based on human face. This paper focuses on the blink detection and background analysis algorithm,and carries out eye location with regional growth algorithm. The morphological operation is used to judge the human eye state,and the Hash algorithm is used to compose the background difference. These methods construct a Liveness Detection Systems. Based on the blink detection and background analysis algorithm,this paper designs a liveness detection system including blink detection module and background analysis module; uses the MFC architecture and OpenCV2.4.9 to build a liveness detection system which can resist photo attack and video attack; makes the experiment and evaluation of the system. In comparison with other similar types of systems,the system performance of this paper is excellent.
face recognition; liveness detection; blink detection; eye localization; environmental background analysis
張高銘,馮瑞.基于人臉的活體檢測系統(tǒng).計算機(jī)系統(tǒng)應(yīng)用,2017,26(12):37–42. http://www.c-s-a.org.cn/1003-3254/6100.html
臨港地區(qū)智能制造產(chǎn)業(yè)專項(xiàng)(ZN2016020103)
2017-03-07; 修改時間: 2017-03-27; 采用時間: 2017-04-07