Home

Awesome

KOALAnet

This is the official repository of "KOALAnet: Blind Super-Resolution using Kernel-Oriented Adaptive Local Adjustment", CVPR 2021, by Soo Ye Kim*, Hyeonjun Sim* and Munchurl Kim. (* equal contribution)

We provide the training and test code along with the trained weights and the test dataset.
If you find this repository useful, please consider citing our paper [arXiv].

Please watch our 5 min presentation on YouTube.

framework

Reference

Soo Ye Kim*, Hyeonjun Sim*, and Munchurl Kim, "KOALAnet: Blind Super-Resolution using Kernel-Oriented Adaptive Local Adjustment", CVPR, 2021. (* equal contribution)

BibTeX

@inproceedings{kim2021koalanet,
  title={KOALAnet: Blind Super-Resolution using Kernel-Oriented Adaptive Local Adjustment},
  author={Kim, Soo Ye and Sim, Hyeonjun and Kim, Munchurl},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  pages={10611--10620},
  year={2021}
}

Requirements

Our code is implemented using TensorFlow and was tested under the following setting:

Test Code

  1. Download the files below and place them in <source_path>:
    • Source code (main.py, koalanet.py, ops.py and utils.py)
    • Test dataset is here.
    • Trained weights are here.
  2. Set arguments defined in main.py and run main
    • Set --phase 'test' and provide the input and label paths to --test_data_path and --test_label_path and checkpoint path to --test_ckpt_path.
    • Example:
    python main.py --phase 'test' --test_data_path './testset/Set5/LR/X4/imgs' --test_label_path './testset/Set5/HR' --test_ckpt_path './pretrained_ckpt'
    
  3. Result images will be saved in <source_path>/results/imgs_test.

Notes

Training Code

  1. Download the files below and place them in <source_path>:
    • Source code (main.py, koalanet.py, ops.py and utils.py)
    • A training dataset (e.g. DIV2K).
  2. 3-stage training:
    • Pretrain the downsampling network with python main.py --phase 'train' --training_stage 1
    • Pretrain the upsampling network with python main.py --phase 'train' --training_stage 2
    • Joint training of both networks with python main.py --phase 'train' --training_stage 3
    • Set --training_data_path and --training_label_path to the directory containing training and validation data. For example,
    python main.py --phase 'train' --training_stage 3 --training_data_path './dataset/DIV2K/train/DIV2K_train_HR' --validation_data_path './dataset/DIV2K/val/DIV2K_valid_HR'
    
  3. Checkpoints will be saved in <source_path>/ckpt.
  4. Monitoring training:
    • Intermediate results will be available in <source_path>/results/imgs_train.
    • A text log file and TensorBoard logs will be saved in <source_path>/logs.

Notes

Test Dataset

In blind SR, not a lot of benchmark datasets are available yet. We release the random anisotropic Gaussian testset we used in our paper, consisting of six datasets (Set5, Set14, BSD100, Urban100, Manga109 and DIV2K) and two scale factors (2 and 4). We hope that the community will use them for future research in SR.

Disclaimer: The degradation_kernels folder contains images of degradation kernels used for generating the corresponding LR image, scaled and upsampled for better visualization. They should only be used as visual reference.

Contact

Please contact us via any of the following emails: sooyekim@kaist.ac.kr, flhy5836@kaist.ac.kr or leave a note in the issues tab.