Deepfake 視頻中時空不一致學習
【GiantPandaCV 導語】
針對 Deepfake Video 檢測任務上的時空不一致問題,提出了三種模塊對時間信息、空間信息、時間差異進行建模,能夠靈活地即插即用到 2D CNN 中。
1 前言
在本次工作中,我們將時空不一致學習引入到 Deepfake Video 檢測任務上。我們分別提出了三種模塊。
具體來說,我們在 TIM 模塊中,利用相鄰視頻幀在水平,垂直方向時間差異來進行建模。ISM 模塊則分別利用 TIM 模塊的時間信息,SIM 的空間信息,建立更全面的時空表示。上述這三個模塊構成的 STIL Block 是一個靈活的插件模塊,可以靈活地插入到 2d CNN 中。
倉庫地址:https://github.com/Holmes-GU/MM-2021(目前暫時是空的,作者後續應該會更新) 論文地址:http://arxiv.org/pdf/2109.01860v1
2 概覽
我們將 Deepfake 視頻檢測視爲一種二分類問題,給定一段輸入視頻序列 (T,C,H,W),其中 T 表示的是視頻幀數量,使用 2D-CNN 模型來進行建模。
我們將 deepfake 視頻檢測表述爲一個時空不一致性的學習過程,並設計了 STIL 模塊,插入到 ResNet 模型中。
STIL 模塊是一種雙流模型,我們將輸入 X 從通道維上均分得到 {X1, X2}。
X1 進入到 SIM 中,以捕捉空間僞造模式。TIM 則以逐幀的方式來挖掘 deepfake 給人臉帶來的時間不一致性。ISM 則將信息流從空域引入時域(說人話就是把 SIM 的東西給融進 TIM)。最後雙流的信息被拼接到一起(還有底下一條殘差支路),輸入到下一層。
3SIM (Spatial Inconsistency Module)
之前也有一些研究關於 GAN 中,使用 Upsample 操作會產生棋盤紋理。
筆者記得是可以通過合理配置 stride,kernelsize 來避免棋盤紋產生。
並且 Deepfake 在做人臉融合的時候,融合邊緣附近的圖像質量並不一致,我們將這些特徵視爲空間不一致性。
該模塊僅考慮空域而不考慮時域,我們將 SIM 設置爲一個 3 路的模塊。首先將通道一分二,SIM 的輸入是 (T, C/2, H, W)。
-
其中,中路使用了 2x2,stride=2 的 avgpool 進行降採樣,再跟 1x3,3x1 的卷積,然後進行上採樣,恢復分辨率。
-
上路是一個殘差連接,加到中路,避免降採樣帶來信息損失
-
上中路融合的結果經過 sigmoid 得到置信度,與下路經過 3x3 卷積的輸出後進行相乘
4TIM (Temporal Inconsistency Module)
deepfake 基本都是逐幀生成的,沒有考慮視頻前後的信息,因此給定一個圖片來分辨可能很難,但是結合不同幀來看就相對簡單了。
視頻分類模型基本也是時間,空間解耦合的思想
我們發現分別從水平,垂直方向觀察,視頻中時間不一致性更加突出。
注意的是這裏 reshape 將維度做了調整
接着是做一個幀間差操作,以水平方向的支路爲例:
就是當前幀經過一層 conv,然後減去上一時間幀。
類似地,也是經過一個三支路模塊:
-
上路是殘差鏈接
-
中路是 avgpool + 3x1(如果是水平方向則是 1x3) + 上採樣
-
下路是 3x1(如果是水平方向則是 1x3) 然後相加,經過 1x1 卷積 + sigmoid 操作,得到一個類似置信度的東西。
水平方向和垂直方向兩個支路的置信度加到一起,與輸入 X2 相乘。
5ISM (Information Supplement Module)
這個模塊主要是做信息融合,作者嘗試了三種方式
-
S -> T
-
T -> S
-
S + T
經過消融實驗,發現 S -> T 效果最好。
還是分三條路:
-
上路直接 concat 到最後輸出
-
中路做了個全局池化,經過 1x3 卷積 + sigmoid 得到置信度
-
下路和置信度相乘,並進一步與 TIM 的輸出一起相乘
6 實驗結果
看結果最後都十分不錯,並且也做了很完善的消融實驗
還有一些 STIL Block 的可視化圖,第 1,3 行是視頻序列,2,4 行是 heatmap
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/-RopkKsdpyPWSkTJYOnRsA