[24.03] CFPL-FAS
無類別提示學習
CFPL-FAS: Class Free Prompt Learning for Generalizable Face Anti-spoofing
這篇文章到架構有點複雜,但是我們可以從標題中找到幾個很明顯的關鍵字:
- 第一個是 Class Free
- 第二個是 Prompt Learning。
- 最後應用的場景在於 Face Anti-spoofing。
抓住這三個重點,閱讀這篇論文就會變得比較輕鬆。
FAS 的本質是人臉辨識系統的防禦措施,目的是為了防止假冒者使用照片、影片等方式進行攻擊。既然作者把目標選定在 Face Anti-spoofing,那麼我們就先來看看過去這個領域的一些解題思路。
定義問題
在比較早期的研究中,研究者們主要是通過設計一些特徵來區分真實人臉和假冒人臉。這些特徵包括了紋理、光譜、運動等等,但是這些特徵都是有限的,因此研究者們開始轉向深度學習,透過卷積網路等架構來找出偽造人臉的特徵。
正所謂道高一尺,魔高一丈。攻擊者為了應對深度學習的 FAS 系統,開始使用高品質的照片、影片等方式進行入侵。
為了防禦未知的攻擊,近幾年主要流行的方式是領域泛化(Domain Generalization),這種方式的核心 思想是壓抑模型對於訓練數據的過度擬合,使得模型在未知的數據上也能夠有較好的表現。
又接著到了 LLM 的時代,多模態的訓練方式也被廣泛應用在 FAS 領域,透過不同模態的訓練資料來提高模型被攻破的難度。
到這邊,我們先從 Prompt Learning 來切入這個問題。
因為一般人根本 Train 不動 LLM,後來衍生出使用 Prompt 的方式輸入給 LLM 得到文字特徵,然後再透過這些文字特徵來進行引導我們自己的模型訓練。
這雖然不是一個很新的概念,大概從 CLIP 之後比較廣為人知,後續研究 BLIP 則是把這個概念應用在圖像和語言的訓練上。
回到這篇論文。
作者希望 FAS 領域也能夠使用 Prompt Learning 的方式,但是 FAS 這裡的類別數量太少,此外那些預訓練的模型也不是針對 FAS 領域進行訓練的,就算用了 Prompt learning 也無法取得有價值的特徵,更別說進行泛化了。
因此問題的定義已經很明顯了,作者希望能夠在 FAS 領域進行 Prompt Learning,但是不使用任何類別提示,並且能夠達到泛化的效果。
接著我們就來看看具體的解決方案。
解決問題
模型架構
上圖是整個模型的架構,但直接看這張圖顯然不符合人體工學。
因此我們需要拆解這個模型。
Prompts Generation
FAS 的特徵是隱性的藏在圖像中的。
如果你是第一次看到這個題目的讀者,我們簡單介紹一下:
常見的 FAS 攻擊像是 Replay Attack,攻擊者會使用一張真實人臉的照片或者影片來進行攻擊,假冒身份。這個類型的攻擊,模型可能需要找到螢幕的特徵,例如異常反光或摩爾紋等等。
另外一種攻擊是 Print Attack,攻擊者會使用一張印刷的人臉照片來進行攻擊。這個類型的攻擊,模型可能需要找到印刷的特徵,例如紙張的紋理等等。
你可以發現,人臉的特徵是很強的,我們一眼就能看到,反觀 FAS 這些特徵都是隱性的,不容易被人類直接感知到。
為了找到這些隱性的特徵,作者設計了兩組特徵:
- Content Q-Former: 這是一個 Transformer Decoder 模組,用來查詢 FAS 圖像的「文字」特徵。
- Style Q-Former: 這是另外一個 Transformer Decoder 模組,用來查詢 FAS 圖像的「風格」特徵。
這裡對應的模型架構是這一塊:
查詢的 Token 是隨機初始化的,每一組有 16 個 Token,這個部分作者做了一些實驗,發現 16 個就夠用了。
查詢的對象來自於 FAS 圖像,經過 CLIP 的 Image Encoder 得到圖像的特徵,但不是單純的輸出特徵,而是取出 Image Encoder 「每一層」 的輸出結果,計算平均值和標準差,就會得到「每一層」的風格特徵。最後把所有層的風格特徵取平均,就得到了整張圖像的風格特徵 。
數學公式如下:
其中, 是圖像編碼器的總層數, 表示在嵌入維度上串聯特徵。
另外,直接取得 Image Encoder 的原始輸出,並進行標準化,就會得到圖像的內容特徵 。
得到查詢目標之後,Content Q-Former 會去查詢 ,而 Style Q-Former 則會去查詢 ,這樣就得到了兩組特徵。
等等,為什麼從 Image Encoder 的輸出,會變成「文字內容」特徵?
你忘記 CLIP 本來就是在做圖像和文字的對齊模型了嗎?所以從圖像分支進來的特徵,或是從文字分支進來的特徵,都可以被視為「文字」和「圖像」特徵的疊加態。
Prompt Optimization
這一章節討論的是上圖中藍色和綠色圈起來的部分。
從上一步驟中產出的 Prompt 特徵,是不能直接用的,因為 CLIP 缺乏對 FAS 領域的知識。
作者透過一個二元分類的任務來引導 Content Q-Former(之後簡稱為 CQF)在更高層次上理解 FAS 的類別,這裡給的是一個「匹配」任務,要求模型預測提示文字對(feature pair)是否匹配。
首先透過一段文字敘述 a photo of a [CLASS] face
,這裡的 [CLASS]
是只有兩種可能,分別是 real
和 fake
。接著拿出 CLIP 模型的 Text tokenizer 和 Text embedding 層將這段文字轉換成 CLIP 的文字特徵。
到這邊,前置工作準備完成,現在要來製作正負樣本對。
作者在這裡引入 ALBEF 的設計理念,透過一個 Bank 來儲存一定數量的 Prompt 特徵,這樣就可以在訓練過程中,隨機抽樣出正負樣本對,並且搭配「Hard Negative Mining」的方式,來提高訓練的效率。
組合正負樣本對之後,透過一個全連接層,得到一個 logit,再透過 Cross Entropy Loss 來進行優化,整個流程的數學式如下:
最後,文本監督的優化可通過對聯合特徵 預測匹配與不匹配的概率來實現:
其中,將每個查詢嵌入輸入到一個二類線性分類器中,得到一個 logit,並將所有查詢的 logits 取平均(Mean)作為輸出匹配分數。 是交叉熵損失, 是一個帶有 softmax 的全連接層,而 是一個表示真實標籤的二維 one-hot 向量。
在論文中計算 的時候,出現了三個不同的 ,分別是 、 和 。
這裡的正樣本對是 ,負樣本對是 和 。
畫個圖來表示一下,像是這樣:
Class Free Prompt
最後就是 Class Free Prompt 的部分了。
到這裡反而變得比較簡單了,因為我們已經有了 Prompt 特徵,也有了 Prompt 的優化方式。
在其他論文的常見設計中,我們會將特徵拿去做分類,可能會分成 Real
、Print
、Replay
、Deepfake
等等類別。在這裡作者認為這個設計是不夠泛化的,因為這樣的設計只能在這些類別上有較好的表現,但是在其他類別上可能就會表現不佳。
因此作者改成了一個二元分類的設計,只有 Real
和 Fake
兩個類別,除了 Real
之外,其他的都歸為 Fake
。那至於是哪一種 Fake
?那不重要,讓模型自己去內部歸納就好。
最大幅度的降低人工的先驗知識干預,讓模型自己去學習。
紅色框起來的部分就是 Class Free Prompt 的部分。
將 CQF 和 SQF 的特徵分別輸入 CLIP 的 Text Encoder,得到文字特徵後,把兩個特徵串接起來,再透過一個簡單的全連接層,得到一組特徵。最後與 CLIP 的 Image Encoder 的特徵進行點積運算,得到最終的預測 logit,這個 logit 會透過 Cross Entropy Loss 進行優化。
在論文中的 Prompt Modulation
模組設計如下:
其中, 是 ReLU 函數, 和 是兩個全連接層中的可訓練參數, 是一個縮減比例,此處設定為 16。最後,通過將通道特徵 與標量 相乘,得到適配的視覺特徵 ,並將這些特徵傳遞到全連接層()進行二類(即真實或假冒)概率的預測。 是對應於真實或假冒人臉的標籤。
資料集、協議與評估指標
依據先前的研究,本文採用兩種協議來評估模型的泛化能力。
- 協議 1:使用四個常用的基準資料集,包括 MSU-MFSD (M)、CASIA-FASD (C)、Idiap Replay-Attack (I)和 OULU-NPU (O)。
- 協議 2:使用 CASIA-SURF (S) 、CASIA-SURF CeFA (C) 和 WMCA (W) 的 RGB 樣本,這些資料集擁有更多的受試者、多樣的攻擊類型以及豐富的採集環境。
在每個協議中,將每個資料集視為一個領域,並應用留一法測試泛化能力。本文採用三個指標來評估模型性能:
- HTER (Half Total Error Rate):計算 FRR 和 FAR 的平均值。
- AUC (Area Under Curve):評估模型的理論性能。
- TPR at FPR=1%:在固定的誤報率 (FPR=1%) 下,計算真陽性率,用以選擇適合的閾值來應用於實際場景。
實作細節
- 查詢設定:樣式與內容查詢長度設為 16,每個查詢的維度為 512;CQF 與 SQF 的深度設為 1。
- 樣式提示多樣化:在訓練階段以 50% 的機率啟動,但在測試階段不啟動。
- 訓練配置:批次大小為 12,使用 Adam 優化器,權重衰減設為 0.05,第二階段的最小學習率為 1e-6。圖像大小調整為 224×224,並進行隨機裁剪和水平翻轉的增強,總訓練迭代次數為 500 輪。
討論
實驗結果
協議 1:與其他最新方法相比,本文提出的方法在所有測試資料集上皆達到最佳性能。
本文提出的 CFPL 在 HTER 指標上,對所有目標領域均有較低的錯誤率,如 M (3.09% vs. 5.41%)、C (2.56% vs. 8.70%)、I (5.43% vs. 10.62%) 和 O (3.33% vs. 8.86%)。
整體平均 HTER 為 3.60%,顯著優於先前的最佳結果 7.82%。在引入 CelebA-Spoof 資料集後,CFPL* 表現優於 FLIP-MCL* ,其 HTER 為 2.98% vs. 3.01%。但與 ViTAF*-5-shot 比較時,CFPL* 在平均 HTER 上略遜一籌 (2.98% vs. 2.83%)。
協議 2:CFPL 在 W 和 C 領域上顯著超越多個基準方法。
在 S 資料集上,CFPL 在 HTER (8.77% vs. 8.32%)、AUC (96.83% vs. 97.23%) 和 TPR@FPR=1% (53.34% vs. 57.28%) 指標上略低於 CLIP-V。這可能是因為 CASIA-SURF 資料集中明顯的假冒痕跡,使得單靠視覺特徵已能具有較好的泛化能力。
與協議 1 類似,在引入 CelebA-Spoof 資料集後,CFPL* 表現優於 ViT* 和 FLIP-MCL* ,例如在 HTER 指標上的最佳平均值為 7.01%。