4
0

More than 5 years have passed since last update.

GANを使って上白石姉妹を生成してみた話

Last updated at Posted at 2019-05-25

今回は前回作成した上白石データセットを用いて、GANで上白石姉妹を生成しました。

とりあえずGAN自体が何をしているのかを説明していこうと思います。

GANの機構

参考にしたサイトは以下。
はじめてのGAN
stanford-cs231n-2018

GANと言われると色んなGANがある(Deep LearningのGANで打線組んでみた【画像生成】)が、今回実装するのはGoodfellowさんが最初に提案したGAN(Goodfellow et al. (2014))である。

gan.png

個人的に、GANのアイデアは、Generator(生成器)とDiscriminator(弁別器)を用意してそれぞれの精度を上げていくところにあると思う。
紙幣の偽造者と警察の関係によく例えられるらしい。
紙幣の偽造者は偽札を上手く作ろうとしてその能力が上がっていくが、それと同時に警官の方もその偽札を見抜く能力を上げていくので、二人で競わせればその能力は上がっていく。(単調増加ではなさそう)

式は以下のように表せる。
$\underset{G}{\min}\underset{D}{\max}V(D, G) = E_{x{\sim}p_{data}(x)}[\log D(x)] +E_{z{\sim}p_{data}(z)}[\log(1-D(G(z)))]$

$D(x)$はそのデータが訓練データであると判定される確率、$D(G(z))$は生成したものが訓練データであると判定される確率、$1-D(G(z))$は生成したものが訓練データではないと判定される確率である。
最終的には、GeneratorとDiscriminatorがどちらも均衡する50%の精度がでるのが理想である。

データセットの用意

前回スクレイピングで集めて、cv2で顔だけ切りとった画像達を使用した。
スクレイピングの仕方は前回記事を参照してください。

実装してみる

以下を参考に実装しました。
PyTorch-GAN
Colabで動かした結果はこちら

DiscriminatorとGeneratorは単純に多層パーセプトロン。
データのロードの仕方も前回とほとんど変更はない。(__MACOSXファイルを削除しないとエラーが出まくったので気をつけたい)

結果

学習を積むと悲しいことになった。
0.png
5.png
10.png
15.png
20.png
25.png
30.png
35.png
40.png

まじでやばい。頭がおかしくなりそう。色覚が混乱している。

次回はCNNを使ったDCGANを使ってみようと思う。

4
0
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
4
0