Logo Synthesis and Manipulation with Clustered Generative Adversarial Networksを読んだ

Alexander Sage, Eirikur Agustsson, Radu Timofte, Luc Van Gool
CVPR2018
[pdf](http://openaccess.thecvf.com/content_cvpr_2018/CameraReady/2998.pdf), [arXiv](https://arxiv.org/abs/1712.04407), [github](https://github.com/alex-sage/logo-gen/), [project page](https://data.vision.ee.ethz.ch/sagea/lld/)

# どんなもの？
マルチモーダルなデータを用いてのGANの学習はmode collapseを起こしやすい．
クラスタリング結果を用いることで，マルチモーダルなロゴデータセットに対して有効なGANの学習手法を提案．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/966aa133-6224-1458-bcda-3d9b12f3b3c0.png)

# 先行研究との差分

- 大規模なロゴ，アイコンのデータセットLarge Logo Dataset (LLD)を作成
- マルチモーダルなロゴデータに対するGANの学習手法，Clustered GAN Trainingを提案
- 生成画像はインタラクティブに操作可能

# 技術や手法のキモ
## LLD: Large Logo Dataset
ウェブから取得した画像を用いて，ロゴのデータセットを作成．
LLDは

- LLD-icon
- LLD-logo

で構成される．
LLD-iconはウェブ上の"Favicons"を集めた32x32の画像486377枚で構成される．
(use the Python package Scrapy)
Faviconは以下のようなホームページのアイコン．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/5eea5cb7-4488-6b10-a0e0-33f89d37f396.png)

LLD-logoはTwitterのプロフィールから集めた400x400の画像122920枚で構成される．
(use the Python wrapper tweepy)

以下はその他のロゴデータセットとの比較．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/52c91fab-f8fb-4892-5c50-2dd2e59bc281.png)

## Clustered GAN Training
既存のGAN手法とクラスタリング（エンコーディング）手法を組み合わせる．
クラスタリング結果をgeneratorの入力に与えることで，学習の性能を向上させる．

### GAN architectures

- DCGAN
- iWGAN

を用いる．

### Clustering

- AutoEncoder Clustering (AE)
オートエンコーダの中間層の特徴ベクトルでk-meansクラスタリング．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/9527e840-31f1-bd16-a8e3-e68b04904bd4.png)

- ResNet Classifier Clustering (RC)
ImageNetで学習済みのResNetの特徴ベクトルでk-meansクラスタリング

**クラスタリング結果を用いたものをsemi-supervised**と呼ぶことにする．

### Conditional GAN Training Methods
どのようにしてクラスタリングの結果をGANに入力するか．

- LC: Layer Conditional GAN
linear layersにはone-hot vectorとして追加し，convolutional layersには“one-hot feature maps”として追加する．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/9f34bfa7-cfdc-03f2-cc87-7e5d8b8fed04.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/5aa1b64e-65b7-8eff-d42e-714d3e8317f8.png)

- AC: Auxiliary Classifier GAN
iWGANではAuxiliary Classifier[[26](https://arxiv.org/abs/1610.09585)]という手法とも組み合わせる．
この手法を用いると，クラスタ間の補完が難しくなるため，実応用には制限がかかってしまうが，畳み込み層にパラメータ（おそらくクラスタの情報）を追加する必要がなくなり，パラメータ数を抑えられる．
また，CIFER-10による実験では最も高いInception scoreを出した．


# どうやって有効性を検証したか
## Quantitative evaluation
下の表は，CIFAR-10によるInception scoreとDiversity (MS-SSIM[[26](https://arxiv.org/abs/1610.09585)]) の比較．
"iWGAN-AC with 32 RC clusters"を使用した場合が最も良い結果となった．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/f62ee25d-a0fa-f3d3-ce5b-3b09f6174aad.png)

下の表は，ImageNet-smallを用いてクラスタリング結果の有無を比較したもの．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/35972043-d336-4ca1-b725-d6ea775422c3.png)

## Logo synthesis by latent space exploration
### Sampling
以下は，"DCGAN-LC with 100 AE clusters"を使用した場合の生成画像．
上半分が訓練画像で，下半分が生成画像（4クラスタ分）．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/f04cd20a-3de4-63c2-acc8-2ab273adb3d2.png)

### Interpolations
以下は，"DCGAN-LC with 100 AE clusters"で異なる4つのクラスタに属する4種類のロゴ間の補完を行なった結果．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/4cebbf61-2af4-92fa-2ecb-04854c85cbf3.png)

以下もロゴ間の補完を行なった結果．
上側は同じクラスタに属する4種類のロゴ間の補完を行なった結果．
下側は異なる3つのクラスタに属する3種類のロゴ間の補完を行なった結果．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/9acc793e-ac02-4aca-23f6-516f8bce1814.png)

### Class transfer
以下は1行目の11種類のロゴに，1列目のロゴが属するクラスタの属性を付与した結果．
この結果から，ロゴの持つ色やコンテンツはエンコーディングにより z ベクトルに保持されるが，クラスタのラベルによって形状を変化されられることが分かる．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/81539164-9dee-6650-4237-0856190f73c9.png)

### Vicinity sampling
以下は近傍サンプリング？の結果．
エンコードした特徴空間で移動することで，近い特徴を持ったロゴがサンプルできる（ということだと思う）．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/b9d7873f-6920-96a6-33b4-468473f5ff23.png)

### Vector arithmetic

- Sharpening
ボケたロゴとシャープなロゴの特徴（z-vector）を用いることで，ボケたロゴをシャープにできる．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/bc8e8056-cd3f-313e-c0fd-134418d5b870.png)

- Shapes
Sharpeningと同様にして四角なロゴを円形のロゴの特徴（z-vector）を用いて，四角にすることもできる．
![image.png](https://qiita-image-store.s3.amazonaws.com/0/259451/3a1ba0e8-66ad-9826-97c6-153223603bb1.png)

# 議論はあるか

- 大規模なロゴ，アイコンのデータセットLarge Logo Dataset (LLD)を作成
- マルチモーダルなロゴデータに対してもmode collapseを起こしにくいGANの学習手法，Clustered GAN Trainingを提案
- CIFER-10とImageNetを使用して定量的に評価
- 特徴ベクトルを用いた演算を行うことで，インタラクティブなロゴ生成が可能

# 次に読むべき論文
久々に強化学習
[Learning Basketball Dribbling Skills Using Trajectory Optimization and Deep Reinforcement Learning](http://graphics.cs.cmu.edu/wp/wp-content/uploads/2018/05/BasketballSIGGRAPH2018.pdf)