pycls is an image classification codebase, written in PyTorch. It was originally developed for the On Network Design Spaces for Visual Recognition project. pycls has since matured and been adopted by a number of projects at Facebook AI Research.
The goal of pycls is to provide a simple and flexible codebase for image classification. It is designed to support rapid implementation and evaluation of research ideas. pycls also provides a large collection of baseline results (Model Zoo). The codebase supports efficient single-machine multi-gpu training, powered by the PyTorch distributed package, and provides implementations of standard models including ResNet, ResNeXt, EfficientNet, and RegNet.
Please see GETTING_STARTED
for brief installation instructions and basic usage examples.
We provide a large set of baseline results and pretrained models available for download in the pycls Model Zoo; including the simple, fast, and effective RegNet models that we hope can serve as solid baselines across a wide range of flop regimes.
The pycls codebase now provides powerful support for studying design spaces and more generally population statistics of models as introduced in On Network Design Spaces for Visual Recognition and Designing Network Design Spaces. This idea is that instead of planning a single pycls job (e.g., testing a specific model configuration), one can study the behavior of an entire population of models. This allows for quite powerful and succinct experimental design, and elevates the study of individual model behavior to the study of the behavior of model populations. Please see SWEEP_INFO
for details.
A number of projects at FAIR have been built on top of pycls:
- On Network Design Spaces for Visual Recognition
- Exploring Randomly Wired Neural Networks for Image Recognition
- Designing Network Design Spaces
- Fast and Accurate Model Scaling
- Are Labels Necessary for Neural Architecture Search?
- PySlowFast Video Understanding Codebase
If you are using pycls in your research and would like to include your project here, please let us know or send a PR.
If you find pycls helpful in your research or refer to the baseline results in the Model Zoo, please consider citing an appropriate subset of the following papers:
@InProceedings{Radosavovic2019,
title = {On Network Design Spaces for Visual Recognition},
author = {Ilija Radosavovic and Justin Johnson and Saining Xie Wan-Yen Lo and Piotr Doll{\'a}r},
booktitle = {ICCV},
year = {2019}
}
@InProceedings{Radosavovic2020,
title = {Designing Network Design Spaces},
author = {Ilija Radosavovic and Raj Prateek Kosaraju and Ross Girshick and Kaiming He and Piotr Doll{\'a}r},
booktitle = {CVPR},
year = {2020}
}
@InProceedings{Dollar2021,
title = {Fast and Accurate Model Scaling},
author = {Piotr Doll{\'a}r and Mannat Singh and Ross Girshick},
booktitle = {CVPR},
year = {2021}
}
pycls is released under the MIT license. Please see the LICENSE
file for more information.
We actively welcome your pull requests! Please see CONTRIBUTING.md
and CODE_OF_CONDUCT.md
for more info.