All Projects → JWSoh → Mzsr

JWSoh / Mzsr

Meta-Transfer Learning for Zero-Shot Super-Resolution (CVPR, 2020)

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Mzsr

MLSR
Source code for ECCV2020 "Fast Adaptation to Super-Resolution Networks via Meta-Learning"
Stars: ✭ 59 (-67.4%)
Mutual labels:  super-resolution, meta-learning
Video Super Resolution
Video super resolution implemented in Pytorch
Stars: ✭ 169 (-6.63%)
Mutual labels:  super-resolution
Awesome Cvpr2021 Cvpr2020 Low Level Vision
A Collection of Papers and Codes for CVPR2021/CVPR2020 Low Level Vision
Stars: ✭ 139 (-23.2%)
Mutual labels:  super-resolution
A Pytorch Tutorial To Super Resolution
Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network | a PyTorch Tutorial to Super-Resolution
Stars: ✭ 157 (-13.26%)
Mutual labels:  super-resolution
Waifu2x Extension
Image, GIF and Video enlarger/upscaler achieved with waifu2x and Anime4K. [NO LONGER UPDATED]
Stars: ✭ 149 (-17.68%)
Mutual labels:  super-resolution
Waifu2x
PyTorch on Super Resolution
Stars: ✭ 156 (-13.81%)
Mutual labels:  super-resolution
Enhancenet Code
EnhanceNet: Single Image Super-Resolution Through Automated Texture Synthesis (official repository)
Stars: ✭ 142 (-21.55%)
Mutual labels:  super-resolution
Super resolution with cnns and gans
Image Super-Resolution Using SRCNN, DRRN, SRGAN, CGAN in Pytorch
Stars: ✭ 176 (-2.76%)
Mutual labels:  super-resolution
Metalearning4nlp Papers
A list of recent papers about Meta / few-shot learning methods applied in NLP areas.
Stars: ✭ 163 (-9.94%)
Mutual labels:  meta-learning
Mmediting
OpenMMLab Image and Video Editing Toolbox
Stars: ✭ 2,618 (+1346.41%)
Mutual labels:  super-resolution
Frvsr
Frame-Recurrent Video Super-Resolution (official repository)
Stars: ✭ 157 (-13.26%)
Mutual labels:  super-resolution
Basicsr
Open Source Image and Video Restoration Toolbox for Super-resolution, Denoise, Deblurring, etc. Currently, it includes EDSR, RCAN, SRResNet, SRGAN, ESRGAN, EDVR, BasicVSR, SwinIR, ECBSR, etc. Also support StyleGAN2, DFDNet.
Stars: ✭ 2,708 (+1396.13%)
Mutual labels:  super-resolution
Meta Weight Net
NeurIPS'19: Meta-Weight-Net: Learning an Explicit Mapping For Sample Weighting (Pytorch implementation for noisy labels).
Stars: ✭ 158 (-12.71%)
Mutual labels:  meta-learning
Awesome Federated Learning
All materials you need for Federated Learning: blogs, videos, papers, and softwares, etc.
Stars: ✭ 149 (-17.68%)
Mutual labels:  meta-learning
Face And Image Super Resolution
Stars: ✭ 174 (-3.87%)
Mutual labels:  super-resolution
Keras Image Super Resolution
EDSR, RCAN, SRGAN, SRFEAT, ESRGAN
Stars: ✭ 143 (-20.99%)
Mutual labels:  super-resolution
Pan
[Params: Only 272K!!!] Efficient Image Super-Resolution Using Pixel Attention, in ECCV Workshop, 2020.
Stars: ✭ 151 (-16.57%)
Mutual labels:  super-resolution
Tenet
Official Pytorch Implementation for Trinity of Pixel Enhancement: a Joint Solution for Demosaicing, Denoising and Super-Resolution
Stars: ✭ 157 (-13.26%)
Mutual labels:  super-resolution
Pytorch Zssr
PyTorch implementation of 1712.06087 "Zero-Shot" Super-Resolution using Deep Internal Learning
Stars: ✭ 180 (-0.55%)
Mutual labels:  super-resolution
Gpufit
GPU-accelerated Levenberg-Marquardt curve fitting in CUDA
Stars: ✭ 174 (-3.87%)
Mutual labels:  super-resolution

MZSR

Meta-Transfer Learning for Zero-Shot Super-Resolution CVPR 2020

Jae Woong Soh, Sunwoo Cho, and Nam Ik Cho

[Paper] [Supplementary] [Arxiv]

Environments

Abstract

Convolutional neural networks (CNNs) have shown dramatic improvements in single image super-resolution (SISR) by using large-scale external samples. Despite their remarkable performance based on the external dataset, they cannot exploit internal information within a specific image. Another problem is that they are applicable only to the specific condition of data that they are supervised. For instance, the low-resolution (LR) image should be a "bicubic" downsampled noise-free image from a high-resolution (HR) one. To address both issues, zero-shot super-resolution (ZSSR) has been proposed for flexible internal learning. However, they require thousands of gradient updates, i.e., long inference time. In this paper, we present Meta-Transfer Learning for Zero-Shot Super-Resolution (MZSR), which leverages ZSSR. Precisely, it is based on finding a generic initial parameter that is suitable for internal learning. Thus, we can exploit both external and internal information, where one single gradient update can yield quite considerable results. (See Figure 1). With our method, the network can quickly adapt to a given image condition. In this respect, our method can be applied to a large spectrum of image conditions within a fast adaptation process.

Related Work

Super-Resolution for Various Kernels

[ZSSR (CVPR 2018)] "Zero-Shot" Super-Resolution Using Deep Internal Learning Link

[IKC (CVPR 2019)] Blind Super-Resolution With Iterative Kernel Correction Link

Optimization-based Meta-Learning

[MAML (ICML 2017)] Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks Link

[MAML++ (ICLR 2019)] How to train your MAML Link



Brief Description of Our Proposed Method

Illustration of the Overall Scheme

During meta-transfer learning, the external dataset is used, where internal learning is done during meta-test time. From random initial \theta_0, large-scale dataset DIV2K with “bicubic” degradation is exploited to obtain \theta_T. Then, meta-transfer learning learns a good representation \theta_M for super-resolution tasks with diverse blur kernel scenarios. In the meta-test phase, self-supervision within a test image is exploited to train the model with corresponding blur kernel.

Algorithms

  

Left: The algorithm of Meta-Transfer Learning & Right: The algorithm of Meta-Test.

Experimental Results

Results on various kernel environments (X2)

The results are evaluated with the average PSNR (dB) and SSIM on Y channel of YCbCr colorspace. Red color denotes the best results and blue denotes the second best. The number between parantheses of our methods (MZSR) denote the number of gradient updates.

Results on scaling factor (X4)

Test Input Data

Degraded Images of Set5, B100, Urban100 on various kernel environments.

Download

Visualized Results



Brief explanation of contents

├── GT: Ground-truth images
├── Input: Input LR images
├── Model: Pre-trained models are included (Model Zoo)
    ├──> Directx2: Model for direct subsampling (x2)
    ├──> Multi-scale: Multi-scale model
    ├──> Bicubicx2: Model for bicubic subsampling (x2)
    └──> Directx4: Model for direct subsampling (x4)
├── Pretrained: Pre-trained model (bicubic) for transfer learning.
└── results: Output results are going to be saved here.

Rest codes are for the training and test of MZSR.

Guidelines for Codes

Requisites should be installed beforehand.

Clone this repo.

git clone http://github.com/JWSoh/MZSR.git
cd MZSR/

Training

Download training dataset DIV2K.

Generate TFRecord dataset

  • Refer to MainSR repo.
  • Run generate_TFRecord_MZSR.py

Train MZSR

Make sure all configurations in config.py are set.

[Options]

python main.py --train --gpu [GPU_number] --trial [Trial of your training] --step [Global step]

--train: Flag in order to train.
--gpu: If you have more than one gpu in your computer, the number denotes the index. [Default 0]
--trial: Trial number. Any integer numbers can be used. [Default 0]
--step: Global step. When you resume the training, you need to specify the right global step. [Default 0]

Test

Ready for the input data (low-resolution) and corresponding kernel (kernel.mat file.)

[Options]

python main.py --gpu [GPU_number] --inputpath [LR path] --gtpath [HR path] --savepath [SR path]  --kernelpath [kernel.mat path] --model [0/1/2/3] --num [1/10]

--gpu: If you have more than one gpu in your computer, the number designates the index of GPU which is going to be used. [Default 0]
--inputpath: Path of input images [Default: Input/g20/Set5/]
--gtpath: Path of reference images. [Default: GT/Set5/]
--savepath: Path for the output images. [Default: results/Set5]
--kernelpath: Path of the kernel.mat file. [Default: Input/g20/kernel.mat]
--model: [0/1/2/3]
    -> 0: Direct x2
    -> 1: Multi-scale
    -> 2: Bicubic x2
    -> 3: Direct x4
--num: [1/10] The number of adaptation (gradient updates). [Default 1]

You may change other minor options in "test.py." Line 9 to line 17.

The minor options are shown below.

self.save_results=True		-> Whether to save results or not.
self.display_iter = 1		-> The interval of information display.
self.noise_level = 0.0		-> You may sometimes add small noise for real-world images.
self.back_projection=False	-> You may also apply back projection algorithm for better results.
self.back_projection_iters=4	-> The number of iteration of back projection.

An example of test codes

python main.py --gpu 0 --inputpath Input/g20/Set5/ --gtpath GT/Set5/ --savepath results/Set5 --kernelpath Input/g20/kernel.mat --model 0 --num 1

Extra: Codes for Large-Scale Pretraining

Please refer to the folder Large-Scale_Training.

Citation

@article{soh2020meta,
  title={Meta-Transfer Learning for Zero-Shot Super-Resolution},
  author={Soh, Jae Woong and Cho, Sunwoo and Cho, Nam Ik},
  journal={arXiv preprint arXiv:2002.12213},
  year={2020}
}

@inproceedings{soh2020meta,
  title={Meta-Transfer Learning for Zero-Shot Super-Resolution},
  author={Soh, Jae Woong and Cho, Sunwoo and Cho, Nam Ik},
  booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
  pages={3516--3525},
  year={2020}
}

Acknowledgement

Our work and implementations are inspired by and based on ZSSR [site] and MAML [site].

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].