Skip to content

Anuj-G-06/Anime-GAN

Repository files navigation

Anime-GAN: Anime Face Generation with Deep Convolutional GANs

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.


Overview

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.


Features

  • 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

Architecture

Generator

Takes a 100-dimensional noise vector and upsamples through transposed convolutional layers to produce 64x64x3 RGB images.

Discriminator

Classifies 64x64 images as real or fake using strided convolutions with batch normalization and LeakyReLU activations.

Training Strategy

  • Optimizer: Adam (lr=0.0002, beta1=0.5)
  • Loss: Binary Cross-Entropy
  • Batch Size: 128–256
  • Epochs: 15,000+ (Keras) / 50 (PyTorch)

Project Structure

├── 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

Data Pipeline

  1. Frame Extraction: Extract frames from video files at configurable intervals using imageio with concurrent processing
  2. Face Detection: Detect and crop anime faces using OpenCV's lbpcascade_animeface cascade classifier
  3. Preprocessing: Resize crops to 64x64, normalize pixel values to [-1, 1]

Results

  • 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

Tech Stack

  • Frameworks: Keras/TensorFlow, PyTorch
  • Computer Vision: OpenCV (cascade classifiers)
  • Data Processing: imageio, NumPy, concurrent.futures
  • Visualization: Matplotlib

How to Run

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"

Author

Anuj GuptaLinkedIn · GitHub

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors