Awesome
FBI-Denoiser
The official code of FBI-Denoiser: Fast Blind Image Denoiser for Poisson-Gaussian Noise (Oral, CVPR 2021) [arxiv].
Quick Start
1. Requirements
$ mkdir weights result_data
2. Experiment with a synthetic noise using the FiveK dataset
- Download FiveK[1] raw training and test dataset from [this link].
- Locate 'Fivek_test_set.mat' and 'Fivek_training_set.hdf5' in './data' directory.
./data
/Fivek_test_set.mat
/Fivek_training_set.hdf5
- Generate the synthetic Poisson-Gaussian noise dataset
: Run './data/generate_fivek_synthetic_dataset.ipynb' and choice parameters(\alpha and \sigma) for the Poisson-Gaussian noise.
- Train PGE-Net and FBI-Net sequentially.
: Adjust \alpha and \sigma in 'train_FBI_PGE_Net_synthetic_noise.sh', and run it.
3. Load and evalute a denoising performance with a pretrained FBI- and PGE-Net
-
Download FiveK[1] and FMD[2] test dataset from [this link].
-
Locate downloaded datasets in './data' directory.
./data
/test_CF_FISH.mat
/test_CF_MICE.mat
/test_TP_MICE.mat
/Fivek_test_set.mat
-
Download pretrained weights of PGE- and FBI-Net from [this link].
-
Locate downloaded weights in './weights' directory.
-
(for synthetic noise datasets) Generate the synthetic Poisson-Gaussian noise test dataset
: Run './data/generate_fivek_synthetic_dataset.ipynb' and choice parameters(\alpha and \sigma) for the Poisson-Gaussian noise.
- Evaluate a pretrained FBI- and PGE-Net with test datasets
: Run './evaluate_pretrained_fbi_net.sh'.
Evaluation results
FiveK synthetic Poisson-Gaussian noises | ||||
---|---|---|---|---|
Noise parameters | \alpha = 0.01, \sigma = 0.0002 | \alpha = 0.01, \sigma = 0.02 | \alpha = 0.05, \sigma = 0.02 | Mixture noise |
FBI-Net | 44.44 / 0.9569 | 43.08 / 0.9384 | 39.00 / 0.9099 | 46.91 / 0.9704 |
Real Noise Datasets | FMD | FMD | FMD |
---|---|---|---|
CF FISH | CF MICE | TP MICE | |
FBI-Net | 32.29 / 0.8873 | 38.31 / 0.99637 | 33.93 / 0.9087 |
4. Estimate noise parameters with a pretrained PGE-Net
-
Download FiveK[1], FMD[2], SIDD[3] and DND[4] test dataset from [this link].
-
Locate downloaded datasets in './data' directory.
./data
/test_CF_FISH.mat
/test_CF_MICE.mat
/test_TP_MICE.mat
/test_DND.mat
/test_SIDD.mat
/Fivek_test_set.mat
-
Download pretrained weights of PGE-Net from [this link].
-
Locate downloaded weights in './weights' directory.
-
(for synthetic noise datasets) Generate the synthetic Poisson-Gaussian noise test dataset
: Run './data/generate_fivek_synthetic_dataset.ipynb' and choice parameters(\alpha and \sigma) for the Poisson-Gaussian noise.
- Evaluate a pretrained PGE-Net with test datasets
: Run './evaluate_pretrained_pge_net.sh'.
Evaluation results
FiveK | FiveK | FiveK | FiveK | FMD | FMD | FMD | SIDD | DND | ||
---|---|---|---|---|---|---|---|---|---|---|
Noise parameters | \alpha = 0.01, \sigma = 0.0002 | \alpha = 0.01, \sigma = 0.02 | \alpha = 0.05, \sigma = 0.02 | Mixture Noise | CF FISH | CF MICE | TP MICE | Test dataset | Test dataset | |
PGE-Net | \alpha_hat | 0.0101 | 0.0142 | 0.0398 | 0.0028 | 0.0357 | 0.0120 | 0.023 | 0.0086 | 0.0.0016 |
PGE-Net | \sigma_hat | 0.000006 | 0.005267 | 0.003603 | 0.003851 | 0.000417 | 0.000697 | 0.00025 | 0.003954 | 0.0.006833 |
5. Evaluate a denoising performance of the pretrained FBI-Net with SIDD and DND benchmark datasets (updating..)
-
Download SIDD[3] and DND[4] test dataset from [this link].
-
Locate downloaded datasets in './data' directory.
./data
/test_DND.mat
/test_SIDD.mat
-
Download pretrained weights of PGE- and FBI-Net from [this link].
-
Locate downloaded weights in './weights' directory.
-
Evaluate a pretrained PGE- and FBI-Net with test datasets.
: Run './evaluate_pretrained_fbi_net_with_sidd_dnd.sh'.
- Upload a denoised benchmark test dataset.
: Run './evaluate_pretrained_fbi_net_with_sidd_dnd.sh'.
Evaluation results
SIDD | DND | |
---|---|---|
Test dataset | Test dataset | |
FBI-Net | PSNR / SSIM | PSNR / SSIM |
QnA
1. Where is the code for generating the synthetic Poissian Gaussian noise?
: Check add_noise() and random_noise_levels() in './data/generate_fivek_synthetic_dataset.ipynb'
2. The estimation result of PGE-Net for \sigma is quite underestimated than the true value of \sigma.
: The detailed dicussion and experimental results are proposed in Section 5.2 of the paper. We showed that, even though \sigma is underestimated, it did not significantly affect the denoising performance of using GAT+BM3D and FBI-Net (see Table 4 and 5 of the paper).
If you have any questions or problems to run this code, please mail to sungmin.cha@snu.ac.kr. Thank you!
Citation
@inproceedings{byun2021fbi,
title={FBI-Denoiser: Fast Blind Image Denoiser for Poisson-Gaussian Noise},
author={Byun, Jaeseok and Cha, Sungmin and Moon, Taesup},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={5768--5777},
year={2021}
}
Reference
[1] Learning Photographic Global Tonal Adjustment with a Database of Input / Output Image Pairs [link]
[2] A Poisson-Gaussian Denoising Dataset with Real Fluorescence Microscopy Images [arxiv]
[3] A High-Quality Denoising Dataset for Smartphone Cameras [link]
[4] Natural Image Noise Dataset [link]