计算机视觉子方向,计算机视觉方向简介 | 人脸识别中的活体检测算法综述
原標題:計算機視覺方向簡介 | 人臉識別中的活體檢測算法綜述
本文轉載自“SIGAI人工智能學習與實踐平臺”(ID:SIGAICN)
導言
1. 什么是活體檢測?
判斷捕捉到的人臉是真實人臉,還是偽造的人臉攻擊(如:彩色紙張打印人臉圖,電子設備屏幕中的人臉數(shù)字圖像 以及 面具 等)
2. 為什么需要活體檢測?
在金融支付,門禁等應用場景,活體檢測一般是嵌套在人臉檢測與人臉識別or驗證中的模塊,用來驗證是否用戶真實本人
3. 活體檢測對應的計算機視覺問題:
就是分類問題,可看成二分類(真 or 假);也可看成多分類(真人,紙張攻擊,屏幕攻擊,面具攻擊)
Anti-spoofing 1.0 時代
從早期 handcrafted 特征的傳統(tǒng)方法說起,目標很明確,就是找到活體與非活體攻擊的difference,然后根據(jù)這些差異來設計特征,最后送給分類器去決策。
那么問題來了,活體與非活體有哪些差異?
1. 顏色紋理
2. 非剛性運動變形
3. 材料 (皮膚,紙質,鏡面)
4. 圖像or視頻質量
所以這段時期的文章都是很有針對性地設計特征,列舉幾篇比較重要的:
Image Distortion Analysis[1], 2015
如下圖,單幀輸入的方法,設計了 鏡面反射+圖像質量失真+顏色 等統(tǒng)計量特征,合并后直接送SVM進行二分類。
Image Distortion Analysis[1]
Cons: 對于高清彩色打印的紙張 or 高清錄制視頻,質量失真不嚴重時,難區(qū)分開
Colour Texture[2], 2016
Oulu CMVS組的產(chǎn)物,算是傳統(tǒng)方法中的戰(zhàn)斗機,特別簡潔實用,Matlab代碼(課題組官網(wǎng)有),很適合搞成C++部署到門禁系統(tǒng)。
原理:活體與非活體,在RGB空間里比較難區(qū)分,但在其他顏色空間里的紋理有明顯差異
算法:HSV空間人臉多級LBP特征 + YCbCr空間人臉LPQ特征 (后在17年的paper拓展成用Color SURF特征[12],性能提升了一點)
Colour Texture[2]
Pros: 算法簡潔高效易部署;也證明了活體與非活體在 HSV等其他空間也是discriminative,故后續(xù)深度學習方法有將HSV等channel也作為輸入來提升性能。
Motion mag.-HOOF + LBP-TOP[3], 2014
DMD + LBP[4], 2015
前面說的都是單幀方法,這兩篇文章輸入的是連續(xù)多幀人臉圖;
主要通過捕獲活體與非活體微動作之間的差異來設計特征。
一個是先通過運動放大來增強臉部微動作, 然后提取方向光流直方圖HOOF + 動態(tài)紋理LBP-TOP 特征;一個是通過動態(tài)模式分解DMD,得到最大運動能量的子空間圖,再分析紋理。
PS:這個 motion magnification 的預處理很差勁,加入了很多其他頻段噪聲(18年新出了一篇用 Deep learning 來搞 Motion mag[13]. 看起來效果挺好,可以嘗試用那個來做運動增強,再來光流or DMD)
Motion mag.-HOOF + LBP-TOP[3]
DMD + LBP[4]
Cons: 基于Motion的方法,對于 仿人臉wrapped紙張抖動 和 視頻攻擊,效果不好;因為它假定了活體與非活體之間的非剛性運動有明顯的區(qū)別,但其實這種微動作挺難描述與學習~
Pulse + texture[5], 2016
第一個將 remote pluse 應用到活體檢測中,多幀輸入(交代下背景:在CVPR2014,Xiaobai Li[14] 已經(jīng)提出了從人臉視頻里測量心率的方法)
算法流程:
1. 通過 pluse 在頻域上分布不同先區(qū)分 活體 or 照片攻擊 (因為照片中的人臉提取的心率分布不同)
2. 若判別1結果是活體,再 cascade 一個 紋理LBP 分類器,來區(qū)分 活體 or 屏幕攻擊(因為屏幕視頻中人臉心率分布與活體相近)
Pulse + texture[5]
Pros: 從學術界來說,引入了心理信號這個新模態(tài),很是進步;從工業(yè)界來看,如果不能一步到位,針對每種類型攻擊,也可進行 Cascade 對應的特征及分類器的部署方式
Cons: 由于 remote heart rate 的算法本來魯棒性也一般,故出來的 pulse-feature 的判別性能力很不能保證;再者屏幕video里的人臉視頻出來的 pulse-feature 是否也有微小區(qū)別,還待驗證~
Anti-spoofing 2.0 時代
其實用 Deep learning 來做活體檢測,從15年陸陸續(xù)續(xù)就有人在研究,但由于公開數(shù)據(jù)集樣本太少,一直性能也超越不了傳統(tǒng)方法:
CNN-LSTM[6], 2015
多幀方法,想通過 CNN-LSTM 來模擬傳統(tǒng)方法 LBP-TOP,性能堪憂~
PatchNet pretrain[7],CNN finetune, 2017
單幀方法,通過人臉分塊,pre-train 網(wǎng)絡;然后再在 global 整個人臉圖 fine-tune,作用不大
Patch and Depth-Based CNNs[8], 2017
第一個考慮把 人臉深度圖 作為活體與非活體的差異特征,因為像屏幕中的人臉一般是平的,而紙張中的人臉就算扭曲,和真人人臉的立體分布也有差異;
就算用了很多 tricks 去 fusion,性能還是超越不了傳統(tǒng)方法。
Deep Pulse and Depth[9], 2018
發(fā)表在 CVPR2018 的文章,終于超越了傳統(tǒng)方法性能。
文章[8]的同一組人,設計了深度框架 準端到端 地去預測 Pulse統(tǒng)計量 及 Depth map (這里說的“準”,就是最后沒接分類器,直接通過樣本 feature 的相似距離,閾值決策)
在文章中明確指明:
1. 過去方法把活體檢測看成二分類問題,直接讓DNN去學習,這樣學出來的cues不夠general 和 discriminative
2. 將二分類問題換成帶目標性地特征監(jiān)督問題,即 回歸出 pulse 統(tǒng)計量 + 回歸出 Depth map,保證網(wǎng)絡學習的就是這兩種特征(哈哈,不排除假設學到了 color texture 在里面,黑箱網(wǎng)絡這么聰明)。
Deep Pulse and Depth[9]
回歸 Depth map,跟文章[8]中一致,就是通過 Landmark 然后 3DMMfitting 得到 人臉3D shape,然后再閾值化去背景,得到 depth map 的 groundtruth,最后和網(wǎng)絡預測的 estimated depth map 有 L2 loss。
而文章亮點在于設計了 Non-rigid Registration Layer 來對齊各幀人臉的非剛性運動(如姿態(tài),表情等),然后通過RNN更好地學到 temporal pulse 信息。
Non-rigid Registration Layer[9]
為什么需要這個對齊網(wǎng)絡呢?我們來想想,在做運動識別任務時,只需簡單把 sampling或者連續(xù)幀 合并起來喂進網(wǎng)絡就行了,是假定相機是不動的,對象在運動;而文中需要對連續(xù)人臉幀進行pulse特征提取,主要對象是人臉上對應ROI在 temporal 上的 Intensity 變化,所以就需要把人臉當成是相機固定不動。
Micro-texture + SSD or binocular depth[10] , 2018
ArXiv 剛掛出不久的文章,最大的貢獻是把 活體檢測 直接放到 人臉檢測(SSD,MTCNN等) 模塊里作為一個類,即人臉檢測出來的 bbox 里有 背景,真人人臉,假人臉 三類的置信度,這樣可以在早期就過濾掉一部分非活體。
所以整個系統(tǒng)速度非常地快,很適合工業(yè)界部署~
至于后續(xù)手工設計的 SPMT feature 和 TFBD feature 比較復雜繁瑣,分別是表征 micro-texture 和 stereo structure of face,有興趣的同學可以去細看。
texture + SSD or binocular depth[10]
De-Spoofing[11], ECCV2018
單幀方法,與Paper[8]和[9]一樣,是MSU同一個課題組做的。
文章的idea很有趣,啟發(fā)于圖像去噪denoise 和 圖像去抖動 deblur。無論是噪聲圖還是模糊圖,都可看成是在原圖上加噪聲運算或者模糊運算(即下面的公式),而去噪和去抖動,就是估計噪聲分布和模糊核,從而重構回原圖。
文中把活體人臉圖看成是原圖
,而非活體人臉圖看成是加了噪聲后失真的 x ,故 task 就變成估計 Spoof noiseN(
) ,然后用這個 Noise pattern feature 去分類決策。
De-spoofing process[11]
那問題來了,數(shù)據(jù)集沒有像素級別一一對應的 groundtruth,也沒有Spoof Noise模型的先驗知識(如果有知道Noise模型,可以用Live Face來生成Spoofing Face),那拿什么來當groundtruth,怎么設計網(wǎng)絡去估計 Spoofing noise 呢?
如一般Low-level image 任務一樣,文中利用Encoder-decoder來得到 Spoof noise N,然后通過殘差重構出
,這就是下圖的DS Net。為了保證網(wǎng)絡對于不同輸入,學出來的Noise是有效的,根據(jù)先驗知識設計了三個Loss來constrain:
Magnitude loss(當輸入是Live face時,N盡量逼近0);
Repetitive loss(Spooing face的Noise圖在高頻段有較大的峰值);
01Map Loss(讓Real Face 的 deep feature map分布盡量逼近全0,而Spoofing face的 deep feature map 盡量逼近全1)
De-spoofing網(wǎng)絡架構[11]
那網(wǎng)絡右邊的 VQ-Net 和 DQ-Net 又有什么作用呢?因為沒有 Live face 的 Groundtruth,要保證重構出來的分布接近 Live face,作者用了對抗生成網(wǎng)絡GAN (即 VQ-Net )去約束重構生成的
與Live face分布盡量一致;而用了文章[8]中的 pre-trained Depth model 來保證
的深度圖與Live face的深度圖盡量一致。
Pros: 通過可視化最終讓大眾知道了 Spoofing Noise 是長什么樣子的~
Cons: 在實際場景中難部署(該模型假定Spoofing Noise是 strongly 存在的,當實際場景中活體的人臉圖質量并不是很高,而非活體攻擊的質量相對高時,Spoofing noise走不通)
后記:不同模態(tài)的相機輸入對于活體檢測的作用
1. 近紅外NIR
由于NIR的光譜波段與可見光VIS不同,故真實人臉及非活體載體對于近紅外波段的吸收和反射強度也不同,即也可通過近紅外相機出來的圖像來活體檢測。從出來的圖像來說,近紅外圖像對屏幕攻擊的區(qū)分度較大,對高清彩色紙張打印的區(qū)分度較小。
從特征工程角度來說,方法無非也是提取NIR圖中的光照紋理特征[15]或者遠程人臉心率特征[16]來進行。下圖可見,上面兩行是真實人臉圖中人臉區(qū)域與背景區(qū)域的直方圖分布,明顯與下面兩行的非活體圖的分布不一致;而通過與文章[5]中一樣的rPPG提取方法,在文章[]中說明其在NIR圖像中出來的特征更加魯棒~
NIR人臉區(qū)域與背景區(qū)域直方圖[15]
2. 結構光/ToF
由于結構光及ToF能在近距離里相對準確地進行3D人臉重構,即可得到人臉及背景的點云圖及深度圖,可作為精準活體檢測(而不像單目RGB或雙目RGB中仍需估計深度)。不過就是成本較高,看具體應用場景決定。
3. 光場 Light field
光場相機具有光學顯微鏡頭陣列,且由于光場能描述空間中任意一點向任意方向的光線強度,出來的raw光場照片及不同重聚焦的照片,都能用于活體檢測:
3.1 raw光場照片及對應的子孔徑照片[17]
如下圖所示,對于真實人臉的臉頰邊緣的微鏡圖像,其像素應該是帶邊緣梯度分布;而對應紙張打印或屏幕攻擊,其邊緣像素是隨機均勻分布:
光場相機圖
3.2 使用一次拍照的重聚焦圖像[18]
原理是可以從兩張重聚焦圖像的差異中,估計出深度信息;從特征提取來說,真實人臉與非活體人臉的3D人臉模型不同,可提取差異圖像中的 亮度分布特征+聚焦區(qū)域銳利程度特征+頻譜直方圖特征。
至此,Face anti-spoofing 的簡單Survey已完畢~
毫無疑問,對于學術界,后續(xù)方向應該是用DL學習更精細的 人臉3D特征 和 人臉微變化微動作(Motion Spoofing Noise?) 表征;而也可探索活體檢測與人臉檢測及人臉識別之間更緊密的關系。
對于工業(yè)界,可直接在人臉檢測時候預判是否活體;更可借助近紅外,結構光/ToF等硬件做到更精準。
Reference:
[1] Di Wen, Hu Han, Anil K. Jain. Face Spoof Detection with Image Distortion Analysis. IEEE Transactions on Information Forensics and Security, 2015
[2] Zinelabidine Boulkenafet, Jukka Komulainen, Abdenour Hadid. Face Spoofing Detection Using Colour Texture Analysis. IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY, 2016
[3] Samarth Bharadwaj. Face Anti-spoofing via Motion Magnification and
Multifeature Videolet Aggregation, 2014
[4] Santosh Tirunagari, Norman Poh. Detection of Face Spoofing Using Visual Dynamics. IEEE TRANS. ON INFORMATION FORENSICS AND SECURIT, 2015
[5] Xiaobai Li, , Guoying Zhao. Generalized face anti-spoofing by detecting pulse
from face videos, 2016 23rd ICPR
[6] Zhenqi Xu. Learning Temporal Features Using LSTM-CNN Architecture for Face Anti-spoofing, 2015 3rd IAPR
[7] Gustavo Botelho de Souza, On the Learning of Deep Local Features for
Robust Face Spoofing Detection, 2017
[8] Yousef Atoum, Xiaoming Liu. Face Anti-Spoofing Using Patch and Depth-Based CNNs, 2017
[9] Yaojie Liu, Amin Jourabloo, Xiaoming Liu, Learning Deep Models for Face Anti-Spoofing: Binary or Auxiliary Supervision ,CVPR2018
[10] Discriminative Representation Combinations for Accurate Face Spoofing Detection,2018 PR
[11] Amin Jourabloo, Face De-Spoofing: Anti-Spoofing via Noise Modeling, ECCV2018
[12]Zinelabidine Boulkenafet, Face Antispoofing Using Speeded-Up Robust Features and Fisher Vector Encoding, IEEE SIGNAL PROCESSING LETTERS, VOL. 24, NO. 2, FEBRUARY 2017
[13]Tae-Hyun Oh, Learning-based Video Motion Magnification, ECCV2018
[14]Xiaobai Li, Remote Heart Rate Measurement From Face Videos Under Realistic Situations
[15]Xudong Sun, Context Based Face Spoofing Detection Using Active Near-Infrared Images, ICPR 2016
[16]Javier Hernandez-Ortega, Time Analysis of Pulse-based Face Anti-Spoofing in Visible and NIR, CVPR2018 workshop
[17]Sooyeon Kim, Face Liveness Detection Using a Light Field Camera, 2014
[18]Xiaohua Xie, One-snapshot Face Anti-spoofing Using a Light Field Camera, 2017返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的计算机视觉子方向,计算机视觉方向简介 | 人脸识别中的活体检测算法综述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python删除文件夹中的jpg_Pyt
- 下一篇: PyCharm社区版支持深度学习_深度学