ECCV2022 Paper - Dynamic Dual Trainable Bounds for Ultra-low Precision Super-Resolution Networks paper
- Python 3.6
- PyTorch >= 1.7.0
Please download DIV2K datasets.
Then, create a directory 'datasets' and re-organise the downloaded dataset directory as follows:
...
option.py
main_limitrange_incremental.py
datasets
benchmark
DIV2K
An example:
python main_ori.py --model edsr --scale 4 \
--save edsr_baseline_x4 \
--patch_size 192 \
--epochs 300 \
--decay 200 \
--gclip 0 \
--dir_data ./datasets
Please refer to 'baseline.sh' for more commands.
An example:
python main_limitrange_incremental.py --scale 4 \
--k_bits 4 --model EDSR \
--pre_train ./pretrained/edsr_baseline_x4.pt --patch_size 192 \
--data_test Set14 \
--dynamic_ratio 0.3 \
--save "output/edsrx4/4bit" --dir_data ./datasets --print_every 10
Please refer to 'run.sh' for more commands.
An example:
python3 main_limitrange_incremental.py --scale 4 --model EDSR \
--k_bits 4 --save_results --test_only \
--data_test Set5+Set14+B100+Urban100 \
--save "../experiment/output/edsrx4/4bit" --dir_data ./datasets
Please refer to 'test.sh' for more commands.
After saving the images, modify path inmetrics/calculate_PSNR_SSIM.m to generate results.
matlab -nodesktop -nosplash -r "calculate_PSNR_SSIM('$dataset',$scale,$bit);quit"
refer to metrics/run.sh for more details.
Trained FP models and quantized models: here
Download these model. Then use the commands above to obtain the reported results of the paper.
| Model | Bit |
|---|---|
| EDSRx4 | 2 |
| 3 | |
| 4 | |
| EDSRx2 | 2 |
| 3 | |
| 4 | |
| RDNx4 | 2 |
| 3 | |
| 4 | |
| RDNx2 | 2 |
| 3 | |
| 4 | |
| SRResNetx4 | 2 |
| 3 | |
| 4 | |
| SRResNetx2 | 2 |
| 3 | |
| 4 |
Results of pre-trained models are shown below:
| Model | Dataset | Bit | DDTB(Ours) |
|---|---|---|---|
| EDSRx4 | Set5 | 2 | 30.97/0.876 |
| 3 | 31.52/0.883 | ||
| 4 | 31.85/0.889 | ||
| Set14 | 2 | 27.87/0.764 | |
| 3 | 28.18/0.771 | ||
| 4 | 28.39/0.777 | ||
| BSD100 | 2 | 27.09/0.719 | |
| 3 | 27.30/0.727 | ||
| 4 | 27.44/0.732 | ||
| Urban100 | 2 | 24.82/0.742 | |
| 3 | 25.33/0.761 | ||
| 4 | 25.69/0.774 | ||
| EDSRx2 | Set5 | 2 | 37.25/0.958 |
| 3 | 37.51/0.958 | ||
| 4 | 37.72/0.959 | ||
| Set14 | 2 | 32.87/0.911 | |
| 3 | 33.17/0.914 | ||
| 4 | 33.35/0.916 | ||
| BSD100 | 2 | 31.67/0.893 | |
| 3 | 31.89/0.896 | ||
| 4 | 32.01/0.898 | ||
| Urban100 | 2 | 30.34/0.910 | |
| 3 | 31.01/0.919 | ||
| 4 | 31.39/0.922 |
| Model | Dataset | Bit | DDTB(Ours) |
|---|---|---|---|
| RDNx4 | Set5 | 2 | 30.57/0.867 |
| 3 | 31.49/0.883 | ||
| 4 | 31.97/0.891 | ||
| Set14 | 2 | 27.56/0.757 | |
| 3 | 28.17/0.772 | ||
| 4 | 28.49/0.780 | ||
| BDS100 | 2 | 26.91/0.714 | |
| 3 | 27.30/0.728 | ||
| 4 | 27.49/0.735 | ||
| Urban100 | 2 | 24.50/0.728 | |
| 3 | 25.35/0.764 | ||
| 4 | 25.90/0.783 | ||
| RDNx2 | Set5 | 2 | 36.76/0.955 |
| 3 | 37.61/0.959 | ||
| 4 | 37.88/0.960 | ||
| Set14 | 2 | 32.54/0.908 | |
| 3 | 33.26/0.915 | ||
| 4 | 33.51/0.917 | ||
| BSD100 | 2 | 31.44/0.890 | |
| 3 | 31.91/0.897 | ||
| 4 | 32.12/0.899 | ||
| Urban100 | 2 | 29.77/0.903 | |
| 3 | 31.10/0.920 | ||
| 4 | 31.76/0.926 |
| Model | Dataset | Bit | DDTB(Ours) |
|---|---|---|---|
| SRResNetx4 | Set5 | 2 | 31.51/0.887 |
| 3 | 31.85/0.890 | ||
| 4 | 31.97/0.892 | ||
| Set14 | 2 | 28.23/0.773 | |
| 3 | 28.39/0.776 | ||
| 4 | 28.46/0.778 | ||
| BSD100 | 2 | 27.33/0.728 | |
| 3 | 27.44/0.731 | ||
| 4 | 27.48/0.733 | ||
| Urban100 | 2 | 25.37/0.762 | |
| 3 | 25.64/0.770 | ||
| 4 | 25.77/0.776 | ||
| SRResNetx2 | Set5 | 2 | 37.46/0.958 |
| 3 | 37.67/0.959 | ||
| 4 | 37.78/0.960 | ||
| Set14 | 2 | 33.02/0.913 | |
| 3 | 33.24/0.915 | ||
| 4 | 33.32/0.916 | ||
| BSD100 | 2 | 31.78/0.895 | |
| 3 | 31.95/0.897 | ||
| 4 | 32.03/0.898 | ||
| Urban100 | 2 | 30.57/0.913 | |
| 3 | 31.15/0.919 | ||
| 4 | 31.40/0.921 |
For any question, be free to contact: viper.zhong@gmail.com. The github issue is also welcome.