Noise Flow - A normalizing flows model for image noise modeling and synthesis
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).
Required libraries
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.
Required dataset
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.
Training/Testing/Sampling
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.
Important parameters
--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.
Sampling only
To use the Noise Flow trained model for generating noise samples:
Start by running sample_noise_flow.py
Application to image denoising with DnCNN
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.
Paper
Abdelrahman Abdelhamed, Marcus A. Brubaker, and Michael S. Brown. Noise Flow: Noise Modeling with Conditional Normalizing Flows. In ICCV, 2019.
Citation
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}
}
License
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.