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)

Computational inteligence project on faces in the wild dataset

Table of Contents The general idea How these scripts work? Loading data Needed modules and global variables Parsing the arrays in dataset Extracting a

tooraj taraz 4 Oct 21, 2022
Official codebase used to develop Vision Transformer, MLP-Mixer, LiT and more.

Big Vision This codebase is designed for training large-scale vision models on Cloud TPU VMs. It is based on Jax/Flax libraries, and uses tf.data and

Google Research 701 Jan 03, 2023
A simple and useful implementation of LPIPS.

lpips-pytorch Description Developing perceptual distance metrics is a major topic in recent image processing problems. LPIPS[1] is a state-of-the-art

So Uchida 121 Dec 24, 2022
Reinforcement Learning for Automated Trading

Reinforcement Learning for Automated Trading This thesis has been realized for the obtention of the Master's in Mathematical Engineering at the Polite

Pierpaolo Necchi 80 Jun 19, 2022
TreeSubstitutionCipher - Encryption system based on trees and substitution

Tree Substitution Cipher Generation Algorithm: Generate random tree. Tree nodes

stepa 1 Jan 08, 2022
Towards Rolling Shutter Correction and Deblurring in Dynamic Scenes (CVPR2021)

RSCD (BS-RSCD & JCD) Towards Rolling Shutter Correction and Deblurring in Dynamic Scenes (CVPR2021) by Zhihang Zhong, Yinqiang Zheng, Imari Sato We co

81 Dec 15, 2022
Anomaly detection in multi-agent trajectories: Code for training, evaluation and the OpenAI highway simulation.

Anomaly Detection in Multi-Agent Trajectories for Automated Driving This is the official project page including the paper, code, simulation, baseline

12 Dec 02, 2022
Self-training for Few-shot Transfer Across Extreme Task Differences

Self-training for Few-shot Transfer Across Extreme Task Differences (STARTUP) Introduction This repo contains the official implementation of the follo

Cheng Perng Phoo 33 Oct 31, 2022
A video scene detection algorithm is designed to detect a variety of different scenes within a video

Scene-Change-Detection - A video scene detection algorithm is designed to detect a variety of different scenes within a video. There is a very simple definition for a scene: It is a series of logical

1 Jan 04, 2022
Recognize numbers from an (28 x 28) image using neural networks

Number recognition Recognize numbers from a 28 x 28 image using neural networks Usage This is an example of a simple usage of number-recognition NOTE:

Mauro Baladés 2 Dec 29, 2021
StyleGAN2-ADA - Official PyTorch implementation

Abstract: Training generative adversarial networks (GAN) using too little data typically leads to discriminator overfitting, causing training to diverge. We propose an adaptive discriminator augmenta

NVIDIA Research Projects 3.2k Dec 30, 2022
Hand Gesture Volume Control | Open CV | Computer Vision

Gesture Volume Control Hand Gesture Volume Control | Open CV | Computer Vision Use gesture control to change the volume of a computer. First we look i

Jhenil Parihar 3 Jun 15, 2022
Easily Process a Batch of Cox Models

ezcox: Easily Process a Batch of Cox Models The goal of ezcox is to operate a batch of univariate or multivariate Cox models and return tidy result. ⏬

Shixiang Wang 15 May 23, 2022
Image morphing without reference points by applying warp maps and optimizing over them.

Differentiable Morphing Image morphing without reference points by applying warp maps and optimizing over them. Differentiable Morphing is machine lea

Alex K 380 Dec 19, 2022
tf2onnx - Convert TensorFlow, Keras and Tflite models to ONNX.

tf2onnx converts TensorFlow (tf-1.x or tf-2.x), tf.keras and tflite models to ONNX via command line or python api.

Open Neural Network Exchange 1.8k Jan 08, 2023
⚓ Eurybia monitor model drift over time and securize model deployment with data validation

View Demo · Documentation · Medium article 🔍 Overview Eurybia is a Python library which aims to help in : Detecting data drift and model drift Valida

MAIF 172 Dec 27, 2022
PyTorch Code for NeurIPS 2021 paper Anti-Backdoor Learning: Training Clean Models on Poisoned Data.

Anti-Backdoor Learning PyTorch Code for NeurIPS 2021 paper Anti-Backdoor Learning: Training Clean Models on Poisoned Data. The Anti-Backdoor Learning

Yige-Li 51 Dec 07, 2022
Out of Distribution Detection on Natural Adversarial Examples

OOD-on-NAE Research project on out of distribution detection for the Computer Vision course by Prof. Rob Fergus (CSCI-GA 2271) Paper out on arXiv - ht

Anugya 1 Jun 08, 2022
SBINN: Systems-biology informed neural network

SBINN: Systems-biology informed neural network The source code for the paper M. Daneker, Z. Zhang, G. E. Karniadakis, & L. Lu. Systems biology: Identi

Lu Group 15 Nov 19, 2022