Deep Spatial Gradient and Temporal Depth Learning for Face Anti-spoofing === >做人臉辨識遇到的最大問題莫過於真假臉的判斷,真假臉的判斷能夠防止不肖分子對辨識系統進行攻擊,所以這是非常值得深入研究的。對於真假臉的研究方法非常多,真假臉最明顯的差異就是深度,如果用影印的或是手機照片假臉都是只有平面的深度,一般的分類方法往往忽略人臉圖片的深度、時間及空間資訊。深度學習在處理影像辨識時,機器通常都可以得到high-level的features及patterns,但是low-level的features及patterns對於分辨真假臉也是非常重要的,所以為了解決這些問題,分別為1. 提出Residual Spatial Gradient Block(RSGB),透過空間梯度分辨真假臉,2.提出Spatio-Temporal Propagation Module (STPM),為了得到時間訊息(應該是指兩張在些微時間差的圖片,特徵也會有差異)。此外,為了讓新的架構能更準確的分析真假臉,定義新的計算誤差方法,Contrastive Depth Loss (CDL),也提出了新型數據集Double-modal Anti-spoofing Dataset (DMAD),這是一個對每一張人臉圖片,都有相對應的人臉深度圖的資料集。 以下這張圖可以清楚發現,真臉的梯度變化較假臉明顯。 ![](https://i.imgur.com/94v27GZ.jpg) 以下這張圖可以清楚發現,真臉在不同時間相對於相機的角度變化較假臉大。 ![](https://i.imgur.com/LCvIUDU.jpg) ## 以前的方法 針對真假臉的判斷,以前的方法大致分成三種,分別為,binary supervised, depth supervised及temporal-based。 * **Binary supervised Methods**: 傳統的機器學習方法,例如SVM、Random Forests,容易受到像是亮度、使用的相機不同的影響。近幾年來,深度學習的越來越受歡迎,透過CNN可以學習圖片的特徵,是更強大解決真假臉問題的方法。 * **Depth supervised Methods**: 跟binary supervised相較之下, depth supervised methods可以學習到更多的訊息。被設計來處理真假臉的CNN可以從中得到圖片的feature及depth map,而且證明可以有更好的結果。所以有人提出增加深度,結合rPPG(利用反射光亮度變化)及vanilla convolutional networks,但是結果卻無法獲得更多訊息。 * **Temporal-based Methods**: 雖然已經有使用3D CNN、LSTM,透過臉部光線變化(rPPG)做真假臉辨識,但是目前都還沒有提出基於時間變化的方式做真假臉辨識。 ## 作者提出的方法 文章所提出的方法為depth supervised spatio-temporal network,包括Residual Spatial Gradient Block (RSGB) and SpatioTemporal Propagation Module (STPM)及Contrastive Depth Loss (CDL)。將人臉圖片當作input,然後產生depth map。 * ### **Network Structure** * **Residual Spatial Gradient Block(RSGB)**: 計算圖片梯度變化輛是透過Sobel的方法,這種方法常在影像處理中做邊緣檢測,因為真假臉的梯度變化不一樣,將得到的梯度再與CNN得到的features做結合,這樣可以得到圖片更多的空間資訊,而每一張圖片經過RSGB,都會產生coarse depth map。![](https://i.imgur.com/CGMA3hn.jpg) * **Spatio-Temporal Propagation Module**: STPM用來解析短時間內圖片之間(所以是mutiple images)的關係及資訊,主要是經由Short-term Spatio-Temporal Block (STSTB) and ConvGRU。因為傳統的LSTM及GRU,忽略hidden layer裡面node之間的關係,所以才使用ConvGRU。如下圖所示,STSTB通過結合五種特徵來提取short-term spatio-temporal信息:目前人臉特徵,目前人臉空間梯度特徵,未來人臉空間梯度特徵,時間梯度特徵和上一層STSTB的特徵。![](https://i.imgur.com/41Bq81f.jpg) * **Depth Map Refinement** \begin{gather*}D^t_{refined} = (1- \alpha) * (D^t_{single}) + \alpha * D^t_{multi}, \alpha ∈[0, 1]\displaystyle \end{gather*}其中D^t^~single~、D^t^~multi~分別為RSGB及STPM的output,所以α越大,代表STPM影響越大,透過這兩個depth做調整後,可以得到最後的depth map,D^t^~refined~。 * ### **Loss Function** 因為有了新的network架構,所以也重新定義一個新的loss function,Contrastive Detph Loss(CDL)。 * **Contrastive Depth Loss**: 傳統的真假臉辨識中所使用的loss function為Euclidean Distance Loss (EDL),它是計算實際上圖片的depth與預測的depth的差異。 \begin{gather*}L_{EDL} = |D_{P} - D_{G}|_2^2\displaystyle \end{gather*}EDL只對相對應的pixel進行誤差計算,而忽略相鄰pixel之間的誤差計算。因此,提出CDL,提高了真假臉辨識的準確度。 ![](https://i.imgur.com/lc8k1AU.jpg) ![](https://i.imgur.com/fO28NEw.jpg) * **Overall Loss** 一開始在找出真假臉差異時,使用binary loss來當作標準,當訓練STPM時使用overall Loss。 \begin{gather*}L_{binary} = -B_{G} * log(fcs(D_{avg}))\displaystyle\end{gather*} \begin{gather*}L_{overall} = \beta * L_{binary} + (1 - \beta) * (L_{EDL} + L_{CDL})\displaystyle\end{gather*} 其中B~G~是binary groundtruth label,D~avg~是所有D^t^~refined~的平均, fcs是兩層fully connected layers加上softmax,β是一個參數,其值越大代表L~EDL~與L~CDL~影響越大。 ## 實驗 實驗中總共使用五個資料集,分別為OULU-NPU, SiW, CASIAMFSD, Replay-Attack, DMAD,而不同的資料集有不同的評分標準。 * ### Performance Metrics OULU-NPU、SiW、DMAD這三個資料集所依據的標準如下: \begin{gather*}ACER = \dfrac{(APCER + BPCER)}{2} \displaystyle\end{gather*} 其中,APCER(Attack Presentation Classification Error Rate),指從印表機或是其他機器製作的假照片中最高的誤差;BPCER(Bona Fide Presentation Classification Error Rate),實際資料集的誤差。 CASIA-MFSD、Replay-Attack所依據的標準如下: \begin{gather*}HTER = \dfrac{(F RR + F AR)}{2} \displaystyle\end{gather*} 其中,FRR(False Rejection Rate)指應該辨識通過的卻沒通過,而FAR(False Acceptance Rate)應該不能通過辨識的卻通過了 * ### **Training Strategy** 訓練分成兩階段進行,第一階段訓練是每一張圖片經過RSGB,產生coarse depth map。第二階段訓練是STPM,修正第一階段的coarse depth map。 ## 實驗結果比較 實驗中做了很多種變數的比較,這邊只列出幾種作說明。 * ### **Efficacy of the Modules and Loss Functions** 如下圖所示,Model2的結果比Model1好,證明加上CDL能夠更準確的判斷。Model3、Model4、Model5,也說明了,使用RSGB做訓練,也能降低ACER。從Model5與Model7的比較可以發現,加上binary loss效果確實比較好。 * ### **STSTB vs. OFF** 如下圖所示,Model6使用OFF(OFF只有計算圖片上的spatial gradient,忽略了不同時間的梯度變化),Model7使用STSTB,結果比Model6好,證明目前圖片的梯度與下一個時間點的圖片梯度,對結果影響是非常重要的。 ![](https://i.imgur.com/ieYPHKK.jpg) * ### **Importance of Spatio-temporal Information for Depth Refinement** 如下圖所示,α太大或太小結果都不是很好,找到最佳的α能夠降低ACER。從途中也可以發現,只有使用空間梯度,也就是α=0,結果比有使用時間梯度還要差。 \begin{gather*}D^t_{refined} = (1- \alpha) * (D^t_{single}) + \alpha * D^t_{multi}, \alpha ∈[0, 1]\displaystyle \end{gather*} ![](https://i.imgur.com/Q2ucknz.jpg) * ### **Results on OULU-NPU** OULU-NPU,這是目前人臉防偽領域最具挑戰性的數據集之一,這裡面的偽造人臉非常高清,人眼都很難分辨。如下圖所示,文章提出的方法,結果比其他方法來的好。 ![](https://i.imgur.com/G1ArGHm.jpg) ###### tags: `ML`