jamichss/Stream-DiffVSR
[ECCV 2026 Spotlight] The official repository of paper "Stream-DiffVSR: Low-Latency Streamable Video Super-Resolution via Auto-Regressive Diffusion"
Stream‑DiffVSR – Low‑latency, streamable video super‑resolution
What it does – Stream‑DiffVSR is a diffusion‑based video‑super‑resolution (VSR) system that works online: it only looks at past frames, so it can be used on live video streams. The model runs a distilled 4‑step denoiser, an Auto‑Regressive Temporal Guidance (ARTG) block that aligns motion cues, and a lightweight temporal decoder with a Temporal Processor Module (TPM) to keep details and temporal coherence.
Why it matters – Traditional diffusion VSR needs future frames and many denoising steps, giving latencies of several seconds to minutes. Stream‑DiffVSR processes a 720p frame in ~0.33 s on an RTX 4090, a >130× speed‑up over the previous online state‑of‑the‑art (TMP). This makes diffusion‑quality VSR feasible for real‑time or low‑latency applications such as video calls, streaming, or live broadcasting.
Key components
- Four‑step distilled denoiser – reduces the usual 20‑30 diffusion steps to just four, cutting inference time.
- Auto‑Regressive Temporal Guidance (ARTG) – injects motion‑aligned information from earlier frames while denoising the current latent.
- Temporal Processor Module (TPM) – part of a temporal‑aware decoder that refines spatial detail and enforces consistency across frames.
Getting started
- Clone & set up –
git clone https://github.com/jamichss/Stream-DiffVSR.gitthen create the conda environment fromrequirements.yml(or the RTX‑specificrequirements-cu12.txt). - Run inference – the CLI
inference.pypulls the pretrained model from Hugging Face automatically:
Input should be a folder of sub‑directories, each containing an ordered list of PNG frames.python inference.py \ --model_id Jamichsu/Stream-DiffVSR \ --in_path /path/to/low‑res/frames \ --out_path /path/to/high‑res/output \ --num_inference_steps 4 - Optional speed boost – add
--enable_tensorrt(requires specifying output height/width) to compile a TensorRT engine. This trades a tiny quality loss for higher throughput. - Gradio UI – install
requirements-app.txtand launchpython app.pyto get a web UI that extracts frames from a video, runs the model, and re‑assembles the upscaled video with original audio. - Docker – a ready‑to‑run image is provided; build with
docker build -t stream-diffvsr-gradio .and run with GPU access.
Training – The repo also contains scripts for reproducing the authors’ training pipeline:
- Stage 1: UNet training with rollout distillation.
- Stage 2: Train the TPM inside the temporal decoder.
- Stage 3: Train the ARTG while freezing the UNet and TPM.
Training uses the REDS and Vimeo‑90K datasets (paths set in dataset/config_*.yaml). The UNet is initialized from StableVSR weights, and the temporal decoder weights come from TAESD‑X4, both automatically downloaded.
Where to find the model – Pre‑trained weights are hosted on Hugging Face under Jamichsu/Stream-DiffVSR. The inference script fetches them on‑the‑fly, so no manual download is needed.
Citation – If you use the code or model, cite the arXiv paper (arXiv:2512.23709).
All information above is taken directly from the repository’s README.
Related
- Project
- Project
- Project
- Project