---
# System prepended metadata

title: Deep Spatial Gradient and Temporal Depth Learning for Face Anti-spoofing
tags: [ML]

---

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`