This project focuses on building and training Generative Adversarial Networks (GANs) from scratch to synthesize images that resemble handwritten digits from the MNIST dataset.
Generative Adversarial Networks (GANs) are a powerful class of AI algorithms used in unsupervised machine learning. They consist of two neural networks, the generator and the discriminator, which are trained simultaneously through adversarial processes.
GANs have revolutionized the way machines understand and create images. They are pivotal in image generation, style transfer, and in the advancement of AI creativity.
Through this project, we delve into the intricacies of GANs, exploring the architecture, training procedures, and the challenges that arise, such as ensuring diversity in the generated images.
To run this project, ensure you have Conda installed on your machine. The environment.yml
file located at the root of the project contains all the necessary package requirements.
Here's how to set up your environment:
- Clone the repository to your local machine.
- Use Conda to create a new environment with the
environment.yml
file. - Activate the new environment.
- Launch Jupyter Notebook to access and run the project notebooks.
The project is organized into several sections:
- Introduction: Outlines the project and introduces the GANs concept.
- Data Exploration: Provides visualization and analysis of the MNIST dataset.
- GAN Training Auxiliary Functions: Includes essential functions used throughout the training of GANs.
- Baseline Solution: Describes the initial GAN model used to generate MNIST images.
- Results Analysis: Discusses the evaluation of GAN-generated images against real data.
- Advanced Models: Introduces more sophisticated GAN architectures, such as conditional GANs.
- Reflections on the GAN Journey: Shares insights and experiences gained during the project.
To get started, navigate through the Jupyter Notebooks in sequence, beginning with the Introduction. Each section builds upon the previous one, providing a comprehensive understanding of GANs.
Contributions are welcome. Feel free to fork the repository, make improvements, or suggest enhancements by opening an issue.
This project is open-sourced under the MIT License.