Model or dataset
taco-group/SparkVSR avatar
taco-group/SparkVSR

SparkVSR: Turning Sparse Keyframes Into a Control Signal for Video Super-Resolution

[ECCV 2026] SparkVSR: Interactive Video Super-Resolution via Sparse Keyframe Propagation

728 stars69 forksPythonApache-2.0

At a glance

What is it?
SparkVSR is an ECCV 2026 video super-resolution framework that lets you pick a few keyframes, enhance them with any image super-resolution model, and propagate those priors across the whole clip. It is a research release, not a production pipeline, and the README is honest about that in places and thin in others.
Who is it for?
SparkVSR is aimed at researchers and VFX-adjacent engineers who need frame-level control over video restoration and are willing to run a two-stage diffusion pipeline on their own GPUs. It is the wrong tool if you want a single-command upscaler for arbitrary footage, or if you cannot supply or select keyframes at all.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 44 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The black-box problem SparkVSR is built around

Most video super-resolution models give you one lever: the input. You hand over a low-resolution clip, the model returns something sharper, and if a face comes back with the wrong nose or a texture turns to mush, your only recourse is to run the whole thing again and hope. The SparkVSR abstract states the problem directly: existing VSR approaches "behave like black boxes at inference time" and users "cannot reliably correct unexpected artifacts, but instead can only accept whatever the model produces". That is the gap the paper targets. The intended user is someone doing restoration or finishing work who already knows which frames matter, a colourist who can point at the three frames where a face is visible, or a researcher who wants a controllable baseline rather than another end-to-end regressor. The authors are at Texas A&M University and YouTube, Google, and the work is accepted to ECCV 2026.

Keyframes as the control signal, and how the prior travels

The mechanism is a two-stage, keyframe-conditioned pipeline that the README describes as "latent-pixel". Stage one operates in latent space: the model fuses latents from the low-resolution video with sparsely encoded high-resolution keyframe latents, which is where cross-space propagation is learned. Stage two works at the pixel level to refine perceptual detail. The important constraint is that propagation stays "grounded by the original LR video motion", so the keyframe prior does not simply overwrite motion; the low-resolution sequence still drives the temporal structure. Keyframe selection is flexible by design. The README lists three modes: manual specification, codec I-frame extraction, and random sampling. There is also a reference-free guidance mechanism that "continuously balances keyframe adherence and blind restoration", which matters because it means the pipeline still produces something usable when the keyframes are absent, sparse, or imperfect. The authors go further and claim the framework generalises out of the box to unseen tasks such as old-film restoration and video style transfer, which reframes it as a generic keyframe-conditioned video processing framework rather than a single-task restorer.

Getting it running: conda, torch 2.5.0, and a CUDA index URL

The README gives an explicit sequence. Clone the repository, create a Python 3.10 conda environment, install PyTorch from the CUDA 12.4 wheel index, then install the rest. The commands as written are: git clone https://github.com/taco-group/SparkVSR followed by cd SparkVSR, then conda create -n sparkvsr python=3.10, conda activate sparkvsr, pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu124, and finally pip install -r requirements.txt. The stated dependency floor is Python 3.10+, PyTorch >= 2.5.0, and Diffusers. The README itself warns that the install command "may need to be adjusted according to your platform, CUDA version, and desired PyTorch version", which is a real caveat rather than boilerplate: the pinned cu124 index will not match every machine. Training data is expected under datasets/train/ with two subdirectories, HQ-VSR and DIV2K_train_HR, matching the datasets used by DOVE. HQ-VSR is listed as 2,055 videos and DIV2K-HR as 800 images, both with external download links. Pretrained weights are hosted on Hugging Face under JiongzeYu/SparkVSR.

The training data requirement is not small

Read the dataset table before you plan a fine-tune. HQ-VSR is 2,055 videos and DIV2K-HR is 800 images, and both must be downloaded and laid out under datasets/train/ before training code will find them. The README points to Google Drive for HQ-VSR and the official ETH link for DIV2K_train_HR. Nothing in the supplied material states the disk footprint, the number of GPUs used, or the wall-clock time for a training run, so treat any estimate you see elsewhere as unverified. The inference side is better documented in intent than in detail: the README references an inference pipeline figure and a training pipeline figure, and the TODO list confirms that inference code, pretrained models, training code, the project page, and a ComfyUI wrapper have all been released. What the truncated README does not show is the actual inference command, the flag names for the three keyframe selection modes, or the guidance scale parameter. Those live in the repository and need to be read there.

Where the approach breaks down

The design assumes you can name good keyframes. If you cannot, the framework falls back on random sampling or I-frame extraction, and the reference-free guidance mechanism takes over to balance adherence against blind restoration. That is a graceful degradation path, not a guarantee, and the README does not quantify how much quality drops when the keyframes are poor or absent. There is a second, sharper limitation: the pipeline depends on an external image super-resolution model to produce the high-resolution keyframes in the first place. The README says users can super-resolve keyframes "using any off-the-shelf image super-resolution (ISR) model", which means part of your output quality is determined by a component SparkVSR does not ship or benchmark. If your chosen ISR model hallucinates detail, SparkVSR propagates that hallucination across the sequence with temporal consistency, which can look worse than inconsistent per-frame artefacts because it is harder to spot. The two-stage latent-pixel diffusion design also implies real GPU cost, though no memory figure appears in the supplied material. And the reported gains (up to 24.6% on CLIP-IQA, 21.8% on DOVER, 5.6% on MUSIQ) come from the paper's own benchmarks; the Papers with Code badges show first place on RealVSR 4x restoration under the DOVE protocol, second on SPMCS 4x RealBasicVSR degradation, and third on both UDM10 and YouHQ40, so the results are mixed across benchmarks rather than uniformly leading.

The alternative: Real-ESRGAN and blind per-frame upscaling

The obvious alternative is a blind upscaler such as Real-ESRGAN, applied per frame. The difference in approach is the whole point of the paper. Real-ESRGAN takes a degraded image and returns a plausible sharp one with no user input beyond the weights and scale factor; it has no concept of a keyframe, no propagation stage, and no mechanism to keep a chosen frame's appearance stable across a clip. SparkVSR inverts that: it accepts that blind restoration is uncontrollable, and moves the control to a sparse set of frames the user selects. The trade-off is that you now have a keyframe selection step, an external ISR model in the loop, and a heavier two-stage diffusion pipeline, in exchange for the ability to say "this frame is correct, make the rest match it". If your footage is uniform and you have no specific frames to anchor on, Real-ESRGAN's blind approach is simpler and needs no keyframe decisions. If your footage has a few critical frames and a lot of filler, SparkVSR's propagation model is the more direct fit.

Licence, maintenance and what to check before adopting

The repository is Apache-2.0, which permits commercial use and modification with the usual notice and patent terms, but that covers the code in this repository only. The pretrained checkpoints on Hugging Face and any third-party ISR model you plug in are separate artefacts with their own terms, and the supplied material does not state what those are. This is not legal advice; read the model card and the ISR model's licence yourself. On maintenance, the last push is dated 2026-08-03, the same day as the Papers with Code announcement, and the TODO list is fully checked off, so the initial release scope is complete. There are no retrieved releases, which means version pinning has to be done against commit hashes rather than tags. The README also notes community deployments on RunningHub.ai and CNAPS.ai and a ComfyUI-SparkVSR wrapper released 2026-05-11; if you are evaluating it for a node-based workflow, check what those wrappers expose before building your own integration, because the wrapper's keyframe selection options may not match the three modes the paper describes.

Editorial conclusion

SparkVSR is aimed at researchers and VFX-adjacent engineers who need frame-level control over video restoration and are willing to run a two-stage diffusion pipeline on their own GPUs. It is the wrong tool if you want a single-command upscaler for arbitrary footage, or if you cannot supply or select keyframes at all. Before committing, verify the model checkpoint size and GPU memory requirement on the Hugging Face model page (JiongzeYu/SparkVSR), confirm the exact inference script and flag names in the repository, and check whether the ComfyUI wrapper covers your keyframe selection mode. The Apache-2.0 licence covers the code in this repository; the pretrained weights and any third-party ISR model you feed it may carry separate terms, so read those before shipping anything.

Official sources

  1. Issues
  2. License: Apache-2.0
  3. Project website
  4. README
  5. taco-group/SparkVSR on GitHub
Community notes

Community notes