熊興發(fā)
(摩佰爾(天津)大數(shù)據(jù)科技有限公司 天津300456)
近年來生物識別技術在安全認證領域正發(fā)揮越來越重要的作用,特別是隨著深度學習的興起,使人臉識別技術漸趨成熟,基于深度學習的人臉搜索、人臉比對、人臉認證登錄等已成為當下研究熱點。然而,僅依賴深度學習的人臉識別技術在安全性方面還存在一定欠缺。單純的深度學習人臉識別無法判斷圖像是活體真人還是照片或者視頻,往往很容易被視頻或圖像欺騙。目前主流的人臉識別反欺詐系統(tǒng)主要有兩大類。
①配合式的人臉識別反欺詐。這種方式需要使用者在攝像頭前配合語音或文字提示做出相關動作,比如眨眼、張嘴、轉頭等操作,這種反欺詐方式用戶體驗差,認證時間長,單純的眨眼或者點頭很容易被視頻欺詐。為提高安全性需要隨機生成相關指令,這就增加了認證時間,降低了用戶體驗。
②非配合式的人臉識別反欺詐。這類認證系統(tǒng)往往需要特定的攝像頭等輔助硬件設備,如:利用紅外攝像頭的人臉識別反欺詐;配合泛光感應原件和點陣投射器等形成 3D結構光,從三維角度實現(xiàn)活體認證等。這類反欺詐方式往往對硬件設備要求高,成本相對較高,僅適用于安全認證級別較高的支付場景。對于一般安全級別要求,采用此類設備往往投入和收益不成比例。
為了在一定程度上解決單純采用深度學習系統(tǒng)進行人臉識別的安全問題,在不增加硬件成本的條件下提升人臉識別的安全性,同時去除繁瑣的配合式安全認證步驟,提升用戶體驗,使算法易于集成,提出一種基于人臉圖像頻域紋理的 2D人臉反欺詐輔助算法。該算法能夠判斷攝像頭采集的圖像是否經過二次翻拍,從而得出圖像是否為真人,進而達到提升人臉識別安全性的目的。
本方案提出的算法屬于單幀檢測算法,所以只需要普通攝像頭采集單幀2D原始圖像。
該算法本質上是利用翻拍圖像所具有的特殊的紋理結構在頻域當中進行判斷,一般來說,翻拍圖像具有較低的頻率,高頻部分較少,例如翻拍圖像所具有的摩爾紋、相機反射光等。針對摩爾紋,目前尚沒有有效的辦法在時域當中進行判斷,較好的方式是將采集的原始圖像進行離散傅里葉變換轉換至頻域,然后再做進一步處理。但是,如果直接對所采集的圖像進行離散傅里葉變換,很容易因頻譜泄露,導致對后續(xù)判斷產生嚴重影響。因此,在做離散傅里葉變換之前需要對二維圖像進行窗函數(shù)處理,具體為:設 M、N分別表示圖像的高寬,首先利用公式(1),依據(jù)圖像的高和寬生成對應一維漢寧窗向量。
由于圖像為二維矩陣,需要根據(jù)一維漢寧窗向量生成二維矩陣,然后跟原始圖像做點積運算,即漢寧窗處理后的圖像如公式(2),其中 Hm和 Hn分別為m×1以及n×1的一維漢寧窗向量。
一般來說,沒有很好的方式在時域當中根據(jù)圖像的細微紋理特征判斷圖像是否是二次翻拍,特別是針對翻拍質量比較好的圖像,摩爾紋紋理在時域當中只有非常細微的差別,如圖1所示。
圖1 正常采集圖像和翻拍圖像的細節(jié)區(qū)別(左真右假)Fig.1 Details of normal image acquisition and remake images(left is true, and right is false)
所以有必要利用離散將圖像轉換至頻域。離散傅里葉變換DFT公式如下:
圖2 不同sigma下的高斯差分濾波器Fig.2 Gaussian difference filter under different Sigma
對漢寧窗圖像進行離散傅里葉變換后得到的圖像需要進一步做高斯差分濾波,因為不同環(huán)境下拍攝到的圖像特征并不完全相同(如圖2所示同sigma下的高斯差分濾波器),很難采用一種直接的基礎帶通過濾篩選適宜的頻率部分,因此需要采用不同的sigma參數(shù)值以及 k值來確定合適的帶通參數(shù)(其中sigma為高斯核函數(shù)方差,k稱為帶通的帶寬),試驗過程中方差sigma從0增加到150,k保持為2不變,其中二維高斯核確定像素點的值為:
利用不同的高斯差分濾波器對圖像進行帶通濾波,其中G是具有0均值和對應方差的高斯核函數(shù):
對不同的高斯差分濾波器濾波得到的離散傅里葉圖像構建峰值檢測器進行峰值檢測。具體地,又主要分為以下5個細分步驟:
① 給定閾值,對帶通后的傅里葉圖像進行二值化處理。圖像閾值的二值化處理較為簡單,即超高閾值的圖像像素部分取值為 1,低于閾值的圖像像素部分取值為0。數(shù)學表示如下:
上述公式的t值即為設定的閾值,實際上,閾值t的選擇是該算法的核心,直接關系到算法的成敗。閾值t是使下述相關系數(shù)最大時的t值。
② 計算圖像相關系數(shù)。具體地,給定圖像 A和二值化圖像 B(這里的二值化單指 0,1的二值化,不規(guī)范到0~255),相關系數(shù)按下式計算:
其中:
公式(8)—(12)當中,g是帶通后的傅里葉頻域圖像各個像素點的灰度值,p(g)表示該灰度水平的概率(頻率),p(g)根據(jù)帶通后傅里葉圖像的直方圖獲得。t即二值化圖像時所采用的閾值,最終t值實際上需要根據(jù)搜索算法獲得能夠使得上述相關系數(shù)最大的 t。而μ0和μ1表示閾值上下限的均值或期望值,μ0和μ1可以按照公式13、14計算:
③ 依據(jù)上述公式(8)—(14),對于每一個不同的閾值 t,顯然都能得到不同的相關系數(shù)ρ,但在實際上需要尋找能夠使得相關系數(shù)最大的閾值tmax。即:
獲取 tmax的方法比較多,這里采用一階搜索的方式獲取,實際上如果為了便于顯示把帶通后的傅里葉頻域圖轉換為 0~255之間,也可以采用循環(huán)的方式暴力搜索,但是這樣將會影響算法的計算效率。
④ 找到最優(yōu)閾值 t之后,即可根據(jù)步驟①給出的二值化公式獲取最優(yōu)閾值下的二值化的離散傅里葉帶通頻域圖像。如圖3的第3以及第4列圖像。實際上,不同帶通下都有最優(yōu)閾值t以及對應的二值圖像。圖3的第3列是σ為40時的二值化傅里葉頻域圖像。
圖3 中間過程與最終結果Fig.3 Intermediate process and final result
根據(jù)上述步驟得到的最優(yōu)二值化的圖,依據(jù)下述公式計算對應的P值:
其中 M、N為圖像的尺寸,分別表示高和寬,T表示二值化后的圖像。
跟據(jù)上述計算得到的 P值,與預先設定的 Pmin作比較,判斷P值是否小于Pmin,如果小于Pmin則證明該圖像是攝像頭采集的經過二次翻拍的圖像。如果 P≥Pmin,則繼續(xù)步驟。經過多次試驗測試,Pmin取值在1×10-3左右效果較好。
判斷當前帶通參數(shù)σ是否小于與設定的最大σmax,如果σ>σmax,則證明圖像是實際的真實采集的圖像,如果σ<σmax,則轉下一步。
最終結果如圖3所示,圖3第1行為二次翻拍的spoof圖像,第 2行為攝像頭采集的真實圖像。第二列為漢寧窗處理后的離散傅里葉變換的頻域圖像,第 3列為σ=40時取得的最優(yōu) t值后的二值化圖像。第 4列為所有帶通下找到的最優(yōu)二值化圖像,可以看出,對于 spoof的二次翻拍圖像,最終的 P值要遠小于之前設定的 Pmin,而對于實際的真實采集的圖像,最小的P值仍然大于預設定的Pmin。算法在一定條件下能夠有效判斷收集圖像的真實性。
經過以上綜合分析,二次翻拍的圖像一般有其自身特點,例如摩爾紋現(xiàn)象,攝像頭采集手機、平板等二次翻拍圖像時產生的反光區(qū)域等。一般來說,二次翻拍的圖像較正常圖像具有更少的高頻部分。因此本方案的本質是利用不同的帶通濾波來搜索頻域圖像當中的特定頻域,也就是在頻域當中獨立或隔離特定的高頻部分。所以說,對于二次翻拍的圖像,方案假設其將會有更少的高頻部分。本方案類似于在頻域當中搜索特定的紋理特征,所以說本質上也是根據(jù)圖像的紋理細節(jié)來判斷圖像是否為二次翻拍的欺詐圖像。
實際上,本方案在使用當中存在拍攝距離限制。也就是說,為了更好地檢測圖像當中特定的頻域中的紋理特征,需要攝像頭采集二次翻拍圖像時,手機和平板設備距離攝像頭的距離要小于某個最大值,這一點實際上也很容易達到,只要設定攝像頭最終采集到的檢測后的人臉圖像不小于某個最小像素值即可。本方案當中的初始設定值為:裁剪后的最小人臉像素不低于 160,這也是為了方便后續(xù)深度學習進行人臉識別。這種情況下,二次翻拍設備一般會距離攝像頭10~20cm。該范圍實際上也更容易使得設備產生較為明顯的摩爾紋等紋理特征,更有助于算法判斷。實際上,一般情況下采用二次翻拍進行圖像欺詐的絕大多數(shù)也在本方案的設計范圍之內,所以說,算法在一定程度上能夠輔助深度學習系統(tǒng)在一般安全要求下進行活體檢測。
與現(xiàn)有方案相比,本方法的優(yōu)點主要在于:通過頻域當中的紋理判斷圖像是否為二次翻拍,屬于單幀檢測的方式,算法相比利用深度神經網絡的形式計算速度快,容易集成;算法不需要用戶配合驗證,用戶體驗好,驗證速度快。雖然精度低于 3D結構光的方式,但是算法對硬件設備要求低、成本低、易于集成和部署,適用于一般安全級別的輔助認證。