Official PyTorch implementation of SelfDZSR++ and SelfTZSR++
This work is extended from SelfDZSR (ECCV 2022, GitHub).
Self-Supervised Learning for Real-World Super-Resolution from Dual and Multiple Zoomed Observations
IEEE TPAMI, 2024
Zhilu Zhang, Ruohao Wang, Hongzhi Zhang, Wangmeng Zuo
Harbin Institute of Technology, China
- Introduce patch-based optical flow alignment to further mitigate the effect of the misalignment between data pairs. (Section 3.2.1: Patch-based Optical Flow Alignment)
- Present LOSW (Local Overlapped Sliced Wasserstein) loss to generate visually pleasing results. (Section 3.5: LOSW Loss and Learning Objective)
- Extend DZSR (Super-Resolution based on Dual Zoomed Observations) to multiple zoomed observations, where we present a progressive fusion scheme for better restoration. (Section 3.6: Extension to Multiple Zoomed Observations)
- Evaluate the proposed method on a larger iPhone camera dataset. (Section 4.2: Quantitative and Qualitative Results)
- Evaluate the extended method that is based on triple zoomed images. (Section 4.2: Quantitative and Qualitative Results)
- Compare #FLOPs of different methods. (Section 4.3: Comparison of #Parameters and #FLOPs)
- More ablation experiments, including (1) effect of different loss terms (Section 5.3: Effect of LOSW Loss); (2) effect of different reference images and fusion schemes (Section 5.4: Effect of Different Refs and Fusion Schemes); (3) effect of scaling up models (Section 5.5: Effect of Scaling up Models).
- Python 3.x and PyTorch 1.12.
- OpenCV, NumPy, Pillow, tqdm, lpips, scikit-image and tensorboardX.
- Nikon camera images can be downloaded from this link.
- iPhone camera images can be downloaded from this link.
-
All pre-trained models are provided in this link. Please place
ckpt
folder underSelfDZSR_PlusPlus
folder. -
For simplifying the training process, we provide the pre-trained models of feature extractors and auxiliary-LR generator. The models for Nikon and iPhone camera images are put in the
./ckpt/nikon_pretrain_models/
and./ckpt/iphone_pretrain_models/
folder, respectively. -
For direct testing, we provide the 8 pre-trained DZSR and TZSR models (
dzsr_nikon_l1
,dzsr_nikon_l1sw
,dzsr_iphone_l1
,dzsr_iphone_l1sw
,tzsr_nikon_l1
,tzsr_nikon_l1sw
,tzsr_iphone_l1
, andtzsr_iphone_l1sw
) in the./ckpt/
folder. Takingtzsr_nikon_l1sw
as an example, it represents the TZSR model trained on the Nikon camera images using$l_1$ and local overlapped sliced Wasserstein loss terms.
- Modify
dataroot
,camera
,data
,model
, andname
- Run
sh train.sh
- Modify
dataroot
,camera
,data
,model
, andname
- Run
sh test.sh
- You can specify which GPU to use by
--gpu_ids
, e.g.,--gpu_ids 0,1
,--gpu_ids 3
,--gpu_ids -1
(for CPU mode). In the default setting, all GPUs are used. - You can refer to options for more arguments.
If you find it useful in your research, please consider citing:
@inproceedings{SelfDZSR,
title={Self-Supervised Learning for Real-World Super-Resolution from Dual Zoomed Observations},
author={Zhang, Zhilu and Wang, Ruohao and Zhang, Hongzhi and Chen, Yunjin and Zuo, Wangmeng},
booktitle={European Conference on Computer Vision (ECCV)},
year={2022}
}
@article{SelfDZSR_PlusPlus,
title={Self-Supervised Learning for Real-World Super-Resolution from Dual and Multiple Zoomed Observations},
author={Zhang, Zhilu and Wang, Ruohao and Zhang, Hongzhi and Zuo, Wangmeng},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI)},
year={2024},
publisher={IEEE}
}
This repo is built upon the framework of CycleGAN, and we borrow some code from C2-Matching and DCSR, thanks for their excellent work!