Open-source project
JingyunLiang/VRT avatar
JingyunLiang/VRT

VRT for Video Restoration: PyTorch Models and Inference

VRT: A Video Restoration Transformer (official repository)

1,552 stars138 forksPythonNOASSERTION

At a glance

What is it?
JingyunLiang/VRT is an official PyTorch repository for video super-resolution, deblurring, denoising, frame interpolation, and space-time super-resolution. It suits researchers who need pretrained models and inference code, but the custom licence and sparse operating documentation require careful review.
Who is it for?
VRT is suitable for researchers who already work with PyTorch, can supply compatible video and test data, and need pretrained models across several video restoration tasks. It is a poor fit for users seeking a documented one-command installer, a permissive license confirmed in advance, or a maintained production service.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 45 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 October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

VRT Targets Multi-Task Video Restoration

VRT addresses the problem of recovering or increasing the quality of video sequences rather than repairing isolated images. The repository README lists video super-resolution, video deblurring, video denoising, video frame interpolation, and space-time video super-resolution as supported use cases. That breadth is useful for computer vision researchers working with temporal data, because each task can use information from more than one frame. Super-resolution seeks higher spatial detail, deblurring seeks sharper motion boundaries, and denoising seeks cleaner frames while preserving temporal content.

The intended audience is not a general video player or editing application. The project is an official PyTorch implementation of the paper “VRT: A Video Restoration Transformer,” aimed at researchers who can work with model checkpoints, datasets, test directories, and Python inference code. The README links to the paper, supplementary material, pretrained models, and visual results. It also reports performance gains for named datasets, including REDS, Vimeo90K, Vid4, UDM10, GoPro, DVD, DAVIS, Set8, and UCF101. Those figures are repository claims rather than independent measurements, so they should be treated as reported results, not as a guarantee for a new dataset.

Repository Structure Exposes a Research Inference Workflow

The repository layout suggests a research-oriented rather than library-oriented project. The root contains `main_test_vrt.py`, which is the visible inference entry point. The repository also includes `model_zoo/`, `models/`, `utils/`, `data/`, and `testsets/`. The README does not document the individual APIs of those directories, so their exact responsibilities should be confirmed from the files themselves.

This separation is important for VRT. A user does not receive a documented high-level `restore_video()` function in the README. Instead, the visible workflow is exposed through Python code and checkpoint selection. The repository is therefore closer to a reproducible research implementation than a finished application with a stable public API. The script name also suggests that the primary operation is testing or inference over a prepared test set. The README excerpt does not provide the complete command line, required arguments, supported video formats, or output naming behavior, so those details cannot be reconstructed from the script name alone.

VRT Model Zoo and Released Assets

Pretrained models are available through the GitHub releases area rather than being described as bundled source files. This keeps large binary assets outside the normal source tree, but it also means that adopting VRT requires an extra download and checkpoint-management step. The README links pretrained models and visual results under the project’s releases, and the release list identifies `v0.0` as the release containing pretrained models, supplementary material, testsets, and visual results.

The model zoo matters because the supported tasks are not necessarily represented by one interchangeable checkpoint. A user selecting a video restoration model needs to match the checkpoint to the intended task and dataset. The README does not enumerate checkpoint filenames, parameter counts, supported resolutions, frame counts, or required video preprocessing. That omission makes checkpoint verification the first practical engineering task. There is no documented guarantee in the README that arbitrary aspect ratios, long clips, compressed videos, or missing frames will be accepted by the inference script.

The release structure also creates an upgrade decision. A new checkpoint may change the task mapping or expected input format, but the README does not provide a migration guide. Engineers should record the release used with each result rather than assuming that a later model file is interchangeable.

VRT Installation Requirements and First Use

The repository provides `requirements.txt`, but the README does not give a complete installation tutorial or a first inference command. According to the repository documentation, the project should be obtained from the official GitHub repository, and its Python dependencies are listed in `requirements.txt`. The requirements file specifies direct Git dependencies rather than ordinary package names for several libraries, including `torch`, `torchvision`, `numpy`, `opencv-python`, `Pillow`, `scipy`, `scikit-image`, `requests`, `pyyaml`, `timm`, `einops`, `addict`, and `future`.

Because the README does not state an approved installation command, it would be misleading to invent one. The first real use also cannot be reproduced from the README because the arguments accepted by `main_test_vrt.py` are not shown. A prospective user should inspect that script, select a checkpoint from `model_zoo/`, place data in the expected directory structure, and then run the script according to its actual argument parser. The repository’s `testsets/` directory may provide sample inputs, but the README does not describe the expected filenames or directory layout.

This is a concrete adoption constraint. VRT may be appropriate for an existing PyTorch research environment, yet it is inconvenient for a new user expecting a documented installer, a sample input directory, and a copy-and-paste command.

Transformer-Based Restoration Has Resource Boundaries

VRT is a video transformer rather than a frame-by-frame image restoration utility. The name and paper description indicate that the model is designed to model video restoration over temporal content. That design goal is useful when neighboring frames contain complementary evidence, but it also makes clip length and frame resolution central operational variables. The README does not document memory limits, runtime, supported tensor sizes, tiling behavior, or mixed-precision behavior, so those constraints cannot be quantified from the repository documentation.

The README identifies RVRT as a related project with “more balanced model size, testing memory and runtime.” That is a meaningful warning about VRT’s own resource profile, although the repository does not provide a direct benchmark table for RVRT versus VRT in the README. For a long video, an engineer may need to split the sequence into chunks, but the README does not confirm whether the project provides such a feature or how temporal boundaries would affect output quality. Assuming automatic chunking would be unsafe.

VRT is also the wrong tool when the input is a single still image, when the desired result must be produced through a stable library API, or when deployment hardware cannot accommodate the project’s undocumented video processing requirements. In those cases, an image-focused restoration model or a simpler frame-based pipeline may be a better fit.

VRT Compared With RVRT and Image-Focused Restoration

RVRT is the most relevant alternative identified by the README because it comes from the same research line and is explicitly described as offering a more balanced model size, testing memory, and runtime. RVRT uses a recurrent video restoration transformer, while VRT is presented as a transformer-based restoration model for multiple video tasks. The practical difference is therefore not simply model quality. It is the resource and temporal-processing trade-off between VRT’s video transformer approach and a recurrent design.

The README’s performance claims for VRT cover several restoration settings, while its RVRT notice points users toward a different resource balance. It does not provide a full deployment comparison, so a team should not choose RVRT solely from the short notice. It should compare checkpoint availability, required memory, processing time, and output quality for its own clips.

For single-image super-resolution, the repository also links SwinIR. That project addresses image restoration with a different input unit and does not provide VRT’s temporal video context. SwinIR is therefore a more natural choice when the source is one image or when video consistency is irrelevant. VRT is more appropriate when neighboring frames matter and the user can operate a research-style PyTorch pipeline.

Licence, Maintenance, and Upgrade Cost in VRT

The repository declares its licence as “Other,” with a custom licence that GitHub cannot classify. The repository points to the `LICENSE` file but does not reproduce its terms in the README. Before incorporating VRT into a commercial product, distributing derivatives, or using a pretrained checkpoint internally, an engineer must inspect that file and confirm whether model weights, code, and outputs are covered by the same terms. This is a licensing review point, not legal advice, and the repository description alone is not sufficient evidence of permissive reuse.

The repository is not archived, and its last push was on 2026-09-08. That is recent activity, but the only listed release is `v0.0`, dated 2022-01-18. The gap between the release history and the repository push history means that source activity and packaged model availability should be evaluated separately. The README’s news entries are also concentrated in 2022. A recent push does not by itself establish a regular release cadence or guarantee that new checkpoints, documentation, and compatible dependencies will follow.

Upgrade cost is consequently operational rather than merely technical. Users may need to compare model files, rerun inference, and verify whether changes in `main_test_vrt.py`, `models/`, or `model_zoo/` affect output layout. The custom licence adds a separate review cost that ordinary MIT or Apache-style adoption would not have.

Editorial conclusion

VRT is suitable for researchers who already work with PyTorch, can supply compatible video and test data, and need pretrained models across several video restoration tasks. It is a poor fit for users seeking a documented one-command installer, a permissive license confirmed in advance, or a maintained production service. Check the contents of `LICENSE`, the checkpoint selected from `model_zoo`, and the exact behavior of `main_test_vrt.py` before adopting the project. Based on the repository layout, the strongest adoption case is controlled experimentation with the released model set, not an undocumented deployment workflow.

Frequently asked questions

What video restoration tasks does VRT support?

The README lists video super-resolution, video deblurring, video denoising, video frame interpolation, and space-time video super-resolution. It reports results for several associated datasets.

How do I install VRT and run inference?

The repository contains `requirements.txt` and `main_test_vrt.py`, but the README does not provide a complete installation command or the script’s arguments. Inspect those files and the `testsets/` layout before attempting a first run.

Does VRT include pretrained models?

Yes. The README links to pretrained models in the GitHub releases area, and the listed `v0.0` release includes pretrained models, supplementary material, testsets, and visual results.

What is the main maintenance concern with VRT?

The repository is not archived and its last push was on 2026-09-08, but the only listed release is `v0.0` from 2022-01-18. Users should check whether current source activity includes updated checkpoints, documentation, and compatible inference instructions.

Official sources

  1. Issues
  2. JingyunLiang/VRT on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/jingyunliang-vrt.svg)](https://hysenlabs.com/projects/jingyunliang-vrt)

Was this useful?