
論文地址:https://arxiv.org/pdf/1912.13458.pdf
前言
這篇論文和FaceShifter: Towards High Fidelity And Occlusion Aware Face Swapping是一批人做的, 不過DeepFakes和DeepFakes Detection本身就是矛與盾的關系, 論文成對出現是很常見的事情.
本文的賣點在於, 通過觀察現存大多數偽造圖片生成的流程, 提出了一個可泛化的檢測偽造圖片的方法. 作者聲稱這種方法不需要特定的偽造圖片生成算法生成訓練資料, 在檢測不同模型生成的偽造圖片時都有很好的表現.
本文提出模型的核心在於, 目前大多數偽造圖片的生成都涉及三個階段:
-
從source圖片中獲取人臉
-
生成target圖片所需的人臉
-
將人臉與target圖片的背景融合
現有的工作都集中在第二步, 即分析生成的人臉是不是有生成痕跡, 簡單的如拼接痕跡和復制粘貼操作, 復雜點的如頻域和色差等. 而本文則關注第三步融合操作, 作者提出, 任何圖片在生成時都會從生成的硬件或軟件中生成統一的標記, 這些標記往往是平均的, 而偽造的圖片由於強行融合了不同的圖片, 因此這種標記會出現噪聲和錯誤.

模型介紹
Definition
對於給定的一張圖片\(I\), 我們希望判定這張圖片是否由兩張圖片\(I_B\)和\(I_F\)組成, 公式表示為:
其中\(\odot\)是按元素乘, \(I_F\)代表了所需的臉部屬性, \(I_B\)代表了背景信息. \(M\)也就是個Mask, 值在0-1之間.
之后作者定義了一個圖片\(B\), 如果圖片\(I\)是被混合的偽造圖片, \(B\)會顯示混合邊界. 否則就是一張全黑的圖片.

而\(B\)的定義為:
\(i,j\)是像素下標, \(M\)的定義如上述. 如果輸入\(I\)是真實圖像, 那么\(M\)就是全0或者全1, 那么\(B\)也就是全0. 否則\(B\)必定有一些維度不為0或1. 如此\(B\)會給出一個輪廓, 也就代表了修改的部分, 進而判定輸入圖片是否是合成圖片了.
因此本文提出模型的本質就是計算一個\(M\), 以判定輸入圖片是否由兩張圖片合成.

具體流程如上圖所示. 通過\(I_B\)和\(I_F\)計算\(I_M\), 並且使用凸包和Blur等方法生成Mask和\(B\), 最終\(I_M\)和\(B\)一一對應.
作者直接使用了FCN, 全CNN網絡訓練\(I_M\)和\(B\)的關系. 網絡會根據輸入的\(I_M\)獲取\(\hat{B}\), 並根據\(\hat{B}\)判定圖片是否為假的概率. loss函數則同時計算\(\hat{B}\)和\(B\)以及概率的loss.
實驗結果
因為目標是檢測泛化, 做事使用了多個數據集. 結果發現, baseline在訓練集和測試集來自同一源頭時表現優秀, 一旦泛化到別的測試集表現就有斷崖式下跌. 而本文提出的模型則解決了這些問題.

之后作者對比了其他泛化模型, 發現自己的模型比其他的泛化模型表現更加優秀.

總結
作者從自己的觀察提出了了Face X-ray, 用以高效的判定圖片是否偽造. 但該方法建立在一個前提即偽造方法包含圖片混合這一步驟. 這也是其他換臉算法的開發方向.