GANを用いた画像変換の研究トレンドを読み解く

最近画像変換に関してStarGANについて調べる機会があったため、その過程で調査したGANのベースのコンセプトから画像変換にGANを応用するにあたっての研究トレンドを備忘録も兼ねてまとめたいと思います。基本的にはざっとトレンド情報を追って気になる論文を読んでみたという形です。
(必要以上に固く書きたくなく90%〜95%程度の確信度で書きますので、もし間違いなどがあれば気軽にご指摘いただけたらと思います。)
以下目次になります。

1. GANとは
2. GANの研究トレンド
2-1. Generative Adversarial Networks[2014]
2-2. DCGAN[2015]
2-3. Pix2Pix[2016]
2-4. CycleGAN[2017]
2-5. StarGAN[2017]
3. まとめ・所感
4. References


1. GANとは
GANとはGenerative Adversarial Networksの略です。概要に関してはそれぞれの単語のニュアンスを考察すれば把握できるかと思います。
・Generative
-> generativeは生成に関する意味合いです。これはGANが生成モデルであることを示唆しています。
GANは元々は画像の生成の文脈で用いられたため、生成モデルについては画像の生成ということなのですが、PRMLのP.42などでも言及されているなど元々はより広い文脈で用いられています。
とはいえ、原理的にはGANも従来の生成モデルも潜在変数(Latent Variable)から確率分布を生成するという意味合いでは同様であり、その辺意識しておくと歴史的な流れが見えるので面白いです。

・Adversarial
-> adversarialは辞書的には敵対的なという意味です。何が敵対的かというと、生成モデルのGと識別モデルのDがそれぞれGはDを騙すように、DはGの作った偽物と本物を見分けるように学習するということを敵対的と表現しています。
学習の仕組みとしては、損失関数をmini-maxの構造で表すことで敵対的な関係を表しています。mini-maxの構造に関しては囲碁や将棋などの2プレイヤーの完全情報ゲームにおけるmini-maxと同様だと考えるとより深い考察ができそうです。

・Network
-> Networkに関してはお馴染みのNeural Networkです。2012年のAlexNet以来、Neural Networkの研究が盛んになったことを受けて、GANの研究も行われています。

上記のように、ニューラルネットワークを用いてmini-maxを用いた敵対的な学習を行いアウトプット(画像、音声など)を生成するというのがGANの概要です。


2. GANの研究トレンド
2-1. Generative Adversarial Networks[2014]
GANが最初に議論されたのが2014のGenerative Advasarial Networksです。
2014年当時のGANはDQNやRCNNと同様に分類モデルとして大きな成功をおさめたNeural Netの他タスクへの適用という意味合いが強く、学習の安定性には欠けるなど粗はありましたが、その後色々と研究が進むにあたってのエポックとなっています。

参考:https://arxiv.org/abs/1406.2661


2-2. DCGAN[2015]
元論文のタイトルは"Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks"です。
DCGANはGANの学習を安定させるために様々な実験を行い、生成モデルのガイドラインをまとめた論文です。

We introduce a class of CNNs called deep convolutional generative
adversarial networks (DCGANs), that have certain architectural constraints, and
demonstrate that they are a strong candidate for unsupervised learning

上記は元論文のIntroductionからの抜粋ですが、DCGANではGANにネットワーク構造の制約を設けることで学習の安定を意図しています。

Architecture guidelines for stable Deep Convolutional GANs
・Replace any pooling layers with strided convolutions (discriminator) and fractional-strided convolutions (generator).
・Use batchnorm in both the generator and the discriminator.
・Remove fully connected hidden layers for deeper architectures.
・Use ReLU activation in generator for all layers except for the output, which uses Tanh.
・Use LeakyReLU activation in the discriminator for all layers.

学習の安定に関してはSection3にまとまっているので、上記に抜粋しました。
Convolution+PoolingをストライドのあるConvolutionで置き換えたりバッチ正規化を行なったり全結合層を取り除いたり、利用すると良い活性化関数などについてまとまっています。

参考:https://arxiv.org/abs/1511.06434


2-3. Pix2Pix[2016]
元論文のタイトルは"Image-to-Image Translation with Conditional Adversarial Networks"です。

f:id:lib-arts:20181227175336p:plain

Pix2Pix Figure14

上記の様に画像の変換を行うのが目的です。

f:id:lib-arts:20181227175131p:plain

Pix2Pix Figure2

Section3によると全体の構成は元論文の2ページ目にある上図で把握できます。3.2によるとネットワーク構造はDCGANの物を使用しているらしいです。Pix2Pixは詳しく読んでいないのでConditionalGANなどとのつながりについては後日確認したいと思います。

参考:https://arxiv.org/abs/1611.07004

 

2-4. CycleGAN[2017]
元論文のタイトルは"Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks"です。
CycleGANはPix2Pixの画像変換では画像が変換前と変換後の画像が学習にあたって必要なのに対し、2グループの画像群を与えるだけで学習できるモデルです。

f:id:lib-arts:20181227175552p:plain

CycleGAN Figure1

学習結果としては上図のようにグループXに属する画像をグループYに属する画像に変換することができます。

学習の仕組みとしては、通常のGANの学習に用いられる3.1で言及されているAdversarial Lossに加えて3.2で言及されているCycle Consistency Lossを加えることでX->Y->Xの画像とXが一致する様に学習させることができるようになり、グループ間の変換にあたって元の画像の情報が保たれるようになります。これは数学における全単射の概念に近いのではないかと思われます。
https://ja.wikipedia.org/wiki/全単射

f:id:lib-arts:20181227175632p:plain

CycleGAN Figure3

学習の仕組みを図示したのが上図で示した元論文のFigure3であり、XとYの間の変換がぐるぐると回ることからCycleGANと名付けられています。

参考:https://arxiv.org/abs/1703.10593

2-5. StarGAN[2017]
元論文のタイトルは"StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation"です。
StarGANはCycleGANの様な画像変換だと、2グループ間の学習のために一つモデルを作る必要があるため、多くのグループ間での画像変換のためには多くモデルを作らねばならないという点を解決するためのモデルです。

f:id:lib-arts:20181227175933p:plain

StarGAN Figure2

上図は元論文のFigure2ですが、Cross-domain modelsでは多数のGeneratorが必要となり学習コストが上がってしまいます。

f:id:lib-arts:20181227180012p:plain

StarGAN Figure3

これを解決するために上図の様にGeneratorの入力に画像に加えてTarget Domain(変換先)の情報を明示してやることでGenerator一つで様々な画像を生成できる様になります。

f:id:lib-arts:20181227180044p:plain

StarGAN Figure1

最終的なアウトプットとしては、上図の様に画像を様々なグループに属する画像に変換できます。

参考:https://arxiv.org/abs/1711.09020

 

3. まとめ・所感
GANを色々と読むにあたっては下記が印象に残りました。

・Generative(生成)モデルは潜在変数(Latent Variable)からデータが生成されるという意味でトラディッショナルなモデリングを考え方のベースにしている。
・Adversarial(敵対的)を表現するにあたってmini-max法が用いられている
・CycleGANにおけるCycle Consistency Lossや、StarGANにおけるReconstruction Lossは数学の全単射的なイメージで理解できる

TensorFlowを用いた実装についても一通り確認しましたが、長くなりそうなので後日まとめようと思います。
また、研究トレンドとしてはGANの研究は多くまだまだ追いきれていないのでまた時間を作って取り組んでみたいと思っています。

 

4. References
https://arxiv.org/abs/1406.2661
https://arxiv.org/abs/1511.06434
https://arxiv.org/abs/1611.07004
https://ja.wikipedia.org/wiki/全単射
https://arxiv.org/abs/1703.10593
https://arxiv.org/abs/1711.09020