Generative Adverserial Networks are actually two networks in one, competing against eachother. The Discriminator a Convolutional Neural Network, whose job is to diffentiate between real and fake images. The Generator is Deconvolutional Neural Network, that will generate the actual images to feed to the discriminator in training (real images are also fed to discriminator at training time). It's crucial that these networks are mirror images of eachother.
I would also like to apologize to the 7 random people who cloned this repo in such bad shape.
Since the network is mapping a vector of random numbers to an image we can easily interpolate between faces by interpolating between latent vector spaces.
A look at how these images are being generated by looking inside the generator. You can see the feature maps start off as just abstract features that slowly make their way to forming a face. By the last layer of the Generator you can start to see a face in some of the feature maps.
This dataset can be downloaded here.
Run the Board.py script to open an interactive board to directly play around with the lantent vector space and customize you own face!
Results after 2 epoch:
And here's a look inside the Generator! Each picture contains each channel at a layer. The images start at 4x4 pixels and double in size until they are 64x64.
More to come soon! I'm currently working on progressively growing GAN's as described in this paper from NVIDIA: https://arxiv.org/abs/1710.10196
Also check out my school project which takes a very Natural Language Processing approach to bug detection: Deep Learning to Decet Logical Bugs in Software: https://github.com/MNaplesDevelopment/deep-learning-software-defects