This trains two adversarial deep learning models on real images, in order to produce artificial images that look real.
The generator model tries to produce images that look real and get a high score from the discriminator.
The discriminator model tries to tell apart between real images and artificial images from the generator.
This assumes theano ordering.
You can still use this with tensorflow, by setting "image_dim_ordering":
"th" in ~/.keras/keras.json (although this will be slower).