MCPcopy Index your code
hub / github.com/claudiom4sir/StableVSR

github.com/claudiom4sir/StableVSR @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
58 symbols 251 edges 7 files 18 documented · 31%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Enhancing Perceptual Quality in Video Super-Resolution through Temporally-Consistent Detail Synthesis using Diffusion Models (ECCV 2024)

Claudio Rota, Marco Buzzelli, Joost van de Weijer

[Paper] [arXiv] [Poster]

Abstract

In this paper, we address the problem of enhancing perceptual quality in video super-resolution (VSR) using Diffusion Models (DMs) while ensuring temporal consistency among frames. We present StableVSR, a VSR method based on DMs that can significantly enhance the perceptual quality of upscaled videos by synthesizing realistic and temporally-consistent details. We introduce the Temporal Conditioning Module (TCM) into a pre-trained DM for single image super-resolution to turn it into a VSR method. TCM uses the novel Temporal Texture Guidance, which provides it with spatially-aligned and detail-rich texture information synthesized in adjacent frames. This guides the generative process of the current frame toward high-quality and temporally-consistent results. In addition, we introduce the novel Frame-wise Bidirectional Sampling strategy to encourage the use of information from past to future and vice-versa. This strategy improves the perceptual quality of the results and the temporal consistency across frames. We demonstrate the effectiveness of StableVSR in enhancing the perceptual quality of upscaled videos while achieving better temporal consistency compared to existing state-of-the-art methods for VSR.

Method overview

networkfull

Usage

Environment

The code is based on Python 3.8.17, CUDA 11, and diffusers.

Conda setup

conda create -n stablevsr python=3.8.17 -y
git clone https://github.com/claudiom4sir/StableVSR.git
cd StableVSR
conda activate stablevsr
pip install -r requirements.txt

Datasets

Download the REDS dataset from here (sharp + low-resolution). Data are expected to be in the format root/hr/sequences/frames and root/lr/sequences/frames.

Pretrained models

Pretrained models are available here. If you run the train or test code, you don't need to download them explicitly as they are fetched with .from_pretrained('claudiom4sir/StableVSR').

Train

Adjust the dataroot options in dataset/config_reds.yaml. Then, adjust the options in train.sh. Use the following command to start training:

bash ./train.sh

Test

python test.py --in_path YOUR_PATH_TO_LR_SEQS --out_path YOUR_OUTPUT_PATH --num_inference_steps 50 --controlnet_ckpt YOUR_PATH_TO_CONTROLNET_CKPT_FOLDER

Evaluation

python eval.py --gt_path YOUR_PATH_TO_GT_SEQS --out_path YOUR_OUTPUT_PATH

Memory requirements

Training with the provided configuration requires about 17GB GPU. Evaluation on REDS (320x180 -> 1280x720) about 14.5 GB.

Demo video

https://github.com/user-attachments/assets/60c5fc3b-819c-4242-bd73-e5e3b0f7beb3

https://github.com/user-attachments/assets/9fbc6fad-a088-41d9-be38-af53a8206916

https://github.com/user-attachments/assets/2f8a36f7-3b50-4eb1-baa8-e914a8931543

https://github.com/user-attachments/assets/7b379ad5-ecba-468a-811a-0a9cc4c8456d

Citations

@inproceedings{rota2024enhancing,
  title={Enhancing perceptual quality in video super-resolution through temporally-consistent detail synthesis using diffusion models},
  author={Rota, Claudio and Buzzelli, Marco and van de Weijer, Joost},
  booktitle={European Conference on Computer Vision},
  pages={36--53},
  year={2024},
  organization={Springer}
}

Contacts

If you have any questions, please contact me at claudio.rota@unimib.it

Core symbols most depended-on inside this repo

get_flow
called by 5
util/flow_utils.py
flow_warp
called by 4
util/flow_utils.py
_get_variance
called by 3
scheduler/ddpm_scheduler.py
step
called by 3
scheduler/ddpm_scheduler.py
compute_flow_magnitude
called by 3
util/flow_utils.py
alpha_bar_fn
called by 2
scheduler/ddpm_scheduler.py
scale_model_input
called by 2
scheduler/ddpm_scheduler.py
set_timesteps
called by 2
scheduler/ddpm_scheduler.py

Shape

Method 34
Function 19
Class 5

Languages

Python100%

Modules by API surface

pipeline/stablevsr_pipeline.py18 symbols
scheduler/ddpm_scheduler.py15 symbols
train.py9 symbols
dataset/reds_dataset.py8 symbols
util/flow_utils.py7 symbols
test.py1 symbols

For agents

$ claude mcp add StableVSR \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact