Tiny Hero - Generating pixel characters with GANs
A tiny dataset for cool experiments with GANs and autoencoders.
Dataset TinyHero includes 64x64 retro-pixel character. All characters were generated with Universal LPC spritesheet by makrohn. Each character in the dataset was randomly generated including: sex, body type, skin color and equipment with LPC spritesheet with 4 different angles view.
|Image sixe||Dataset size||Source||Download|
|64x64||3648 images||LPC Spritesheet||data.zip|
|912 per class|
According to the rules of the LPC all art submissions were dual licensed under both GNU GPL 3.0 and CC-BY-SA 3.0. Further work produced in this repository is licensed under the same terms.
CC-BY-SA 3.0: http://creativecommons.org/licenses/by-sa/3.0/ See the file: cc-by-sa-3.0.txt
GNU GPL 3.0: http://www.gnu.org/licenses/gpl-3.0.html See the file: gpl-3.0.txt
Pixel Character Generator - DCGAN
Based on the DCGAN pytorch tutorial: https://pytorch.org/tutorials/beginner/dcgan_faces_tutorial.html
Experimented with latent size (input for Generator) and feature map sizes
Added soft and noisy labels
Added Wasserstein loss which is a good solution for mode collapse
- Wasserstein loss - https://developers.google.com/machine-learning/gan/loss
- mode collapse - https://machinelearningmastery.com/practical-guide-to-gan-failure-modes/
Added dropout in both generator and discriminator
Conditional DCGAN that generates a pixel character seen from selected angle.
- different learning rate for discriminator and generator
- soft labels
- added classification loss to the discriminator. Discriminator have to guess fake/real but also the character angle
- generator is conditioned with embedding from trainable look-up table that gives the info about the character view angle
Deep convolutional autoencoder. This autoencoder have the same architecture as DCGAN above. The only difference is the additional fully-connected layer at the top of the encoder, which projects output from convolutional layer to selected latent size.
- embedding size = 40 is enough for a good-quality reconstruction
- autoencoder have great denoising properties
- easier and more stable to train then GAN's