A Gaussian Noise denoiser for images, based on the Neighbour2Neighbour algorithm from the paper Neighbor2Neighbor: Self-Supervised Denoising from Single Noisy Images. It leverages subamples of a noisy image as independent noisy pairs to perform training.
Checkout the server directory to run the denoiser application as a Flask server
The results are really good for an unsupervised pipeline, i.e, the training was performed using only noisy images and no clean images were used. Noisy-denoised image pairs follow.
pip3 install -r requirements.txt
To train the model, run the following command after augmenting the parameters as per the need.
python3 train.py --epochs=15 --var=0.4 --batch=4 --learning_rate=0.001 --data_dir=./data --checkpoint_dir=./checkpoints
To expermiment with saved model checkpoints, run the following command after updating the arguments. Download the checkpoint from this link: Google Drive
python3 test.py --var=0.5 --data_dir=./data/test --checkpoint=./checkpoints/chckpt_gamma0_var_35.pt
I used 350 images from the Berkeley Segmentation Dataset(BSD500) for training. 100 images from the dataset were used for cross-validation, and 50 for test.