This is an implementation for the paper "Learning Invariant Representation for Unsupervised Image Restoration" (CVPR 2020), a simple and efficient framework for unsupervised image restoration, which is injected into the general domain transfer architecture. More details could be found in the original paper.
Proposed method aims to learn the intermediate representation free of noise from corrupted input that $z{x}$and align it with $z{y}$ from clean image in the latent space $Z$. In addition, adversarial domain adaption and self-supervised constraints are introduced into our architecture. As shown in Fig1-(b), our method is more straight and effective than other domain-transfer methods, e.g., CycleGAN, UNIT, DRIT and so on.
config.py
and utils.py
file.train.py
file.A simple script to test your model:
python3 test.py
Gaussian Noise Removal
Poisson Noise Removal
Medical Image Denoising (Low-Dose CT)
You could extend this work for other image restoration tasks, e.g., super-resolution, deblurring and so on. If so, you need to adjust some hyperparameters for them, and extra self-supervised modules also need to be altered. In this paper, we just provide a more general idea to process the unsupervised image restoration tasks via representation learning.
Our code is based on the UNIT, which is a nice work for unsupervised image translation.