BasicVSR: The Search for Essential Components in Video Super-Resolution and Beyond
Task: Video Super-Resolution
Video super-resolution (VSR) approaches tend to have more components than the image counterparts as they need to exploit the additional temporal dimension. Complex designs are not uncommon. In this study, we wish to untangle the knots and reconsider some most essential components for VSR guided by four basic functionalities, i.e., Propagation, Alignment, Aggregation, and Upsampling. By reusing some existing components added with minimal redesigns, we show a succinct pipeline, BasicVSR, that achieves appealing improvements in terms of speed and restoration quality in comparison to many state-of-the-art algorithms. We conduct systematic analysis to explain how such gain can be obtained and discuss the pitfalls. We further show the extensibility of BasicVSR by presenting an information-refill mechanism and a coupled propagation scheme to facilitate information aggregation. The BasicVSR and its extension, IconVSR, can serve as strong baselines for future VSR approaches.
Evaluated on RGB channels for REDS4 and Y channel for others. The metrics are PSNR
/ SSIM
.
The pretrained weights of SPyNet can be found here.
Model | Dataset | PSNR (RGB) | SSIM (RGB) | PSNR (Y) | SSIM (Y) | Training Resources | Download |
---|---|---|---|---|---|---|---|
basicvsr_reds4 | REDS4 (BIx4) | 31.4170 | 0.8909 | - | - | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_reds4 | UDM10 (BDx4) | - | - | 33.4478 | 0.9306 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_reds4 | Vimeo-90K-T (BIx4) | - | - | 36.2848 | 0.9395 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_reds4 | Vimeo-90K-T (BDx4) | - | - | 34.4700 | 0.9286 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_reds4 | Vid4 (BIx4) | - | - | 27.2694 | 0.8318 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_reds4 | Vid4 (BDx4) | - | - | 24.4541 | 0.7455 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_vimeo90k_bi | REDS4 (BIx4) | 30.3128 | 0.8660 | - | - | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_vimeo90k_bi | UDM10 (BDx4) | - | - | 34.5554 | 0.9451 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_vimeo90k_bi | Vimeo-90K-T (BIx4) | - | - | 37.2026 | 0.9434 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_vimeo90k_bi | Vimeo-90K-T (BDx4) | - | - | 34.8097 | 0.9316 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_vimeo90k_bi | Vid4 (BIx4) | - | - | 27.2755 | 0.8248 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_vimeo90k_bi | Vid4 (BDx4) | - | - | 25.0517 | 0.7636 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_vimeo90k_bd | REDS4 (BIx4) | 29.0376 | 0.8481 | - | - | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_vimeo90k_bd | UDM10 (BDx4) | - | - | 39.9953 | 0.9695 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_vimeo90k_bd | Vimeo-90K-T (BIx4) | - | - | 34.6427 | 0.9335 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_vimeo90k_bd | Vimeo-90K-T (BDx4) | - | - | 37.5501 | 0.9499 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_vimeo90k_bd | Vid4 (BIx4) | - | - | 26.2708 | 0.8022 | 2 (Tesla V100-PCIE-32GB) | model | log |
basicvsr_vimeo90k_bd | Vid4 (BDx4) | - | - | 27.9791 | 0.8556 | 2 (Tesla V100-PCIE-32GB) | model | log |
Train
Train Instructions
You can use the following commands to train a model with cpu or single/multiple GPUs.
# cpu train
CUDA_VISIBLE_DEVICES=-1 python tools/train.py configs/basicvsr/basicvsr_2xb4_reds4.py
# single-gpu train
python tools/train.py configs/basicvsr/basicvsr_2xb4_reds4.py
# multi-gpu train
./tools/dist_train.sh configs/basicvsr/basicvsr_2xb4_reds4.py 8
For more details, you can refer to Train a model part in train_test.md.
Test
Test Instructions
You can use the following commands to test a model with cpu or single/multiple GPUs.
# cpu test
CUDA_VISIBLE_DEVICES=-1 python tools/test.py configs/basicvsr/basicvsr_2xb4_reds4.py https://download.openmmlab.com/mmediting/restorers/basicvsr/basicvsr_reds4_20120409-0e599677.pth
# single-gpu test
python tools/test.py configs/basicvsr/basicvsr_2xb4_reds4.py https://download.openmmlab.com/mmediting/restorers/basicvsr/basicvsr_reds4_20120409-0e599677.pth
# multi-gpu test
./tools/dist_test.sh configs/basicvsr/basicvsr_2xb4_reds4.py https://download.openmmlab.com/mmediting/restorers/basicvsr/basicvsr_reds4_20120409-0e599677.pth 8
For more details, you can refer to Test a pre-trained model part in train_test.md.
@InProceedings{chan2021basicvsr,
author = {Chan, Kelvin CK and Wang, Xintao and Yu, Ke and Dong, Chao and Loy, Chen Change},
title = {BasicVSR: The Search for Essential Components in Video Super-Resolution and Beyond},
booktitle = {Proceedings of the IEEE conference on computer vision and pattern recognition},
year = {2021}
}