[論文読み] Face X-ray for More General Face Forgery Detection

# はじめに
「Deepfake」は，深層学習に基づく画像生成技術により画像や動画上の顔を生成・加工する技術を指す．Deepfake画像は非常に精巧であり，フェイクニュースやなりすまし，証拠の改竄など多くの問題を引き起こす可能性が問題視されている．近年，Deepfakeにより生成された画像や動画を自動的に検出する研究が盛んに取り組まれている．
Deepfake検出は一般的にDeepfakeとRealの2クラス分類問題として扱われる．

今回，紹介する論文である「Face X-ray for More General Face Forgery Detection」はMicrosoftが提案した手法である．

# 概要
Face X-Rayは学習時に実際のDeepfake画像を必要としない自己教師あり学習ベースの手法である．
Real画像から疑似的なDeepfake画像を生成する生成器と合成境界を予測するモデルで構成される．

# アプローチ
Face X-Rayは，Deepfake画像の合成境界の予測に着目している．

## 生成器
生成器はReal画像から疑似的なDeepfake画像と合成境界を示すFace X-Ray，ラベルを生成する．

![BI.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744226/b6683583-3c25-3682-1d34-1892a63b0f95.png)

生成器は3つの手順で疑似的なDeepfake画像と合成境界を示すFace X-Ray，ラベルを生成する．

### 1，ソース画像とターゲット画像の選択
Real画像(ターゲット画像)$I_F$から顔の器官点を推定し，最も類似度の高い器官点の位置を持つ画像をReal画像群から探索してソース画像$I_B$とする．

### 2，マスクの生成
1で推定した器官点からソース画像$I_F$とターゲット画像$I_B$を合成するマスク$M$を生成する．生成するマスク$M$は，ターゲット画像$I_B$に対してソース画像$I_F$の合成領域を指定するものである．

### 3，合成
下記の式に従いターゲット画像$I_B$とソース画像$I_F$，生成したマスク$M$を用いてDeepfake画像$I_M$を生成する．

```math
\begin{align}
    {I}_{M} = M\odot{I}_{F}+(1-M)\odot{I}_{B}
\end{align}
```

最後に，下記の式に従いマスク$M_{i,j}$を基に合成境界を示すFace X-Ray $B_{i,j}$を生成する．

```math
\begin{align}
    {B}_{i,j} = 4\cdot{M}_{i,j}\cdot(1-M_{i,j})
\end{align}
```

![math_x-ray.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744226/cc8aade8-0146-8dbd-13ce-e384e714c046.png)

## Face X-Rayのモデル
Face X-Rayのモデルは，Real画像と生成器が生成した疑似的なDeepfake画像と合成境界を示すFace X-Ray，ラベルを用いて学習を行う．
Face X-Rayのモデルは特徴量を抽出するBackboneと抽出した特徴量から合成境界を予測するUpsample Networkで構成される．

![face_x_ray.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744226/9b318c3f-c0b9-5086-1cce-d32302bc87c2.png)

### Backbone
Backboneでは，入力された画像から特徴量を抽出して，抽出した特徴量をUpsample Networkに入力する．
BackboneにはImageNetで学習済みのHRを用いている．

### Upsample Network
Upsample NetworkではBackboneで抽出した特徴量をアップサンプリングすることで合成境界を予測する．最後に，予測した合成境界に基づいてDeepfakeとRealの2クラスを予測する．

## 損失関数
損失関数は下記のように予測クラスと正解ラベルとのクロスエントロピー$L_c$と予測した合成境界とFace X-Rayのクロスエントロピー$L_b$の総和で定義される．λは損失の比率を調整する重みである．

```math
\begin{align}
    L = λL_b + L_c
\end{align}
```

# 実験
いくつかの実験を抜粋して結果を記載する．
Area Under Curve(AUC)で比較する．

## 実験1，単純なCNNとのAUC比較
各学習データにおける単純なCNN(Xception，HRNet)とFace X-RayのFF++に対するAUCを比較する．
どのモデルでも学習データと同じデータの場合は高いAUCであるがFace X-Ray以外は学習データ以外のデータではAUCが低下している．
一方で，Face X-Rayは学習データ以外のデータでも高いAUCである．また，学習に疑似的なDeepfake画像を使用した場合はさらにAUCが向上し，疑似的なDeepfake画像のみで学習した場合においても高いAUCである．

![result1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744226/f0145539-48be-fe81-d05e-74b75d8298b5.png)

予測した合成境界と正解の合成境界の可視化結果．

![result_pic.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744226/a1177df1-2a22-22fb-530e-f204d3a39bb1.png)


## 実験2，汎化性能の評価
FF++及びBIで学習したXception，Face X-RayのDFD，DFDC，Celeb-DFに対するAUCを比較する．
Face X-Rayは疑似的なDeepfake画像のみで学習した場合においてもFF++で学習したXceptionと比較して高いAUCである．また，学習にFF++を使用した場合はさらにAUCが向上する．

![result2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3744226/a69ee05e-c350-21f3-67ed-d15699181362.png)

# まとめ
Face X-Rayは実際のDeepfake画像ではなく疑似的なDeepfake画像を生成する生成器と合成境界を予測するモデルで構成される手法である．
実際のDeepfake画像を学習に用いていないにも関わらず従来の手法と比較して高い汎化性能を持つ手法である．

# 参考文献
論文：Face X-ray for More General Face Forgery Detection
LINK：https://arxiv.org/abs/1912.13458

# 備考
・公式の実装
なし
・非公式の実装
https://github.com/wkq-wukaiqi/Face-X-Ray
https://github.com/nftport/face-x-ray