The goal of this project is to upscale and improve the quality of low resolution images.
This project contains Keras implementations of different Residual Dense Networks for Single Image Super-Resolution (ISR) as well as scripts to train these networks using content and adversarial loss components.
The implemented networks include:
- The super-scaling Residual Dense Network described in Residual Dense Network for Image Super-Resolution (Zhang et al. 2018)
- The super-scaling Residual in Residual Dense Network described in ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks (Wang et al. 2018)
- A multi-output version of the Keras VGG19 network for deep features extraction used in the perceptual loss
- A custom discriminator network based on the one described in Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network (SRGANS, Ledig et al. 2017)
Read the full documentation at: https://idealo.github.io/image-super-resolution/.
Docker scripts and Google Colab notebooks are available to carry training and prediction. Also, we provide scripts to facilitate training on the cloud with AWS and nvidia-docker with only a few commands.
ISR is compatible with Python 3.6 and is distributed under the Apache 2.0 license. We welcome any kind of contribution. If you wish to contribute, please see the Contribute section.
- Pre-trained networks
- Installation
- Usage
- Additional Information
- Contribute
- Citation
- Maintainers
- License
The weights used to produced these images are available directly when creating the model object.
Currently 4 models are available:
- RDN: psnr-large, psnr-small, noise-cancel
- RRDN: gans
Example usage:
model = RRDN(weights='gans')
The network parameters will be automatically chosen. (see Additional Information).
RDN model, PSNR driven, choose the option weights='psnr-large'
or weights='psnr-small'
when creating a RDN model.
Low resolution image (left), ISR output (center), bicubic scaling (right). Click to zoom. |
RRDN model, trained with Adversarial and VGG features losses, choose the option weights='gans'
when creating a RRDN model.
RRDN GANS model (left), bicubic upscaling (right). |
-> more detailed comparison |
source: ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks