Navigation Menu

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SinGAN: Learning a Generative Model from a Single Natural Image #40

Open
Yagami360 opened this issue Oct 29, 2019 · 0 comments
Open

SinGAN: Learning a Generative Model from a Single Natural Image #40

Yagami360 opened this issue Oct 29, 2019 · 0 comments

Comments

@Yagami360
Copy link
Owner

Yagami360 commented Oct 29, 2019

0. 論文情報・リンク

1. どんなもの?

  • image-to-image のタスクにおいて、PatchGAN 構造を持つ生成器と識別器をピラミッド型階層構造にしたマルチスケール構造で、1枚の学習用画像から多様な情報を取り出すことにより、"1枚の学習用画像のみ"から複数の高解像度で多様性のある画像を生成することを実現した GAN ベースの image-to-image 手法。

2. 先行研究と比べてどこがすごいの?

  • 従来の GAN 手法では、多量の学習用データで学習を行ったモデルを用いて、(高品質で多様な)画像生成を行っていた。
    本手法では、1枚の学習用画像から、PatchGAN 構造を持つ生成器と識別器をピラミッド型階層構造にしたマルチスケール構造で多様な情報を引き出すことにより、"1枚の学習用画像のみ"から複数の高解像度で多様性のある画像を生成することを実現している。
  • 又、様々な image-to-image タスク(超解像度化、画像編集など)に適用可能なアーキテクチャとなっている。

3. 技術や手法の"キモ"はどこにある?

  • マルチスケール構造

    本手法では、1枚の学習用画像のみから多様な情報を引き出すために、上図のように、様々な解像度スケールでマルチスケール構造を採用している。より詳細には、pix2pix で採用されている PatchGAN を生成器と識別器の双方に採用し、更にそれらをピラミッド型の階層構造 {G_0,G_1,…,G_N },{D_0,D_1,…,D_N } にしている。

    ※ pix2pix で採用されている PatchGAN は、識別器のみに適用され、また階層構造は持たなかった。
    ※ Patch GAN では、生成器 or 識別器に入力された画像をより小さな(=局所的な)複数の小領域(=パッチ)に分解した上で、これら各バッチに対して生成器 or 識別器が処理を行い、最後に全ての応答を平均化して最終的な出力とする。これにより、生成器 or 識別器がある程度大域的な情報を残しつつ、局所的な特徴量でのみ判定に専念できるので、学習パラメーター数を大幅に減らすことができ、結果として、学習を効率的に進めることができる。

    学習は、各解像度スケール n=N,N−1,..., 1 で対応している生成器 G_n と識別器 D_n による adversarial loss と reconstruction loss で行うが、この際に、PGGAN のように、解像度が低いもの(N)から順に徐々に解像度スケールを大きくしながら行われる。(上図の下から上の方向)

    まず、最も荒い解像度での生成器 G_N への入力は、入力ノイズのみとなる。
    ※ 入力ノイズはベクトル値ではなくて、最も荒い解像度での HxWx3 のノイズ画像

    次に、N 以降の解像度スケールでの生成器 G_n (n<N) には、上図の赤枠部分のように、前の解像度スケールでの生成画像をアップサンプリングした画像 に各解像度スケールでの入力ノイズ z_n を加算した値が入力される。

    そして、生成器からの出力は、以下の式のように、5層の畳み込みからの出力 と、skip connection された画像 を加えたものとなる。
    ※ この5層の畳み込みの役割は?

    ここで、各解像度スケールでの生成器と識別器の PatchGAN におけるパッチサイズは、解像度スケールが大きくなるに連れて、元の入力画像の大きい領域から小さい領域(=画像全体の大域的情報から局所的情報)に効果を与えるものとなっていることに注目。(上図アーキテクチャの黄色部分)

  • 損失関数
    本手法での学習は、先に述べたように、PGGAN のように、解像度が低いものから順に徐々に解像度スケールを大きくしながら行われるが、この際の各解像度スケールでの損失関数は、以下の式のように、対応している生成器 G_n と識別器 D_n での adversarial loss と reconstruction loss との線形結合で定義される。

    • adversarial loss
      adversarial loss の具体的な形としては、学習の安定性に優れた WGAN-gp での損失関数を使用する。

    • reconstruction loss

      この reconstruction loss は、本手法による image manipulation のタスクにおいて、元の画像を生成するような、潜在変数としての特定の入力ノイズの存在を保証するための損失関数になっている?

4. どうやって有効だと検証した?

  • 単一の学習用画像から、物体の形状を保存した高品質な画像を、様々な縦横幅やアスペクト比などで複数枚生成出来ていることを定性的に検証している。

  • 様々な image-to-image タスク(超解像度化、画像編集など)に適用可能なアーキテクチャとなっていることを検証している。

    • 超解像度

    • Paint-to-Image

    • Harmonization

    • Editing

    • Single Image Animation

5. 議論はあるか?

  • xxx

6. 次に読むべき論文はあるか?

  • xxx

7. 参考文献

  • xxx
@Yagami360 Yagami360 changed the title <In progress> SinGAN: Learning a Generative Model from a Single Natural Image SinGAN: Learning a Generative Model from a Single Natural Image Oct 30, 2019
@Yagami360 Yagami360 moved this from Done to In progress in machine-learning_papers_survey Oct 30, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

No branches or pull requests

1 participant