PySlowFast: a FAIR codebase for video understanding models
PySlowFast: video understanding codebase from FAIR for reproducing state-of-the-art video models.
At a glance
- What is it?
- PySlowFast collects SlowFast, X3D, MViTv1 and MViTv2 backbones, plus self-supervised projects, in one PyTorch repository. It is a research codebase for people who train and evaluate video models, not a packaged inference library.
- Who is it for?
- Adopt PySlowFast if you are doing video recognition research and want reproducible baselines, pretrained checkpoints and configs for SlowFast, X3D or MViTv2, and you can read INSTALL.md and DATASET.md before touching code. Do not adopt it if you need a small dependency-light inference package: setup.py pulls in detectron2, fairscale and torchvision, and the repository ships no releases.
- 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?
- Activity is slowing. The repository last received commits 6 months 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 29, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What PySlowFast is for, and who it is aimed at
PySlowFast is a video understanding codebase from FAIR, released alongside an ICCV 2019 tutorial. Its stated goal in the README is to provide "state-of-the-art video backbones for video understanding research on different tasks (classification, detection, and etc)" and to support rapid implementation and evaluation of new video research ideas. That framing matters: the repository is organised around reproducing published methods, not around shipping a product.
The methods it implements are listed by paper in the README: SlowFast Networks, Non-local Neural Networks, Multigrid training, X3D, Multiscale Vision Transformers, a large-scale unsupervised spatiotemporal representation study, MViTv2, MaskFeat, MAE for video, and Reversible Vision Transformers. The backbone list is separate and slightly different: SlowFast, Slow, C2D, I3D, Non-local Network, X3D, MViTv1 and MViTv2, Rev-ViT and Rev-MViT.
If you are a researcher comparing spatiotemporal architectures on Kinetics or AVA, or a graduate student who needs a working baseline to modify, this is the intended audience. If you want to classify a video in a web service with a handful of dependencies, the scope is wrong for you.
How the repository is put together
The layout is visible from the top level. The slowfast/ package holds the library code, configs/ holds the experiment configurations, tools/ holds the training and evaluation entry points, projects/ holds per-paper work such as projects/mvit, projects/mvitv2, projects/multigrid, projects/mae, projects/maskfeat, projects/rev, projects/x3d, projects/contrastive_ssl and projects/pytorchvideo, and demo/ holds example scripts split into demo/AVA and demo/Kinetics.
That split is the design decision worth noticing. Core backbones live in the package; anything tied to a specific paper lives under projects/ with its own README. The README points readers to those sub-READMEs rather than duplicating their instructions, so a method can be added without reshaping the main tree.
Configuration is handled by yacs and PyYAML, both listed as install requirements in setup.py, which is consistent with a config-driven training loop: you pick a YAML file from configs/, override keys, and run a tool. The package itself installs as slowfast version 1.0. There is no releases feed in the repository metadata, so the version string in setup.py is the only version signal a reader gets.
Installing PySlowFast and running a first model
The README does not inline install commands. It says to find installation instructions for PyTorch and PySlowFast in INSTALL.md, and to follow DATASET.md at slowfast/datasets/DATASET.md to prepare datasets. Treat those two files as the source of truth; the steps below only cover what the repository files themselves state.
The package is installable from the checkout. setup.py declares the distribution name as slowfast and lists the runtime dependencies, including yacs, pyyaml, av, detectron2, torchvision, fairscale and tensorboard.
python setup.py installExpect a heavy dependency resolution step rather than a quick wheel: detectron2 and fairscale are not trivial installs, and INSTALL.md is where the supported PyTorch and CUDA combination is described. There is also a linter.sh at the top level for formatting checks.
For a first run, the README defers to GETTING_STARTED.md, which it describes as the example to follow to start playing video models. The demo directory gives the shape of that workflow: demo/Kinetics for classification and demo/AVA for action detection, with demo/visualization for the inspection tools.
Before downloading anything, check MODEL_ZOO.md. The README states that baseline results and trained models are available for download there, and the configs/ directory is where the matching experiment files live. A first real use is therefore: pick a config, confirm the checkpoint exists in MODEL_ZOO.md, prepare the dataset per DATASET.md, then run the corresponding tool. The repository does not document a single canonical inference command in the README, so read the demo scripts rather than guessing flags.
Where the dependency weight becomes a problem
The install_requires list in setup.py is the clearest limitation. Alongside yacs, pyyaml, av, termcolor, simplejson, tqdm, psutil, opencv-python, pandas, PIL, sklearn and tensorboard, it includes detectron2 and fairscale. detectron2 is a detection framework with its own build requirements, and it is pulled in as a hard dependency of the package even if you only want a classification backbone. That makes PySlowFast a poor fit for environments where you want a small, auditable dependency tree, or where you cannot build detectron2 at all.
There is a second, quieter mismatch. The README describes the codebase as light-weight, but the install surface and the per-project layout say otherwise. Each paper under projects/ carries its own README, which is good for isolation and awkward for a newcomer who has to work out which instructions apply to the backbone they want.
The documentation boundary is also worth stating plainly. The README does not document rollback, does not describe a packaging or release process, and gives no versioning policy beyond the 1.0 string in setup.py. If your team needs pinned releases with changelogs, this repository does not provide them; you would be tracking the main branch.
PySlowFast compared with PyTorchVideo
The README itself points to PyTorchVideo: PySlowFast supports PyTorchVideo models and datasets, with details in projects/pytorchvideo/README.md. That makes the two projects adjacent rather than interchangeable, and the difference is in what each one owns.
PySlowFast is built around reproducing named methods and their training recipes. Its centre of gravity is the configs, the model zoo and the training and evaluation tooling for SlowFast, X3D, MViT and the rest. The per-paper projects under projects/ exist because a paper needs its own training regime, not just its own network definition.
PyTorchVideo sits on the other side of that line: it is a model and dataset library that PySlowFast integrates with, so the models and datasets are consumed as components. If your job is to run a pretrained video model inside another PyTorch pipeline, the library route is the shorter path. If your job is to retrain, ablate or extend a published video architecture and compare against its reported baseline, PySlowFast is the one that carries the recipes. The README does not claim one replaces the other, and the integration note suggests the intended relationship is complementary.
Licence and the cost of keeping up
PySlowFast is released under the Apache 2.0 license, as stated in the README and as the LICENSE file at the top level. Apache 2.0 is a permissive licence with an explicit patent grant, which is generally friendlier for commercial reuse than a copyleft licence, but the repository also carries a CODE_OF_CONDUCT.md and a CONTRIBUTING.md, so contributions are governed by project process as well as by the licence. This is a description of what the repository states, not legal advice; check the LICENSE text and your own obligations.
Upgrade cost is the harder question. The repository metadata shows no releases, so there is no changelog to read and no version to pin beyond the 1.0 in setup.py. The last push to the default branch was on 2026-03-16, roughly six months before today. Practically, that means adopting PySlowFast is adopting a branch: you will be diffing commits yourself when something in the dependency chain moves, and the detectron2 and fairscale requirements are the most likely things to move.
The citation block in the README asks users to cite the 2020 PySlowFast entry if the codebase is useful in research. For academic users that is part of the adoption cost, not an afterthought.
Editorial conclusion
Adopt PySlowFast if you are doing video recognition research and want reproducible baselines, pretrained checkpoints and configs for SlowFast, X3D or MViTv2, and you can read INSTALL.md and DATASET.md before touching code. Do not adopt it if you need a small dependency-light inference package: setup.py pulls in detectron2, fairscale and torchvision, and the repository ships no releases. Verify first that the model you want has a config in configs/ and an entry in MODEL_ZOO.md, then check the install notes for the CUDA, PyTorch and detectron2 combination the project asks for.
Frequently asked questions
What is PySlowFast?
PySlowFast is an open source video understanding codebase from FAIR that provides state-of-the-art video classification models with efficient training. It implements backbones including SlowFast, Slow, C2D, I3D, Non-local Network, X3D, MViTv1 and MViTv2, Rev-ViT and Rev-MViT.
What is the SlowFast model?
SlowFast Networks for Video Recognition is one of the methods implemented in the repository, and SlowFast is also listed among the supported backbone architectures. The README links the paper and includes the model among the baselines available through MODEL_ZOO.md.
What is the difference between slow and fast in PySlowFast?
The repository lists SlowFast and Slow as separate backbone architectures, and SlowFast Networks for Video Recognition is the paper that defines the two-pathway design. The README does not explain the pathway split in detail, so read the linked paper for the mechanism.
How do I install PySlowFast?
The README directs readers to INSTALL.md for installation instructions for PyTorch and PySlowFast, and to slowfast/datasets/DATASET.md for dataset preparation. The package itself is a setuptools distribution named slowfast with version 1.0.
Where are the pretrained PySlowFast models?
The README states that baseline results and trained models are available for download in the PySlowFast Model Zoo, which is MODEL_ZOO.md at the top level of the repository. Matching experiment configs live in the configs/ directory.
Official sources
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.
[](https://hysenlabs.com/projects/facebookresearch-slowfast)
Community notes