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)

Dynamic Divide-and-Conquer Adversarial Training for Robust Semantic Segmentation (ICCV2021)

Dynamic Divide-and-Conquer Adversarial Training for Robust Semantic Segmentation This is a pytorch project for the paper Dynamic Divide-and-Conquer Ad

DV Lab 29 Nov 21, 2022
The Codebase for Causal Distillation for Language Models.

Causal Distillation for Language Models Zhengxuan Wu*,Atticus Geiger*, Josh Rozner, Elisa Kreiss, Hanson Lu, Thomas Icard, Christopher Potts, Noah D.

Zen 20 Dec 31, 2022
The source code for Generating Training Data with Language Models: Towards Zero-Shot Language Understanding.

SuperGen The source code for Generating Training Data with Language Models: Towards Zero-Shot Language Understanding. Requirements Before running, you

Yu Meng 38 Dec 12, 2022
Differentiable Quantum Chemistry (only Differentiable Density Functional Theory and Hartree Fock at the moment)

DQC: Differentiable Quantum Chemistry Differentiable quantum chemistry package. Currently only support differentiable density functional theory (DFT)

75 Dec 02, 2022
Learning Visual Words for Weakly-Supervised Semantic Segmentation

[IJCAI 2021] Learning Visual Words for Weakly-Supervised Semantic Segmentation Implementation of IJCAI 2021 paper Learning Visual Words for Weakly-Sup

Lixiang Ru 24 Oct 05, 2022
Classifying cat and dog images using Kaggle dataset

PyTorch Image Classification Classifies an image as containing either a dog or a cat (using Kaggle's public dataset), but could easily be extended to

Robert Coleman 74 Nov 22, 2022
My implementation of Image Inpainting - A deep learning Inpainting model

Image Inpainting What is Image Inpainting Image inpainting is a restorative process that allows for the fixing or removal of unwanted parts within ima

Joshua V Evans 1 Dec 12, 2021
Visualization toolkit for neural networks in PyTorch! Demo -->

FlashTorch A Python visualization toolkit, built with PyTorch, for neural networks in PyTorch. Neural networks are often described as "black box". The

Misa Ogura 692 Dec 29, 2022
World Models with TensorFlow 2

World Models This repo reproduces the original implementation of World Models. This implementation uses TensorFlow 2.2. Docker The easiest way to hand

Zac Wellmer 234 Nov 30, 2022
This library provides an abstraction to perform Model Versioning using Weight & Biases.

Description This library provides an abstraction to perform Model Versioning using Weight & Biases. Features Version a new trained model Promote a mod

Hector Lopez Almazan 2 Jan 28, 2022
Code for MSc Quantitative Finance Dissertation

MSc Dissertation Code ReadMe Sector Volatility Prediction Performance Using GARCH Models and Artificial Neural Networks Curtis Nybo MSc Quantitative F

2 Dec 01, 2022
VIL-100: A New Dataset and A Baseline Model for Video Instance Lane Detection (ICCV 2021)

Preparation Please see dataset/README.md to get more details about our datasets-VIL100 Please see INSTALL.md to install environment and evaluation too

82 Dec 15, 2022
The ICS Chat System project for NYU Shanghai Fall 2021

ICS_Chat_System [Catenger] This is the ICS Chat System project for NYU Shanghai Fall 2021 Creators: Shavarsh Melikyan, Skyler Chen and Arghya Sarkar,

1 Dec 20, 2021
Estimating Example Difficulty using Variance of Gradients

Estimating Example Difficulty using Variance of Gradients This repository contains source code necessary to reproduce some of the main results in the

Chirag Agarwal 48 Dec 26, 2022
RTS3D: Real-time Stereo 3D Detection from 4D Feature-Consistency Embedding Space for Autonomous Driving

RTS3D: Real-time Stereo 3D Detection from 4D Feature-Consistency Embedding Space for Autonomous Driving (AAAI2021). RTS3D is efficiency and accuracy s

71 Nov 29, 2022
External Attention Network

Beyond Self-attention: External Attention using Two Linear Layers for Visual Tasks paper : https://arxiv.org/abs/2105.02358 EAMLP will come soon Jitto

MenghaoGuo 357 Dec 11, 2022
This application is the basic of automated online-class-joiner(for YıldızEdu) within the right time. Gets the ZOOM link by scheduled date and time.

This application is the basic of automated online-class-joiner(for YıldızEdu) within the right time. Gets the ZOOM link by scheduled date and time.

215355 1 Dec 16, 2021
Implementing yolov4 target detection and tracking based on nao robot

Implementing yolov4 target detection and tracking based on nao robot

6 Apr 19, 2022
Rewrite ultralytics/yolov5 v6.0 opencv inference code based on numpy, no need to rely on pytorch

Rewrite ultralytics/yolov5 v6.0 opencv inference code based on numpy, no need to rely on pytorch; pre-processing and post-processing using numpy instead of pytroch.

炼丹去了 21 Dec 12, 2022
A curated list of awesome projects and resources related fastai

A curated list of awesome projects and resources related fastai

Tanishq Abraham 138 Dec 22, 2022