Noise2Void - Learning Denoising from Single Noisy Images
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.
$ python main.py --mode train \
--scope [scope name] \
--name_data [data name] \
--dir_data [data directory] \
--dir_log [log directory] \
--dir_checkpoint [checkpoint directory]
--gpu_ids [gpu id; '-1': no gpu, '0, 1, ..., N-1': gpus]
$ python main.py --mode train \
--scope resnet \
--name_data bsd500 \
--dir_data ./datasets \
--dir_log ./log \
--dir_checkpoint ./checkpoint
--gpu_ids 0
$ python main.py --mode test \
--scope [scope name] \
--name_data [data name] \
--dir_data [data directory] \
--dir_log [log directory] \
--dir_checkpoint [checkpoint directory] \
--dir_result [result directory]
--gpu_ids [gpu id; '-1': no gpu, '0, 1, ..., N-1': gpus]
$ python main.py --mode test \
--scope resnet \
--name_data bsd500 \
--dir_data ./datasets \
--dir_log ./log \
--dir_checkpoint ./checkpoints \
--dir_result ./results
--gpu_ids 0
$ tensorboard --logdir [log directory]/[scope name]/[data name] \
--port [(optional) 4 digit port number]
$ tensorboard --logdir ./log/resnet/bsd500 \
--port 6006
After the above comment executes, go http://localhost:6006