Training Upscalers on Deliberately Shuffled Synthetic Damage
BSRGAN trains blind super-resolution networks by synthesizing realistic low-quality images through a randomized, shuffled degradation pipeline, avoiding the need for scarce real-world paired data.

What it does
BSRGAN is a blind image super-resolution system that upscales real-world low-quality images without knowing exactly how they were degraded. It ships with a synthetic degradation model that applies randomized combinations of blur, noise, and downsampling—including JPEG compression and camera sensor noise—to high-quality training images. The project provides pre-trained PyTorch models and testing code, while the training code lives in the separate KAIR repository.
The interesting bit
Instead of the usual fixed blur-then-downsample-then-noise pipeline, the authors randomly shuffle the order of degradations during training, which forces the network to handle a wider range of real-world corruption. They are admirably frank that standard no-reference quality metrics like NIQE and PI do not always align with perceptual results, and that their synthetic model can occasionally generate unrealistic damage—yet this still seems to improve generalization.
Key highlights
- Two-stage training: first a PSNR-driven
BSRNet, then a GAN-tunedBSRGANfor perceptual quality. - Degradation model mixes isotropic and anisotropic Gaussian blur, multiple resampling methods, and various noise types (Gaussian, JPEG, camera sensor).
- Generates unlimited paired training data from unlabeled high-resolution images, sidestepping alignment issues in manually collected datasets.
- Pre-trained models and visual comparisons are provided for scale factors of 2 and 4.
- The authors note the work is “the beginning rather than the end of real image super-resolution.”
Caveats
- The training code is in a separate repository (
KAIR), not this one; this repo holds testing code and model links. - The degradation model involves so many randomized parameters that the authors admit it is “unsuited to model a degraded LR image” directly; it is strictly a data-generation tool.
- Pre-trained models must be downloaded from external Google Drive or Tencent Weiyun links.
Verdict Worth a look if you research real-world super-resolution or need a ready-made PyTorch model for upscaling messy photos without knowing their degradation history. Skip it if you want an all-in-one training framework in a single repo, or if you need fine-grained control over the degradation pipeline for a specific domain.
Frequently asked
- What is cszn/BSRGAN?
- BSRGAN trains blind super-resolution networks by synthesizing realistic low-quality images through a randomized, shuffled degradation pipeline, avoiding the need for scarce real-world paired data.
- Is BSRGAN open source?
- Yes — cszn/BSRGAN is open source, released under the Apache-2.0 license.
- What language is BSRGAN written in?
- cszn/BSRGAN is primarily written in Python.
- How popular is BSRGAN?
- cszn/BSRGAN has 1.4k stars on GitHub.
- Where can I find BSRGAN?
- cszn/BSRGAN is on GitHub at https://github.com/cszn/BSRGAN.