Image Inpainting via Generative Multi-column Convolutional Neural Networksを読んだ

Yi Wang, Xin Tao, Xiaojuan Qi, Xiaoyong Shen, Jiaya Jia
NeurIPS 2018
[arXiv](https://arxiv.org/abs/1810.08771), [pdf](https://arxiv.org/pdf/1810.08771.pdf)

[以前読んだ論文](https://qiita.com/d-ogawa/items/6636381aded41fab1ecf)が比較手法として登場していたので読んでみた．

# どんなもの？
image inpainting, 画像の補完手法を提案．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/884800e8-049b-1870-a5a7-6cf8e5b79b05.png)


# 先行研究との差分

- 画像補完のための **Generative Multi-column Convolutional Neural Network (GMCNN)** を提案
- **implicit diversified Markov random field (ID-MRF)** を提案し，訓練時にのみ使用する
- **confidence-driven な reconstruction loss** を提案
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/1aed4c48-b861-590d-d224-f08d6b8f5d61.png)

# 技術や手法のキモ
以下の図は，提案手法の全体図．
大まかな流れは，

- 入力は欠陥部分のある画像$X$と，その欠陥部分が1のマスク画像$M$
- 異なる3種類のフィルタサイズのネットワーク$f_1, f_2, f_3$に入力
- それぞれのネットワークの出力が目的の画像サイズになるようにup-samplingされてconcatenateされたのが$F$
- 共通のデコーダ$d$に$F$を入力，その出力がgeneratorの生成画像$\hat{Y}$

![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/7e4bae5b-1c50-b623-3a38-56ea3693138d.png)
※ 論文中figure 2を加工

これまでの主流な手法で用いられている one-stream encoder-decoder structure, coarse-to-fine architectureと異なり，

- 複数サイズの受容野を持っており，異なるレベルの特徴が捉えられる
- coarse-level のエラーが refinement に影響を与えることがない

とのこと．

## ID-MRF Regularization
（フワッとした理解です．．．）
多くの手法では，画像中の類似したCNN特徴を持つパッチを用いて画像を補完する．
提案手法では implicit diversified Markov random fields (ID-MRF) を用いる．
ID-MRF の計算では，コサイン類似度のような直接的な指標も使えるが，そうすると以下の画像 (a) のように，同じパッチの特徴を使って補完をしてしまう．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/446a83f5-c3f9-e16f-418a-ed46a26fdb04.png)
これを防ぎ，多様なパッチの特徴を利用できるように工夫する．
生成画像と真値画像をある学習済みのネットワーク（VGG19）に入力し，その$L$層目の特徴を $\hat{Y}_g^L, Y^L$，それぞれから取ってきたパッチを $v, s$ とする．
これらのパッチの相対的な類似度を，

```math
RS(v, s) = \exp((\frac{\mu(v, s)}{\max_{r\in\rho_s(Y^L)}\mu(v, r) + \epsilon}) / h)
```
と定義する．
$h, \epsilon$ は定数で正の小さな値，$\mu()$ はコサイン類似度，$r\in\rho_s(Y^L)$は $s$ 以外のパッチ $r$．
指数の分子部分は，$v, s$のコサイン類似度を$v, r$のコサイン類似度の最大値で割ったもの．
これを正規化して，

```math
\overline{RS}(v, s) = RS(v, s)  \big/ \sum_{r\in\rho_s(Y^L)}RS(v, r)
```
以下のように $\hat{Y}_g^L, Y^L$間の ID-MRF ロスを定義．

```math
L_M(L) = -\log(\frac{1}{Z}\sum_{s\in Y^L}\max_{v\in\hat{Y}_g^L}\overline{RS}(v, s))
```

それぞれのパッチ$v$に最も近いパッチ$s$がバラけるほど $L_M(L)$ は小さくなる．

提案手法ではVGG19の conv4_2 を画像の構造を捉えるために使用し，conv3_2, conv4_2を画像のテクスチャを捉えるために使用し，

```math
L_{mrf} = L_M(conv4\_2) + \sum_{t=3}^4L_M(conv\mathbf{t}\_2)
```
このロスを追加することで，上の画像の (b) のように多様なパッチの特徴を用いるようになる．

## Confidence-driven reconstruction loss
欠陥部分のうち，分かっている部分との境界に近い部分ほど一貫性をとるようにする Confidence-driven reconstruction loss $L_c$ を定義する．
ガウシアンフィルタを使用してconfidence のマスクを作るみたいだがよく分からなかった．．．（式中の $i$ ?）
その他の手法の reconstruction loss と比べて学習が進むにつれて徐々に欠陥部分の中心に向かって補完のfocusがシフトするらしい．

## Adversarial Loss
Adversarial Loss　$L_{adv}$ として improved Wasserstein GAN [[6](https://arxiv.org/abs/1704.00028)] を使用する 

最終的なロス関数 $L$ は，

```math
L = L_c + \lambda_{mrf}L_{mrf} + \lambda_{adv}L_{adv}
```

# どうやって有効性を検証したか

## Qualitative Evaluation
以下は生成画像の例．
提案手法が最もらしい画像を生成できている．
multi-column architecture と confidence-driven reconstruction loss で合理的な構造を捉えることに繋がり，ID-MRF regularization と adversarial training がリアルなテクスチャの生成に繋がっているらしい．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/cd224860-b4d3-4bac-59e8-700c03c7a23c.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/c55de4d3-da54-6876-27ec-a2caf5a9a36a.png)

以下は顔画像に対する補完結果．
ID-MRF regularization の効果がより良い結果に繋がるらしい．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/ac3442ae-055b-5c1a-ae28-b7f6f2d35555.png)


## Quantitative Evaluation
以下はPSNRとSSIMによる比較．
どちらの指標も大きいほど良い．
提案手法はクラス数が少ないデータセットに対して効果的らしい．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/31631670-45eb-1001-b954-9f5519dbe650.png)

以下は人間に生成画像を評価してもらった結果．
ほとんどの被験者が提案手法を選んでいる．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/a7534fad-35f0-23ea-b91d-6887360d4fb1.png)


## Ablation Study
### Single Encoder-Decoder vs. Coarse-to-Fine vs. GMCNN
Single Encoder-Decoderのモデル，Coarse-to-Fineのモデルとの比較．
他の構造よりも数種類のサイズの受容野を用意する提案手法がより良い生成画像になっている．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/6d54d928-1201-9575-c173-30783385d608.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/0a24bd2a-7981-2123-8f73-02e7485d1fb7.png)

### Spatial Discounted Reconstruction Loss vs. Confidence-Driven Reconstruction Loss
Spatial Discounted Reconstruction Lossを使用する手法との比較．
わずかに提案手法の生成画像の方がはっきりしているように見える．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/3048bf1b-3685-6348-acb8-6eca35f71131.png)

### With and without ID-MRF Regularization
ID-MRF の有無で比較．
あまり変化がないように見える．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/fa47cf8b-b557-fc48-ed00-cf22ab93f669.png)

$\lambda_{mrf}$の大きさを変えて比較．
$\lambda_{mrf} = 0.02∼0.05$ が適切らしい．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/d8eb293d-87e3-be51-f4a5-6c445d1cc7b9.png)



# 議論はあるか

- 画像補完のための Generative Multi-column Convolutional Neural Network (GMCNN) を提案
- ID-MRF と confidence-driven な reconstruction loss を提案
- ImageNet のような多くのクラスが存在するデータセットに対してはあまり効果的でないらしい


# 次に読む論文

text to imageの研究
[Text-Adaptive Generative Adversarial Networks: Manipulating Images with Natural Language](https://arxiv.org/abs/1810.11919)