Home

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

  1. Download FiveK[1] raw training and test dataset from [this link].
  2. Locate 'Fivek_test_set.mat' and 'Fivek_training_set.hdf5' in './data' directory.
./data
      /Fivek_test_set.mat
      /Fivek_training_set.hdf5 
  1. 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.

  1. 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

  1. Download FiveK[1] and FMD[2] test dataset from [this link].

  2. Locate downloaded datasets in './data' directory.

./data
      /test_CF_FISH.mat 
      /test_CF_MICE.mat
      /test_TP_MICE.mat
      /Fivek_test_set.mat
  1. Download pretrained weights of PGE- and FBI-Net from [this link].

  2. Locate downloaded weights in './weights' directory.

  3. (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.

  1. 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.02Mixture noise
FBI-Net44.44 / 0.956943.08 / 0.938439.00 / 0.909946.91 / 0.9704
Real Noise DatasetsFMDFMDFMD
CF FISHCF MICETP MICE
FBI-Net32.29 / 0.887338.31 / 0.9963733.93 / 0.9087

4. Estimate noise parameters with a pretrained PGE-Net

  1. Download FiveK[1], FMD[2], SIDD[3] and DND[4] test dataset from [this link].

  2. 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
  1. Download pretrained weights of PGE-Net from [this link].

  2. Locate downloaded weights in './weights' directory.

  3. (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.

  1. Evaluate a pretrained PGE-Net with test datasets

: Run './evaluate_pretrained_pge_net.sh'.

Evaluation results

FiveKFiveKFiveKFiveKFMDFMDFMDSIDDDND
Noise parameters\alpha = 0.01, \sigma = 0.0002\alpha = 0.01, \sigma = 0.02\alpha = 0.05, \sigma = 0.02Mixture NoiseCF FISHCF MICETP MICETest datasetTest dataset
PGE-Net\alpha_hat0.01010.01420.03980.00280.03570.01200.0230.00860.0.0016
PGE-Net\sigma_hat0.0000060.0052670.0036030.0038510.0004170.0006970.000250.0039540.0.006833

5. Evaluate a denoising performance of the pretrained FBI-Net with SIDD and DND benchmark datasets (updating..)

  1. Download SIDD[3] and DND[4] test dataset from [this link].

  2. Locate downloaded datasets in './data' directory.

./data
      /test_DND.mat
      /test_SIDD.mat
  1. Download pretrained weights of PGE- and FBI-Net from [this link].

  2. Locate downloaded weights in './weights' directory.

  3. Evaluate a pretrained PGE- and FBI-Net with test datasets.

: Run './evaluate_pretrained_fbi_net_with_sidd_dnd.sh'.

  1. Upload a denoised benchmark test dataset.

: Run './evaluate_pretrained_fbi_net_with_sidd_dnd.sh'.

Evaluation results

SIDDDND
Test datasetTest dataset
FBI-NetPSNR / SSIMPSNR / 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]