Self-Supervised Image Denoising via Iterative Data Refinement
Yi Zhang1, Dasong Li1, Ka Lung Law2, Xiaogang Wang1, Hongwei Qin2, Hongsheng Li1
1CUHK-SenseTime Joint Lab, 2SenseTime Research
Abstract
The lack of large-scale noisy-clean image pairs restricts the supervised denoising methods' deployment in actual applications. While existing unsupervised methods are able to learn image denoising without ground-truth clean images, they either show poor performance or work under impractical settings (e.g., paired noisy images). In this paper, we present a practical unsupervised image denoising method to achieve state-of-the-art denoising performance. Our method only requires single noisy images and a noise model, which is easily accessible in practical raw image denoising. It performs two steps iteratively: (1) Constructing noisier-noisy dataset with random noise from the noise model; (2) training a model on the noisier-noisy dataset and using the trained model to refine noisy images as the targets used in the next round. We further approximate our full iterative method with a fast algorithm for more efficient training while keeping its original high performance. Experiments on real-world noise, synthetic noise, and correlated noise show that our proposed unsupervised denoising approach has superior performances to existing unsupervised methods and competitive performance with supervised methods. In addition, we argue that existing denoising datasets are of low quality and contain only a small number of scenes. To evaluate raw images denoising performance in real-world applications, we build a high-quality raw image dataset SenseNoise-500 that contains 500 real-life scenes. The dataset can serve as a strong benchmark for better evaluating raw image denoising.
Testing
The code has been tested with the following environment:
pytorch == 1.5.0
bm3d == 3.0.7
scipy == 1.4.1
- Prepare the datasets. (kodak | BSDS300 | BSD68)
- Download the pretrained models and put them into the checkpoint folder.
- Modify the data root path and noise type (gaussian | gaussian_gray | line | binomial | impulse | pattern).
python -u test.py --root your_data_root --ntype gaussian
Training code & Dataset
coming soon !
Citation
@article{zhang2021IDR,
title={Self-Supervised Image Denoising via Iterative Data Refinement},
author={Zhang, Yi and Li, Dasong and Law, Ka Lung and Wang, Xiaogang and Qin, Hongwei and Li, Hongsheng},
journal={arXiv:2111.14358},
year={2021}
}
Contact
Feel free to contact [email protected] if you have any questions.