Upscaling images with adversarial spite
A faithful TensorFlow port of SRGAN that turns thumbnails into plausible high-res photos by letting a discriminator and generator fight it out.

What it does
This repo implements the 2016 SRGAN paper for single-image super-resolution: feed it a low-resolution image, get back a 4× upscaled version. It follows the paper’s v5 settings closely, including the three-stage training pipeline (SRResNet pre-training → GAN with MSE loss → GAN with VGG perceptual loss). A pre-trained model is provided, so you can run inference without training anything.
The interesting bit
The author trained on only 8,156 RAISE photos instead of ImageNet, yet claims results “close to the paper” — a useful data point for anyone without a Google-scale cluster. The implementation is built on TF-Slim and borrows heavily from the pix2pix-tensorflow codebase.
Key highlights
- Pre-trained model available via Google Drive; inference works out of the box with
test_SRGAN.sh - Supports both MSE and VGG54 perceptual loss modes
- Requires VGG19 weights from TF-Slim models for training
- Tested on Ubuntu 14.04/16.04 with Titan X, GTX 1080, and 1080Ti
- TensorBoard logging included for all three training stages
Caveats
- Locked to Python 2.7 and TensorFlow r1.0/r1.2 — decidedly legacy stack in 2024
- Training data (RAISE HR/LR) lives on Google Drive links that may rot
- BSD100, Set14, and Set5 benchmark results are promised but not actually reported in the README
Verdict
Worth a look if you need a working SRGAN reference in old-school TensorFlow, or want to compare perceptual-loss behavior against modern PyTorch rewrites. Skip it if you’re starting fresh — newer frameworks and implementations have left this one behind.