機器之心發布
機器之心編輯部
小視科技團隊開源的基於 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 傅立葉頻譜輔助監督訓練架構圖
其他模型策略
使用大體量網絡 ResNet34 蒸餾剪枝網絡 MiniFASNetV1 和 MiniFASNetV2,精度得到提升。
使用模型融合的機制,針對於不同輸入尺度、不同網絡結構以及不同迭代次數的模型進行融合,充分挖掘模型間對分類任務的互補性,提升模型精度。
實驗結果
測試集建立
小視科技團隊基於實際的生產場景建立了 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:https://ai.minivision.cn/#/coreability/livedetectionvideo
線上分享
7月23日20:00-21:00,小視科技副總裁、AI研究院院長胡建國將帶來線上分享,為大家詳解這一工業級靜默活體檢測算法,期待與廣大業內開發者和愛好者共同交流。
添加機器之心小助手syncedai3,進群一起看直播。