Computer Vision Project

4× Super-Resolution cGAN

A conditional GAN that reconstructs high-resolution agricultural leaf images from low-resolution inputs. The model combines adversarial training, perceptual loss, and pixel-wise reconstruction loss to preserve fine textures and disease patterns critical for plant health analysis.

4× Upscaling Conditional GAN VGG Perceptual Loss Agricultural Images
Resolution Enhancement
cGAN
Generator + Discriminator
VGG
Perceptual Loss
MAE
Optimization Target

Project Overview

This project addresses image super-resolution for agricultural leaf datasets. Low-resolution images are upscaled by a factor of four using a conditional GAN with a deep residual generator and a multi-scale discriminator. A hybrid objective combines adversarial loss, L1 reconstruction loss, and VGG-based perceptual loss to generate visually realistic and structurally accurate outputs.

Pipeline Architecture

Low-Res Input
Residual Generator
4× Upsampling
Multi-Scale Discriminator
High-Res Output

Real Results from the Notebook

Actual visual outputs extracted directly from the Jupyter notebook, including low-resolution inputs, generated super-resolved images, and side-by-side comparisons.

Notebook output 1 Notebook output 2

Generator Architecture

Residual blocks extract high-level features, followed by progressive upsampling layers that reconstruct high-frequency details such as leaf veins, lesions, and texture patterns.

Discriminator Architecture

A multi-scale discriminator evaluates local and global realism, encouraging outputs that are both perceptually convincing and statistically similar to real high-resolution images.

Key Code Snippets

Generator Initialization

generator = Generator(upscale_factor=4)
discriminator = MultiScaleDiscriminator()

Perceptual Loss

vgg = VGGFeatureExtractor()
perceptual_loss = F.l1_loss(
    vgg(sr_images),
    vgg(hr_images)
)

Hybrid Generator Loss

g_loss = (
    adv_loss +
    lambda_l1 * l1_loss +
    lambda_perc * perceptual_loss
)

Training Loop

for lr_imgs, hr_imgs in train_loader:
    sr_imgs = generator(lr_imgs)
    d_loss = train_discriminator(...)
    g_loss = train_generator(...)

Expected Performance Trend

Optimization Strategies

  • • Test-Time Augmentation (TTA)
  • • Progressive Training
  • • Ensemble Methods
  • • Fine-Tuning Strategy
  • • Data Augmentation

Technologies Used

Python PyTorch Torchvision PIL NumPy Matplotlib