そして、これらネットワークの学習は、
① global generator network G1 のみ学習
② global generator network G1 の学習後に、local enhancer network G2 を両端に接続し、各々の解像度で学習。
③ ネットワーク全体を fine-tuning する。
というプロセスで行われる。
global generator network G_1 と local enhancer network G_2 の内部構成は、Johnsonらの論文によって提案されたスタイル変換用のアーキテクチャをベースとしている。
※ Johnson らの論文「Perceptual Losses for Real-Time Style Transfer and Super-Resolution」 (https://arxiv.org/abs/1603.08155)
即ち、global generator network G_1 は、以下の3つのネットワークを順に連結したものから構成される。
① ダウンサンプリングを行うための、ストライド幅2の2つの畳み込み層 G_1^(F)
② 複数の residual blocks(ResNet のブロック)G_1^(R)
③ アップサンプリングを行うための、ストライド幅 1/2 の2つの逆畳み込み層 G_1^(B)
local enhancer network G_2 も同様にして、以下の3つのネットワーク構成される。
① ダウンサンプリングを行うための、ストライド幅2の2つの畳み込み層 G_2^(F)
② 複数の residual blocks(ResNet のブロック)G_2^(R)
③ アップサンプリングを行うための、ストライド幅 1/2 の2つの逆畳み込み層 G_2^(B)
0. 論文情報・リンク
1. どんなもの?
2. 先行研究と比べてどこがすごいの?
3. 技術や手法の"キモ"はどこにある?
ベースラインは pix2pix : アーキテクチャのベースは、cGAN による汎用的な image-to-image 手法である pix2pix となっている。この pix2pix のベースラインに以下で述べるマルチスケール生成器とマルチスケール識別器や損失関数を導入することで、高解像度の画像生成を可能にする。
Coarse-to-fine generator でマルチスケールな生成器
pix2pix-HD の生成器は、上図のアーキテクチャ図のように、global generator network G_1 と local enhancer network G_2 の2つのネットワーク {G_1, G_2} から構成される。
global generator network G_1 は、1024×512 の解像度で動作し、local enhancer network G_2 は、その高さ2倍×幅2倍の解像度の画像を出力する。 更に高解像度の画像を生成したければ、3つの目の G_3 を追加すればよい。例えば、{G_1, G_2, G_3} で 4096 × 2048 の解像度の画像を生成できる。
そして、これらネットワークの学習は、 ① global generator network G1 のみ学習 ② global generator network G1 の学習後に、local enhancer network G2 を両端に接続し、各々の解像度で学習。 ③ ネットワーク全体を fine-tuning する。 というプロセスで行われる。
global generator network G_1 と local enhancer network G_2 の内部構成は、Johnsonらの論文によって提案されたスタイル変換用のアーキテクチャをベースとしている。 ※ Johnson らの論文「Perceptual Losses for Real-Time Style Transfer and Super-Resolution」 (https://arxiv.org/abs/1603.08155)
即ち、global generator network G_1 は、以下の3つのネットワークを順に連結したものから構成される。 ① ダウンサンプリングを行うための、ストライド幅2の2つの畳み込み層 G_1^(F) ② 複数の residual blocks(ResNet のブロック)G_1^(R) ③ アップサンプリングを行うための、ストライド幅 1/2 の2つの逆畳み込み層 G_1^(B)
local enhancer network G_2 も同様にして、以下の3つのネットワーク構成される。 ① ダウンサンプリングを行うための、ストライド幅2の2つの畳み込み層 G_2^(F) ② 複数の residual blocks(ResNet のブロック)G_2^(R) ③ アップサンプリングを行うための、ストライド幅 1/2 の2つの逆畳み込み層 G_2^(B)
但し、local enhancer network G_2 に関しては、上図のアーキテクチャの ⨁ で示したように、local enhancer network のダウンサンプリングを行うための畳み込み層 G_2^(F) が出力する特徴マップと、global generator network のアップサンプリングを行うための畳み込み層 G_1^(B) が出力する特徴マップとのピクセル単位での加算値を、後段の residual blocks(ResNet のブロック)G_2^(R) へ入力する。 これにより、global generator network が持つ大域的な情報を local enhancer network に統合することが出来る。
マルチスケール識別器 [Multi-scale discriminators] : 高解像度の画像を処理を1つの識別器で実現しようとすると、層の深さがよりディープになりメモリ消費が大きくなってしまう。 このマルチスケールでの識別器では、この問題を解決するために、3つの識別器の用意し、それぞれ1倍の解像度スケール、½ 倍の解像度スケール、¼ 倍の解像度スケールでの処理を行わせるようにする。 これによりトータルでのメモリ消費量が軽減され、更にそれぞれの解像度スケールで画像の大域的特徴量と局所的特徴量の両方を捉えることを可能にしている。
Instance Maps の使用:
既存の手法では、セマンティクスセグメンテーション画像しか利用していないが、このセグメンテーション画像は、上図のように、同じインスタンスに同じラベル値が割り振られているので、例えば、ある車と別の車を区別できない。これにより、オブジェクトの境界付近での生成画像がぼやけてしまう問題が存在する。 本手法では、このセグメンテーション画像に上図のような境界マップを加えることで、同じインスタンスに別のラベル値を割り振ることを可能にし、オブジェクトの境界付近での生成画像がぼやけてしまう問題を解決している。
pix2pixHD の損失関数 本手法では、既存の adversial loss に加えて、以下で定義される feature matching loss を導入している。 この feature matching loss は、本物画像 x と偽物画像 G(s) を識別器に入力した時のL1損失関数で定義され、識別器での各層の本物出力 と偽物出力 を一致させるように動作する。
最終的な損失関数は、"adversial loss" と "feature matching loss" との線形結合となる。 ※ マルチスケール識別器により、D1,D2,D3 の3つの識別器が存在した式になっている。
実験では、この損失関数に以下の式で定義される "perceptual loss" を加えたものとなっていることに注意。 ※ この"perceptual loss" を加えることにより、更に生成画像の品質を高めることが可能?
4. どうやって有効だと検証した?
5. 議論はあるか?
6. 次に読むべき論文はあるか?