This repository provides the codes for training and testing the Noise Flow model used for image noise modeling and synthesis as described in the paper:
Noise Flow: Noise Modeling with Conditional Normalizing Flows
It also provides code for training and testing a CNN-based image denoiser (DnCNN) using Noise Flow as a noise generator, with comparison to other noise generation methods (i.e., AWGN and signal-dependent noise).
Python (works with 3.6)
TensorFlow (works with 1.12.0)
TensorFlow Probability (tested with 0.5.0)
Despite not tested, the code may work with library versions other than the specified.
Smartphone Image Denoising Dataset (SIDD)
It is recommended to use the medium-size SIDD for training Noise Flow:
The code checks for and downloads SIDD_Medium_Raw
if it does not exist.
Start by running job_noise_flow.sh
It contains a set of examples for training different models (as described in the paper) and optionally perform testing and sampling concurrently.
--sidd_path
: path to the SIDD dataset
--arch
: the architecture of the noise flow model
--cam
: (optional) to use/sample data from a specific camera
--iso
: (optional) to use/sample data from a specific ISO level
Refer to job_noise_flow.sh
or ArgParser.py
for details on the rest of parameters.
To use the Noise Flow trained model for generating noise samples:
Start by running sample_noise_flow.py
Start by running job_dncnn.sh
which contains examples for training DnCNN with synthetic noise from a Gaussian, signal-dependent, or Noise Flow model.
Also, it contains an example for training with real noise from the SIDD.
Abdelrahman Abdelhamed, Marcus A. Brubaker, and Michael S. Brown. Noise Flow: Noise Modeling with Conditional Normalizing Flows. In ICCV, 2019.
If you use Noise Flow in your research, we kindly ask that you cite the paper as follows:
@inproceedings{abdelhamed2019noiseflow,
title={{Noise Flow: Noise Modeling with Conditional Normalizing Flows}},
author={Abdelhamed, Abdelrahman and Brubaker, Marcus A and Brown, Michael S},
booktitle={International Conference on Computer Vision (ICCV)},
year={2019}
}
This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License. The terms and conditions can be found in the LICENSE file.