Generate novel anime character faces using Deep Convolutional Generative Adversarial Networks (DCGAN) and Pix2Pix architectures. Includes a full data pipeline for extracting and processing training frames from video sources.
This project trains GANs to generate anime-style character faces from noise vectors. It includes two implementation approaches — a Keras-based DCGAN for rapid prototyping and a PyTorch DCGAN with enhanced training controls — plus a Pix2Pix architecture for conditional image-to-image translation.
The custom data pipeline extracts frames from video sources, detects and crops anime faces using a cascade classifier, and prepares them as training data.
- DCGAN (Keras): Generator with transposed convolutions + Discriminator with strided convolutions, trained adversarially on 64x64 anime faces
- DCGAN (PyTorch): Production-ready implementation with custom weight initialization, dropout regularization, and training visualization
- Pix2Pix Architecture: Conditional GAN for paired image-to-image translation
- Video Frame Extraction: Automated pipeline using imageio with configurable capture rate and concurrent processing
- Anime Face Detection: OpenCV cascade classifier (
lbpcascade_animeface.xml) for cropping faces from raw frames
Takes a 100-dimensional noise vector and upsamples through transposed convolutional layers to produce 64x64x3 RGB images.
Classifies 64x64 images as real or fake using strided convolutions with batch normalization and LeakyReLU activations.
- Optimizer: Adam (lr=0.0002, beta1=0.5)
- Loss: Binary Cross-Entropy
- Batch Size: 128–256
- Epochs: 15,000+ (Keras) / 50 (PyTorch)
├── gan-anime-faces.ipynb # Keras DCGAN — main training notebook
├── process data.ipynb # Data preprocessing and exploration
├── visual.ipynb # Visualization of results
├── lbpcascade_animeface.xml # OpenCV cascade for anime face detection
├── notebooks/
│ ├── model training.ipynb # PyTorch DCGAN implementation
│ ├── video frame extractor.ipynb # Frame extraction + face cropping pipeline
│ └── tests.ipynb # Testing notebook
├── pix2pix_architecture/ # Pix2Pix conditional GAN
├── data/
│ └── processed/ # Processed training images
└── models/ # Saved model weights
- Frame Extraction: Extract frames from video files at configurable intervals using
imageiowith concurrent processing - Face Detection: Detect and crop anime faces using OpenCV's
lbpcascade_animefacecascade classifier - Preprocessing: Resize crops to 64x64, normalize pixel values to [-1, 1]
- Generated faces present diverse hair styles, colors, and face orientations
- Mode collapse successfully avoided with stable discriminator accuracy (~85%) throughout training
- Some artifacts remain in complex facial features — a common challenge with DCGAN at 64x64 resolution
- Frameworks: Keras/TensorFlow, PyTorch
- Computer Vision: OpenCV (cascade classifiers)
- Data Processing: imageio, NumPy, concurrent.futures
- Visualization: Matplotlib
git clone https://github.com/Anuj-G-06/Anime-GAN.git
cd Anime-GAN
# Keras version
pip install keras tensorflow numpy matplotlib opencv-python
jupyter notebook "gan-anime-faces.ipynb"
# PyTorch version
pip install torch torchvision matplotlib
jupyter notebook "notebooks/model training.ipynb"