An end-to-end PyTorch framework for image and video classification

Overview

GitHub license CircleCI PRs Welcome

What's New:

2020-11-20: Classy Vision v0.5 Released

New Features

  • Release Vision Transformers model implementation, with recipes(#646)
  • Implemented gradient clipping (#643)
  • Implemented gradient accumulation (#644)
  • Added support for AdamW (#636)
  • Added Precise batch norm hook (#592)
  • Added support for adaptive pooling in fully_convolutional_linear_head (#602)
  • Added support for sync batch norm group size (#534)
  • Added a CSV Hook to manually inspect model predictions
  • Added a ClassyModel tutorial (#485)
  • Migrated to Hydra 1.0 (#536)
  • Migrated off of tensorboardX (#488)

Breaking Changes

  • ClassyOptimizer API improvements
    • added OptionsView to retrieve options from the optimizer param_group
  • Removed ClassyModel.evaluation_mode (#521)
  • Removed ImageNetDataset, now a subset of ImagePathDataset (#494)
  • Renamed is_master to is_primary in distributed_util (#576)
2020-04-29: Classy Vision v0.4 Released

New Features

  • Release EfficientNet model implementation (#475)
  • Add support to convert any PyTorch model to a ClassyModel with the ability to attach heads to it (#461)
    • Added a corresponding tutorial on ClassyModel and ClassyHeads (#485)
  • Squeeze and Excitation support for ResNe(X)t and DenseNet models (#426, #427)
  • Made ClassyHooks registrable (#401) and configurable (#402)
  • Migrated to TorchElastic v0.2.0 (#464)
  • Add SyncBatchNorm support (#423)
  • Implement mixup train augmentation (#469)
  • Support LARC for SGD optimizer (#408)
  • Added convenience wrappers for Iterable datasets (#455)
  • Tensorboard improvements
    • Plot histograms of model weights to Tensorboard (#432)
    • Reduce data logged to tensorboard (#436)
  • Invalid (NaN / Inf) loss detection
  • Revamped logging (#478)
  • Add bn_weight_decay configuration option for ResNe(X)t models
  • Support specifying update_interval to Parameter Schedulers (#418)

Breaking changes

  • ClassificationTask API improvement and train_step, eval_step simplification
    • Removed local_variables from ClassificationTask (#411, #412, #413, #414, #416, #421)
    • Move use_gpu from ClassyTrainer to ClassificationTask (#468)
    • Move num_dataloader_workers out of ClassyTrainer (#477)
  • Rename lr to value in parameter schedulers (#417)
2020-03-06: Classy Vision v0.3 Released

Release notes

  • checkpoint_folder renamed to checkpoint_load_path (#379)
  • head support on DenseNet (#383)
  • Cleaner abstraction in ClassyTask/ClassyTrainer: eval_step, on_start, on_end, …
  • Speed metrics in TB (#385)
  • test_phase_period in ClassificationTask (#395)
  • support for losses with trainable parameters (#394)
  • Added presets for some typical ResNe(X)t configurations: #405)

About

Classy Vision is a new end-to-end, PyTorch-based framework for large-scale training of state-of-the-art image and video classification models. Previous computer vision (CV) libraries have been focused on providing components for users to build their own frameworks for their research. While this approach offers flexibility for researchers, in production settings it leads to duplicative efforts, and requires users to migrate research between frameworks and to relearn the minutiae of efficient distributed training and data loading. Our PyTorch-based CV framework offers a better solution for training at scale and for deploying to production. It offers several notable advantages:

  • Ease of use. The library features a modular, flexible design that allows anyone to train machine learning models on top of PyTorch using very simple abstractions. The system also has out-of-the-box integration with Amazon Web Services (AWS), facilitating research at scale and making it simple to move between research and production.
  • High performance. Researchers can use the framework to train Resnet50 on ImageNet in as little as 15 minutes, for example.
  • Demonstrated success in training at scale. We’ve used it to replicate the state-of-the-art results from the paper Exploring the Limits of Weakly Supervised Pretraining.
  • Integration with PyTorch Hub. AI researchers and engineers can download and fine-tune the best publically available ImageNet models with just a few lines of code.
  • Elastic training. We have also added experimental integration with PyTorch Elastic, which allows distributed training jobs to adjust as available resources in the cluster changes. It also makes distributed training robust to transient hardware failures.

Classy Vision is beta software. The project is under active development and our APIs are subject to change in future releases.

Installation

Installation Requirements

Make sure you have an up-to-date installation of PyTorch (1.6), Python (3.6) and torchvision (0.7). If you want to use GPUs, then a CUDA installation (10.1) is also required.

Installing the latest stable release

To install Classy Vision via pip:

pip install classy_vision

To install Classy Vision via conda (only works on linux):

conda install -c conda-forge classy_vision

Manual install of latest commit on master

Alternatively you can do a manual install.

git clone https://github.com/facebookresearch/ClassyVision.git
cd ClassyVision
pip install .

Getting started

Classy Vision aims to support a variety of projects to be built and open sourced on top of the core library. We provide utilities for setting up a project in a standard format with some simple generated examples to get started with. To start a new project:

classy-project my-project
cd my-project

We even include a simple, synthetic, training example to show how to use Classy Vision:

 ./classy_train.py --config configs/template_config.json

Voila! A few seconds later your first training run using our classification task should be done. Check out the results in the output folder:

ls output_<timestamp>/checkpoints/
checkpoint.torch model_phase-0_end.torch model_phase-1_end.torch model_phase-2_end.torch model_phase-3_end.torch

checkpoint.torch is the latest model (in this case, same as model_phase-3_end.torch), a checkpoint is saved at the end of each phase.

For more details / tutorials see the documentation section below.

Documentation

Please see our tutorials to learn how to get started on Classy Vision and customize your training runs. Full documentation is available here.

Join the Classy Vision community

See the CONTRIBUTING file for how to help out.

License

Classy Vision is MIT licensed, as found in the LICENSE file.

Citing Classy Vision

If you use Classy Vision in your work, please use the following BibTeX entry:

@article{adcock2019classy,
  title={Classy Vision},
  author={{Adcock}, A. and {Reis}, V. and {Singh}, M. and {Yan}, Z. and {van der Maaten} L., and {Zhang}, K. and {Motwani}, S. and {Guerin}, J. and {Goyal}, N. and {Misra}, I. and {Gustafson}, L. and {Changhan}, C. and {Goyal}, P.},
  howpublished = {\url{https://github.com/facebookresearch/ClassyVision}},
  year={2019}
}
Comments
  • new video data augmentation transform

    new video data augmentation transform

    Summary:

    • We add video transforms in TorchVision: https://github.com/pytorch/vision/pull/1306/
    • In ClassyVision, we add default transforms for training / test stage. Alternatively, user can also explicitly provide transform config in json config input. See an example in the unit test.
    • Video data transforms supports audio modality in the video dataset.
    • Compared with image transforms which only returns a torch.Tensor, video transforms return a dict where key is the modality name (e.g. {"video", "audio"}) and value is a torch.Tensor for the modality data.

    Reviewed By: taylorgordon20

    Differential Revision: D16999453

    CLA Signed Merged 
    opened by stephenyan1231 33
  • ValueError: bad value(s) in fds_to_keep

    ValueError: bad value(s) in fds_to_keep

    i use ucf-101 example but get this problem

    Traceback (most recent call last):
      File "/home/sucom/hdd_1T/project/video_rec/my_video_rec/self_video_train.py", line 160, in <module>
        trainer.train(task)
      File "/home/sucom/.conda/envs/classy_vision/lib/python3.6/site-packages/classy_vision/trainer/local_trainer.py", line 27, in train
        super().train(task)
      File "/home/sucom/.conda/envs/classy_vision/lib/python3.6/site-packages/classy_vision/trainer/classy_trainer.py", line 45, in train
        task.on_phase_start()
      File "/home/sucom/.conda/envs/classy_vision/lib/python3.6/site-packages/classy_vision/tasks/classification_task.py", line 945, in on_phase_start
        self.advance_phase()
      File "/home/sucom/.conda/envs/classy_vision/lib/python3.6/site-packages/classy_vision/tasks/classification_task.py", line 847, in advance_phase
        self.create_data_iterator()
      File "/home/sucom/.conda/envs/classy_vision/lib/python3.6/site-packages/classy_vision/tasks/classification_task.py", line 900, in create_data_iterator
        self.data_iterator = iter(self.dataloaders[self.phase_type])
      File "/home/sucom/.conda/envs/classy_vision/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 279, in __iter__
        return _MultiProcessingDataLoaderIter(self)
      File "/home/sucom/.conda/envs/classy_vision/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 719, in __init__
        w.start()
      File "/home/sucom/.conda/envs/classy_vision/lib/python3.6/multiprocessing/process.py", line 105, in start
        self._popen = self._Popen(self)
      File "/home/sucom/.conda/envs/classy_vision/lib/python3.6/multiprocessing/context.py", line 284, in _Popen
        return Popen(process_obj)
      File "/home/sucom/.conda/envs/classy_vision/lib/python3.6/multiprocessing/popen_spawn_posix.py", line 32, in __init__
        super().__init__(process_obj)
      File "/home/sucom/.conda/envs/classy_vision/lib/python3.6/multiprocessing/popen_fork.py", line 19, in __init__
        self._launch(process_obj)
      File "/home/sucom/.conda/envs/classy_vision/lib/python3.6/multiprocessing/popen_spawn_posix.py", line 59, in _launch
        cmd, self._fds)
      File "/home/sucom/.conda/envs/classy_vision/lib/python3.6/multiprocessing/util.py", line 417, in spawnv_passfds
        False, False, None)
    ValueError: bad value(s) in fds_to_keep
    
    opened by siyangbing 23
  • mean average precision meter

    mean average precision meter

    Summary: Average Precision (AP) summarizes a precision-recall curve as the weighted mean of precisions achieved at each threshold, with the increase in recall from the previous threshold used as the weight.

    See AP formal definition (https://scikit-learn.org/stable/modules/generated/sklearn.metrics.average_precision_score.html).

    Mean Average Precision is an average of AP over different classes.

    In this diff, we implement Mean Average Precision meter that is useful for multi-label classification task.

    Differential Revision: D18715190

    CLA Signed fb-exported 
    opened by stephenyan1231 23
  • Add support to normalize inputs in the heads

    Add support to normalize inputs in the heads

    Summary: Added a normalize_inputs argument to FullyConnectedHead and VisionTransformerHead.

    Added simple test cases for both heads

    Differential Revision: D25213285

    CLA Signed fb-exported 
    opened by mannatsingh 13
  • global reasoning unit

    global reasoning unit

    Summary:

    • Implement Global Reasoning Networks (glore) (https://arxiv.org/abs/1811.12814). The reference implementation is on Github (https://github.com/facebookresearch/GloRe)
    • Rename the json configs to tell whether glore is on or off. Therefore
      • train_kinetics400_glore_off_i3d50 means glore is off, but we use the baseline I3D-50 model in glore paper.
      • train_kinetics400_glore_on_i3d50 means glore is on and glore units are inserted into baseline I3D-50 model.
      • Similar changes are made to SlowFast sf json config. Since we only implement baseline I3D model used in SF, which is a slightly different I3D model from I3D model in glore, it is always off.

    Differential Revision: D18344566

    CLA Signed 
    opened by stephenyan1231 13
  • Optimizer state sharding - Not landing as-is, early feedback

    Optimizer state sharding - Not landing as-is, early feedback

    Summary: Bringing in fairscale to provide an optional state sharded optimizer in Classy, which should help in situations bounded by memory pressure. No new communication backend, this is using vanilla torch.distributed

    Differential Revision: D22518768

    CLA Signed Merged fb-exported 
    opened by blefaudeux 12
  • R(2+1)D unit

    R(2+1)D unit

    Summary:

    • Implement R(2+1)D unit (https://arxiv.org/abs/1711.11248).
    • Compared with vanilla R3D model, in R(2+1)D we replace a 3D conv with a 2D spatial conv and a 1D temporal conv, while the total No. of model parameters are kept the same.
    • We use R(2+1)D unit in ResNeXt3DStem and BasicTransformation.

    Differential Revision: D19084922

    CLA Signed fb-exported 
    opened by stephenyan1231 12
  • Add required example_args argument to prepare_fx and prepare_qat_fx

    Add required example_args argument to prepare_fx and prepare_qat_fx

    Summary: FX Graph Mode Quantization needs to know whether an fx node is a floating point Tensor before it can decide whether to insert observer/fake_quantize module or not, since we only insert observer/fake_quantize module for floating point Tensors. Currently we have some hacks to support this by defining some rules like NON_OBSERVABLE_ARG_DICT (https://github.com/pytorch/pytorch/blob/master/torch/ao/quantization/fx/utils.py#L496), but this approach is fragile and we do not plan to maintain it long term in the pytorch code base.

    As we discussed in the design review, we'd need to ask users to provide sample args and sample keyword args so that we can infer the type in a more robust way. This PR starts with changing the prepare_fx and prepare_qat_fx api to require user to either provide example arguments thrugh example_inputs, Note this api doesn't support kwargs, kwargs can make https://github.com/pytorch/pytorch/pull/76496#discussion_r861230047 (comment) simpler, but it will be rare, and even then we can still workaround with positional arguments, also torch.jit.trace(https://pytorch.org/docs/stable/generated/torch.jit.trace.html) and ShapeProp: https://github.com/pytorch/pytorch/blob/master/torch/fx/passes/shape_prop.py#L140 just have single positional args, we'll just use a single example_inputs argument for now.

    If needed, we can extend the api with an optional example_kwargs. e.g. in case when there are a lot of arguments for forward and it makes more sense to pass the arguments by keyword

    BC-breaking Note: Before: m = resnet18(...) m = prepare_fx(m, qconfig_dict)

    After: m = resnet18(...) m = prepare_fx(m, qconfig_dict, example_inputs=(torch.randn(1, 3, 224, 224),))

    Reviewed By: vkuzo, andrewor14

    Differential Revision: D35984526

    CLA Signed fb-exported 
    opened by jerryzh168 11
  • Load pretrained Imagenet models by pytorch

    Load pretrained Imagenet models by pytorch

    When I load a pretrained imagenet model by pytorch using a finetune task, an AssertionError: Checkpoint does not contain classy_state_dict was raised. So I want to know, how to load a imagenet model to initialize the backbone of a class model? Thank you.

    query 
    opened by Kongsea 11
  • add video_rescale transform for testing videos

    add video_rescale transform for testing videos

    Summary: For OSS, we use pyav video backend. It is different from video_reader backend in that it can not spatially rescale videos during video decoding.

    Therefore, for testing video, we need to rescale it first before doing Fully-Convolutional Network (FCN) style evaluation.

    With this diff, the users do not need to pre-rescale the video datasets ahead of model training.

    Differential Revision: D18409505

    CLA Signed Merged fb-exported 
    opened by stephenyan1231 11
  • Pytorch AMP

    Pytorch AMP

    Summary: Add Pytorch AMP support. A follow up for FairScale would be to add ShardedGradScaler, so that we support mixed precision with ShardedDDP and ShardedOptimizer

    Differential Revision: D25383305

    CLA Signed fb-exported 
    opened by blefaudeux 10
  • `from classy_vision import dataset` will fail with current version of torchvision (0.14.0)

    `from classy_vision import dataset` will fail with current version of torchvision (0.14.0)

    🐛 Bug

    One can't import classy_vision.dataset with the current version of torchvision==0.14.0.

    To Reproduce

    To reproduce the behavior run:

    from classy_vision import dataset
    

    the command should fail with

    ImportError: cannot import name Kinetics400 from 'torchvision.datasets.kinetics' (/usr/local/lib/python3.8/dist-packages/torchvision/datasets/kinetics.py)
    

    This is most likely because torchvision deprecated Kinetics400 in 0.12.0: https://pytorch.org/vision/0.12/generated/torchvision.datasets.Kinetics400.html?highlight=kinetics#torchvision.datasets.Kinetics400

    Expected behavior

    The command above should work flawlessly. Downgrading torchvision to 0.12.0 is a workaround for this issue - a constraint such as torchvision<= 0.12.0 may be added as fix in https://github.com/facebookresearch/ClassyVision/blob/74e83dd97afbc9371b336304af09548f5080fa9c/requirements.txt#L4

    Environment

    • What commands did you use to install Classy Vision (conda/pip/build from source)? pip
    • What does classy_vision.__version__ print? 0.6.0

    python collect_env.py gives me:

    PyTorch version: 1.13.0+cu116
    Is debug build: False
    CUDA used to build PyTorch: 11.6
    ROCM used to build PyTorch: N/A
    
    OS: Ubuntu 18.04.6 LTS (x86_64)
    GCC version: (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
    Clang version: 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
    CMake version: version 3.22.6
    Libc version: glibc-2.27
    
    Python version: 3.8.16 (default, Dec  7 2022, 01:12:13)  [GCC 7.5.0] (64-bit runtime)
    Python platform: Linux-5.10.133+-x86_64-with-glibc2.27
    Is CUDA available: False
    CUDA runtime version: 11.2.152
    CUDA_MODULE_LOADING set to: N/A
    GPU models and configuration: Could not collect
    Nvidia driver version: Could not collect
    cuDNN version: Probably one of the following:
    /usr/lib/x86_64-linux-gnu/libcudnn.so.8.1.1
    /usr/lib/x86_64-linux-gnu/libcudnn_adv_infer.so.8.1.1
    /usr/lib/x86_64-linux-gnu/libcudnn_adv_train.so.8.1.1
    /usr/lib/x86_64-linux-gnu/libcudnn_cnn_infer.so.8.1.1
    /usr/lib/x86_64-linux-gnu/libcudnn_cnn_train.so.8.1.1
    /usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so.8.1.1
    /usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so.8.1.1
    HIP runtime version: N/A
    MIOpen runtime version: N/A
    Is XNNPACK available: True
    
    Versions of relevant libraries:
    [pip3] numpy==1.21.6
    [pip3] torch==1.13.0+cu116
    [pip3] torchaudio==0.13.0+cu116
    [pip3] torchsummary==1.5.1
    [pip3] torchtext==0.14.0
    [pip3] torchvision==0.14.0+cu116
    
    opened by davidefiocco 0
  • Implement resize and train XRayVideo A/V with only resizing

    Implement resize and train XRayVideo A/V with only resizing

    Summary: We want to check whether training XRayVideo with simply video resizing (in addition to other existing transformation like horizontal flipping and normalization) without random corp is sufficient.

    The resize dimension is used as 224*224.

    workflow: f362077622 (Note: in the workflow fcc_mvit_dataset_v4p2_arkc.yaml is used which I renamed to fcc_mvit_dataset_v4p2_onlyresize.yaml in this diff.)

    As can be seen, the validation MAP goes to around .422 as opposed to 0.46 when random resized crop is used (f355567669) and rest of the configuration is kept the same. Hence, it is better to keep random resized crop.

    Differential Revision: D38522980

    CLA Signed fb-exported 
    opened by arjish 3
  • A minor documentation issue in efficientnet

    A minor documentation issue in efficientnet

    📚 Documentation

    efficientnet.py

    It's a clean and well documented code. Kudos to the authors and thank you for making it open source :)

    On the line 195, I think it's just an Excitation layer. Squeeze is being done by AdaptiveAvgPool2d.

    opened by vinayak015 1
  • IsADirectoryError: Caught IsADirectoryError in DataLoader worker process 0.

    IsADirectoryError: Caught IsADirectoryError in DataLoader worker process 0.

    ❓ Questions and Help

    I have created the data folder with the following structure

    train/label_1/aa.png train/label_2/bb.png val/label_1/cc.png

    and so on

    The config used is

    { "name": "classification_task", "num_epochs": 95, "loss": { "name": "CrossEntropyLoss" }, "dataset": { "train": { "name": "image_path", "batchsize_per_replica": 32, "num_samples": null, "use_shuffle": true, "transforms": [{ "name": "apply_transform_to_key", "transforms": [ {"name": "RandomResizedCrop", "size": 224}, {"name": "RandomHorizontalFlip"}, {"name": "ToTensor"}, { "name": "Normalize", "mean": [0.485, 0.456, 0.406], "std": [0.229, 0.224, 0.225] } ], "key": "input" }], "image_folder": "/Users/nitesh/Workspace/MSon/classification-models/classy-vision/xx-project/data/train" }, "test": { "name": "image_path", "batchsize_per_replica": 32, "num_samples": null, "use_shuffle": false, "transforms": [{ "name": "apply_transform_to_key", "transforms": [ {"name": "Resize", "size": 256}, {"name": "CenterCrop", "size": 224}, {"name": "ToTensor"}, { "name": "Normalize", "mean": [0.485, 0.456, 0.406], "std": [0.229, 0.224, 0.225] } ], "key": "input" }], "image_folder": "/Users/nitesh/Workspace/MSon/classification-models/classy-vision/xx-project/data/val" } }, "meters": { "accuracy": { "topk": [1, 5] } }, "model": { "name": "resnext3d", "frames_per_clip": 1, "input_planes": 3, "clip_crop_size": 224, "skip_transformation_type": "postactivated_shortcut", "residual_transformation_type": "postactivated_bottleneck_transformation", "num_blocks": [3, 4, 6, 3], "stem_name": "resnext3d_stem", "stem_planes": 64, "stem_temporal_kernel": 1, "stem_spatial_kernel": 7, "stem_maxpool": true, "stage_planes": 256, "stage_temporal_kernel_basis": [[1], [1], [1], [1]], "temporal_conv_1x1": [true, true, true, true], "stage_temporal_stride": [1, 1, 1, 1], "stage_spatial_stride": [1, 2, 2, 2], "num_groups": 1, "width_per_group": 64, "num_classes": 1000, "zero_init_residual_transform": true, "heads": [ { "name": "fully_convolutional_linear", "unique_id": "default_head", "pool_size": [1, 7, 7], "activation_func": "softmax", "num_classes": 1000, "fork_block": "pathway0-stage4-block2", "in_plane": 2048, "use_dropout": false } ] }, "optimizer": { "name": "sgd", "param_schedulers": { "lr": { "name": "multistep", "num_epochs": 95, "values": [0.1, 0.01, 0.001, 0.0001], "milestones": [30, 60, 90] } }, "weight_decay": 0.0001, "momentum": 0.9, "nesterov": true } }

    However while running the training its throwing an error. "IsADirectoryError: Caught IsADirectoryError in DataLoader worker process 0."

    Could you please help me to solve this ? I am quite new to ML

    opened by niteshgaba 2
  • Add fvcore exponential decay parameter scheduler to Classy Vision

    Add fvcore exponential decay parameter scheduler to Classy Vision

    Summary: Exponential parameter scheduler for fvcore/ClassyVision. This type of scheduler is useful as a LR scheduler when using EMA.

    Differential Revision: D27369474

    CLA Signed fb-exported 
    opened by lauragustafson 1
Releases(v0.6.0)
  • v0.6.0(Jul 19, 2021)

    New Features

    • Added compatibility with pytorch version 1.9.0 (#753)
    • Added RegNetZ model implementation (#713)
    • Redefined RegNetY 64GF to better performing model (#748) 
    • Added support for Pytorch AMP + ShardedDDP (#667)
    • Added support for cutmix in MixupTransform
    • Added support for a 1x1 convolution in the fully connected head (#712) 
    • Add support to normalize inputs in the heads (#664) 
    • Added support for SiLU activation in RegNets (#711) 
    • Added support for FP16 gradient communication in DDP (#709) 
    • Added reduction mode none in soft_target_cross_entropy_loss (#714) 
    • Added FLOPs computation to ViT (#746)
    • Upstreamed parameter schedulers to fvcore
    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Nov 20, 2020)

    New Features

    • Release Vision Transformers model implementation, with recipes(#646)
    • Implemented gradient clipping (#643)
    • Implemented gradient accumulation (#644)
    • Added support for AdamW (#636)
    • Added Precise batch norm hook (#592)
    • Added support for adaptive pooling in fully_convolutional_linear_head (#602)
    • Added support for sync batch norm group size (#534)
    • Added a CSV Hook to manually inspect model predictions
    • Added a ClassyModel tutorial (#485)
    • Migrated to Hydra 1.0 (#536)
    • Migrated off of tensorboardX (#488)

    Breaking Changes

    • ClassyOptimizer API improvements
      • added OptionsView to retrieve options from the optimizer param_group
    • Removed ClassyModel.evaluation_mode (#521)
    • Removed ImageNetDataset, now a subset of ImagePathDataset (#494)
    • Renamed is_master to is_primary in distributed_util (#576)
    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Apr 29, 2020)

    New Features

    • Release EfficientNet model implementation (#475)
    • Add support to convert any PyTorch model to a ClassyModel with the ability to attach heads to it (#461)
      • Added a corresponding tutorial on ClassyModel and ClassyHeads (#485)
    • Squeeze and Excitation support for ResNe(X)t and DenseNet models (#426, #427)
    • Made ClassyHooks registrable (#401) and configurable (#402)
    • Migrated to TorchElastic v0.2.0 (#464)
    • Add SyncBatchNorm support (#423)
    • Implement mixup train augmentation (#469)
    • Support LARC for SGD optimizer (#408)
    • Added convenience wrappers for Iterable datasets (#455)
    • Tensorboard improvements
      • Plot histograms of model weights to Tensorboard (#432)
      • Reduce data logged to tensorboard (#436)
    • Invalid (NaN / Inf) loss detection
    • Revamped logging (#478)
    • Add bn_weight_decay configuration option for ResNe(X)t models
    • Support specifying update_interval to Parameter Schedulers (#418)

    Breaking changes

    • ClassificationTask API improvement and train_step, eval_step simplification
      • Removed local_variables from ClassificationTask (#411, #412, #413, #414, #416, #421)
      • Move use_gpu from ClassyTrainer to ClassificationTask (#468)
      • Move num_dataloader_workers out of ClassyTrainer (#477)
    • Rename lr to value in parameter schedulers (#417)
    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Mar 6, 2020)

    V0.30 release notes:

    • checkpoint_folder renamed to checkpoint_load_path: https://github.com/facebookresearch/ClassyVision/pull/379
    • head support on DenseNet: https://github.com/facebookresearch/ClassyVision/pull/383
    • Cleaner abstraction in ClassyTask/ClassyTrainer: eval_step, on_start, on_end, …
    • Speed metrics in TB: https://github.com/facebookresearch/ClassyVision/pull/385
    • test_phase_period in ClassificationTask https://github.com/facebookresearch/ClassyVision/pull/395
    • support for losses with trainable parameters https://github.com/facebookresearch/ClassyVision/pull/394
    • Added presets for some typical resNe(X)t configurations: https://github.com/facebookresearch/ClassyVision/pull/405
    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Jan 24, 2020)

    Classy Vision v0.2 release notes

    New features:

    • Adam optimizer (https://github.com/facebookresearch/ClassyVision/pull/301)
    • R(2+1)d units (https://github.com/facebookresearch/ClassyVision/pull/322)
    • Mixed precision training (https://github.com/facebookresearch/ClassyVision/pull/338)
    • One-hot targets in meters (https://github.com/facebookresearch/ClassyVision/pull/349)

    This release has been tested on the latest PyTorch (1.4) and torchvision (0.5) releases. It also includes bug fixes and other smaller features.

    Source code(tar.gz)
    Source code(zip)
  • 0.1.0(Dec 5, 2019)

Owner
Facebook Research
Facebook Research
🐤 Nix-TTS: An Incredibly Lightweight End-to-End Text-to-Speech Model via Non End-to-End Distillation

?? Nix-TTS An Incredibly Lightweight End-to-End Text-to-Speech Model via Non End-to-End Distillation Rendi Chevi, Radityo Eko Prasojo, Alham Fikri Aji

Rendi Chevi 156 Jan 9, 2023
Official code for "Towards An End-to-End Framework for Flow-Guided Video Inpainting" (CVPR2022)

E2FGVI (CVPR 2022) English | 简体中文 This repository contains the official implementation of the following paper: Towards An End-to-End Framework for Flo

Media Computing Group @ Nankai University 537 Jan 7, 2023
A Joint Video and Image Encoder for End-to-End Retrieval

Frozen️ in Time ❄️ ️️️️ ⏳ A Joint Video and Image Encoder for End-to-End Retrieval project page | arXiv | webvid-data Repository containing the code,

null 225 Dec 25, 2022
Simple-Image-Classification - Simple Image Classification Code (PyTorch)

Simple-Image-Classification Simple Image Classification Code (PyTorch) Yechan Kim This repository contains: Python3 / Pytorch code for multi-class ima

Yechan Kim 8 Oct 29, 2022
Image Classification - A research on image classification and auto insurance claim prediction, a systematic experiments on modeling techniques and approaches

A research on image classification and auto insurance claim prediction, a systematic experiments on modeling techniques and approaches

null 0 Jan 23, 2022
[CVPR2021 Oral] End-to-End Video Instance Segmentation with Transformers

VisTR: End-to-End Video Instance Segmentation with Transformers This is the official implementation of the VisTR paper: Installation We provide instru

Yuqing Wang 687 Jan 7, 2023
Towards End-to-end Video-based Eye Tracking

Towards End-to-end Video-based Eye Tracking The code accompanying our ECCV 2020 publication and dataset, EVE. Authors: Seonwook Park, Emre Aksan, Xuco

Seonwook Park 76 Dec 12, 2022
Spatio-Temporal Entropy Model (STEM) for end-to-end leaned video compression.

Spatio-Temporal Entropy Model A Pytorch Reproduction of Spatio-Temporal Entropy Model (STEM) for end-to-end leaned video compression. More details can

null 16 Nov 28, 2022
AdaFocus V2: End-to-End Training of Spatial Dynamic Networks for Video Recognition

AdaFocusV2 This repo contains the official code and pre-trained models for AdaFo

null 79 Dec 26, 2022
"SOLQ: Segmenting Objects by Learning Queries", SOLQ is an end-to-end instance segmentation framework with Transformer.

SOLQ: Segmenting Objects by Learning Queries This repository is an official implementation of the paper SOLQ: Segmenting Objects by Learning Queries.

MEGVII Research 179 Jan 2, 2023
[RSS 2021] An End-to-End Differentiable Framework for Contact-Aware Robot Design

DiffHand This repository contains the implementation for the paper An End-to-End Differentiable Framework for Contact-Aware Robot Design (RSS 2021). I

Jie Xu 60 Jan 4, 2023
Instant-Teaching: An End-to-End Semi-Supervised Object Detection Framework

This repo is the official implementation of "Instant-Teaching: An End-to-End Semi-Supervised Object Detection Framework". @inproceedings{zhou2021insta

null 34 Dec 31, 2022
End-to-end image segmentation kit based on PaddlePaddle.

English | 简体中文 PaddleSeg PaddleSeg has released the new version including the following features: Our team won the AutoNUE@CVPR 2021 challenge, where

null 6.2k Jan 2, 2023
An end-to-end image translation model with weight-map for color constancy

CCUnet An end-to-end image translation model with weight-map for color constancy 1. Download the dataset (take Colorchecker_recommended dataset as an

Jianhui Qiu 1 Dec 21, 2021
Pytorch library for end-to-end transformer models training and serving

Pytorch library for end-to-end transformer models training and serving

Mikhail Grankin 768 Jan 1, 2023
A PyTorch library and evaluation platform for end-to-end compression research

CompressAI CompressAI (compress-ay) is a PyTorch library and evaluation platform for end-to-end compression research. CompressAI currently provides: c

InterDigital 680 Jan 6, 2023
A pure PyTorch batched computation implementation of "CIF: Continuous Integrate-and-Fire for End-to-End Speech Recognition"

A pure PyTorch batched computation implementation of "CIF: Continuous Integrate-and-Fire for End-to-End Speech Recognition"

張致強 14 Dec 2, 2022
Video-Captioning - A machine Learning project to generate captions for video frames indicating the relationship between the objects in the video

Video-Captioning - A machine Learning project to generate captions for video frames indicating the relationship between the objects in the video

null 1 Jan 23, 2022
PyTorch implementation of the end-to-end coreference resolution model with different higher-order inference methods.

End-to-End Coreference Resolution with Different Higher-Order Inference Methods This repository contains the implementation of the paper: Revealing th

Liyan 52 Jan 4, 2023