A 2015 super-resolution paper, ported to TensorFlow the hard way
When you need to upscale images and want to avoid installing OpenCV on Linux.

What it does Implements SRCNN — the 2015 paper that kicked off deep learning for image super-resolution — in pure TensorFlow. Feed it a low-res image; it spits out a sharper, upscaled version after training a three-layer convolutional network. The repo includes training and testing scripts, plus a butterfly demo that shows bicubic interpolation next to the network’s output.
The interesting bit The author deliberately avoided OpenCV (“installing OpenCV at Linux is sort of complicated”) and used scipy for image I/O instead. It’s a small choice that says a lot about the friction of 2016-era deep learning tooling. The training structure borrows from carpedm20’s DCGAN-tensorflow repo, which was practically a rite of passage at the time.
Key highlights
- Reproduces the classic SRCNN paper (Dong et al., 2015) with reported results matching the reference after 15,000 epochs
- Single-file workflow:
python main.pyto train, add--is_train Falseto test - Hardware baseline disclosed: Intel i7-6700, GTX 970, 16 GB RAM — 12 hours 16 minutes for full training
- Dependencies are minimal: TensorFlow, scipy >0.18, h5py, matplotlib
- Side-by-side result images included: original, bicubic, and SRCNN outputs
Caveats
- Code targets older TensorFlow and scipy APIs; the
scipy.misc.imreadrequirement specifically pins to pre-1.0 scipy, which is long deprecated - No model checkpointing, validation metrics, or modern conveniences like TensorBoard logging mentioned
- 614 stars but effectively unmaintained; expect bitrot if you try to run this on current Python/TF versions
Verdict Worth a look if you’re studying the history of super-resolution or need a minimal, readable reference implementation of a foundational paper. Skip it if you want production-ready upscaling — ESRGAN, Real-ESRGAN, or even basic torchvision transforms will serve you better in 2024.