shimopino / papers-challenge

Paper Reading List I have already read
30 stars 2 forks source link

High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs #30

Open shimopino opened 4 years ago

shimopino commented 4 years ago

論文へのリンク

[arXiv:1711.11585] High-Resolution Image Synthesis and Semantic Manipulation with Conditional GANs

著者・所属機関

Ting-Chun Wang, Ming-Yu Liu, Jun-Yan Zhu, Andrew Tao, Jan Kautz, Bryan Catanzaro

投稿日時(YYYY-MM-DD)

2017-11-30

1. どんなもの?

画像変換タスクでラベル情報付きのセマンティックマップから高解像度の画像を生成することに成功した。更にラベルのタイプの操作や物体の外観を操作が可能であることを示した。

image

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

従来のCascaded refinement Networkは、高解像度な画像を生成する際に画像全体を描画することはできていても物体の細部まで正確に描画することができていなかった。

本論文では、多階層構造のGeneratorとDiscriminator、そして新しい損失関数を採用し、高解像度の画像生成と細部の描画が可能になるpix2pixHDを提案した。

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

ベースラインとしてはpix2pixを採用し、ネットワーク構造と損失関数を改善した。

Coarse-to-fine generator

Generatorを2つのネットワークに分けて、それぞれが画像全体を描画するネットワークと、出力された画像を入力にとりより高解像度で細部を描画するネットワークで構成されています。

学習する際はG1(Global Generator Network)のみを学習させた後に、G1の重みを固定して、G2を結合させた上でG2の出力とG1の出力を入力にしてG2を学習させていきます。

2つのネットワークを学習させた後は、両方のネットワークを使用してfine-tuningしていきます。

image

Multi-scale discriminators

Discriminatorで高解像度な画像を正しく識別できるようにするためには受容野を広く取る必要があります。このためには巨大なカーネルサイズの畳み込み層を導入するか、ネットワークの層を深くしていく必要があります。しかしこれらの方法では、多くのメモリが必要になってしまいます。

そこでDiscriminatorを3つ用意して、画像を(1)もとのスケール、(2)半分のスケール、(3)4分の1のスケールに変換してそれぞれのネットワークの入力として使用します。

それぞれのネットワークの構造を同一にしておくと、最終出力層で計算される受容野は結果的に2倍、4倍と入力画像のより広い範囲を見ることになります。こうすることで、それぞれのネットワークで画像全体を見て偽物かどうか判断したり、画像の細部を見て偽物かどうかを判断することが可能になります。

またそれぞれのDiscriminatorで同一の損失関数に対して同時に学習を進めていきます。

image

Improved adversarial loss

また学習を安定化させるために、Discriminatorの各層で得られる特徴量が生成画像と本物画像で大きく変化しないように、特徴量がマッチしているかどうかを判定する損失関数を提案している。

image

この2つの損失関数を合わせて最終的な損失関数を最適化していく。

image

Using Instance Maps

従来の手法ではSemantic Mapを使用していましたが、隣り合った同じクラスの物体の画像を生成するためには、同一クラスの物体も識別できるInstance-level Semantic Mapを使用する必要があります。

しかしこの情報をそのまま使用するとメモリを多く使用するため、Semantic Mapと各物体の境界線を描画するBoundary Mapを組み合わせて使用します。

Boundary Mapは周囲4ピクセルのインスタンスが異なる場合は1、同一の場合には0を設定しています。

image

Learning an Instance-level Feature Embedding

Semantic Mapから画像を生成するタスクは、対応する画像が無数に存在している1対多の問題になります。この問題に対する従来の手法では、生成される画像を物体レベルで操作することができませんでした。

そこでまず元画像から低次元の特徴量ベクトルを抽出できるようにネットワークを学習させます。その後にインスタンスごとに平均値を計算し、その結果を対応するpixelに入力します。

あとはGeneratorの入力にSemantic Mapと合わせて画像から得られた特徴量Mapを入力し、画像を生成していきます。

image

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

生成された画像に対して、PSPNetを使用してSegmentation Mapを予測し、正解ラベルと比較を行いました。

精度は非常に高く元のデータセットと同程度の精度を達成しています。

image

Perceptual Lossを計算する際にVGGの学習済みモデルを使用した場合との比較を行っており、どちらも場合においても従来のCRNによる生成結果よりもより本物のような画像を生成することができています。

image

5. 議論はあるか?

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

論文情報・リンク

shimopino commented 4 years ago

https://github.com/NVIDIA/pix2pixHD

shimopino commented 4 years ago

Project Page

shimopino commented 4 years ago

paperswithcodeの実装比較をしてみるのもいいかも

https://paperswithcode.com/paper/high-resolution-image-synthesis-and-semantic