[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 來進行優化,整個流程的數學式如下: