論文まとめ：Deep CT to MR Synthesis using Paired and Unpaired Data

# はじめに

今年５月にarXivにあがった以下の論文
[1] C. Jin, et. al. "Deep CT to MR Synthesis using Paired and Unpaired Data"
https://arxiv.org/abs/1805.10790

をまとめてみた。

# 概要

1. GANを使ってCT画像からMRI画像を生成するモデル
2. CTとMRIのペアがあるものと、無いものを混ぜて学習する
2. ペアのないものに関してはcycle-consistencyをとる
3. ペアのあるものに関しては、さらに生成したMRIとペアのMRIとの差をとる

以下の図で左からCTの元画像、生成したMRI合成画像、ペアとなるMRI画像、ペアMRIと合成MRIとの差。

<img width="784" alt="Deep_ct_mri_img01.png" src="https://qiita-image-store.s3.amazonaws.com/0/116706/758e8cdd-a4e1-6763-80fd-1203938c50d7.png">
[1] Figure 5 より

# Architecture

## CTとMRIのペアが無い場合

以下の図のように合成したMRIをdiscriminator に入れてadversarial なlossを取るのと同時に、cycle-GANごとく再合成したCT画像と元のCT画像とのcycle-consistencyをとる。

<img width="345" alt="CR_MRI_img02.png" src="https://qiita-image-store.s3.amazonaws.com/0/116706/94ad5b0b-b0f5-b729-2059-28ca86516cca.png">
[1] Figure 3 より

## CTとMRIのペアがある場合

以下の図のよう。上記のadversarial loss, cycle-consistency lossに加えてCT画像から生成したMRI画像と、CT画像のペアとなるMRI画像とのlossをとる。

<img width="411" alt="CT_MRI_img03.png" src="https://qiita-image-store.s3.amazonaws.com/0/116706/db6ca5cb-7ecc-f76c-6502-61b4bfc00d2d.png">

ここで discriminator はどうなってるの？という疑問が生じる。

ペアの画像もペアが無い単一の画像も同じ $Dis_{MR}$ に入れてるから。

実は以下のようになっている。

<img width="719" alt="CT_MRI_img04.png" src="https://qiita-image-store.s3.amazonaws.com/0/116706/14a0f7ed-19e6-5326-6514-46b1b0874886.png">

[1] Figure 4 より

つまり、中央のメイン部分は共有してるが、前段部分（Extra head）と出力部分（Extra tail）は別れている。

中央部のネトワークは共有するが、入口と出口でペアあり、ペアなしで異なる仕様となっている。


# objective

## adversarial な loss 

```math
\begin{eqnarray}
L_{GAN} (Syn_{MR}, Dis_{MR}, I_{CT}, I_{MR}) &=& \mathbb{E}_{I_{MR} \sim p_{data} (I_{MR})} [\log Dis_{MR} (I_{MR})] \\
  &=& \mathbb{E}_{I_{CT} \sim p_{data} (I_{CT})} [\log (1 -  Dis_{MR} (Syn_{MR}(I_{CT})))] \\
 &=& \mathbb{E}_{I_{CT}, I_{MR} \sim p_{data} (I_{CT},I_{MR})} [\log Dis_{MR} (I_{CT},I_{MR})] \\
  &=& \mathbb{E}_{I_{CT} \sim p_{data} (I_{CT})} [\log (1 -  Dis_{MR} (I_{CT}, Syn_{MR}(I_{CT})))] \\
\end{eqnarray}
```

右辺１項目と２項目はペアが無い場合。

まず１項目はrealなMRをDiscriminatorに入れた場合。２項目はCTから合成したMRをDiscriminatorに入れた場合。

３項目はrealなMRとそのペアのCTをDiscriminatorに入れた場合。４項目はCTから合成したMRとそのペアのCTとをDiscriminatorに入れた場合。

また上記の式ではnegative log-liklihoodだが、実際はペアの無い方だけLSGANのleast squares lossを使う。（ペアのある方はnegative log-likelilhoodの方がよかったらしい）

つまり以下のように修正する。

```math
\begin{eqnarray}
L_{GAN} (Syn_{MR}, Dis_{MR}, I_{CT}, I_{MR}) &=& \mathbb{E}_{I_{MR} \sim p_{data} (I_{MR})} [(Dis_{MR}(I_{MR}) - 1)^2] \\
  &=& \mathbb{E}_{I_{CT} \sim p_{data} (I_{CT})} [(Dis_{MR}(Syn_{MR}(I_{CT})))^2] \\
 &=& \mathbb{E}_{I_{CT}, I_{MR} \sim p_{data} (I_{CT},I_{MR})} [\log Dis_{MR} (I_{CT},I_{MR})] \\
  &=& \mathbb{E}_{I_{CT} \sim p_{data} (I_{CT})} [\log (1 -  Dis_{MR} (I_{CT}, Syn_{MR}(I_{CT})))] \\
\end{eqnarray}
```

## cycle-consistency loss
cycle-consistency loss は以下。

```math
\begin{eqnarray}
L_{dual-cyc} (Syn_{MR}, Syn_{CT}) &=& \mathbb{E}_{I_{CT} \sim p_{data} (I_{CT})} [\| Syn_{CT} (Syn_{MR} (I_{CT})) -I_{CT} \|_1] \\
&=& \mathbb{E}_{I_{MR} \sim p_{data} (I_{MR})} [\| Syn_{MR} (Syn_{CT} (I_{MR})) -I_{MR} \|_1] \\
&=& \mathbb{E}_{I_{CT}, I_{MR} \sim p_{data} (I_{CT}, I_{MR})} [\| Syn_{CT} (Syn_{MR} (I_{CT})) -I_{CT} \|_1] \\
&=& \mathbb{E}_{I_{MR},I_{CT} \sim p_{data} (I_{MR},I_{CT})} [\| Syn_{MR} (Syn_{CT} (I_{MR})) -I_{MR} \|_1] \\
\end{eqnarray}
```

右辺の１、２項目がペアが無いdataに関するもので、３、４項目がペアがあるdataに関するもの。

例えば１項目はCT画像からMR画像を合成し、それからCT画像を再合成した時の、それと元の画像とのL1 loss。

## ペアとのL1 loss  

ペアがあるものは合成したMRとペアのMRとでL1 lossをとる。

```math
\begin{eqnarray}
L_{L1} (Syn_{MR}, Syn_{CT}) &=& \mathbb{E}_{I_{CT}, I_{MR} \sim p_{data} (I_{CT}, I_{MR})} [\| I_{MR} - Syn_{MR} (I_{CT}) \|_1] \\
&=& \mathbb{E}_{I_{MR},I_{CT} \sim p_{data} (I_{MR},I_{CT})} [\| I_{CT} - Syn_{CT} (I_{MR}) \|_1] \\
\end{eqnarray}
```

## objective 全体  

```math
\begin{eqnarray}
L (Syn_{MR}, Syn_{CT}, Dis_{MR}, Dis_{CT}) &=& L_{GAN} (Syn_{MR}, Dis_{MR}, I_{CT}, I_{MR}) \\
  &=& L_{GAN} (Syn_{CT}, Dis_{CT}, I_{MI}, I_{CT}) \\
 &=& \lambda L_{dual-cyc} (Syn_{MR}, Syn_{CT}) \\
  &=& \gamma L_{L1} (Syn_{MR}, Syn_{CT}) \\
\end{eqnarray}
```

この目的関数を以下のmin max ゲームで解く。

```math
Syn^{*}_{MR} = \arg \min_{Syn_{MR}, Syn_{CT}} \max_{Dis_{MR}, Dis_{CT}} L(Syn_{MR}, Syn_{CT}, Dis_{MR}, Dis_{CT})
```

# implementation  
## network
合成器（generator）のネットワーク構造は[2]のpoolingなしconvして、residual block、deconvする形。

その他、活性化関数はrelu、batch norm使う。

Discriminatorではpatch GAN（もしくはpix2pix）[3]ごとくNxN patchでlossをとる。

## optimizerなど  
- 最適化手法はAdam（learning rateは $2.0 \times 10^{-4}$ からはじめ減少させる）
- 目的関数のハイパーパラーメータは $\lambda = 10$ 、 $\gamma = 100$ 。

## data augmentation  
1. horizontally flipping
2. randomly cropped to 256x256  from 286x286
3. rotated by $r \in [-5, 5]$ degrees

# Metrics  
以下の２種類でMRの合成を評価する。
## mean absolute error  
ペアのある画像に関して、L1 normで評価。

```math
MAE = \frac{1}{N} \sum_{i=0}^{N-1} \| I_{MR} (i) - Syn_{MR} (I_{CT} (i)) \|
```

N はvoxel方向の数。つまりvoxel方向に平均をとる。

## peak-signal-to-noise-ratio  
また以下のpeak-signal-to-noise-ratio (PSNR) も用いる。

```math
PSNR = 10 \dot \log_{10} \left( \frac{MAX^2}{MSE} \right) \\
MSE = \frac{1}{N} \sum_{i=0}^{N-1} ( I_{MR} (i) - Syn_{MR} (I_{CT} (i)) )^2
```

ただし $MAX = 255$ 。

まず２つ目の式でmean sqared errorを求める。これはvoxel内での平均的な合成MRとペアのMRとの差と考えられる。

これとmaximumな値との比率を１式で求める。



# reference
[2] J. Johnson, et. al. "Perceptual losses for real-time style transfer and super-resolution"

[3] I. Zhu, et. al. "Image-To-Image Translation With Conditional Adversarial Networks" CVPR

<font color="red">書きかけ</font>