無限の彼方へさあ行くぞ！Infinity GAN解説

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635267/769821a2-8275-9f34-6d45-2fbdc544150e.png)
画像:["InfinityGAN: Towards Infinite-Resolution Image Synthesis", Lin, C. Lee, H. Cheng, Y. Tulyakov, S. Yang, M.](https://arxiv.org/abs/2104.03963)

---

###かんたんまとめ

- 少ない計算リソースでパッチごとにシームレスに学習・推論を行う
- 学習解像度は有限(101x101)だが無制限の任意の高解像度を生成できる
- 全体の外観、ローカルな構造、およびテクスチャを考慮
- 並列推論可能

###論文情報

論文:["InfinityGAN: Towards Infinite-Resolution Image Synthesis", Lin, C. Lee, H. Cheng, Y. Tulyakov, S. Yang, M.](https://arxiv.org/abs/2104.03963)
arxiv : https://arxiv.org/abs/2104.03963
公式サイト:https://hubert0527.github.io/infinityGAN/
github : https://github.com/hubert0527/infinityGAN
(2021年5月25日現在 実装はまだのようです)

# Introduction
生成モデルは解像度・細かなレベルの品質が大幅に改善してきている。しかしほとんどの改善は学習時間の増加やモデルサイズの増加、厳密なデータが必要である。最新の研究では1024x1024の解像度で画像を合成している。しかしこのようなモデルを単純に高解像度にスケーリングするには問題がある。
無限解像度の画像の合成は、リソースの有限性によって制限される。有限の計算リソースは、入力受容野と出力解像度の上限を決める。さらなる制限は、無限解像度の画像データセットが存在しないことである。したがって、無限の解像度の画像を生成するには、モデルは直接のターゲットなしで、限られた計算リソースの下で、暗黙のグローバル構造を学習する必要がある。

では、無限の解像度の画像を生成するにはどうすればよいのか？
人は部分的に観察していけばシーン全体を推測できる。同様の方法で、画像パッチを使用して学習する生成器を構築し、推論時に学習解像度をはるかに超えて画像を合成することを目指す。したがって生成器は、無制限の任意の高解像度に一般化できる。

# 提案手法
#### 1.グローバルな情報
人は中世の風景、海のパノラマなどの簡単な説明で画像のコンテンツを表現できる。したがって全体的な外観は画像ごとに固定されており、シーンの高レベルの構成とコンテンツを表していると仮定する。
#### 2.ローカルな情報
画像の一部分はその部分や近傍の構造とテクスチャにより定義される。構造コンテンツは局所領域内の物体・形状・配置を表している。構造が定義されると、現実的なシーンをレンダリングするための複数の実現可能なテクスチャが存在する。合成された各テクスチャの写実性は、オブジェクトの材質や照明を暗黙的に考慮する。したがって、テクスチャの合成は、構造、材料特性、照明を条件とした第二段階と考えることができる。局所的ではあるが、構造とテクスチャは全体像と一致しなければならない。これらの考慮事項に基づき無限の解像度の画像を生成できる。
#### つまり...?
画像=グローバルな情報+ローカルな情報
グローバル:海・山などの大まかな情報
ローカル:構造や材質、テクスチャなどの細かな情報

## A.概要

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635267/d35a5a57-c2f3-2589-1f4b-0082d6a54022.png)


学習は低解像度のパッチのみを用いて無限解像度の画像合成を目指す。上記の分析に基づき生成器を2つに分割する。

- 構造シンセサイザー $ (G_S)　 \ $ 

ローカル潜在変数 $ (z_l) \ $・グローバル潜在変数 $ (z_g) \ $・位置情報 $ (c) \ $を受け取りエンコードを行う
グローバル潜在変数 $ (z_g) \ $は、画像の全体的な外観を表す潜在変数で、各パッチ内で考慮するように強制する
ローカル潜在変数 $ (z_l) \ $はパッチのローカルバリエーションを与える
画像のグローバルな情報をモデル化する
各パッチの構造をレンダリング

- テクスチャシンセサイザー $ (G_T)　 \ $

構造シンセサイザーでエンコードした情報とグローバル潜在変数・ノイズから画像パッチを生成する
paddingのない畳み込みに変更したStyleGAN2の生成器を使用
ノイズはグローバル潜在変数にない詳細な情報をモデル化するために使用

### B.構造シンセサイザー
グローバル潜在変数 $ (z_g) \ $・ローカル潜在変数 $ (z_l) \ $をもとに座標 $ (c) \ $にて構造を生成する。
グローバル潜在変数は外観記述子として機能する。ローカル潜在変数は構造の局所的変化を表す。座標は領域を取得するためのクエリとして機能する。
風景画像には
(a) 水平方向に自己相似性がある
(b) 陸・空など垂直方向への急速な変化
がある。そのため座標を与える際垂直方向にtanh,水平方向にはsin,cosでエンコードした座標が与えられる。
$ c =(tanh(i_y), cos(i_x/T), sin(i_x / T)) \ $ 
$ T \ $はパラメータで、構造シンセサイザーの入力幅よりも十分大きくする必要がある(論文では入力幅４つ分)
座標は周期的に繰り返されるが、ローカル潜在変数のバリエーションにより同じ構造の生成を防ぐ。モデルがローカル潜在変数を無視しないようにダイバーシティ損失を使用する。

```math
L_{div} = \frac{||G_S(z_g,z_{l1},c) - G_S(z_g,z_{l2},c)||_1}{ ||z_{l1} − z_{l2}||_1 }
```

### C.テクスチャシンセサイザー
StyleGAN2のモデルに基づいて構築される。固定定数の入力を構造シンセサイザーの出力に置き換え、ノイズを注入する元の設計を使用してきめ細かいテクスチャをモデル化する。グローバル潜在変数をマッピングレイヤへ入力しレイヤごとのスタイル$ z_T \ $に変換される。
また、すべてのゼロパディングを削除する。これは以下の３つの理由がある。

- StyleGAN2はゼロパディングを介したCNNの位置エンコードに強く依存し、学習画像からの構造情報を記憶している
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635267/4ac656d8-b2c5-9c07-3535-c0457deb47b9.png)
StyleGANはpaddingによる位置エンコーディングを重視しており座標を無視していることがわかる。

- パディングが0の位置エンコーディングは、任意の大きさの入力から任意の大きさの画像を合成可能とする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635267/760c8dcb-3191-c8a6-c47e-18b17385f3d9.png)
パディングがなければローカル潜在変数や座標を動かすことによって完全に同じピクセルを生成することができる。つまり大きな画像を小さなパッチで分割出力する際に連続性を考慮しなくてよい。

- パディングにより生成器が生成する画像が分割しない場合とする場合で異なってしまう

このようにしてモデルを構造シンセサイザーの出力の構造的特徴に完全に依存させる。(論文では完全畳み込み生成器(FCG)と呼んでいる)
### D.モデルトレーニング
損失関数

- $ L_{adv} \ $　: non-saturating logistic loss 
- $ L_{R_1} \ $ :  $ R_1 \ $regularization
- $ L_{path} \ $ : path length regularization
- $ L_{ar} = ||\hat{c_y} − \bar{c_y}||_1 \ $
 : 座標を回帰問題として推定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635267/1f038372-eb4e-8ed9-d198-d3e7a9bcef6f.png)

## 実験結果

###データセット

- Place365 (風景画像,62,500枚)
- Flickr-Scenery dataset (54,710枚)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635267/b6c0bbb5-930b-7fb3-dabf-fbca5f29d6bd.png)
ScaleInv FIDは高画質の画像をその学習解像度をバイリニア補間でリサイズしFIDを計算したものである。
結果を見ると、ScalaInv FIDが1x,2xの時はStyleGAN2に負けているが、4x,8xと画像サイズが大きいほど提案手法が優れている。つまりInfinityGANは学習画像よりも大きな解像度の画像を生成する場合既存手法より優れていることがわかる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635267/afe7d6c7-8f56-e582-b7db-fab5e53b8371.png)
実際に生成された画像を見てもInfinityGANだけが写実的な画像が生成できていることがわかる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635267/50ddaa48-4145-c666-116a-7dc2cc876e14.png)
StyleGANの生成器と同様にStyle変換を取り入れているためStyleMixingによって情景がことなる画像を作成できる。

## 結論
InfinityGANは無制限の任意の高解像度の生成を目的として提案された手法であり、低画質ではわずかにStyleGAN2に及ばないものの高画質では圧倒的な性能をたたき出した。
ただ問題点がないわけではなく、Flickr-Landscape datasetはさまざまな視野や風景で撮影されており、時におかしい外見を生成する、写真家が写真の上に葉っぱを含めることがあり、このようなバイアスが空に浮島を合成させるように誤解させることがある。

## 感想
(実質)無限の解像度を生成するという考え方はすごく面白いと感じた。近年のGANはメモリサイズが巨大な端末でしか訓練できない問題も、提案手法であれは少ないメモリで訓練できてより実用的に近づいたと思う。顔画像などにも適応できれば実用化の幅が広がると感じた。