PyTorch image models, scripts, pretrained weights -- ResNet, ResNeXT, EfficientNet, EfficientNetV2, NFNet, Vision Transformer, MixNet, MobileNet-V3/V2, RegNet, DPN, CSPNet, and more
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Ross Wightman fc8b8afb6f
Fix a silly bug in Sample version of EvoNorm missing x* part of swish, update EvoNormBatch to accumulated unbiased variance.
4 years ago
.github/workflows Update test workflow 4 years ago
convert Add working Gluon Xception-65 model. Some cleanup still needed. 5 years ago
docs Bump version to 0.2.1 and update README 4 years ago
notebooks ImageNet-1k vs ImageNet-v2 comparison 5 years ago
results Re-ran batch validation on all models across all sets 4 years ago
tests Fix a few more issues related to #216 w/ TResNet (space2depth) and FP16 weights in wide resnets. Also don't completely dump pretrained weights in in_chans != 1 or 3 cases. 4 years ago
timm Fix a silly bug in Sample version of EvoNorm missing x* part of swish, update EvoNormBatch to accumulated unbiased variance. 4 years ago
.gitattributes Add .gitattributes 5 years ago
.gitignore Implement Eca modules 5 years ago
LICENSE Add Apache LICENSE file 6 years ago
MANIFEST.in Fix pruned txt files not being installed during pip install 5 years ago
README.md Update README.md 4 years ago
avg_checkpoints.py Fix some attributions, add copyrights to some file docstrings 4 years ago
clean_checkpoint.py Fix some attributions, add copyrights to some file docstrings 4 years ago
distributed_train.sh Fix distributed train script 6 years ago
hubconf.py Simpler approach to loading entrypoints in hubconf works properly 5 years ago
inference.py Merge branch 'logger' into features. Change 'logger' to '_logger'. 4 years ago
mkdocs.yml Fix some documentation rendering issues 4 years ago
requirements-docs.txt Fix some documentation rendering issues 4 years ago
requirements-sotabench.txt Update requirements so PyTorch 1.4 is min, add separate sotabench reqs to force 1.4 and prevent error with 1.5 5 years ago
requirements.txt Update requirements so PyTorch 1.4 is min, add separate sotabench reqs to force 1.4 and prevent error with 1.5 5 years ago
setup.py Update setup.py 4 years ago
sotabench.py Update README with model results and attribution. Make scheduler factory bit more robust to arg differences, add noise to plateau lr and fix min/max. 4 years ago
sotabench_setup.sh Update requirements so PyTorch 1.4 is min, add separate sotabench reqs to force 1.4 and prevent error with 1.5 5 years ago
train.py Final cleanup of mixup/cutmix. Element/batch modes working with both collate (prefetcher active) and without prefetcher. 4 years ago
validate.py Update results csv file rank/diff script and small validate script tweak for batch validation 4 years ago

README.md

PyTorch Image Models, etc

What's New

Aug 12, 2020

  • New/updated weights from training experiments
    • EfficientNet-B3 - 82.1 top-1 (vs 81.6 for official with AA and 81.9 for AdvProp)
    • RegNetY-3.2GF - 82.0 top-1 (78.9 from official ver)
    • CSPResNet50 - 79.6 top-1 (76.6 from official ver)
  • Add CutMix integrated w/ Mixup. See pull request for some usage examples
  • Some fixes for using pretrained weights with in_chans != 3 on several models.

Aug 5, 2020

Universal feature extraction, new models, new weights, new test sets.

  • All models support the features_only=True argument for create_model call to return a network that extracts feature maps from the deepest layer at each stride.
  • New models
    • CSPResNet, CSPResNeXt, CSPDarkNet, DarkNet
    • ReXNet
    • (Modified Aligned) Xception41/65/71 (a proper port of TF models)
  • New trained weights
    • SEResNet50 - 80.3 top-1
    • CSPDarkNet53 - 80.1 top-1
    • CSPResNeXt50 - 80.0 top-1
    • DPN68b - 79.2 top-1
    • EfficientNet-Lite0 (non-TF ver) - 75.5 (submitted by @hal-314)
  • Add 'real' labels for ImageNet and ImageNet-Renditions test set, see results/README.md
  • Test set ranking/top-n diff script by @KushajveerSingh
  • Train script and loader/transform tweaks to punch through more aug arguments
  • README and documentation overhaul. See initial (WIP) documentation at https://rwightman.github.io/pytorch-image-models/
  • adamp and sgdp optimizers added by @hellbell

June 11, 2020

Bunch of changes:

  • DenseNet models updated with memory efficient addition from torchvision (fixed a bug), blur pooling and deep stem additions
  • VoVNet V1 and V2 models added, 39 V2 variant (ese_vovnet_39b) trained to 79.3 top-1
  • Activation factory added along with new activations:
    • select act at model creation time for more flexibility in using activations compatible with scripting or tracing (ONNX export)
    • hard_mish (experimental) added with memory-efficient grad, along with ME hard_swish
    • context mgr for setting exportable/scriptable/no_jit states
  • Norm + Activation combo layers added with initial trial support in DenseNet and VoVNet along with impl of EvoNorm and InplaceAbn wrapper that fit the interface
  • Torchscript works for all but two of the model types as long as using Pytorch 1.5+, tests added for this
  • Some import cleanup and classifier reset changes, all models will have classifier reset to nn.Identity on reset_classifer(0) call
  • Prep for 0.1.28 pip release

May 12, 2020

May 3, 2020

May 1, 2020

  • Merged a number of execellent contributions in the ResNet model family over the past month
  • 200 pretrained models in total now with updated results csv in results folder

April 5, 2020

  • Add some newly trained MobileNet-V2 models trained with latest h-params, rand augment. They compare quite favourably to EfficientNet-Lite
    • 3.5M param MobileNet-V2 100 @ 73%
    • 4.5M param MobileNet-V2 110d @ 75%
    • 6.1M param MobileNet-V2 140 @ 76.5%
    • 5.8M param MobileNet-V2 120d @ 77.3%

March 18, 2020

  • Add EfficientNet-Lite models w/ weights ported from Tensorflow TPU
  • Add RandAugment trained ResNeXt-50 32x4d weights with 79.8 top-1. Trained by Andrew Lavin (see Training section for hparams)

Introduction

PyTorch Image Models (timm) is a collection of image models, layers, utilities, optimizers, schedulers, data-loaders / augmentations, and reference training / validation scripts that aim to pull together a wide variety of SOTA models with ability to reproduce ImageNet training results.

The work of many others is present here. I've tried to make sure all source material is acknowledged via links to github, arxiv papers, etc in the README, documentation, and code docstrings. Please let me know if I missed anything.

Models

All model architecture families include variants with pretrained weights. The are variants without any weights. Help training new or better weights is always appreciated. Here are some example training hparams to get you started.

A full version of the list below with source links can be found in the documentation.

Features

Several (less common) features that I often utilize in my projects are included. Many of their additions are the reason why I maintain my own set of models, instead of using others' via PIP:

Results

Model validation results can be found in the documentation and in the results tables

Getting Started

See the documentation

Train, Validation, Inference Scripts

The root folder of the repository contains reference train, validation, and inference scripts that work with the included models and other features of this repository. They are adaptable for other datasets and use cases with a little hacking. See documentation for some basics and training hparams for some train examples that produce SOTA ImageNet results.