A lighter super-resolution network that borrows from everyone
TensorFlow implementation of a 2017 paper that mixes ResNets, Network-in-Network, and later tricks like pixel shufflers and depthwise separable convolutions into one upscaling model.

What it does
DCSCN is a single-image super-resolution model in TensorFlow that upscales low-res images (2×, 3×, or 4×). It combines deep CNNs with skip connections, Network-in-Network 1×1 convolutions, and a grab-bag of later techniques—pixel shufflers, transposed CNNs, self-ensemble, and depthwise separable convolutions—to squeeze better PSNR out of a relatively compact architecture.
The interesting bit
The project is essentially a living literature review baked into one codebase. Version 2 retrofits improvements from four separate papers onto the original 2017 DCSCN skeleton, including a pixel shuffler for upsampling and depthwise separable convolutions to cut model complexity. The README even includes a friendly explainer on how depthwise separable convolutions work, which is rarer than it should be.
Key highlights
- Pre-trained models included; run
evaluate.pyorsr.pyon your own images out of the box - PSNR tables benchmarked against bicubic, DRCN, VDSR, and DRRN on Set5, Set14, and BSD100
- Compact “c-DCSCN” mode for CPU-friendly training (down to 4 layers / 32 filters)
- Training helpers: Y-channel monochrome conversion and
--build_batchto preload patches and skip repeated I/O - Model names are auto-generated from hyperparameters, so you can’t accidentally mismatch training and inference configs
Caveats
- README says “Results and model will be uploaded in some days!!"—unclear if that ever happened
- TensorFlow ≥ 2.0 required; the original paper code lives on a separate
ver1branch - Some parameter explanations in the table are cut off or vague (e.g., “We’l” at the end)
Verdict
Worth a look if you need a working, tweakable super-resolution baseline in TensorFlow and don’t mind a codebase that wears its patchwork history openly. Skip it if you want a clean, single-concept implementation or PyTorch-native tooling.