Skip to main content

Pokémon Generation with GAN

Lilian Weng の記事では、GAN の簡単な実験例として、DCGAN を Pokémon sprite の小さな dataset に適用した例が紹介されています。

Dataset

この実験では、約 900 枚の Pokémon sprite 画像が使われています。同じ Pokémon species の進化段階なども含まれており、dataset としては非常に小さいものです。

実験の位置づけ

実装には、carpedm20/DCGAN-tensorflow が使われています。小さな dataset に対して DCGAN を training し、training epoch が進むにつれて、生成される Pokémon 風の画像がどのように変化するかを確認しています。

GAN による Pokémon 生成

画像出典: Lilian Weng, “From GAN to WGAN”。Training epoch が 7、21、49 と進むにつれて、生成画像の形や色が少しずつ改善しています。

結果の見方

Training の epoch が増えるにつれて、生成される Pokémon 風の画像は、形や色の面では少しずつ良くなります。しかし、dataset が小さいため、細部まで一貫した画像を生成することは難しく、出力は大まかな形を持つにとどまります。

この例は、GAN の性質を直感的に理解するために役立ちます。Generator は、training が進むにつれて real sample の見た目に近い pattern を学びますが、十分な data と安定した training がなければ、細部の品質や多様性は制限されます。

WGAN への拡張

元記事では、DCGAN の TensorFlow 実装に加えて、WGAN や WGAN with Gradient Penalty へ拡張した実装として、lilianweng/unified-gan-tensorflow も紹介されています。

この例は、理論的な loss の話と、実際の画像生成の挙動をつなぐ case study として読むとよいでしょう。

関連ページ