16
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

論文まとめ StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation

Last updated at Posted at 2018-07-18

はじめに

StarGANをざっくりまとめてみた。

literature
[1] Y. Choi, et. al. "StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation"
https://arxiv.org/abs/1711.09020

既に日本語でもまとめたものが存在する。
松尾研のJun Hozumi氏
https://www.slideshare.net/DeepLearningJP2016/dlstargan-unified-generative-adversarial-networks-for-multidomain-imagetoimage-translation

一言で言うと

単一のモデルで複数のドメイン変換を可能とした

特徴

  1. 単一のgeneratorとdiscriminatorで複数のドメイン変換を可能としたモデル
  2. mask vector methodを用いることで成功した
  3. 表情変換タスクで実験したところcycle-GANなどを上回る結果となった

下図左側がこれまでのGAN(cycle-GAN等)の手法。右がStar-GAN。

star-gan_img01.png [1] Figure 2より

アーキテクチャ

この図で説明する。

star-gan_img02.png [1]のFigure 3より

最左discriminatorはreal画像、もしくはgeneratorで生成したfake画像を入れ、それがreal or fakeと同時にそのドメインを判定する。

次にgenerator周り。左から2つ目generatorには画像(input image)と生成する画像のドメインを与え、そのドメインの画像(fake image)を生成する。

これ(fake image)を最右部discriminatorに入れて判定させる。

一方でこれ(fake image)を再度generatorに入れ、元のドメインを与え(右から2つ目)画像を生成させる(reconstructed image)。そうすると元の画像に戻るはずなので、このreconstructed imageとinput imageとでcycle-consistencyをとる。

目的関数

adversarial loss

adversarialな目的関数は他のGANと同様、以下のような形。

L_{adv}  = \mathbb{E}_{x} [\log D_{src}(x) ] + \mathbb{E}_{x,c} [\log (1 - D_{src}(G (x, c) )]

ここで $D_{src}$ はdiscriminatorからのreal or fake判定の出力。ドメイン・クラスの出力は $D_{cls}$ 。

deisciminator的にはこれを最大化させ、generator的には最小化させるよう学習する。

実際には学習を安定させるため、wasserstein-GAN[2]で用いられているlossにgradient penalty[3]を加えた以下のlossを用いる。

L_{adv}  = \mathbb{E}_{x} [D_{src}(x) ] - \mathbb{E}_{x,c} [D_{src}(G (x, c) ] - \lambda_{gp} \mathbb{E}_{x}[(\| \nabla_{\hat{x}} D_{src}(\hat{x}) -1 \|)^2]

Domain Classification Loss

discriminatorにrealなimageを入れた場合のクラス分類に関する目的関数は以下。


L_{cls}^r  = \mathbb{E}_{x, c'} [-\log D_{cls}(c' | x) ]

これを最小化させるよう学習させると、discriminatorは画像のドメインを適切に判定できるようになるだろう。

またfakeなimageを入れた場合のクラス分類に関する目的関数は以下。


L_{cls}^f  = \mathbb{E}_{x, c} [-\log D_{cls}(c | G(x, c)) ]

generator的にはこれを最小化させるよう学習させれば、与えられたドメインに変換できるようになるだろう。

reconstruction loss

cycle-GANで言うところのcycle-consistency。

上記adversarial lossとdomain classification lossを用いると、generatorは与えられたクラスでリアルな画像を生成するようになるが、元の画像のコンテンツを維持する保証はない。つまりトランプ大統領の怒った画像と「笑う」というconditionを与えた場合、ヒラリーちゃんの笑った顔が出てくるかもしれない。

そこで以下の目的関数を加える。

L_{rec}  = \mathbb{E}_{x, c, c'} [\| x- G( G(x, c), c') \|_1]

目的関数全体

discriminatorの目的関数は

L_{D} = -L_{adv} + \lambda_{cls}L^r_{cls}

となり、generatorの目的関数は

L_{G} = L_{adv} + \lambda_{cls}L^f_{cls} + \lambda_{rec}L_{rec}

となる。

ハイパーパラメータの $\lambda$ は$\lambda_{cls} = 1$ および $\lambda_{rec} = 10$ を用いる。

mask vector

複数のドメインを1つのモデルで変換する場合、固有の問題が浮上する。

例えば「男性の笑った顔」から「男性の怒った顔」へ変換する場合、conditionとして与えるのは「怒った」でいいが、「男性の笑った顔」から「女性の怒った顔」へ変換する場合はどうすればよいか。あるいは属性がよくわからないデータセットがある場合、どうすればよいか。

そこで以下のようなmask vectorを導入する。

\tilde{c} = [c_1, \cdots , c_n, m]

データ $c_i$ の各要素はone-hot vector。

例えば $c_i$ 番目が「男性・怒った・黒髪」なら1つ目の要素を男性、2つ目の要素を女性、3つ目の要素を怒った、4つ目の要素を黒髪、5つ目の要素を金髪として

c_i =  \left(
    \begin{array}{c}
      1 \\
      0 \\
      1 \\
      1 \\
      0 \\
      \vdots \\
      0
    \end{array}
  \right)

となり、「女性・怒った・金髪」なら

c_j =  \left(
    \begin{array}{c}
      0 \\
      1 \\
      1 \\
      0 \\
      1 \\
      \vdots \\
      0
    \end{array}
  \right)

となる。属性がよくわからない場合は

c_j =  \left(
    \begin{array}{c}
      0 \\
      0 \\
      0 \\
      0 \\
      0 \\
      \vdots \\
      0
    \end{array}
  \right)

とすればいい。

reference

[2]M. Arjovsky, S. Chintala, and L. Bottou. Wasserstein gen- erative adversarial networks. In Proceedings of the 34th In- ternational Conference on Machine Learning (ICML), pages 214–223, 2017.

[3]I. Gulrajani, F. Ahmed, M. Arjovsky, V. Dumoulin, and A. Courville. Improved training of wasserstein gans. arXiv preprint arXiv:1704.00028, 2017

sample program

こちらにサンプルプログラムを作りました。
https://github.com/masataka46/star-GAN-TF

ImageNetから取って来たシャム猫、トラ猫、アビシニアン猫の変換タスクとしました。

学習170epoch程で以下の画像が生成されました。

resultImage_180722_1070_cat_04_210.png

書きかけ

16
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?