Syed Waqas Zamir, Aditya Arora, Salman Khan, Munawar Hayat, Fahad Shahbaz Khan, and Ming-Hsuan Yang
- March 10, 2022: Training codes are released 🔥
- March 3, 2022: Paper accepted at CVPR 2022 🎉
- Testing codes and pre-trained models are released!
Abstract: Since convolutional neural networks (CNNs) perform well at learning generalizable image priors from large-scale data, these models have been extensively applied to image restoration and related tasks. Recently, another class of neural architectures, Transformers, have shown significant performance gains on natural language and high-level vision tasks. While the Transformer model mitigates the shortcomings of CNNs (i.e., limited receptive field and inadaptability to input content), its computational complexity grows quadratically with the spatial resolution, therefore making it infeasible to apply to most image restoration tasks involving high-resolution images. In this work, we propose an efficient Transformer model by making several key designs in the building blocks (multi-head attention and feed-forward network) such that it can capture long-range pixel interactions, while still remaining applicable to large images. Our model, named Restoration Transformer (Restormer), achieves state-of-the-art results on several image restoration tasks, including image deraining, single-image motion deblurring, defocus deblurring (single-image and dual-pixel data), and image denoising (Gaussian grayscale/color denoising, and real image denoising).
See INSTALL.md for the installation of dependencies required to run Restormer.
To test the pre-trained Restormer models of Deraining, Motion Deblurring, Defocus Deblurring, and Denoising on your own images, run
python demo.py --task Task_Name --input_dir path_to_images --result_dir save_images_here
Example usage to perform Defocus Deblurring on a directory of images:
python demo.py --task Single_Image_Defocus_Deblurring --input_dir './demo/degraded/' --result_dir './demo/restored/'
Example usage to perform Defocus Deblurring on an image directly:
python demo.py --task Single_Image_Defocus_Deblurring --input_dir './demo/degraded/portrait.jpg' --result_dir './demo/restored/'
Training and Testing instructions for Deraining, Motion Deblurring, Defocus Deblurring, and Denoising are provided in their respective directories. Here is a summary table containing hyperlinks for easy navigation:
Task | Training Instructions | Testing Instructions | Restormer's Visual Results |
---|---|---|---|
Deraining | Link | Link | Download |
Motion Deblurring | Link | Link | Download |
Defocus Deblurring | Link | Link | Download |
Gaussian Denoising | Link | Link | Download |
Real Denoising | Link | Link | Download |
Experiments are performed for different image processing tasks including, image deraining, single-image motion deblurring, defocus deblurring (both on single image and dual pixel data), and image denoising (both on Gaussian and real data).
Defocus Deblurring (click to expand)
S: single-image defocus deblurring. D: dual-pixel defocus deblurring.
Gaussian Image Denoising (click to expand)
Top super-row: learning a single model to handle various noise levels. Bottom super-row: training a separate model for each noise level.
Grayscale |
Color |
If you use Restormer, please consider citing:
@inproceedings{Zamir2021Restormer,
title={Restormer: Efficient Transformer for High-Resolution Image Restoration},
author={Syed Waqas Zamir and Aditya Arora and Salman Khan and Munawar Hayat
and Fahad Shahbaz Khan and Ming-Hsuan Yang},
booktitle={CVPR},
year={2022}
}
Should you have any question, please contact waqas.zamir@inceptioniai.org
Acknowledgment: This code is based on the BasicSR toolbox.