Alexander Krull1,2, Tim-Oliver Buchholz2, Florian Jug
1krull@mpi-cbg.de
, 2Authors contributed equally
The field of image denoising is currently dominated by discriminative deep learning methods that are trained on pairs of noisy input and clean target images. Recently it has been shown that such methods can also be trained without clean targets. Instead, independent pairs of noisy images can be used, in an approach known as NOISE2NOISE (N2N). Here, we introduce NOISE2VOID (N2V), a training scheme that takes this idea one step further. It does not require noisy image pairs, nor clean target images. Consequently, N2V allows us to train directly on the body of data to be denoised and can therefore be applied when other methods cannot. Especially interesting is the application to biomedical image data, where the acquisition of training targets, clean or noisy, is frequently not possible. We compare the performance of N2V to approaches that have either clean target images and/or noisy image pairs available. Intuitively, N2V cannot be expected to outperform methods that have more information available during training. Still, we observe that the denoising performance of NOISE2VOID drops in moderation and compares favorably to training-free denoising methods.
Paper: https://arxiv.org/abs/1811.10980
Our implementation is based on CSBDEEP (github).
This implementation requires Tensorflow. We have tested Noise2Void on LinuxMint 19 and Ubuntu 18.0 using python 3.6 and 3.7 and tensorflow-gpu 1.12.0 and 1.14.0.
We recommend using miniconda. If you do not yet have a strong opinion, just use it too!
After installing Miniconda, the following lines might are likely the easiest way to get Tensorflow and CuDNN installed on your machine (Note: Macs are not supported, and if you sit on a Windows machine all this might also require some modifications.):
$ conda create -n 'n2v' python=3.6
$ source activate n2v
$ conda install tensorflow-gpu=1.14 keras=2.2.4
$ pip install jupyter
Note: it is very important that the version of keras be 2.2.4 or 2.2.5, hence the explicit installation above. Once this is done (or you had tensorflow et al. installed already), you can install N2V with one of the following two options:
$ pip install n2v
This option is ideal if you want to edit the code. Clone the repository:
$ git clone https://github.com/juglab/n2v.git
Change into its directory and install it:
$ cd n2v
$ pip install -e .
You are now ready to run Noise2Void.
Have a look at our jupyter notebook:
@inproceedings{krull2019noise2void,
title={Noise2void-learning denoising from single noisy images},
author={Krull, Alexander and Buchholz, Tim-Oliver and Jug, Florian},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
pages={2129--2137},
year={2019}
}
see here for more info on StructN2V
.
The functional "tests" are meant to be run as regular programs. They are there to make sure that examples are still running after changes.