Face Generation with Generative Adversarial Networks
Hello guys,
I want to share with you an AI project that was a great experience. I am an german engineer who is highliy interested in AI applications.
The project I want to discuss with you was part of the Deep Learning nanodegree of the life-long education platform Udacity that I finished this year.
Generative Adversarial Networks (GANs)
I will shortly describe the idea of GANs (really, in a nut-shell) before showing the impressive results.
GANs are used in the area of unsupervised machine learning.
The architekture of a GAN comprises two neural networks (NN) that conduct a zero-sum game. That means one NN creates candidates based on the generative network. The second NN, the discriminative network, does an assessment of the created candidates. The generative network tries to fool the discriminative network by sending fake samples among the real samples as inputs.
The loss-function to optimize the networks by backpropagation is for the discriminative network to correctly distinguish between fake and real samples and for the generative network, to create fake samples that will be wrongly assessed as real samples.
It describes a conflict of objective, however that is the reason why it is so powerful.
Generate fake faces
The dataset
For the project the CelebFaces Attributes Dataset was used. It contains more than 200.000 celebrity images. Here you can see some examples:
The network architecture
The generator and the discriminator network are build with convolutional layers. Convolutional layers are pretty badass for AI applications to process images as inputs.
I will not go in detail about layer sizes, dropout values or pooling layers. If you have questions here you can of course message me. My point here is to show you the impressive effectiveness of GANs and to discuss their future or to give you some food for thought in which direction the area of applications of GANs could develop.
To train the GAN the following hyperparameters were chosen:
As batch size (the size of inputs fed into the network at one time) was set to 64. With a learning rate of 0.0002 and a total amount of just 2 epochs (due to the large data basis) the network showed the following outputs:
Training output
Following image shows the network output after the first training steps. The basic shape of a human face could be recognized but it is far away from a real face.
During the next training steps the performance of the fake face generation is developping:
Here are the outputs of the last training steps...
and...
You can see the generated faces are very realistic and completely generated by AI. I think this is a very impressive thing.
The training sequence took like 2 or 3 hours on my laptop GPU. If you imagine that the technique of GANs is still in a very early stage - I ask myself, what could be achieved in the future with enhanced computation power and further research within this field?
There is one future scenario for the field of GANs that really fascinates me. I bet the majority of you likes to stream some movies or TV series on the common streaming portals. Sometimes you run out of stuff or a cliffhanger at the end of a season drives you crazy because the next season will air in over a year.
What about generating art or entertainment that is tailored for you by an AI?
Well, I do not want to irritate Hollywood but in the near future it might be reality that the entertainment content is generated for you based on your personal interest. Some deep bad-ass AI will generate a movie content based on the things you like and your mood.
Well, that sounds kind of sci-fi, I agree. But... why not? :-)
I think that GANs are the most important innovation that happened to AI in the last years and we barley scratched the surface of what they can do.
One thing I was always wondering about is, how you can use GANs to create animation. Imagine an 8-bit sprite that gets animated via GANs (this idea was born out of my inability to draw, but still being interested in making computer games :D ).
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations @fiesoduck! You have completed some achievement on Steemit and have been rewarded with new badge(s) :
You published your First Post
Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here
If you no longer want to receive notifications, reply to this comment with the word
STOP
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit