This repository contains the official implementation for LTEW introduced in the following paper:
Learning Local Implicit Fourier Representation for Image Warping (ECCV 2022)
Our code is based on Ubuntu 20.04, pytorch 1.10.0, CUDA 11.3 (NVIDIA RTX 3090 24GB, sm86) and python 3.6.
We recommend using conda for installation:
conda env create --file environment.yaml
conda activate ltew
Then, please install pysrwarp as described in SRWarp.
git clone https://github.com/sanghyun-son/pysrwarp
cd pysrwarp
make
If your CUDA compatibility is sm86, modify cuda/Makefile before make.
vi cuda/Makefile
Table 3: Homography transformation
-
DIV2K: DIV2KW (isc), DIV2KW (osc)
-
Benchmark datasets: Set5W (isc), Set5W (osc), Set14W (isc), Set14W (osc), B100W (isc), B100W (osc), Urban100W (isc), Urban100W (osc)
Table 5: Symmetric-scale SR
- B100 dataset with transformation: B100
mkdir load
and put the datasets as follows:
load
├── benchmark
│ ├── B100
│ │ ├── HR
│ │ ├── LR_bicubic
│ │ ├── LR_bicubic_Transform
│ │ ├── LR_warp_in_scale
│ │ └── LR_warp_out_of_scale
│ ├── Set14
│ │ ├── HR
│ │ ├── LR_bicubic
│ │ ├── LR_warp_in_scale
│ │ └── LR_warp_out_of_scale
│ ├── Set5
│ │ ├── HR
│ │ ├── LR_bicubic
│ │ ├── LR_warp_in_scale
│ │ └── LR_warp_out_of_scale
│ └── Urban100
│ ├── HR
│ ├── LR_bicubic
│ ├── LR_warp_in_scale
│ └── LR_warp_out_of_scale
├── div2k
│ ├── DIV2K_train_HR
│ ├── DIV2K_train_LR_bicubic
│ ├── DIV2K_valid_HR
│ ├── DIV2K_valid_LR_bicubic
│ ├── DIV2K_valid_LR_warp_in_scale
│ └── DIV2K_valid_LR_warp_ouf_of_scale
Model | Download |
---|---|
LTEW-EDSR-baseline | Google Drive |
LTEW-RRDB | Google Drive |
LTEW-RCAN | Google Drive |
Table 1, 2: Asymmetric-scale SR
bash ./scripts/test-benchmark-asym.sh save/rcan-lte.pth 0
Table 3: Homography transformation
bash ./scripts/test-div2k-warp.sh ./save/rrdb-lte-warp.pth 0
bash ./scripts/test-benchmark-warp.sh ./save/rrdb-lte-warp.pth 0
Table 5: Symmetric-scale SR
bash ./scripts/test-b100-sym-w-lte.sh save/rcan-lte.pth 0
bash ./scripts/test-b100-sym-w-ltew.sh save/rrdb-lte-warp.pth 0
Train: CUDA_VISIBLE_DEVICES=0 python train_lte.py --config configs/train-div2k/train_rcan-lte.yaml --gpu 0
Test: bash ./scripts/test-benchmark-asym.sh save/_train_rcan-lte/epoch-last.pth 0
Train: CUDA_VISIBLE_DEVICES=0,1 python train_ltew.py --config configs/train-div2k/train_rrdb-lte-warp.yaml --gpu 0,1
Test: bash ./scripts/test-benchmark-warp.sh ./save/_train_rrdb-lte-warp/epoch-last.pth 0
Model | Training time (# GPU) |
---|---|
EDSR-baseline-LTEW | 39h (1 GPU) |
RRDB-LTEW | 106h (2 GPU) |
RCAN-LTEW | 130h (1 GPU) |
We use NVIDIA RTX 3090 24GB for training.
The script Eval-Fourier-Feature-Space is used to generate the paper plots.
Download the StreetLearn.
Then, we downsample HR ERP images by a factor of 4 and then project to a size of 832 X 832 with a field of view (FOV) 120-deg for Fig.9.
python demo.py --input ./load/streetlearn/LR_bicubic/kc1Ppxk2yKIsNV9UCvOlbg.png --mode erp2pers --model save/edsr-baseline-lte-warp.pth --FOV 120 --THETA 0 --PHI 0 --resolution 832,832 --output ./save_image/erp2pers-kc1Ppxk2yKIsNV9UCvOlbg.png --gpu 0
For perspective view -> ERP,
python demo.py --input ./save_image/erp2pers-kc1Ppxk2yKIsNV9UCvOlbg.png --mode pers2erp --model save/edsr-baseline-lte-warp.pth --FOV 120 --THETA 0 --PHI 0 --resolution 832,1664 --output ./save_image/pers2erp-kc1Ppxk2yKIsNV9UCvOlbg.png --gpu 0
For ERP -> fisheye view,
python demo.py --input ./load/streetlearn/LR_bicubic/kc1Ppxk2yKIsNV9UCvOlbg.png --mode erp2fish --model save/edsr-baseline-lte-warp.pth --FOV 180 --THETA 0 --PHI 0 --resolution 832,832 --output ./save_image/erp2fish-kc1Ppxk2yKIsNV9UCvOlbg.png --gpu 0
For fisheye view -> ERP,
python demo.py --input ./save_image/erp2fish-kc1Ppxk2yKIsNV9UCvOlbg.png --mode fish2erp --model save/edsr-baseline-lte-warp.pth --FOV 180 --THETA 0 --PHI 0 --resolution 832,1664 --output ./save_image/fish2erp-kc1Ppxk2yKIsNV9UCvOlbg.png --gpu 0
For fisheye view -> perspective view,
python demo.py --input ./save_image/erp2fish-kc1Ppxk2yKIsNV9UCvOlbg.png --mode fish2pers --model save/edsr-baseline-lte-warp.pth --FOV 120 --THETA 0 --PHI 0 --resolution 832,832 --output ./save_image/fish2pers-kc1Ppxk2yKIsNV9UCvOlbg.png --gpu 0
The directory ./fig contains full-resolution MARS images.
If you find our work useful in your research, please consider citing our paper:
@article{ltew-jaewon-lee,
title={Learning Local Implicit Fourier Representation for Image Warping},
author={Jaewon Lee, Kwang Pyo Choi, Kyong Hwan Jin},
journal={ECCV},
year={2022}
}
This code is built on LIIF and SRWarp. We thank the authors for sharing their codes.