This project is a part of the Deep Learning Nanodegree at Udacity.
-- Project Status: Completed
Define and train generative adversarial networks on a dataset of faces to get a generator network to generate new images of faces that look as realistic as possible!
- Data Preprocessing
- Deep Convolutional Generative Adverserial Network
- Python3
- Anaconda or Miniconda
- Pickle
- Matplotlib
- Numpy
- OS
- Mock
- Jupyter Notebook
The purpose of this project is to generate new images of faces that look as realistic as possible. I defined a DCGAN and used CelebFaces Attributes Dataset (CelebA) to train it.
After preprocessing and loading the data, I built the model and trained it for 50 epochs. Here is a sample of generated faces.
The generator is capable of creating images that could be recognized easily as human faces with the following weakness.
- The generated images are noisy.
- Most of the generated images are white celebrity faces which is a cause of the biased dataset.
- The generated images contains adults only, no children images are generated due to the biased dataset that doesn't contain children images.
I think that training on more faces images of different ages, colors and expressions will result in more variety of faces that could be generated. The human faces are complex. So, I believe that using a deeper network with an increasing number of epochs enable the model to learn more features hence generates more realistic face images.
- Clone this repo (for help see this tutorial).
- Install the above technologies
- Create a new conda environment >> conda create --name deep-learning python=3
- Enter the environment: (Mac/Linux) >> source activate deep-learning, (Windows) >> activate deep-learning
- Run the following to open up the notebook server >> jupyter notebook