A project in Statistical Image Processing. Extension of Deep unfolding network for image super-resolution for Blind Super Resolution via Kernel Estimation
This code borrows heavily from [1] & [2], see the papers and code in the Acknowledgment section.
Clone the Repo:
git clone https://github.com/geopi1/Improved_USRNet.git
Download the Datasets (a bicubically downscaled version of DIV2K):
Download DIV2K
This link will download 2 folders:
- DIV2K_LR - the low resolution input
- DIV2K_HR_ds2 - Ground truth high resolution images
Tested and run on:
- UBUNTU 18.04
- RTX 2080
- Nvidia driver 440.95.10
- cuda 10.1.243
- cudnn 7.6.5
- pytorch 1.5
- TF 1.14
- Setup conda
This will create a working environment named Blind_USRNet
conda env create -f env.yml
- Setup can also be performed with pip (virtual env) via the requirements.txt file
python -m venv Blind_USRNet pip install -r requirements.txt
- put images in right place
python main.py
This will output 4 types of images to ./results:
- Default USRNet settings
- Default USRNet settings + Noise STD estimation
- Kernel estimated USRNet
- Kernel estimated USRNet + Noise STD estimation
Additionally, for each estimated image a side-by-side image with the LR version is saved with the degredation kernel (default or estimated)
To calculate the numeric results on the whole dataset run:
python utils/get_results.py
This will calculate the mean PSNR and SSIM on the SR<->HR on all the results
Metric | Default | Default + Noise Est. | Kernel Est. | Kernel Est. + Noise Est. |
---|---|---|---|---|
PSNR | $1600 | |||
SSIM | $12 |
This project is licensed under the MIT License - see the LICENSE.md file for details
[1] Zhang, Kai, Luc Van Gool, and Radu Timofte. "Deep unfolding network for image super-resolution." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020.
[2] Bell-Kligler, Sefi, Assaf Shocher, and Michal Irani. "Blind super-resolution kernel estimation using an internal-gan." Advances in Neural Information Processing Systems. 2019.