Image-to-Image Translation with Conditional Adversarial Networks 論文翻訳


# Image-to-Image Translation with Conditional Adversarial Networks 論文翻訳

**Phillip Isola, Jun-Yan Zhu, Tinghui Zhou, Alexei A. Efros;** Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017, pp. 1125-1134

Berkeley AI Research (BAIR) Laboratory, UC Berkeley
{isola,junyanz,tinghuiz,efros}@eecs.berkeley.edu

原文:https://arxiv.org/abs/1611.07004

:::note warn
リファレンスは余裕があればちゃんとリンクを張りますが、リンクがない時は原文より参照をお願いします。
:::
## Abstract
本研究では、条件付敵対的ネットワークを、画像間の変換問題に対する汎用的な解決策として検討する。このネットワークは、入力画像から出力画像へのマッピングを学習するだけでなく、このマッピングを学習するための損失関数も学習する。これにより、従来は全く異なる損失定式化が必要だった問題に、同じ汎用的なアプローチを適用することが可能になる。このアプローチは、ラベルマップからの写真の合成、エッジマップからのオブジェクトの再構築、画像のカラー化などに有効であることを示しています。この論文に関連したpix2pixソフトウェアがリリースされて以来、多くのインターネットユーザー（その多くはアーティスト）がこのシステムを使った独自の実験を投稿しており、その適用範囲の広さと、パラメータの調整を必要としない採用のしやすさがさらに実証されている。我々はもはやマッピング関数を手作業で作ることはなく、損失関数も手作業で作ることなく妥当な結果が得られることを示す。

## 1. Intro
本研究では画像から画像への変換に対する汎化ソリューションとしてcGANを用いることを検討する。
この研究では画像から画像へのマッピングをモデルに学習させるだけでなく、そのマッピングを学習するための損失関数も同時に学習させる。（学習のための学習を行う）

この手法により、今までそれぞれに損失を定式化する必要のあった諸問題を汎化されたアプローチで解決することができるようになる。
特にこのアプローチはラベルマップからの写真合成、エッジマップからのオブジェクトの再構築、画像のカラー化などに有効であることが示されている。
![pix2pix_fig1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/3f8343cd-7f8a-48e1-67cd-abb60072b6a6.png)

ラベルマップからの写真合成、エッジマップからのオブジェクトの再構築、画像のカラー化などはピクセルからピクセルを予測するという目的は同じであるにもかかわらず、それぞれの目的に応じた手法やモデルを作成しなければならなかった。そこで、本論文はこれらの問題を解決することのできる共通のフレームワークを開発することを目的とした。

畳み込みニューラルネット（CNN）は、画像予測においては現在も共通して強力な手法となっている。このCNNは出力結果の品質を評価するための関数、つまり損失関数を最小化するように学習させる。学習させるプロセスはAdamなどのOptimizerによって自動的に学習させることになるが、逆に言うとこの損失関数がなければ何を最小化すればいいのかわからない上に、効果的な損失を設計するためにはいまだ多くの手作業が必要である。素朴なアプローチとして出力とGround truth(目的となる値)をユークリッド距離を最小化するように学習させる場合は、ぼやけた出力となりがちである。これは、ユークリッド距離の最小化は尤もらしい出力すべてを平均化する必要があるためである。

もし、「出力を現実と区別できないようにする」というようなハイレベルな目標だけを指定し、その目標を満たすのに適切な損失関数を自動的に学習することができればそれが一番である。
そして最近では幸いなことにGenerative Adversarial Networks (GAN)では，まさにこれが実現されている。
GANは出力画像が本物か偽物かを分類しようとする損失を学習すると同時に、この損失を最小化するように生成モデルを学習する。ぼやけた画像は、明らかに偽物に見えるため、許容されない。GANはデータに適応した損失を学習するため、従来は全く異なる種類の損失関数を必要としていた多くのタスクに適用することができる。

本論文では条件付きGAN(cGAN)を調査する。
GANがデータの生成モデルを学習するのと同様に、条件付きGAN（cGAN）は条件付き生成モデルを学習する。
このような条件の性質から、cGANは入力画像を条件として、対応する出力画像を生成するような画像間における変換タスクに適している。

GANそのものはここ2年間で勢いのある研究であり、本稿の多くの技術は今までに提案されたものである。しかしながら、今までの論文では特定のアプリケーションに焦点を絞って研究されており、画像条件付きGANが画像間の変換を目的とした汎用的なソリューションとしてどれほど効果的なのかは不明のままであった。

本論文の貢献は2つである。第一に、様々な問題において条件付きＧＡＮから妥当な結果が得られることを示すことである。第二に、良い結果を得ることのできるシンプルなフレームワークを提示し、いくつかの重要なアーキテクチャ選択の効果を分析することである。
ソースコードは https://github.com/phillipi/pix2pix で入手可能である。

### Introを要約すると...
今までは画像間の変換タスクをそれぞれのタスクごとにモデルを設計して、最適な損失関数を設定して学習させる必要があったけど、それだと汎用的ではない。CNNなどで生成モデルを作成しても簡単なやり方だと画像がぼやけやような出力となってしまい、それもよろしくない。

そこで最近GANというものが勢力を伸ばしているが、これを使ってより汎用的なモデルが作れるのではないか、と考えて本研究を行った。
本研究では条件付きGAN(cGAN)を使うが、この条件に入力画像を用いることにした。
cGANを汎用的なソリューションとして使えるのかどうかをメジャーなモデルなどを用いて評価することで、この論文における手法が汎用的であることを示し。また、今までは個別に設定していた損失関数だが、本論文の手法によりその損失関数すら学習させることにより画像処理の専門的な知識なしに使用者の望む出力を簡単に手に入れることができることを示した。

#### 更にめちゃくちゃ端的に言うと
今までの手法と比べると煩わしいことなしにスタイル変換などができるようになったよ！ということである。

## 2. Related work
画像から画像への変換とは、多くの場合にはピクセル単位での分類または回帰問題として定式化される。
これらの定式化では、各出力ピクセルが入力画像を与えられた他のすべてのピクセルから条件付きで独立していると考えられるという意味で、出力空間を「非構造化」として扱う。cGANは、代わりに構造化損失を学習する。構造化損失は、出力のJoint Configurationにペナルティを与える。条件付き確率場、SSIM手法、特徴マッチング、ノンパラメトリック損失、the convolutional pseudo-prior、マッチング共分散統計に基づく損失などのこの種の損失に基づく手法は多くの文献で検討がなされている。cGANは、損失が学習されるという点で異なり、理論的には、出力とターゲットの間で異なるあらゆる可能な構造にペナルティを課すことができる。

### cGAN
cGANは我々が提案した手法ではない。先行研究や並行研究ではGANを離散的なラベル、テキスト、そして実際には画像を条件としている。画像を条件としたモデルでは、法線マップからの画像予測、未来のフレーム予測、商品写真の生成、疎なアノテーションからの画像生成などに取り組んでいる。また、他のいくつかの論文では、画像間マッピングにGANを使用しているものの、GANを無条件に適用するだけで、出力が入力を条件とすることを強制するために他の項（L2回帰など）に依存している。これらの論文では、インペインティング、未来状態予測、ユーザー制約に導かれた画像操作、スタイル変換、超解像などで素晴らしい結果を得ている。それぞれの手法は、特定のアプリケーションのために調整されていた。我々のフレームワークは、アプリケーションに特化していないという点で異なっている。これにより、我々の設定は他の多くの方法よりもかなりシンプルになっています。


また、本手法は，生成器と識別器のアーキテクチャの選択においても先行研究とは異なる。過去の研究とは異なり、生成器には "U-Net "ベースのアーキテクチャを使用し、識別器には画像パッチのスケールでの構造にのみペナルティを与える畳み込み式の "PatchGAN "分類器を使用している。同様のPatchGANアーキテクチャは，局所的なスタイルの統計を取るために，以前[[38]]に提案されていました。ここでは，このアプローチがより広い範囲の問題に対して有効であることを示し，パッチサイズを変更した場合の効果について調査している。
[38]:https://arxiv.org/abs/1604.04382

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/94c4579f-91d7-4d86-707f-54ff75e522ef.png)
>Fig.2 エッジ→写真をマッピングする条件付きGANの学習。識別器Dは、（生成器によって合成された）偽のタプルと本物の{edge, photo}タプルを分類するように学習する。生成器（G）は識別器を欺くことを学習する。無条件GANとは異なり、生成器と識別器の両方が入力エッジマップを観察します。


## 3. Method
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/5ad1d60b-f9fa-4bf7-6fdf-041cc1a58047.png)
> インペインティング参考画像 引用 D. Pathak, P. Krahenbuhl, J. Donahue, T. Darrell, and A. A.
Efros. Context encoders: Feature learning by inpainting. In
CVPR

GANは、ランダムなノイズベクトル$z$から出力画像$y$へのマッピング、$G : z \to y$を学習する生成モデルである[[24]]。これに対して，条件付きGANは，条件となる観測画像xとランダムなノイズベクトル$z$から$y$への写像を学習し，$G : \\{x, z\\} \to y$とする． 生成器Gは，敵対的に学習された識別器Dによって「本物」の画像と区別できない出力を生成するように学習される．この識別器Dは，生成器の「偽物」をできるだけうまく検出するように学習される。この学習手順を図2に示す。
[24]:https://arxiv.org/abs/1406.2661



### 3.1. Objective
cGANの目的関数は次のように表される。



```math
\begin{align*}

\mathcal{L}_{cGAN} (G, D) = & \mathbb{E}_{x,y}[\log D(x, y)]  +　\\
                          & \mathbb{E}_{x,z}[\log(1 − D(x, G(x, z))] \tag{1}

\end{align*}
```
ここで、$G$は、この目的関数を最大化しようとする敵対的な$D$に対して、この目的関数を最小化しようとする。すなわち、$ G^∗ = \arg \min_G \max_D \mathcal{L}_{cGAN} (G, D) $
と表現できる。

識別器にとって条件を付けることの重要性を示すために、識別器の入力に条件画像$x$を使用しない場合との比較も行う。
その場合の目的関数は以下のようになる。
※式(1)のDiscriminatorへの入力から$x$を取り除いた式となる

```math
\begin{align*}

\mathcal{L}_{cGAN} (G, D) = & \mathbb{E}_{y}[\log D(y)]  +　\\
                          & \mathbb{E}_{x,z}[\log(1 − D(G(x, z))] \tag{2}

\end{align*}
```
これまでのアプローチでは，GANの目的関数をL2ノルムなどのより伝統的な損失と混合することによりより良い結果が得られることが分かっている。[[43]]
[43]:https://arxiv.org/pdf/1604.07379.pdf
識別器の処理は変わらないが、生成器は識別器を誤魔化すだけでなく、グランドトゥルースとのL2ノルムが最小となるような出力が求められる。また、L1はブレが少ないため、L2ではなくL1距離を使用するという選択肢も検討する。

```math

\mathcal{L}_{L1} (G) =  \mathbb{E}_{x,y,z}[|| y - G(x,z) ||_1] \tag{3}

```

以上を踏まえて、今回使用する最終的な目的関数は以下のようになる。

```math

G^∗ = \arg \min_G \max_D \mathcal{L}_{cGAN} (G, D) + \lambda \mathcal{L}_{L1} (G) \tag{4}


```

潜在ベクトル$z$がなければ、ネットワークは$x$から$y$へのマッピングを学習することはできるが、決定論的な出力を生成してしまうため、デルタ関数以外のいかなる分布にもマッチしないことになる。先行研究では条件付きGANはこの問題に対し、$x$に加えてガウシアンノイズ$z$を$G$の入力とした（例えば、[[55]]）。初期の研究では、この手法はあまり効果的ではなく、$G$は単にノイズを無視することを学習しただけで、Mathieuら[[40]]の主張と一致した。その代わりに，最終的なモデルでは，学習時とテスト時の両方で、$G$の複数の層にドロップアウトという形でのみノイズを与えることにした。ドロップアウトノイズであるにもかかわらず、我々のネットの出力にはわずかな確率しか見られない。非常に確率的な出力を生成する条件付きGANを設計し、それによってモデル化する条件付き分布の完全なエントロピーを捉えることは、本研究に残された重要な問題である。

[55]:https://arxiv.org/abs/1603.05631
[40]:https://arxiv.org/abs/1511.05440

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/720439a6-b8f9-8926-bc99-04c502e43511.png)
> Fig. 3：ジェネレータのアーキテクチャに関する2つの手法。U-Net [[50]]は，エンコーダとデコーダのスタックの中で，ミラーリングされたレイヤー間のスキップ接続を持つエンコーダ・デコーダです。


[50]:https://arxiv.org/abs/1505.04597

### 3.2. Network architectures
我々は、生成器と識別器のアーキテクチャを[[44]]のものから採用した。生成器、識別器ともに、convolution-BatchNorm-ReLu [29]形式のモジュールを使用しています。アーキテクチャの詳細はオンラインのappendixに記載されているが、主な特徴を以下に示す。
[44]:https://arxiv.org/abs/1511.06434
[29]:https://arxiv.org/abs/1502.03167
#### 3.2.1. Generator with skips
画像から画像への変換問題の特徴は、高解像度の入力グリッドと高解像度の出力グリッドを対応させることである。さらに、我々が考えている問題では、入力と出力は表面上の見た目は異なるが、どちらも同じ基本構造のレンダリングである。そのため、入力の構造と出力の構造はほぼ一致している。これらの点を考慮して、ジェネレータのアーキテクチャを設計しました。

この分野の問題に対するこれまでの多くの解決策[[43], [55], [30], [64], [59]]は，エンコーダ-デコーダネットワーク[26]を使用している。このようなネットワークでは、入力はダウンサンプルを行う一連の層を通過し、ボトルネックとなる層に到達した時点で処理を反転させる。このようなネットワークでは、すべての情報の流れがボトルネックを含むすべての層を通過する必要がある。多くの画像変換問題では、入力と出力の間に多くの低レベルの情報が共有されており、これらの情報を直接ネット上でやり取りすることが望ましいと考えられる。例えば、画像の色付けの場合、入力と出力は目立つエッジの位置を共有していることになる。
[43]:https://arxiv.org/abs/1604.07379
[30]:https://arxiv.org/abs/1603.08155
[64]:https://arxiv.org/abs/1608.07724
[59]:https://arxiv.org/abs/1603.07442
[26]:https://www.science.org/doi/abs/10.1126/science.1127647


このような情報のボトルネックを回避する手段として、"U-Net" [[50]]の一般的な形状に従ってskip connectionsを生成器に追加する。具体的には、各層 $i$ と層 $n - i$ の間にskip connectionsを追加する（ここで $n$ は層の総数）。それぞれのskip connectionは層$i$のすべてのチャネルと層$n - i$のチャネルを単純に連結する。


#### 3.2.2. Markovian discriminator (PatchGAN)
L2損失（およびL1（Fig.4参照））が画像生成問題でぼやけた結果をもたらすことはよく知られている[[34]]。これらの損失は高域の特徴を捉えることはできないが、多くの場合は低周波成分は正確に捉えることができる。このような問題では、低周波成分の特徴を学習するのに新しいフレームワークを必要としない。L1ではその要件をすでに満たしているので特に変更する必要はない。

そのため、GANの識別器を高周波構造のみをモデル化するように制限し、低周波数の正しさを学習するためにL1を使用することにしました(式4)。高周波成分をモデル化するためには、局所的な画像パッチの構造に注目するだけで十分である。そこで、パッチのスケールでの構造にのみペナルティを与える識別器アーキテクチャ（PatchGANと呼ぶ）を設計する。この識別器は，画像中の$N×N$個のパッチが本物か偽物かを分類しようとするものである。この識別器を画像に畳み込んで実行し、すべての応答を平均化して最終的な出力$D$を得る。

4.4節では、$N$が画像のフルサイズよりもはるかに小さくても、高品質な結果が得られることを示している。これは、小さいPatchGANではパラメータが少なく、高速に動作し、任意の大きさの画像に適用できるという点で優れている。

このような識別器は，画像をMarkov ramdom fieldとして効果的にモデル化し、パッチ径以上に離れたピクセル間の独立性を仮定している。この関係は、以前に[[38]]で検討されており、テクスチャ[[17], [21]]やスタイル[[16], [25], [22], [37]]のモデルでも共通の仮定となっている。よって、我々のPatchGANは、テクスチャ/スタイル損失として理解することができます。

[17]:https://ieeexplore.ieee.org/document/790383
[21]:https://arxiv.org/abs/1505.07376
[16]:https://people.eecs.berkeley.edu/~efros/research/quilting/quilting.pdf
[25]:https://mrl.cs.nyu.edu/publications/image-analogies/analogies-72dpi.pdf
[22]:https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Gatys_Image_Style_Transfer_CVPR_2016_paper.pdf
[37]:https://arxiv.org/abs/1601.04589
[34]:https://arxiv.org/abs/1512.09300
[32]:https://arxiv.org/abs/1412.6980


### 3.3. Optimization and inference

ネットワークを最適化するために、我々は[[24]]の標準的なアプローチに従っている：$D$に対する1つの勾配降下ステップと$G$に対する1つのステップを交互に行う。[[24]]. ミニバッチSGDを用い、Adam Optimizer[32]を適用し、学習率は$2.0 \times 10^4$、momentumパラメータは$\beta_1=0.5$、$\beta_2=0.999$とした。

推論時には，学習時とまったく同じ方法で生成ネットを実行する。通常のプロトコルと異なる点は、テスト時にドロップアウトを適用することと、訓練バッチの集計値を集約するのではなくテストバッチの集計値を用いてバッチ正規化[29]を適用することである。このバッチ正規化のアプローチは、バッチサイズを1に設定した場合は「インスタンス正規化」と呼ばれ、画像生成タスクにおいて有効であることが実証されている[54]。我々の実験では、実験内容に応じて1から10の間のバッチサイズを使用している。
[54]:https://arxiv.org/abs/1607.08022

## 4. Experiments
条件付きGANの汎用性を調査するため、写真生成などのグラフィックスタスクやセマンティックセグメンテーションなどのビジョンタスクなど、さまざまなタスクやデータセットを設定し、テストを行った。
- セマンティックラベル→写真、Cityscapesデータセット[12]で学習。
- 建築物のラベル→写真、CMP Facades [45]で学習。
- 地図↔航空写真, Google Mapsからのデータで学習. 
- 白黒→カラー写真，[51]を用いて学習．
- エッジ→写真、[65]と[60]のデータで学習、HEDエッジ検出器[58]と後処理でバイナリエッジを生成。
- スケッチ→写真： [19]で得られた人物のスケッチを用いてエッジ→写真モデルをテスト。
- 昼間→夜間：[33]のデータを用いて学習。- 熱→色の写真：[27]のデータを用いて学習。
- パリのストリートビューで学習した、ピクセルが欠けている写真→インペイント写真（[14]より 

これらのデータセットを使ったトレーニングの詳細はオンラインの補足資料に記載されている。いずれの場合も、入力と出力は単純に1〜3チャンネルの画像である。定量的な結果は図8，9，11，10，13，14，15，16，17，18，19，20に示されている。また、失敗例を図21に示します。より包括的な結果はhttps://phillipi.github.io/pix2pix/ にて閲覧可能となっている。

#### Data requirements and speed 
場合によっては少量のデータセットでも十分な結果が得られることがある。facade(建物の正面画像)のトレーニングセットはわずか400枚の画像で構成されており（図14の結果を参照）、昼夜のトレーニングセットはわずか91台のウェブカメラで構成されている（図15の結果を参照）。このような少量のデータセットではトレーニングを非常に高速に行うことができる。例えば、図14に示した結果では、Pascal Titan X GPUを1台使用した場合、トレーニングに2時間もかからなかった。テスト時には，このGPUを使ってすべてのモデルを1秒以内で実行することができた。


### 4.1. Evaluation metrics
我々の結果の視覚的品質をより総合的に評価するために2つの方法を採用した。まず、Amazon Mechanical Turk（AMT）を使って「本物と偽物」の判別評価を行った。色付けや写真生成などの画像処理問題では、人間の観察者にとって妥当であることが最終的な目標となることが多い。そこで、地図の生成、航空写真の生成、画像の色付けなどをこの方法でテストを行う。
次に、合成された街並みが市販の認識システムで物体を認識できるほどリアルであるかどうかを測定する。この評価指標は[52]の "inception score"、[55]の物体検出評価、[62]や[42]の "semantic interpretability "などと同様である。

#### AMT perceptual studies
AMTの実験では[62]のプロトコルに従った。Turkerには「本物」の画像と我々のアルゴリズムが生成した「偽物」の画像とを比較する一連の試行を提示した。各試行では、それぞれの画像が1秒間表示され、その後に画像が消えてどちらが偽物かを回答する時間が無制限に与えられた。各セッションの最初の10枚の画像で練習を行い、Turkerにフィードバックを与えた。本実験の40回の試行ではフィードバックは行われなかった。各セッションでは一度に1つのアルゴリズムのみをテストし、Turkerは複数のセッションを完了することはできなかった。なお、[62]とは異なり警戒実験(vigilance trials)は行っていない。色付け実験では実画像と偽画像を同じグレースケールの入力から生成した。地図↔航空写真では、タスクをより難しくし、フロアレベルの結果を避けるために本物と偽物の画像を同じ入力から生成をしなかった。また、地図↔航空写真については256×256 の解像度の画像で学習を行い、上述の完全畳み込み翻訳を用いて 512×512 の解像度の画像をダウンサンプリングして Turker に提示してテストを行った。また、カラー化については、256×256の解像度の画像でトレーニングとテストを行い、その結果を同じ解像度でTurkerに提示した。

※Turker=AMTのことです。
#### FCN-score
生成モデルの定量的な評価は困難であることが知られているが、最近の研究[52, 55, 62, 42]では事前に学習したセマンティッククラス分類器を用いて生成された出力の識別性を疑似的に測定することが試みられている。直感的には、生成された画像がよりリアルであれば、現実の画像で訓練された分類器は合成された画像も正しく分類することができるだろう。そのために、我々はセマンティック・セグメンテーションで人気のあるモデル”FCN-8s” [39]のモデルを採用し、それを cityscapes datasetで訓練する。そして、合成された写真を、その写真が合成されたラベルに対する分類精度で評価する。


### 4.2. Analysis of the objective function
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/15fa36f8-e17b-17d1-849b-22e463c499b7.png)
>Fig.4: 損失の違いによる結果の質の違い。各列は、異なる損失の下で訓練された結果を示しています。その他の例については，https://phillipi.github.io/pix2pix/ をご覧ください

式（4）の目的関数のどの成分が重要なのかを調査するために、我々はL1項、GAN項の効果を分離するためのablation studiesを行い、入力を条件とした識別器の使用（cGAN、式1）と無条件の識別器の使用（GAN、式2）を比較した。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/1e6c14e0-bfb5-bee4-855f-616f323536b6.png)
表1: Cityscapesのラベル↔写真で評価した、異なる損失に対するFCNスコア。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/7e0abc44-6167-f34f-f7bc-55daad660b3d.png)
表3：Cityscapesのラベル→写真で評価した、識別器の異なる受容野サイズに対するFCNスコア。なお、入力画像は256×256ピクセルであり、大きな受容野には0がパディングされている。

図4は2つのラベル→写真の変換に対してこれらのバリエーションの定量的な効果を示している。L1のみでは妥当な結果は得られるが、ぼやけた結果となる。cGAN単独（式4のλ=0とする）では、よりシャープな結果が得られるが、アプリケーションによっては視覚的なアーチファクトが発生する。両方の項を一緒に加えると（λ=100とする）、これらのアーチファクトが減少する。

これは、合成された画像がより多くの認識可能な構造的特徴を含んでいることを示している。また、識別器から条件付けを取り除いた場合の効果も検証している（GANと表示）。この場合、損失は入力と出力の間のミスマッチにはペナルティを課さず、出力がリアルに見えることだけに注意する。結果を見てみると、入力写真に関わらず、ほぼ同じ出力を出すような生成器となり、画像が崩れているのがわかる。この場合、損失が入力と出力の一致の質を測定することが重要であるということは明らかであり、実際にcGANはGANよりもはるかに優れた性能を示している。しかし、L1項を追加することは、出力が入力を重視することを促すことにもなる。というのも、L1損失は、入力と正しく一致するグランドトゥルース出力と、一致しない可能性のある合成出力との間の距離をペナルティ化するからである。これに対応して、L1+GANは入力ラベルマップを重視したリアルなレンダリングを行うのにも効果的である。すべての要素を組み合わせたL1+cGANも同様の性能を発揮する。

#### Colorfulness
条件付きGANの顕著な効果は、入力ラベルマップに空間構造が存在しない場合でも空間構造を幻視して、シャープな画像を生成することである。cGANはスペクトル次元での「シャープ化」、つまり画像をよりカラフルにすることに同様の効果があると考えられる。L1は、エッジを正確にどこに配置すべきかが不確かな場合に、ぼかしを奨励するのと同様に、ピクセルが取るべきいくつかの尤もらしい色の値のどれかが不確かな場合に、平均的な灰色がかった色を奨励します。特にL1は、可能な色に関する条件付確率密度関数の中央値を選択することで最小化される。一方、敵対的損失は原理的に灰色の出力が非現実的であることを認識し、真の色分布とのマッチングを促すことができます[24]。図7では、Cityscapesデータセットにおいて、我々のcGANが実際にこの効果を達成しているかどうかを調べている。このグラフはLab色空間における出力色値の限界分布を示している。ここで、グランドトゥルースの分布を点線で示している。L1はグラウンドトゥルースよりも狭い分布になることが明らかであり、L1が平均的なグレー系の色を促進するという仮説を裏付けている。一方、cGANを使うと、出力分布がグランドトゥルースに近づきます。

### 4.3. Analysis of the generator architecture
U-Netのアーキテクチャでは、低レベルの情報をネットワーク上で継承することができる。これは、より良い結果につながるのかを検証した。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/4be092de-0999-2bd8-4dbf-a986826a19f7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/a671c59f-a6f8-af1d-10da-541e1ff16d91.png)
表2: Cityscapesのラベル↔写真で評価した、異なる生成器アーキテクチャ（および目的）のFCNスコア。(U-net (L1- cGAN) のスコアが他の表で報告されているものと異なるのは，この実験ではバッチサイズが10であり，他の表では1であったことと，学習実行の間にランダムな変動があったためである)


図5と表2は、U-Netと街並みの画像を生成するエンコーダ・デコーダを比較したものです。エンコーダ-デコーダは、UNetのスキップ接続を切断するだけで作成されます。このエンコーダ・デコーダは、我々の実験では現実的な画像を生成するように学習することができなかった。U-Netの優位性は、条件付きGANに限ったことではないようで、U-Netとエンコーダ・デコーダの両方をL1損失で学習させた場合、U-Netが再び優れた結果を得ることができた。



### 4.4. From PixelGANs to PatchGANs to ImageGANs
識別器の受容野のパッチサイズNを，1×1の "PixelGAN "から286×286の "ImageGAN "まで変化させた場合の効果を検証します。図6は，この分析の定性的な結果を示し，表3はFCNスコアを用いてその効果を定量化したものです．なお，本稿の他の部分では，特に断りのない限り，すべての実験で70×70のPatchGANを使用しており，本節ではすべての実験でL1+cGAN損失を使用している。
16×16のPatchGANを使うと、シャープな出力が得られ、良好なFCNスコアを得ることができますが、タイリングアーチファクトが発生します。70×70のPatchGANでは、これらのアーチファクトが緩和され、わずかに良いスコアが得られました。これを超えて286×286のImageGANにスケールアップしても、結果の視覚的品質は改善されないようで、実際にFCNスコアはかなり低くなってしまいます（表3）。これは、ImageGANが70×70のPatchGANに比べてパラメータ数が多く、深度も深いため、学習が難しいことが原因と考えられます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/fb1874f5-4471-da7b-c983-6b634a70110e.png)

図6：パッチサイズの変化。出力の不確かさは、損失関数の違いによって異なる形で現れます。L1では、不鮮明な領域がぼやけ、彩度が落ちます。1x1 PixelGANは、色の多様性を高めますが、空間的な特徴には影響しません。16×16 PatchGANでは、局所的にはシャープな結果が得られますが、観測できるスケールを超えるとタイリングアーチファクトが発生します。70×70のPatchGANは、空間的にもスペクトル（色味）的にも、間違ってはいてもシャープな出力が得られる。286×286のImageGANでは、70×70のPatchGANと見た目は似ていますが、FCNスコアの指標ではやや低い品質の結果が得られます（表3）。その他の例については、https://phillipi.github.io/pix2pix/ をご覧ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/f801af8a-b3a9-84a8-2ffc-b1b03e1f5235.png)
図7：CityscapesでテストされたcGANの色分布マッチング特性。(c.f. オリジナルGAN論文[24]の図1)。ヒストグラムの交差スコアは、高確率領域の差に支配されていることに注意してほしい。これは、対数確率を示すプロットでは感知できず、したがって低確率領域の差が強調されている。


PixelGANは、空間的なシャープネスには影響を与えないが、出力のカラフルさを増加させる（図7で定量化）。例えば，図6のバスは，ネットをL1損失で学習させた場合には灰色に塗られているが、PixelGAN損失では赤くなります。カラー・ヒストグラム・マッチングは、画像処理において一般的な問題であり[49]、PixelGANは、有望な軽量のソリューションであると考えられる。

16×16のPatchGANを使うと、シャープな出力が得られ、良好なFCNスコアを得ることができますが、タイリングアーチファクトが発生します。70×70のPatchGANではこれらのアーチファクトが緩和され、わずかに良いスコアが得られた。これを超えて286×286のImageGANにスケールアップしても、結果の視覚的品質は改善されないようで、実際にFCNスコアはかなり低くなってしまう（表3）。これは、ImageGANが70×70のPatchGANに比べてパラメータ数が多く、深度も深いため学習が難しいことが原因と考えらる。
#### Fully-convolutional translation 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/87c5e923-7907-4371-f187-6989104b5ae6.png)
>図8: 解像度512×512のGoogle Mapsでの結果例（モデルは解像度256×256の画像で学習させ、テスト時には大きな画像で畳み込み実行した）。鮮明にするためにコントラストを調整している。

PatchGANの利点は、固定サイズのパッチ識別器を、任意の大きさの画像に適用できることです。また、学習した画像よりも大きな画像に対して、生成器を畳み込んで適用することもできる。これを地図↔航空写真のタスクで試してみる。256×256枚の画像で生成器を学習した後、512×512枚の画像でテストを行う。図8の結果はこのアプローチの有効性を示している。




### 4.5. Perceptual validation

本研究では、地図↔航空写真，グレースケール↔カラーの各タスクにおいて、本研究で得られた結果の感覚的なリアリティを検証した。地図↔航空写真のAMT実験の結果を表 4に示す。我々の手法によって生成された航空写真は18.9%の試行で参加者に本物と誤認させることができ、ぼやけた結果を生成し、ほとんどの参加者へ誤認させることができなかったL1ベースラインを大幅に上回った。一方、写真→地図では、我々の手法は6.1%の試行でしか参加者を騙すことができず、これはL1ベースラインの性能と有意に異なるものではなかった（ブートストラップテストに基づく）。これは，様々なものが混在している航空写真よりも、明確な形状を持つ地図の方が些細な構造上のエラーが目立ちやすいためと考えられる。ImageNet [51]で色付けの学習を行い、[62, 35]で紹介されたテスト用データセットでテストを行った。その結果、L1+cGAN損失を用いた我々の手法は22.5%の試行で被験者へ誤認させることができた（表5）。また、[62]の結果とL2損失を用いた彼らの手法もテストした（詳細は[62]参照）。条件付きGANは、[62]のL2バリアントと同じようなスコアを出したが（ブートストラップテストでは差は僅少）、[62]の完全な手法には及ばず、我々の実験では27.8%の試行で参加者をだました。なお、[62]の手法は色付けがうまくいくように特別に設計されている。



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/21af8b8e-dd3e-a1cf-a664-c612998d55ee.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/074caeeb-aeec-f7b7-b54e-e2ecd7c1fc66.png)

### 4.6. Semantic segmentation
条件付きGANは、画像処理やグラフィックの仕事でよく見られるように出力が非常に繊細であったり、写真のような出力を要する問題に効果的であるように見える。しかし、セマンティックセグメンテーションのように出力が入力よりも複雑ではない場合ではどうなるのかを検証した。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/3247c98b-b978-1445-22a1-40caa6b6b1c0.png)
>図10：セマンティックセグメンテーションに条件付きGANを適用した例。cGANは、一見すると地上絵のようなシャープな画像を生成するが 一見するとグランドトゥルースのようなシャープな画像が得られますが、実際には小さな幻のような物体が多く含まれています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/2788dd81-1425-b6df-13ec-2d8bac996afe.png)


これを検証するために，都市景観の写真→ラベルを用いて（L1損失あり/なしの）cGANを学習させる。図10に定量的な結果を示し、表6に定量的な分類精度を示す。興味深いことに，L1損失なしで学習したcGANは、この問題をそれなりの精度で解決することができる。我々の知る限りでは、GANが連続的な値の変化を持つ「画像」ではなく、離散的に近い「ラベル」を生成することに成功した初めての例である。表6に示すように、単純にL1回帰を使用すると、cGANを使用するよりも良いスコアが得られます。我々は、視覚化問題においてはグラフィックスタスクに比べて最終的目的（GroundTruthに近い出力を予測すること）が曖昧ではない可能性があり、L1のような再構成損失でほぼ十分であると主張する。

### 4.7. Community-driven Research

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/d9df3daa-04ec-d690-cd43-5abe43b41e61.png)
>図11：pix2pixのコードベースに基づいてオンラインコミュニティで開発されたアプリケーションの例。Christopher Hesseによる#edges2cats[3]，Kaihu ChenによるBackground removal[6]，Jack QiaoによるPalette generation[5]，Mario KlingemannによるSketch→Portrait[7]，Bertrand GondouinによるSketch→Pokemon[1]，Brannon Dorseyによる "Do As I Do "pose transfer[2]，Bosmanらによる#fotogenerator[4]などが挙げられる

論文とpix2pixのコードベースが公開されて以降、コンピュータビジョンやグラフィックスの専門家やビジュアルアーティストを含むTwitterコミュニティは、元の論文の範囲をはるかに超えて様々な新規の画像間変換タスクに我々のフレームワークを適用することに成功しています。図11と図12は、#pix2pixハッシュタグからのいくつかの例を示しています。背景除去、パレット生成、スケッチ→ポートレート、スケッチ→ポケモン、"Do as I Do "ポーズ転送、Learning to see: また、「#edges2cats」や「#fotogenerator」などの奇抜なものもあります。これらのアプリケーションは、創造的なプロジェクトであり、制御された科学的な条件で得られたものではなく、我々がリリースしたpix2pixコードに多少の変更を加えたものであることに留意してください。しかし、これらのアプリケーションは、画像から画像への変換問題のための汎用ツールとして、私たちのアプローチの有望性を示してる。

## 5. Conclusion
本論文の結果は、条件付敵対ネットワークが、多くの画像間変換タスク、特に高度に構造化されたグラフィカルな出力を含むタスクに対して有望なアプローチであることを示唆している。これらのネットワークは、タスクやデータに適応した損失を学習するため、様々な設定に適用可能である。


### Acknoledgements:
省略。
以下の映像は
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/319778/b5a9df2a-8103-e6d7-85c9-e6df87af1a31.png)
クリックしても見れないので以下のリンクをクリックください。
↓
https://vimeo.com/260612034