RelayVSR_X2 / README.md
lightx2v's picture
Update README.md
16c2a85 verified
|
Raw History Blame Contribute Delete
6.54 kB
metadata
tags:
  - relayvsr
  - lightx2v
  - video-super-resolution
  - super-resolution
  - video-restoration
  - video-enhancement
  - 2x-upscaling
  - safetensors

RelayVSR_X2

We trained this RelayVSR model for native, fixed 2× video super-resolution. It doubles the input video's width and height.

We found that RelayVSR's model design is effective at suppressing temporal flicker in upscaled videos. This is particularly useful for videos produced by generative video models: the generated video may occasionally contain subtle flicker, which super-resolution algorithms can amplify.

The original RelayVSR model uses a fixed 4× super-resolution scale, which incurs substantial inference time. To reduce this cost, we modified the model architecture and continued training to obtain a fixed 2× RelayVSR model, with inference supported by LightX2V.

We recommend RelayVSR as a super-resolution post-processing model for video generators such as MiniMax-H3. For example, a MiniMax-H3 video generated at 768 × 1344 can be upscaled by 2× to 1536 × 2688.

For inference instructions, see the LightX2V RelayVSR documentation.

Model Native scale Output dimensions
Original RelayVSR 4× 4W × 4H
RelayVSR X2 2× 2W × 2H

Inference Benchmark

On the tested clip, RelayVSR X2 with LightX2V processes 243 frames in 5.348 seconds (45.44 inference FPS) on a single NVIDIA H100 80GB.

Using the same drone rooftop input video: 1024 × 768, 243 frames, 24 fps, 10.125 seconds.

The input video was generated by MiniMax-H3 and contains some mild temporal flicker. This flicker is already present in the source video before super-resolution.

All cases ran sequentially on one NVIDIA H100 80GB HBM3 with PyTorch 2.11.0 + CUDA 13.0. Each row reports one measured run after same-resolution warmup.

Model / implementation Scale Output resolution Inference time (s) Inference FPS Output
SeedVR2-3B 2× 2048 × 1536 352.820 0.69 MP4
FlashVSR+ Turbo 2× 2048 × 1536 54.024 4.50 MP4
Open-H3-Regenerate-2K 2× 2048 × 1536 784.954 0.31 MP4
SwiftVR 2× 2048 × 1536 7.252 33.51 MP4
SwiftVR (LightX2V) 2× 2048 × 1536 6.399 37.98 MP4
RelayVSR 4× 4096 × 3072 26.332 9.23 MP4
RelayVSR (LightX2V) 4× 4096 × 3072 19.304 12.59 MP4
RelayVSR X2 (LightX2V) 2× 2048 × 1536 5.348 🚀 45.44 🚀 MP4

Video Comparison

Many super-resolution methods can amplify the temporal flicker already present in AI-generated input videos. RelayVSR can substantially alleviate this flicker, producing more temporally consistent results.

The original RelayVSR model is limited to fixed 4× upscaling, which incurs a higher computational cost and slower inference. To reduce this cost, we trained a native 2× super-resolution model based on RelayVSR. Our RelayVSR X2 model combines effective temporal-flicker suppression with fast inference, making it suited to upscaling AI-generated videos.

Model Files

Download both checkpoints into the same model directory:

File Description
wan_x2.safetensors Wan checkpoint for the 2× model
flash_x2.safetensors Flash checkpoint for the 2× model

Usage with LightX2V

You can use the LightX2V Docker image:

docker pull lightx2v/lightx2v:26062001-cu130

Run the following steps inside the container. First, clone the latest LightX2V source:

git clone https://github.com/ModelTC/LightX2V.git
cd LightX2V

Download the 2× weights:

hf download lightx2v/RelayVSR_X2 \
    wan_x2.safetensors flash_x2.safetensors \
    --local-dir ./models/RelayVSR_X2

Edit scripts/relayvsr/run_relayvsr_x2_sr.sh and set the absolute paths and GPU to use:

lightx2v_path="/absolute/path/to/LightX2V"
model_path="/absolute/path/to/LightX2V/models/RelayVSR_X2"
video_path="/absolute/path/to/input.mp4"
export CUDA_VISIBLE_DEVICES=0

Keep the script's X2 settings: --model_cls relayvsr_x2, --config_json "${lightx2v_path}/configs/relayvsr/relayvsr_x2.json", and --sr_ratio 2. Use both X2 checkpoints together.

Run from the LightX2V repository root:

bash scripts/relayvsr/run_relayvsr_x2_sr.sh

The default output is save_results/relayvsr_x2.mp4 inside the LightX2V repository. Change --save_result_path in the script to choose another output location.

For block offloading or multi-GPU execution, see the LightX2V RelayVSR usage guide. Use the corresponding relayvsr_x2_block_offload.json or relayvsr_x2_sp.json configuration. The default configuration enables compilation and warmup.

Upstream Sources

This model builds on the original RelayVSR project. Credit goes to the RelayVSR authors for their method and implementation.