raoumer / srrescgan

Intelligent image scaling to 4x resolution

  • Public
  • 40.5K runs
  • GitHub
  • Paper
  • License

Input

Output

Run time and cost

This model runs on CPU hardware. Predictions typically complete within 64 seconds. The predict time for this model varies significantly based on the inputs.

Readme

Intelligent image scaling to 4x resolution. An official PyTorch implementation of the SRResCGAN model as described in the paper Deep Generative Adversarial Residual Convolutional Networks for Real-World Super-Resolution. This work is participated in the CVPRW NTIRE 2020 RWSR challenges on the Real-World Super-Resolution.

Abstract

Most current deep learning based single image super-resolution (SISR) methods focus on designing deeper / wider models to learn the non-linear mapping between low-resolution (LR) inputs and the high-resolution (HR) outputs from a large number of paired (LR/HR) training data. They usually take as assumption that the LR image is a bicubic down-sampled version of the HR image. However, such degradation process is not available in real-world settings i.e. inherent sensor noise, stochastic noise, compression artifacts, possible mismatch between image degradation process and camera device. It reduces significantly the performance of current SISR methods due to real-world image corruptions. To address these problems, we propose a deep Super-Resolution Residual Convolutional Generative Adversarial Network (SRResCGAN) to follow the real-world degradation settings by adversarial training the model with pixel-wise supervision in the HR domain from its generated LR counterpart. The proposed network exploits the residual learning by minimizing the energy-based objective function with powerful image regularization and convex optimization techniques. We demonstrate our proposed approach in quantitative and qualitative experiments that generalize robustly to real input and it is easy to deploy for other down-scaling operators and mobile/embedded devices.

Video demo

BibTeX

@InProceedings{Umer_2020_CVPR_Workshops,
    author = {Muhammad Umer, Rao and Luca Foresti, Gian and Micheloni, Christian},
    title = {Deep Generative Adversarial Residual Convolutional Networks for Real-World Super-Resolution},
    booktitle = {The IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) Workshops},
    month = {June},
    year = {2020}
    }

SRResCGAN Architecture

Overall Representative diagram

SR Generator Network

Quantitative Results

Dataset (HR/LR pairs) SR methods #Params PSNR↑ SSIM↑ LPIPS↓ Artifacts
Bicubic EDSR 43M 24.48 0.53 0.6800 Sensor noise (σ = 8)
Bicubic EDSR 43M 23.75 0.62 0.5400 JPEG compression (quality=30)
Bicubic ESRGAN 16.7M 17.39 0.19 0.9400 Sensor noise (σ = 8)
Bicubic ESRGAN 16.7M 22.43 0.58 0.5300 JPEG compression (quality=30)
CycleGAN ESRGAN-FT 16.7M 22.42 0.55 0.3645 Sensor noise (σ = 8)
CycleGAN ESRGAN-FT 16.7M 22.80 0.57 0.3729 JPEG compression (quality=30)
DSGAN ESRGAN-FS 16.7M 22.52 0.52 0.3300 Sensor noise (σ = 8)
DSGAN ESRGAN-FS 16.7M 20.39 0.50 0.4200 JPEG compression (quality=30)
DSGAN SRResCGAN (ours) 380K 25.46 0.67 0.3604 Sensor noise (σ = 8)
DSGAN SRResCGAN (ours) 380K 23.34 0.59 0.4431 JPEG compression (quality=30)
DSGAN SRResCGAN+ (ours) 380K 26.01 0.71 0.3871 Sensor noise (σ = 8)
DSGAN SRResCGAN+ (ours) 380K 23.69 0.62 0.4663 JPEG compression (quality=30)
DSGAN SRResCGAN (ours) 380K 25.05 0.67 0.3357 unknown (validset)
DSGAN SRResCGAN+ (ours) 380K 25.96 0.71 0.3401 unknown (validset)
DSGAN ESRGAN-FS 16.7M 20.72 0.52 0.4000 unknown (testset)
DSGAN SRResCGAN (ours) 380K 24.87 0.68 0.3250 unknown (testset)

The NTIRE2020 RWSR Challenge Results (Track-1)

Team PSNR↑ SSIM↑ LPIPS↓ MOS↓
Impressionism 24.67 (16) 0.683 (13) 0.232 (1) 2.195
Samsung-SLSI-MSL 25.59 (12) 0.727 (9) 0.252 (2) 2.425
BOE-IOT-AIBD 26.71 (4) 0.761 (4) 0.280 (4) 2.495
MSMers 23.20 (18) 0.651 (17) 0.272 (3) 2.530
KU-ISPL 26.23 (6) 0.747 (7) 0.327 (8) 2.695
InnoPeak-SR 26.54 (5) 0.746 (8) 0.302 (5) 2.740
ITS425 27.08 (2) 0.779 (1) 0.325 (6) 2.770
MLP-SR (ours) 24.87 (15) 0.681 (14) 0.325 (7) 2.905
Webbzhou 26.10 (9) 0.764 (3) 0.341 (9) -
SR-DL 25.67 (11) 0.718 (10) 0.364 (10) -
TeamAY 27.09 (1) 0.773 (2) 0.369 (11) -
BIGFEATURE-CAMERA 26.18 (7) 0.750 (6) 0.372 (12) -
BMIPL-UNIST-YH-1 26.73 (3) 0.752 (5) 0.379 (13) -
SVNIT1-A 21.22 (19) 0.576 (19) 0.397 (14) -
KU-ISPL2 25.27 (14) 0.680 (15) 0.460 (15) -
SuperT 25.79 (10) 0.699 (12) 0.469 (16) -
GDUT-wp 26.11 (8) 0.706 (11) 0.496 (17) -
SVNIT1-B 24.21 (17) 0.617 (18) 0.562 (18) -
SVNIT2 25.39 (13) 0.674 (16) 0.615 (19) -
AITA-Noah-A 24.65 (-) 0.699 (-) 0.222 (-) 2.245
AITA-Noah-B 25.72 (-) 0.737 (-) 0.223 (-) 2.285
Bicubic 25.48 (-) 0.680 (-) 0.612 (-) 3.050
ESRGAN Supervised 24.74 (-) 0.695 (-) 0.207 (-) 2.300

Visual Results

Validation-set (Track-1)

You can download all the SR resutls of our method on the validation-set from Google Drive: SRResCGAN, SRResCGAN+.

Test-set (Track-1)

You can download all the SR resutls of our method on the test-set from Google Drive: SRResCGAN, SRResCGAN+.

Real-World Smartphone images (Track-2)

You can download all the SR resutls of our method on the smartphone images from Google Drive: SRResCGAN, SRResCGAN+.

Run with Docker

Given that you have a folder of low-resolution images in the folder ./input, the following command saves high-resolution results to the folder ./output.

GPU

This model requires an NVIDIA GPU, compatible with CUDA 11.0.

docker run -it --rm --gpus all \
    -v $PWD/input:/code/LR \
    -v $PWD/output:/code/sr_results_x4 \
    us-docker.pkg.dev/replicate/raoumer/srrescgan:gpu

CPU

docker run -it --rm \
    -v $PWD/input:/code/LR \
    -v $PWD/output:/code/sr_results_x4 \
    us-docker.pkg.dev/replicate/raoumer/srrescgan:cpu

Code Acknowledgement

The training and testing codes are somewhat based on ESRGAN, DSGAN, and deep_demosaick.