Pytorch Implementation of "Deep Iterative Down-Up CNN for Image Denoising" [PDF]
Our method took second and third place at each track in [NTIRE 2019 Challenge on Real Image Denoising]
If you use our work in your research or publication, please cite our paper:
@inproceedings{yu2019deep,
title={Deep iterative down-up CNN for image denoising},
author={Yu, Songhyun and Park, Bumjun and Jeong, Jechang},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops},
year={2019}
Other method of our team "Densely Connected Hierarchical Network for Image Denoising" [PDF], [code]
python 3.6
pytorch 1.0.0
MATLAB (to prepare data)
You need to prepare data before training or testing the model.
Please use matlab files in './data' folder.
For training, we used DIV2K dataset, and only sample images are included in this project.
Please download the whole dataset for training the model. [DIV2K download page]
Download Pre-trained models: [download]
and place them in the './checkpoint/pretrained_color' and './checkpoint/pretrained_gray' folders.
for grayscale images, gray_eval.py
for color images, color_eval.py
optional arguments:
--cuda : using cuda
--model : model path
--output_path : output image path
--self_ensemble : using self-ensemble
--gpus : gpu ids
You can also change test dataset in the code!
Example:
python gray_eval.py --cuda --self_ensemble
If you are interested in the ntire challenge results, you can download the pre-trained models [here]
optional arguments:
--batchSize : batchsize (default: 16)
--nEpochs : number of epochs (default: 50)
--lr : initial learning rate (default: 0.0001)
--cuda : using cuda
--resume : path to checkpoint (default: none)
--start_epoch : manual starting epoch number (useful for resume, default: 1)
--threads : number of threads for data loader (default: 0)
--gpus : gpu ids
You can also change training data path and validation data path in the code!
Example:
python gray_train.py --cuda --threads 8
For weight ensemble, train the model multiple times manually using --resume option,
and averaging weights using 'weight_ensemble_2.py'.
If you have any questions about the code or paper, please contact [email protected]