Face Generator

Face Generator uses Deep Convolutional Generative Adversarial Networks (DCGAN).

Face Generator is an Artificial Intelligence which generates face images
and all images in this page are not REAL.

Image Generation


Face Generator uses a vector z that consists of 100 real numbers ranging between 0 to 1.

1. Each pixel in the below pallete represents a value in z.
2. If you hover your mouse over an image, z for that image will be displayed.
3. If you click an image, z will be copied to the palette.

(Might take 1 to 10 seconds depending on your browser)


Sorry, your browser doesn't support the element.

Please upgrade to IE 9 or use the latest Chrome or Firefox

Face Generator is preparing to draw...

Algorithm


DCGAN, which is the core of Face Generator, consists of two different neural networks which are:

1. Generator (G) that generates an image
2. Discriminator (D) that discriminate real images from generated images

Two neural networks compete as one tries to deceive the other. This kind of learning is called Adversarial Learning. Because of this, Generator and Discriminator are described as a thief and police, respectively.



Generator and Discriminator consist of Deconvolutional Network (DNN) and Convolutional Neural Network (CNN). CNN is a neural network which encodes the hundreds of pixels of an image into a vector of small dimensions (z) which is a summary of the image. DNN is a network that learns filters to recover the original image from z.

When a real image is given, Discriminator should output 1 or 0 for whether the image was generated from Generator. In the contrast, Generator generates an image from z, which follows a Gaussian Distribution, and tries to figure out the distribution of human images from z. In this way, a Generator tries to cheat Discriminator into making a wrong decision.

Results

More than 100K images are crawled from online communities and those images are cropped by using openface which is a face recognition framework. Face Generator is implemented with TensorFlow and a GTX 980 Ti is used to train for two days.

Below is a series of images generated by Generator with a fixed z between the first and the fith epoch of training.



The vector z has real values from -1 to 1 and it follows the Gaussian Distribution. We can see the most common face that is interpreted by Face Generator using 0 as all values of z.



The below images are generated by changing the values of z continuously, starting from the average value (0) to -1 or 1.



The below images are generated by changing ten different values of z from -1 to 1. People in the images vary in characteristics such as smiling, wearing glasses, turning into black and white images, and changing into different sex.



The code of Face Generator can be found here.

Classification Challenge

Lastly, let's conduct a Turing Test :)
Can you guess which are the real images?

(Answer will be showed if you click an image)

Face Generator

Mayuresh Kumbhar