This repository contains implementation of zero-shot denoising via neural compression : ZS-NCD
- Python > 3.11
- Jupyter Lab
Follow the steps below in the directory where you have cloned this GitHub repository:
You can choose either a conda
environment or a venv
-based environment.
If you have conda
installed, create and activate a new environment:
conda create -n zs-ncd python=3.11
conda activate zs-ncd
If you prefer not to use conda
(already have python > 3.11 installed):
python3 -m venv venv
source venv/bin/activate
For Windows, activate the virtual environment with:
venv\Scripts\activate
conda install -c conda-forge jupyterlab
pip install jupyterlab
jupyter lab
Once inside the notebook, follow the instructions in the first set of cells to install the required dependencies. (For a full list of dependencies, see requirements.txt
).
Enjoy experimenting! All instructions and examples can be found in the accompanying Jupyter notebook.
For further discussion, refer to Figure 2 in the paper and the discussion therein.
Zero-shot denoising of Kodim05 with AWGN (σ = 25). Left: PSNR versus training iterations for zero-shot denoisers. Performance of BM3D and Restormer are included as a classical baseline and as a supervised empirical upper bound, respectively. Right: Visual reconstructions with PSNR/SSIM above each image. Compression-based denoising based on JPEG2K achieves inferior performance. Learning-based zero-shot denoisers often struggle with either overfitting or high bias. DIP and DD require early stopping to avoid overfitting. ZS-N2S and S2S struggle with high-resolution color images, and ZS-N2N often produces noisy outputs with potential overfitting. BM3D tends to oversmooth the denoised image. In contrast, ZS-NCD avoids these issues.