人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

機器之心發表於2020-07-16

小視科技團隊開源的基於 RGB 影像的活體檢測模型,是專門面向工業落地場景,相容各種複雜場景下的模型。該自研的剪枝輕量級模型,運算量為 0.081G,在麒麟 990 5G 晶片上僅需 9ms。同時基於 PyTorch 訓練的模型能夠靈活地轉化成 ONNX 格式,實現全平臺部署。


如今,人臉識別已經進入我們生活中的方方面面:拿起手機掃臉付賬、完成考勤、入住酒店等,極大地便利了我們的生活。

我們在享受技術帶來方便的同時,也要應對其潛在的風險。一旦虛假人臉攻擊成功,極有可能對使用者造成重大損失。

如 2019 年,在拉斯維加斯舉辦的世界黑帽(Black Hat)安全大會上,騰訊公司的研究人員就曾演示用一副特製眼鏡攻破蘋果 Face ID。

更早之前,也有人曾使用 3D 列印「石膏」人臉攻擊手機的人臉識別功能,成功破解多款人臉識別解鎖功能。

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

圖片來源:Forbes

為了抵禦這種假臉攻擊,小視科技團隊開源了一個靜默活體檢測演算法和可適用於安卓平臺的部署原始碼,可相容各種工業級複雜場景的活體檢測。
  • 靜默活體檢測演算法專案地址:

    https://github.com/minivision-ai/Silent-Face-Anti-Spoofing

  • 安卓平臺部署原始碼專案地址:

    https://github.com/minivision-ai/Silent-Face-Anti-Spoofing-APK 

活體檢測技術主要是判別鏡頭前出現的人臉是真實的還是偽造的,其中藉助其他媒介呈現的人臉都可以定義為虛假的人臉,包括列印的紙質照片、電子產品的顯示螢幕、矽膠面具、立體的 3D 人像等。活體檢測技術能夠抵禦各種假臉的攻擊,為人臉識別保駕護航。

目前主流的活體解決方案分為配合式和非配合式活體,配合式活體需要使用者根據提示做出相應的動作從而完成判別,而非配合式活體在使用者無感的情況下直接進行活體檢測,具有更好的使用者體驗。

非配合式活體根據成像源的不同一般分為紅外影像、3D 結構光和 RGB 影像三種技術路線:紅外影像濾除了特定波段的光線,天生抵禦基於螢幕的假臉攻擊;3D 結構光引入了深度資訊,能夠很容易地辨別紙質照片、螢幕等 2D 媒介的假臉攻擊;RGB 圖片主要透過螢幕拍攝出現的摩爾紋、紙質照片反光等一些細節資訊進行判別。基於以上分析不難發現,基於 RGB 圖片的活體檢測與其他兩種方法相比,僅能透過影像本身的資訊進行判別,在實際的開放場景中面臨著更大的挑戰性。

小視科技團隊開源的基於 RGB 影像的活體檢測模型,是專門面向工業落地場景,相容各種複雜場景下的模型。該自研的剪枝輕量級模型,運算量為 0.081G,在麒麟 990 5G 晶片上僅需 9ms。同時基於 PyTorch 訓練的模型能夠靈活地轉化成 ONNX 格式,實現全平臺部署。

活體任務的定義

基於 RGB 影像的活體檢測是一個分類任務,目標是有效地區分真臉和假臉,但又有別於其他類似於物品分類的任務。其中的關鍵點在於攻擊源分佈過於廣泛,如圖 1 所示:不同的攻擊媒介,不同裝置的成像質量,不同的輸入解析度都對分類結果有著直接的影響。為了降低這些不確定因素帶來的影響,小視科技團隊對活體的輸入進行了一系列限制:活體的輸入限制在特定的解析度區間;輸入圖片均為實時流中擷取的影片幀。這些操作大大降低了活體模型在實際生產部署上失控的風險,提升了模型的場景魯棒性。

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

圖 1 現實場景中活體資料分佈圖

基於成像介質種類的不同,小視科技團隊將樣本分為真臉、2D 成像(列印照片,電子螢幕)以及 3D 人臉模具三類,根據上述的準則整理和收集訓練資料。活體檢測的主要流程如圖 2 所示。

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

圖 2 開源活體 Pipeline

開源模型技術路線

小視科技團隊採用自研的剪枝輕量級網路作為 backbone 訓練模型,使用 Softmax + CrossEntropy Loss 作為訓練分類的監督。使用不同尺度的圖片作為網路的輸入訓練資料,增加模型間的互補性,從而進行模型融合。考慮到用於真假臉判別的有效資訊不一定完全分佈在臉部區域,可能在取景畫面的任何地方(如邊框,摩爾紋等),小視科技團隊在 backbone 中加入了 SE(Squeeze-and-Excitation)的注意力模組,動態適應分散的判別線索。同時小視科技團隊也透過實驗發現真假臉在頻域中存在明顯的差異,為此引入傅立葉頻譜圖作為模型訓練的輔助監督,有效提升了模型精度。

自研的輕量級剪枝網路

小視科技團隊使用自研的模型剪枝方法,將 MoboileFaceNet 的 flops 從 0.224G 降低到了 0.081G,剪枝的網路結構如圖 3 所示。模型觀測誤檢率在十萬一對應的真臉透過率,在精度沒有明顯損失的情況下,模型前向執行的速度提升了 40%。

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

表 1 模型效能對比表

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

圖 3 剪枝模型通道示意圖

注意力機制

考慮到用於真假臉判別的有效資訊不一定完全分佈在臉部區域,也有可能在取景畫面的任何地方(如邊框,摩爾紋等)。小視科技團隊在 backbone 中加入了 SE(Squeeze-and-Excitation)的注意力模組,動態適應分散的判別線索,熱力圖如圖 4 所示。對於假臉,模型更關注於邊框資訊和螢幕的摩爾紋資訊,對於真臉更加關注臉部以及周圍的資訊。

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

圖 4 活體模型熱力圖

資料預處理

使用人臉檢測器獲取影像中的人臉框座標,按照一定比例 (scale) 對人臉框進行擴邊,圖 5 展示了部分 patch 的區域,為了保證模型的輸入尺寸的一致性,將 patch 區域 resize 到固定尺寸。

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

圖 5 Patch 示例圖

傅立葉頻譜圖

將假臉照片與真臉照片轉化生成頻域圖,對比發現假臉的高頻資訊分佈比較單一,僅沿著水平和垂直方向延伸,而真臉的高頻資訊從影像的中心向外呈發散狀,如圖 6 所示。根據以上的實驗,小視科技團隊發現真臉和假臉的傅立葉頻譜存在差異,從而引入了傅立葉頻譜對模型訓練進行輔助監督。

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

圖 6 傅立葉頻譜圖

基於傅立葉頻譜圖的輔助網路監督

基於對於真臉和假臉在頻域的觀察分析,小視科技團隊提出了基於傅立葉頻譜圖進行輔助網路監督的訓練方法,整理架構圖如圖 7 所示。網路的主分支採用 Softmax+ CrossEntropy 作為網路的監督,如公式(1)所示。其中, f_j表示輸出類別的第 j 個置信度,  y_i 表示樣本的真實標籤,N 為訓練樣本的個數。              

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用小視科技團隊採用線上的方式生成傅立葉頻譜圖,使用 L2 Loss 作為損失函式。輸入圖片的尺寸為 3x80x80,從主幹網路中提取尺寸為 128x10x10 特徵圖,經過 FTGenerator 分支生成 1x10x10 的預測頻譜圖 F_P 。透過傅立葉變換,將輸入圖片轉化成頻譜圖,再進行歸一化,最後 resize 成 1x10x10 尺寸得到 F_G ,使用 L2 Loss 計算兩特徵圖之間差異,如公式(2)所示。                       

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

為了控制 L_FT在訓練過程中對梯度的貢獻作用,分別引入了人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用平衡兩個損失函式L_Softmax和L_FT,如公式(3)所示,其中人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用。在實驗中設定人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

圖 7 傅立葉頻譜輔助監督訓練架構圖

其他模型策略
  1. 使用大體量網路 ResNet34 蒸餾剪枝網路 MiniFASNetV1 和 MiniFASNetV2,精度得到提升。

  2. 使用模型融合的機制,針對於不同輸入尺度、不同網路結構以及不同迭代次數的模型進行融合,充分挖掘模型間對分類任務的互補性,提升模型精度。

實驗結果

測試集建立

小視科技團隊基於實際的生產場景建立了 100W 量級的測試集,從移動裝置的影片流中實時獲取影像。真臉資料包含了強光、暗光、背光、弱光以及陰陽臉等各種複雜場景。基於 2D 的假臉資料使用列印紙、銅版紙、照片紙以及電腦螢幕、平板 Pad 螢幕、手機螢幕,在不同的距離、角度和光線下進行採集。基於 3D 的假臉資料則採用頭模、矽膠面具和紙質照片摳洞的人臉面具進行採集。

模型評價指標

小視科技團隊採用 ROC 曲線作為模型的觀測指標,控制十萬一的誤檢率,保證模型在 97%+ 的透過率。與一般的分類任務不同,團隊採用了 ROC 曲線而非分類精度作為度量指標,其原因是:生產落地場景對活體模型的誤檢控制具有很高的要求。

為了降低活體在應用場景發生誤檢的機率,小視科技團隊控制模型誤檢率在十萬一量級的同時,保證了較高的真臉透過率。團隊將活體定義為三分類任務,為了適應 ROC 曲線的評價指標,將真臉以外的類別都定義成假臉,從而解決了使用 ROC 曲線適應多分類的問題。

最終的開源融合模型,包含了兩個剪枝網路的單模型,在測試集上的觀測指標如表 2 所示。開源模型誤檢控制在 1e-5 的情況下,真臉透過率能夠達到 97.8%。未開源的高精度模型在相同的誤檢率下,真臉透過率達到 99.5%。

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

表 2 模型觀測指標

速度指標

開源融合模型在不同晶片上速度指標如表 3 所示,在麒麟 990 5G 上僅需要 19ms。 

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

表 3 模型測試速度

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

安卓端體驗 APK  DEMO 演示

為了方便開發者更好地體驗該項靜默活體檢測技術,小視科技團隊準備了用於測試的安卓端 APK,不僅可以直觀地感受該項技術達到的效果,還可以實時觀測速度、置信度等相關指標。

點選文末左下角的閱讀原文,下載安卓端體驗 APK

線上分享

7月23日20:00-21:00,小視科技副總裁、AI研究院院長鬍建國將帶來線上分享,為大家詳解這一工業級靜默活體檢測演算法,期待與廣大業內開發者和愛好者共同交流。

識別海報二維碼,新增機器之心小助手,進群一起看直播。

人臉識別漏洞頻出?這裡有個開源靜默活體檢測演算法,超低運算量、工業級可用

相關文章