葉曉峰,邱 健,鄺澤權,關健恒,鄭文靖,李卓文
(華南師范大學物理與電信工程學院,廣東廣州 510006)
隨著計算機視覺在人工智能領域的快速發展,人臉識別作為一種重要的身份鑒別技術廣泛應用于出入門禁、考勤打卡、安全監控、刑事偵查、快捷支付等領域[1]。然而,由于人臉容易被偽造,人臉識別系統的安全性受到威脅。目前,人臉偽造攻擊方式一般有照片攻擊、視頻回放攻擊以及人臉面具或模型攻擊[2-4]。其中,人臉面具或模型制作工藝較為復雜,因而比較常見的是照片和視頻人臉欺騙攻擊。面對人臉偽造攻擊,活體檢測技術應運而生。
基于圖像紋理分析的方法依據照片或顯示屏上的人臉圖像經過二次或多次采集后,通過甄別局部高光區域、陰影區域以及圖像清晰度等紋理細節與真臉存在的差異,實現真假人臉識別[5]。Li 等[6]提出采用傅里葉頻譜分析方法判別真假人臉,認為照片為平面且尺寸較小,因而高頻分量較少,同時在一定時間內無運動;局部二值模式(Local Binary Patterns,LBP)等算子或其改進方法常用于人臉圖像的紋理特征描述[7-9],在實驗中有較高的檢測準確率。然而,基于紋理的方法容易受圖像質量、光照條件等因素影響,且跨數據集通用能力不強[10]。
基于運動信息的方法在生活中較常見,活體認證時要求用戶配合完成隨機指定的動作,通過實時檢測用戶的眨眼、張嘴等動作狀態來判斷是否為真人[11]。該方法識別率很高,但需要用戶長時間配合,用戶體驗感不好,存在可能被視頻攻擊的風險。
活體檢測可在非可見光波段實現。在近紅外光譜下,由于真人皮膚和偽造人臉材質不同,會表現出明顯的反射特性差異,從而可以排除非活體人臉[12]。偽造人臉溫度往往比真人臉低,其紅外輻射較小,熱紅外圖像相對真人臉較為暗淡,因此可使用熱紅外成像方法進行活體檢測[13]。上述方法檢測效果較好,但采集條件較嚴格,對設備要求較高,成本遠高于一般可見光系統。
基于深度信息的方法考慮照片和顯示屏上的人臉是平面結構,而真實人臉具有立體三維結構,所以可利用深度信息的差異進行活體檢測。Lagorio 等[14]利用結構光3D掃描儀獲取特征點的三維信息,通過計算各點的表面曲率判別人臉真偽,很好地排除了假人臉,但將圖片進行彎曲時檢測效果不理想,而且掃描儀設備結構較復雜,成本較高。
針對活體檢測方法存在的問題,本文提出一種基于雙目視覺深度信息的人臉活體檢測方法。該方法作為基于深度信息方法的一種,無需用戶過多配合,對照片和視頻假人臉有很好的區分效果,硬件設備簡單、成本較低,滿足多數實際應用需求。依據雙目視覺原理對人臉特征點進行三維重建,建立基于人臉深度特征的活體判別模型。對于人臉照片彎曲的特殊情況借助層次分析法(Analytic Hi?erarchy Process,AHP)進行主觀賦權,提高了活體檢測的魯棒性。本系統應用上述方法,以樹莓派為控制核心,設計一個活體人臉識別的小型化檢測裝置。該裝置具有算法簡單、準確率高、設備便攜、功耗小等優點。
依據雙目視覺原理可實現目標物的三維重建,其實質是利用雙目攝像頭系統的成像關系,由三角形幾何關系計算出圖像中物體的三維坐標[15]。
經過立體校正后,雙目攝像頭平面已經達到前向平行對準[16],即左、右攝像頭的主光軸相互平行,且成像面在同一平面上。雙目攝像頭系統的三維成像如圖1 所示,其中Cl和Cr分別表示左、右攝像頭的光心,兩個光心之間的距離(基線距離)為b。對于同一目標點P(x,y,z)(左攝像頭坐標系中的坐標),其在兩個相機坐標系中的Z軸坐標相同。

Fig.1 Imaging principle of binocular camera system圖1 雙目攝像頭系統成像原理
圖2 為圖1 在X-Z平面上的投影成像原理。其中,f表示兩攝像頭的焦距,P點為空間中一目標點,z為P點在Z軸方向上的坐標,Pl和Pr分別為P點在左、右攝像頭平面上的成像點,它們在左、右攝像頭坐標系中的X軸坐標分別為xl和xr。將右像平面上的Pr點映射至左像平面上的點,使得線段和PrCr平行,則由幾何關系可知點即是空間點P '(x-b,z)在左像平面上的成像點。

Fig.2 Imaging principle on the X-Z plane圖2 X-Z 平面上的成像原理
由三角形相似關系可以得到:

在此定義視差為d=xl-xr,對上式進行變換有:

由式(2)可知,在確定了兩個攝像頭的基線長度b和焦距f后,只要求出目標點在兩攝像頭成像面上成像時的視差d,便可確定目標點在攝像頭坐標系中的Z軸坐標,即該點到攝像頭平面的距離。而在雙目測距過程中,基線長度和焦距可在相機標定時求得,視差則可由立體匹配得到。
根據三角形關系還可求得目標點在X軸和Y軸方向上的坐標,這樣就能獲得空間點在實際場景中的三維信息,實現三維物體重建,表達式如下:

對人臉進行活體識別需要檢測出人臉特征點,因此提取人臉特征點是很重要的一步。由于本文研究的重點是活體檢測,因此提取人臉特征點直接使用Dlib 庫提供的68點標記方法。該方法基于級聯回歸樹(Ensemble of Regres?sion Trees,ERT)算法,即基于梯度增強學習的回歸樹訓練方法[17]。其準確性較高,對人臉特征點識別和標記速度較快,且對人臉角度沒有太大要求,可根據人臉姿態的變化進行檢測[18]。使用Dlib 庫的標準特征點檢測模型提取到的68 個特征點位置如圖3 所示,還可根據需要由68 個特征點位置確定其它特征點位置。

Fig.3 68 facial feature points圖3 人臉68 個特征點
在調用雙目視覺中的立體匹配算法后,可以得到左、右圖像中對應點的視差圖,并由視差圖計算出人臉圖像的深度矩陣。只要獲得了任一所需特征點位置,就能得到該特征點的三維坐標。
層次分析法是一種將定性與定量分析結合的多因素決策分析方法,用決策者的經驗判斷和推理各標準之間的相對重要程度,并進行量化表示,合理給出每個標準的權重,利用權重求出各方案的優劣次序[19],常用于主觀賦權。
在實際問題中,首先要建立目標層、準則層、方案層的多層次結構模型[20],然后對每一層因素進行兩兩比較,構造判斷矩陣。如表1 所示,采用1-9 分的標度方法。其中,每兩個因素之間的標度值互為倒數,表示相對重要性相反。
可使用和積法計算判斷矩陣的最大特征根及其特征向量。先將判斷矩陣的每一列元素歸一化,再將每一行元素相加,對得到的列向量進行歸一化處理,便可得到近似特征向量即權向量,然后通過式(4)得到最大特征根。其中,Aw表示判斷矩陣A和權向量w的乘積。

Table 1 Definition of the scale of judgment matrix表1 判斷矩陣標度的定義

為保證構造的判斷矩陣有較好的一致性,還需要通過一致性檢驗指標CI 和RI 來衡量矩陣偏離程度[20]。其中,一致性指標CI 由式(5)得到,平均隨機一致性指標RI 的值如表2 所示[21]。


Table 2 Values of average random consistency index RI表2 平均隨機一致性指標RI 的值
若一致性比率CR=CI/RI<0.1,就可認為判斷矩陣滿足一致性要求,否則需要修改判斷矩陣,重新計算權重。
本文所考慮的活體檢測主要用于區分真實人臉與照片、視頻中的偽造人臉。真實人臉三維結構與這些假人臉相比差別較大,其各個面部器官是立體的。對于平面結構的假人臉,其各個位置的深度相同,而即便將照片偏轉或彎曲折疊,其深度信息也不會與真人臉相同。由此,可將雙目視覺原理計算出的深度信息作為區別真假人臉的特征。
由于鼻尖點到攝像頭的距離最小,本文以鼻尖點為參考點,選取10 個特征點與鼻尖點的深度差值構建深度特征,這些深度差值在一定程度上能反映面部器官三維結構的凹凸起伏狀況。如圖4 所示,點①②為眉梢點,③④為外眼角點,⑤⑥為顴骨點,⑦⑧為嘴角點,⑨⑩為鼻根點和下巴中心點。根據各點位置為各深度差值賦以權值,計算其加權和,由此構建判別模型,如式(6)所示。


Fig.4 10 selected feature points圖4 選取的10 個特征點
其中,di表示各點與鼻尖點的深度差,wi表示各點所占權重,D 表示總深度特征值。顯然,平面偽造人臉的總深度特征值應接近于0,而真實人臉的總深度特征值則為相對較大的正值,如此便可判定人臉的真實性。
真實人臉與平面假人臉在各點權重相等時就能取得較好效果,但顯示偽造人臉照片、電子顯示屏等往往會被攻擊者嘗試往水平或豎直方向偏轉一定角度,這樣人臉圖像上各點的深度就會有所差異,可能使D 值較大。對于這種攻擊情況要考慮讓左右和上下兩邊的權值相等(分隔線見圖4),從而使兩邊的深度差值正負抵消,D 值仍然較小。綜上所述,對于各特征點深度差值所占權重的分配需要在權值平均分配基礎上,使權值左右對稱、上下相等。權值按表3 分配即可有效抵御平面假人臉及其在水平或豎直方向上偏轉的攻擊。

Table 3 Weights for the flat fake face and its deflection表3 針對平面假人臉及其偏轉情況的權值
偽造人臉攻擊還有其它形式,如將人臉照片進行一定程度的彎曲,包括向內彎曲和向外彎曲(見圖5)。對于向內彎曲,由于各點深度比鼻尖點小,因此D 為負值,在各種權值分配下與真實人臉依然有很好的區分度。而向外彎曲時由于各點深度差均大于0,很接近于真實人臉情況,最有可能造成誤判。這時要使D 盡量小,需要使兩條分隔線附近點的權值大于兩端距離較遠的點的權值,例如在水平方向向外彎曲時應適當增大第9 和第10 號檢測點權值,本文在此借助層次分析法進行主觀賦權。

Fig.5 Curved face photos圖5 彎曲人臉照片
應使分隔線附近點權重較大,但是權值不可能同時符合兩個方向彎曲要求,因此需要分兩種情況構造判斷矩陣。本文給出水平方向向外彎曲情況下的判斷矩陣,如表4 所示。

Table 4 Judgement matrix for the situation of horizontal outward bending表4 水平向外彎曲情況判斷矩陣
然后按AHP 的基本步驟便可計算出相應的權向量并進行一致性檢驗,由此得到兩種情況下的權值如表5 所示。

Table 5 Weights for the situation of horizontal and vertical outward bending表5 水平和豎直向外彎曲情況的權值
最后,按照分配的3 種權值分別計算總深度特征值D,并求出其中的最小值Dmin。若為假人臉,則至少在其中一種權值下的D 值較小,即Dmin值較小,而真人臉計算出的D值總是較大的,據此進行判別。根據實驗測試數據可確定真實人臉和偽造人臉之間深度特征的閾值。當計算出的最小值大于閾值時,就判定為真實人臉,否則判定為偽造人臉。
本裝置硬件設備比較簡單,主要由樹莓派和雙目攝像頭模組組成,具有很好的便攜性。其中,樹莓派為裝置的控制核心[22]。版本為3B+,采用ARM Cortex-A53 架構,包含4 個1.4GHz 的64-bit CPU,1G 內存。樹莓派3B+搭載官方的基于Linux 的Raspbian 操作系統,同時支持Python、Ja?va、C、Perl 等多種編程語言,功能十分完善,計算能力也很可觀,能夠較好地支持所需功能。
攝像頭采用集成的高清USB 雙目攝像頭模組。該攝像頭模組支持UVC 免驅協議,在MJPEG 格式下分辨率及幀率最高可達1 920×1 080 和30fps,且與樹莓派系統兼容,適用于軟件開發。
軟件開發以Python 作為編程語言,其功能實現的測試流程如圖6 所示。首先,需要對雙目攝像頭進行標定,以獲得攝像頭的內、外參數;再根據標定參數對采集到的圖像進行立體校正,以消除畸變,使兩個成像平面同行共面,減少立體匹配的計算量[23];然后調用半全局塊匹配(Semi-Global Block Matching,SGBM)算法匹配左、右圖像中的對應點[24],獲得人臉圖像的視差圖,并計算出深度矩陣,即得到三維坐標。從左圖中提取人臉特征點,使用人臉活體檢測算法判別人臉真偽;調用基于Haar 特征的級聯分類器及局部二值模式直方圖(Local Binary Patterns Histograms,LB?PH)算法,分別實現人臉檢測和人臉識別功能[25-26],最終將活體人臉識別結果上傳至數據庫。

Fig.6 Software testing process圖6 軟件測試流程
設計的主界面如圖7 所示,其集合了“拍攝照片”“顯示圖片”“立體匹配”“人臉真假判別”和“人臉數據采集”等幾個功能模塊。其中,在視頻窗口通過加入矩形采集框方式對人臉位置、距離加以限制,以提高測量的可靠性。

Fig.7 Software main interface圖7 軟件主界面
考慮到數據的全面性和可靠性,實驗采集不同姿態、佩戴與不佩戴眼鏡的人臉圖像200 對,正對攝像頭、相對攝像頭朝不同方向偏轉以及不同彎曲方向和彎曲程度的偽造人臉圖像每組各100 對。由于人臉識別系統一般要求人臉只能正對攝像頭或小角度偏轉,因而對于真實人臉并未采集大角度偏轉圖像。為避免環境因素影響,實驗均在相同的室內環境中進行。實驗分下午和晚上兩組,在同一時間段采集真假人臉圖像,且室內燈光亮度充足。實驗圖像為固定于同一位置的雙目攝像頭模組所拍攝,并采用樹莓派3B+進行數據處理。
本文實驗包括真假人臉深度信息對比實驗和真假人臉判別實驗兩部分。首先對真實人臉和平面偽造人臉的深度信息進行對比,通過觀察各特征點的深度特征,驗證基于雙目深度信息的活體檢測方法可行性;然后對本文方法進行真假人臉的判別實驗。在活體檢測方法中需要確定一個合適的閾值,它直接影響到活體檢測的準確率。實驗將偽造人臉分為正對攝像頭和相對攝像頭成像面偏轉的平面人臉,以及向內和向外的彎曲人臉4 種情況??紤]到只有向外的彎曲人臉所計算出的總深度特征值才有可能接近真實人臉,且彎曲程度越大越接近,因此需要先針對不同彎曲程度的向外彎曲人臉照片進行測試,以獲得深度特征閾值,再根據該閾值對其它情況進行判別。
圖8 和圖9 分別為系統對真實人臉和平面假人臉照片的識別結果。從圖中可以看到系統會生成視差圖,檢測出人臉區域及提取特征點,并給出活體檢測與人臉識別的判斷結果。
表6 為真假人臉各特征點與鼻尖點之間的平均深度差值。由表6 可知,真實人臉各特征點深度均大于鼻尖點深度,而平面假人臉各特征點深度都與鼻尖點接近,驗證了真假人臉在深度信息上具有明顯差別,初步證明本文方法可行。

Fig.8 Real face result display圖8 真實人臉結果顯示

Fig.9 Flat fake face result display圖9 平面假人臉結果顯示

Table 6 Depth information of feature points of real and fake face表6 真假人臉特征點深度信息
本實驗首先對真實人臉和向外彎曲人臉照片進行測試,結果如表7 所示。其中,在實驗時將人臉照片直接對折來表示彎曲情況,以對折后兩邊的夾角來區分不同的彎曲程度,夾角越小則彎曲程度越大,深度特征值Dmin也越大。
實驗中發現,對于真實人臉,其Dmin值大小大部分在15~30 之間,只有個別在15 以下;對于向外彎曲的人臉照片,Dmin值除少數幾個外基本不超過10??紤]到活體檢測中排除偽造人臉的攻擊更為重要,因此將閾值取15,較大的閾值能保證偽造人臉檢測結果的準確性。而若是真實人臉被錯誤地判斷為假人臉,仍可重新進行檢測。從實驗結果來看系統對真實人臉的判別仍具有較高的準確率。
此外,當彎曲人臉照片夾角小于90°時,因彎曲程度較大,檢測模型無法提取出人臉特征點位置,此時深度特征值無法計算,因此在實驗時直接判定為偽造人臉。

Table 7 Experimental results of real faces and outwardly curved face photos表7 真實人臉與向外彎曲人臉照片實驗結果
然后以15 為閾值對偽造人臉的其它3 種情況進行測試,結果如表8 所示。其中,平面人臉的深度特征值接近于0;向內彎曲的人臉照片深度特征值為負值,這是因為選取點的深度值都小于鼻尖點的深度值。該結果表明真實人臉與另外3 種情況偽造人臉的深度特征差異顯著,該方法能有效分辨出人臉真偽。

Table 8 Experimental results of three kinds of fake faces表8 三種偽造人臉實驗結果
綜上所述,活體人臉識別裝置對各種情況下的人臉真偽判別準確率都很高。在適當犧牲真實人臉準確率的情況下,偽造人臉識別準確率在實驗范圍內可達到100%,而真實人臉的準確率也有98%,能夠有效抵御各種假人臉照片和視頻的攻擊。由此可知,本文采用的人臉活體檢測方法簡單可行,具有較高的可靠性和較好的魯棒性。
考慮到人臉面部器官的三維凹凸性特征,本文提出基于雙目視覺獲取的三維信息對人臉特征位置進行深度計算,并結合AHP 主觀賦權的活體檢測簡化算法思路;采用樹莓派作為核心控制器,設計系統用戶界面,完成功能移植和小型化裝置搭建,實現人臉檢測、人臉識別和活體檢測功能。實驗結果表明,該裝置能夠有效提取真假人臉的深度特征,對于偽造人臉的攻擊有很好的判別能力,同時簡單便攜、硬件成本低、功耗小等特點使其具有很好的應用前景。
后續將對人臉特征點提取算法進行優化,減少在樹莓派上人臉特征點檢測時間,更高效準確地進行人臉識別。