Very deep super-resolution that learns which channels matter
Trains very deep CNNs for image upscaling by letting the network adaptively rescale which channel features matter most.

What it does
RCAN is a PyTorch implementation of an ECCV 2018 paper for single-image super-resolution. It upscales low-resolution images by factors of 2×, 3×, 4×, or 8× using a convolutional network built on top of the EDSR codebase. The core idea is to go deeper than prior work while avoiding the training headaches that usually come with extreme depth.
The interesting bit
The authors use a “residual in residual” structure—essentially skip connections wrapped inside skip connections—to let low-frequency information bypass the network entirely, so the model only has to learn the hard high-frequency stuff. On top of that, a channel attention mechanism acts like a per-channel volume knob, adaptively rescaling features based on interdependencies between channels rather than treating all frequencies equally.
Key highlights
- Supports upscaling factors of 2×, 3×, 4×, and 8× under bicubic degradation, plus 3× under blur-downscale degradation
- Provides pre-trained models and visual results reproducing the paper’s PSNR/SSIM scores
- Offers a self-ensemble variant (RCAN+) for marginal gains
- Built directly on the EDSR PyTorch codebase; the RCAN model has since been merged upstream into EDSR
Caveats
- The code targets a very old stack: PyTorch 0.4.0, CUDA 8.0, and Ubuntu 14.04/16.04, so expect friction on modern environments
- Training and evaluation rely on external MATLAB scripts for data preparation and metric calculation
- The README is essentially a quickstart guide; architectural novelty is buried under command-line examples
Verdict
Worth a look if you are studying the evolution of super-resolution architectures or reproducing ECCV 2018 baselines. Skip it if you need a modern, maintained library—this is frozen research code.
Frequently asked
- What is yulunzhang/RCAN?
- Trains very deep CNNs for image upscaling by letting the network adaptively rescale which channel features matter most.
- Is RCAN open source?
- Yes — yulunzhang/RCAN is an open-source project tracked on heatdrop.
- What language is RCAN written in?
- yulunzhang/RCAN is primarily written in Python.
- How popular is RCAN?
- yulunzhang/RCAN has 1.5k stars on GitHub.
- Where can I find RCAN?
- yulunzhang/RCAN is on GitHub at https://github.com/yulunzhang/RCAN.