CartoonGAN: Generative Adversarial Networks for Photo Cartoonizationを読んだ

Yang Chen, Yu-Kun Lai, Yong-Jin Liu
CVPR2018
[pdf](http://openaccess.thecvf.com/content_cvpr_2018/papers/Chen_CartoonGAN_Generative_Adversarial_CVPR_2018_paper.pdf)

# どんなもの
現実世界の画像を漫画風の画像に変換するGAN, CatoonGANを提案．

![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/b7be0584-f692-9dd6-8a9f-f9f80dda01c6.png)


# 先行研究との差分
既存の画風変換手法では以下のような漫画独特な特徴を十分に表現できなかった．

- 漫画スタイルが持つハイレベルな簡単化や抽象化といった特徴
- 漫画画像が持つ鮮明なエッジ，滑らかな色むら，比較的簡単なテクスチャ

これらの漫画の特徴を表現するために，2つの損失関数を提案．

- (semantic) content loss : 写真と漫画の間のスタイル変換に対応するため，VGGnetの高レベルな特徴マップの疎な正規化で定式化
- (edge-promoting) adversarial loss : 鮮明なエッジの維持が目的

# 技術や手法のキモ

## 1. CartoonGAN architecture

![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/2fa10ab1-5712-b375-fd57-305fd775f98b.png)

### generator network
- flat convolution stage
- 2 down-convolution blocks
- 8 residual blocks
- 2 up-convolution blocks
- convolutional layer

### discriminator network
- flat layers
- 2 convolutional blocks
- feature construction block
- convolutional layer

## 2. Loss function

### Adversarial loss
はっきりとしたエッジを持つ画像を生成させたい（従来のdiscriminatorはエッジ（少）だが，色むら（良）な画像を見分けるのが苦手）
→ エッジの有無も見分けられるようにすれば良さそう
→ 「cartoon」と「エッジぼかしcartoon」と「写真」を区別できるようなロスを設計

![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/d1b61d4b-4016-a836-1248-a0c761432799.png)

### Content loss
写真中のコンテンツが，漫画変換後にも保持されるためのロス．

- 変換後の画像がコンテンツをある程度保持していても，「特徴マップ」に違いが現れる
- これにより，画像中の局所的な領域に違いが現れる
- この局所的な違いを扱うには「L1スパース正則化」が適している

→ VGGnetの「特徴マップ(conv4_4)」の差の「L1スパース正則化」でロスを定義．

## 3. Initialization phase
GANの学習は局所解にハマりやすい．これを解決するためにgenerator networkの初期化を工夫．
→ content lossだけを使ってgenerator networkをpre-trainするとうまくいった
画像は写真とinitialization phaseを10epoch行なった結果の比較．

![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/7460e9ac-482e-2e19-e9c8-2a54604befc9.png)


# どうやって有効性を検証したか
定性的な比較，評価．
生成画像．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/e48077ce-27a1-1388-450b-5ca01e40ddd0.png)

state-of-the-artとの比較．
公平のためNSTは1枚のスタイル画像を与える場合（従来）と複数のスタイル画像を与える場合（拡張版）で比較．
CycleGANについてはidentity lossの有無も比較．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/68ee638d-34cd-609b-d27f-7f36e062d0be.png)
CartoonGANを用いた方がエッジがはっきりと出ている．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/89469bd3-6592-61c8-15d0-b120bcc69cec.png)
「訓練にペアの画像(paired image)を使用する必要がない」という点はCycleGANも同じだが，訓練に必要な時間がCartoonGANの方が少なくて済む．
CycleGAN 　　　　　　　　: 2291.77 s
CycleGAN with identity loss : 3020.31 s
CartoonGAN 　　　　　　　: 1517.69 s

CRFMRF, Deep Analogyとの比較．(image1)は写真に似た画像を選択，(image2)はランダムに画像を選択．
CartoonGANは作者の画風を捉えられている．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/8ee65766-7ddd-6c6d-d64a-79b28b8ebf8b.png)

initialization phase無し，$L_1$でなく$L_2$を使用，edge loss(多分adversarial lossの方)無し，と比較．
初期化が無いと全くうまくいかない．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/680dba4b-7d62-89cf-acb8-095d4a3da0c2.png)


# 議論はあるか

- エッジをうまく保持するためのロス
- 特徴マップ，L1スパース正則化を用いたロス
- 学習をうまく収束させるための初期化

を提案．
今後は

- 人間の顔の漫画変換
- 漫画変換特有の性質を扱うためのロス関数の設計
- 動画を扱うために連続的，時系列的な制限の追加

を目指す．


# 次に読むべき論文

GANで画像の欠損部分を穴埋め，補完
[Generative Image Inpainting with Contextual Attention](http://openaccess.thecvf.com/content_cvpr_2018/papers/Yu_Generative_Image_Inpainting_CVPR_2018_paper.pdf)

線画から色つけまで行うGAN
[SketchyGAN: Towards Diverse and Realistic Sketch to Image Synthesis](http://openaccess.thecvf.com/content_cvpr_2018/papers/Chen_SketchyGAN_Towards_Diverse_CVPR_2018_paper.pdf)