OpenMMLab Computer Vision Foundation

Related tags

Deep Learning mmcv
Overview

PyPI - Python Version PyPI badge codecov license

English | 简体中文

Introduction

MMCV is a foundational library for computer vision research and supports many research projects as below:

  • MMCV: OpenMMLab foundational library for computer vision.
  • MIM: MIM Installs OpenMMLab Packages.
  • MMClassification: OpenMMLab image classification toolbox and benchmark.
  • MMDetection: OpenMMLab detection toolbox and benchmark.
  • MMDetection3D: OpenMMLab's next-generation platform for general 3D object detection.
  • MMSegmentation: OpenMMLab semantic segmentation toolbox and benchmark.
  • MMAction2: OpenMMLab's next-generation action understanding toolbox and benchmark.
  • MMTracking: OpenMMLab video perception toolbox and benchmark.
  • MMPose: OpenMMLab pose estimation toolbox and benchmark.
  • MMEditing: OpenMMLab image and video editing toolbox.
  • MMOCR: A Comprehensive Toolbox for Text Detection, Recognition and Understanding.
  • MMGeneration: OpenMMLab image and video generative models toolbox.
  • MMFlow: OpenMMLab optical flow toolbox and benchmark.

It provides the following functionalities.

  • Universal IO APIs
  • Image/Video processing
  • Image and annotation visualization
  • Useful utilities (progress bar, timer, ...)
  • PyTorch runner with hooking mechanism
  • Various CNN architectures
  • High-quality implementation of common CUDA ops

See the documentation for more features and usage.

Note: MMCV requires Python 3.6+.

Installation

There are two versions of MMCV:

  • mmcv-full: comprehensive, with full features and various CUDA ops out of box. It takes longer time to build.
  • mmcv: lite, without CUDA ops but all other features, similar to mmcv<1.0.0. It is useful when you do not need those CUDA ops.

Note: Do not install both versions in the same environment, otherwise you may encounter errors like ModuleNotFound. You need to uninstall one before installing the other. Installing the full version is highly recommended if CUDA is available.

a. Install the full version.

Before installing mmcv-full, make sure that PyTorch has been successfully installed following the official guide.

We provide pre-built mmcv packages (recommended) with different PyTorch and CUDA versions to simplify the building. In addition, you can run check_installation.py to check the installation of mmcv-full after running the installation commands.

i. Install the latest version.

The rule for installing the latest mmcv-full is as follows:

pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html

Please replace {cu_version} and {torch_version} in the url to your desired one. For example, to install the latest mmcv-full with CUDA 11.1 and PyTorch 1.9.0, use the following command:

pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html

Note: mmcv-full is only compiled on PyTorch 1.x.0 because the compatibility usually holds between 1.x.0 and 1.x.1. If your PyTorch version is 1.x.1, you can install mmcv-full compiled with PyTorch 1.x.0 and it usually works well. For example, if your PyTorch version is 1.8.1 and CUDA version is 11.1, you can use the following command to install mmcv-full.

pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html

For more details, please refer the the following tables and delete =={mmcv_version}.

ii. Install a specified version.

The rule for installing a specified mmcv-full is as follows:

pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html

First of all, please refer to the Releases and replace {mmcv_version} a specified one. e.g. 1.3.9. Then replace {cu_version} and {torch_version} in the url to your desired versions. For example, to install mmcv-full==1.3.9 with CUDA 11.1 and PyTorch 1.9.0, use the following command:

pip install mmcv-full==1.3.9 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html

For more details, please refer the the following tables.

CUDA torch1.10 torch1.9 torch1.8 torch1.7 torch1.6 torch1.5
11.3
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html
11.1
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.10.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.9.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.8.0/index.html
11.0
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.html
10.2
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.10.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.9.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.8.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.7.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.6.0/index.html
install
pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.5.0/index.html
10.1
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.7.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.6.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.5.0/index.html
9.2
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.7.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.6.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu92/torch1.5.0/index.html
cpu
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.10.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.9.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.8.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.7.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.6.0/index.html
install
 pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cpu/torch1.5.0/index.html

Note: The pre-built packages provided above do not include all versions of mmcv-full, you can click on the corresponding links to see the supported versions. For example, you can click cu102-torch1.8.0 and you can see that cu102-torch1.8.0 only provides 1.3.0 and above versions of mmcv-full. In addition, We no longer provide mmcv-full pre-built packages compiled with PyTorch 1.3 & 1.4 since v1.3.17. You can find previous versions that compiled with PyTorch 1.3 & 1.4 here. The compatibility is still ensured in our CI, but we will discard the support of PyTorch 1.3 & 1.4 next year.

Another way is to compile locally by running

pip install mmcv-full

Note that the local compiling may take up to 10 mins.

b. Install the lite version.

pip install mmcv

c. Install full version with custom operators for onnxruntime

  • Check here for detailed instruction.

If you would like to build MMCV from source, please refer to the guide.

FAQ

If you face some installation issues, CUDA related issues or RuntimeErrors, you may first refer to this Frequently Asked Questions.

Citation

If you find this project useful in your research, please consider cite:

@misc{mmcv,
    title={{MMCV: OpenMMLab} Computer Vision Foundation},
    author={MMCV Contributors},
    howpublished = {\url{https://github.com/open-mmlab/mmcv}},
    year={2018}
}

Contributing

We appreciate all contributions to improve MMCV. Please refer to CONTRIBUTING.md for the contributing guideline.

License

MMCV is released under the Apache 2.0 license, while some specific operations in this library are with other licenses. Please refer to LICENSES.md for the careful check, if you are using our code for commercial matters.

Issues
  • Reimplement cc_attention using pure pytorch

    Reimplement cc_attention using pure pytorch

    Motivation

    Reimplement a faster cc_attention using pure PyTorch.

    related PR #1186

    Modification

    Rewrite cc_attention.py

    opened by Leojc 28
  • [Fix] Fix wandb logger drop result bug

    [Fix] Fix wandb logger drop result bug

    You can find details at #911.

    opened by shenmishajing 25
  • runner constructor

    runner constructor

    Add RunnerConstructor feature to build_runner.

    It will not effect the original code feature, but just an enhancement.

    Refer here for more details: issue1225

    opened by densechen 25
  • ModuleNotFoundError: No module named 'mmcv._ext'

    ModuleNotFoundError: No module named 'mmcv._ext'

    I clone the repo and run pip install.

    When I run test_image.py, this error shows up.

    https://github.com/open-mmlab/mmcv/blob/120c6a64daefe97d451cbea4eae15af0ade50a17/mmcv/video/optflow.py#L4

    opened by liyiwei979621500 20
  • [Fix] Restrict the warning message

    [Fix] Restrict the warning message

    Thanks for your contribution and we appreciate it a lot. The following instructions would make your pull request more healthy and more easily get feedback. If you do not understand some items, don't worry, just make the pull request and seek help from maintainers.

    Motivation

    When I implemented a CenterNet2 model in mmdet, there was a situation when I had to use GroupNorm after Conv2d, and the Conv2d layer was supposed to have a bias. Once I finished the modeling part, I got a warning message 'ConvModule has norm and bias at the same time'. At first, I was not so sure about this warning, it made me uneased. Then I did a little research and realized that for BatchNorm (not so sure about SyncBN), the bias does not affect the calculation. But for other kinds of Norm, e.g., GN, I am pretty sure the bias does give some influence. I think maybe we should restrict the popping of this warning message, since it can be quite misleading for new starters.

    Modification

    Restrict a warning message of 'ConvModule has norm and bias at the same time' to BN, BN1, BN2 and BN3 normalization.

    BC-breaking (Optional)

    Does the modification introduce changes that break the backward-compatibility of the downstream repos? If so, please describe how it breaks the compatibility and how the downstream projects should modify their code to keep compatibility with this PR.

    Use cases (Optional)

    If this PR introduces a new feature, it is better to list some use cases here, and update the documentation.

    Checklist

    1. Pre-commit or other linting tools are used to fix the potential lint issues.
    2. The modification is covered by complete unit tests. If not, please add more unit test to ensure the correctness.
    3. If the modification has potential influence on downstream projects, this PR should be tested with downstream projects, like MMDet or MMCls.
    4. The documentation has been modified accordingly, like docstring or example tutorials.
    opened by yyz561 19
  • [Feature] Add EvalHook which will be used in downstream projects

    [Feature] Add EvalHook which will be used in downstream projects

    Overview

    This PR adds mmcv/runner/hooks/eval.py file and EvalHook and DistEvalHook to MMCV together with related unittest parts. Since those two hooks have been widely used in many MM repos, this PR implements and unifies common functions used in the evaluation part.

    Design

    Model Evaluation performed in OpenMMLab uses EvalHook and DistEvalHook during training.

    In detail, the those hooks are commonly registered in apis/train.py by runner.register_hook(eval_hook(val_dataloader, **eval_cfg)). Users can initialize their models with following steps:

    1. Define validation dataset by assigning cfg.data.val, building val_datasetloader
    2. Register EvalHook using runner.register_hook.

    Once registering it, runner will periodically call the evaluate function to perform evaluation in a fixed mode (by epoch or by iteration, etc.). The high-level workflow of EvalHook in OpenMMLab is:

    register EvalHook -> define evaluation setting (start, interval, by_epoch, save_best, comparison rules, etc.) -> perform evaluation after_train_iter or after_train_epoch -> (save the best checkpoint) -> loop back to after_train_xxx

    APIs

    EvalHook is the base module, and DistEvalHook is a child class to it. They both inherit Hook. Here is the APIs explanation for EvalHook.

    Initialization

    • dataloader: The PyTorch dataloader for evaluation. It can be built with build_dataloader with provided dataloader setting.

    • start: Evaluation starting epoch. It enables evaluation before the training starts if start <= the resuming epoch. If set to None, whether to evaluate is merely decided by interval.

    • interval: Evaluation interval.

    • by_epoch: Determine whether to perform evaluation by epoch or by iteration. If set to True, it will perform by epoch. Otherwise, by iteration.

    • save_best: If a metric is specified, it would measure the best checkpoint during evaluation. The information about best checkpoint would be save in runner.meta['hook_msgs']. Options are the evaluation metrics to the validation dataset. e.g., bbox_mAP, segm_mAP for bbox detection and instance segmentation. [email protected] for proposal recall. If save_best is auto, the first key of the returned OrderedDict result will be used. The interval of CheckpointHook should be divisible by that of EvalHook.

    • rule: Comparison rule for best score. If set to None, it will infer a reasonable rule. Keys such as acc, top, etc. will be inferred by greater rule. Keys contain loss will be inferred by less rule. Options are greater, less, None.

      But Note: Since the rule for downstream repos are different, it may need to overwrite the self.greater_keys and self.less_keys

    • eval_kwargs: Key word arguments for dataset evaluate function (def evaluate), which will be fed into the evaluate function of the dataset.

    • Other hardcoded inner variables: rule_map, init_value_map, greater_keys and less_keys.

      Note that: Since the rule for downstream repos are different, it may need to overwrite these variable due to the specific task.

      • rule_map: A dict containing comparison function, default as {'greater': lambda x, y: x > y, 'less': lambda x, y: x < y}.
      • init_value_map: The initialized value for comparison, default as {'greater': -inf, 'less': inf}.
      • greater_keys: A list containing some rule keys applied for greater function, which means in these rules EvalHook regards greater number as the better one. Note that: If a string is one of the rules' substring, it will be applied to greater function. e.g., for acc: top1_acc, top5_acc, mean_acc are all applied to greater rule.
      • less_keys: Similar to greater_keys but it is for less rules. e.g., for loss: bce_loss, bmn_loss are all applied to less rule.

    before_run

    This part is to initialize runner.meta.hook_msgs, if users determine to save the best checkpoint.

    before_train_xxx

    For before_train_iter and before_train_epoch part. It is mainly to determine whether it is the right time to perform evaluation by examining:

    • Whether it is the correct time to perform evaluation according to by_epoch
    • Whether it achieves the start to perform evaluation

    And use self.initial_flag to indicate whether the EvalHook gets into the normal evaluation loop. After getting into the normal evaluation loop, before_train_xxx will be skipped.

    after_train_xxx

    For after_train_iter and after_train_epoch part. It is mainly to inference the model and do evaluation, as well as save the best checkpoint if save_best is specified. In detail, it will call _do_evaluate() and _save_best().

    • _do_evaluate(): inference the model by calling single_gpu_test(), do evaluation and call _save_best()
    • _save_best(): compare the score according to the rule, write info into runner.meta['hook_msgs'] and save the best checkpoint in the work_dir

    For DistEvalHook, besides the variable and function mentioned above, it inferences model by calling multi_gpu_test() and assigns tmpdir, gpu_collect for multi_gpu_test()

    Usages

    Users adopt EvalHook by typing in --validate for training command, it will call EvalHook in training.

    Config

    To use EvalHook with a specific setting, users need to modify the evaluation variable in config files. like this:

    evaluation = dict(
        interval=1, metrics=['top_k_accuracy', 'mean_class_accuracy'])
    

    the key-value pairs in the dict are corresponding to EvalHook API.

    Migration

    Since the key for determine greater an less is related to the downstream task, downstream repos may need to overwrite the self.greater_keys and self.less_keys:

    from mmcv.runner import EvalHook as BasicEvalHook
    
    class EvalHook(BasicEvalHook):
    
        greater_keys = ['a', 'b']
        less_keys = ['c']
    
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
    
    opened by dreamerlin 19
  • Initialization makes no effect.

    Initialization makes no effect.

    I attempt to modify the initialization of the weight of MultiScaleDeformableAttention and implement it as follows. I assign constant 0 values to weight and bias of sampling_offset layer. While initialization, the program goes into reset_parameters function and print 0 as expected. However, at the first forward step, the program prints a large value. I suspect anothre initialization is invoked somewhere. How to address this issue?

    import torch
    import torch.nn as nn
    
    from mmdet.core.bbox import bbox_cxcywh_to_xyxy
    from mmcv.cnn import constant_init, xavier_init
    from mmcv.cnn.bricks.registry import ATTENTION
    from mmcv.ops.multi_scale_deform_attn import MultiScaleDeformableAttnFunction, multi_scale_deformable_attn_pytorch
    from mmcv.runner.base_module import BaseModule
    from mmcv.cnn.bricks.transformer import MultiScaleDeformableAttention
    
    
    @ATTENTION.register_module()
    class MultiScaleRectifiedAttention(MultiScaleDeformableAttention):
        def __init__(self,
                     embed_dims=256,
                     num_heads=8,
                     num_levels=4,
                     num_points=4,
                     im2col_step=64,
                     dropout=0.1,
                     norm_cfg=None,
                     init_cfg=None):
            super(MultiScaleRectifiedAttention, self).__init__(embed_dims, num_heads, num_levels,
                                                               num_points, im2col_step, dropout,
                                                               norm_cfg, init_cfg)
    
            self.reset_parameters()
    
        def reset_parameters(self):
            constant_init(self.sampling_offsets, val=0., bias=0.)
            constant_init(self.attention_weights, val=0., bias=0.)
    
            print(self.sampling_offsets.weight.abs().sum())
            print(self.sampling_offsets.bias.abs().sum())
    
        def forward(self,
                    query,
                    key,
                    value,
                    residual=None,
                    query_pos=None,
                    key_padding_mask=None,
                    reference_points=None,
                    spatial_shapes=None,
                    level_start_index=None,
                    **kwargs):
            print(self.sampling_offsets.weight.abs().sum())
            print(self.sampling_offsets.bias.abs().sum())
    
            if key is None:
                key = query
            if value is None:
                value = key
    
            if residual is None:
                inp_residual = query
            if query_pos is not None:
                query = query + query_pos
    
            # change to (bs, num_query ,embed_dims)
            query = query.permute(1, 0, 2)
            value = value.permute(1, 0, 2)
    
            bs, num_query, _ = query.shape
            bs, num_key, _ = value.shape
            assert (spatial_shapes[:, 0] * spatial_shapes[:, 1]).sum() == num_key
    
            value = self.value_proj(value)
            if key_padding_mask is not None:
                value = value.masked_fill(key_padding_mask[..., None], 0.0)
            value = value.view(bs, num_key, self.num_heads, -1)
            sampling_offsets = self.sampling_offsets(query).view(
                bs, num_query, self.num_heads, self.num_levels, self.num_points, 2)
            attention_weights = self.attention_weights(query).view(
                bs, num_query, self.num_heads, self.num_levels * self.num_points)
            attention_weights = attention_weights.softmax(-1)
    
            attention_weights = attention_weights.view(bs, num_query,
                                                       self.num_heads,
                                                       self.num_levels,
                                                       self.num_points)
            if reference_points.shape[-1] == 2:
                offset_normalizer = torch.stack(
                    [spatial_shapes[..., 1], spatial_shapes[..., 0]], -1)
                sampling_locations = reference_points[:, :, None, :, None, :] \
                                     + sampling_offsets \
                                     / offset_normalizer[None, None, None, :, None, :]
            elif reference_points.shape[-1] == 4:
                sampling_locations = reference_points[:, :, None, :, None, :2] \
                                     + sampling_offsets / self.num_points \
                                     * reference_points[:, :, None, :, None, 2:] \
                                     * 0.5
            else:
                raise ValueError(
                    f'Last dim of reference_points must be'
                    f' 2 or 4, but get {reference_points.shape[-1]} instead.')
            if torch.cuda.is_available():
                output = MultiScaleDeformableAttnFunction.apply(
                    value, spatial_shapes, level_start_index, sampling_locations,
                    attention_weights, self.im2col_step)
            else:
                output = multi_scale_deformable_attn_pytorch(
                    value, spatial_shapes, level_start_index, sampling_locations,
                    attention_weights, self.im2col_step)
            output = self.output_proj(output).permute(1, 0, 2)
            # (num_query, bs ,embed_dims)
            return self.dropout(output) + inp_residual
    

    image

    opened by LuckyDC 17
  • add model registry

    add model registry

    This PR refactored Registry class in following ways:

    1. make build function an attribute of Registry class.

    before:

    model = build_from_cfg(cfg, MODELS)
    

    after:

    model = MODELS.build(cfg)
    

    build function could be configured by passing argument.

    1. Added hierarchy structure for Registry.

    For example, we can define MODEL registry in both MMDetection and MMClassification as followed: In MMDetection:

    from mmcv.utils import Registry
    from mmcv.cnn import MODELS as MMCV_MODELS
    MODELS = Registry('model', parent=MMCV_MODELS)
    
    @MODELS.register_module()
    class NetA(nn.Module):
        def forward(self, x):
            return x
    

    In MMClassification:

    from mmcv.utils import Registry
    from mmcv.cnn import MODELS as MMCV_MODELS
    MODELS = Registry('model', parent=MMCV_MODELS)
    
    @MODELS.register_module()
    class NetB(nn.Module):
        def forward(self, x):
            return x + 1
    

    We could build either NetA or NetB by:

    from mmcv.cnn import MODELS as MMCV_MODELS
    net_a = MMCV_MODELS.build(cfg=dict(type='mmdet.NetA'))
    net_b = MMCV_MODELS.build(cfg=dict(type='mmcls.NetB'))
    

    Modification for MM repos:

    before:

    from mmcv.utils import Registry, build_from_cfg
    BACKBONES = Registry('backbone')
    def build(cfg, registry, default_args=None):
        """Build a module.
    
        Args:
            cfg (dict, list[dict]): The config of modules, is is either a dict
                or a list of configs.
            registry (:obj:`Registry`): A registry the module belongs to.
            default_args (dict, optional): Default arguments to build the module.
                Defaults to None.
    
        Returns:
            nn.Module: A built nn module.
        """
        if isinstance(cfg, list):
            modules = [
                build_from_cfg(cfg_, registry, default_args) for cfg_ in cfg
            ]
            return nn.Sequential(*modules)
        else:
            return build_from_cfg(cfg, registry, default_args)
    
    def build_backbone(cfg):
        """Build backbone."""
        return build(cfg, BACKBONES) 
    

    after:

    from mmcv.cnn import ModelRegistry
    from mmcv.cnn import MODELS as MMCV_MODELS
    MODELS = ModelRegistry('models', parent=MMCV_MODELS)
    def build_model(cfg):
        """Build model."""
        return MODELS.build(cfg)
    
    opened by xvjiarui 17
  • TypeError: init_weights() missing 1 required positional argument: 'pretrained'

    TypeError: init_weights() missing 1 required positional argument: 'pretrained'

    File "tools/train.py", line 189, in main() File "tools/train.py", line 163, in main model.init_weights() File "C:\Users\topseven\anaconda3\envs\mmcv\lib\site-packages\mmcv\runner\base_module.py", line 117, in init_weights m.init_weights() TypeError: init_weights() missing 1 required positional argument: 'pretrained'

    Downstream 
    opened by apanand14 17
  • pytorch1.81 build failed

    pytorch1.81 build failed

    (mmcv) [[email protected] mmcv]$ MMCV_WITH_OPS=1 pip install -e . Looking in indexes: https://mirrors.aliyun.com/pypi/simple/ Obtaining file:///home/duxiaogang/mmcv Collecting addict Using cached https://mirrors.aliyun.com/pypi/packages/6a/00/b08f23b7d7e1e14ce01419a467b583edbb93c6cdb8654e54a9cc579cd61f/addict-2.4.0-py3-none-any.whl (3.8 kB) Requirement already satisfied: numpy in /home/duxiaogang/anaconda3/envs/mmcv/lib/python3.6/site-packages (from mmcv-full==1.3.12) (1.19.5) Collecting packaging Using cached https://mirrors.aliyun.com/pypi/packages/3c/77/e2362b676dc5008d81be423070dd9577fa03be5da2ba1105811900fda546/packaging-21.0-py3-none-any.whl (40 kB) Requirement already satisfied: Pillow in /home/duxiaogang/anaconda3/envs/mmcv/lib/python3.6/site-packages (from mmcv-full==1.3.12) (8.3.1) Collecting pyyaml Using cached https://mirrors.aliyun.com/pypi/packages/7a/5b/bc0b5ab38247bba158504a410112b6c03f153c652734ece1849749e5f518/PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl (640 kB) Collecting yapf Using cached https://mirrors.aliyun.com/pypi/packages/5f/0d/8814e79eb865eab42d95023b58b650d01dec6f8ea87fc9260978b1bf2167/yapf-0.31.0-py2.py3-none-any.whl (185 kB) Collecting opencv-python>=3 Using cached https://mirrors.aliyun.com/pypi/packages/7f/45/32b09b11c76c354beb94c6549d844241709366fac02f253aa7f7b9ec9861/opencv_python-4.5.3.56-cp36-cp36m-manylinux2014_x86_64.whl (49.9 MB) Collecting pyparsing>=2.0.2 Using cached https://mirrors.aliyun.com/pypi/packages/8a/bb/488841f56197b13700afd5658fc279a2025a39e22449b7cf29864669b15d/pyparsing-2.4.7-py2.py3-none-any.whl (67 kB) Installing collected packages: pyparsing, yapf, pyyaml, packaging, opencv-python, addict, mmcv-full Running setup.py develop for mmcv-full ERROR: Command errored out with exit status 1: command: /home/duxiaogang/anaconda3/envs/mmcv/bin/python3.6 -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/duxiaogang/mmcv/setup.py'"'"'; file='"'"'/home/duxiaogang/mmcv/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' develop --no-deps cwd: /home/duxiaogang/mmcv/ Complete output (103 lines): running develop running egg_info creating mmcv_full.egg-info writing mmcv_full.egg-info/PKG-INFO writing dependency_links to mmcv_full.egg-info/dependency_links.txt writing requirements to mmcv_full.egg-info/requires.txt writing top-level names to mmcv_full.egg-info/top_level.txt writing manifest file 'mmcv_full.egg-info/SOURCES.txt' reading manifest file 'mmcv_full.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'LICENSE' adding license file 'LICENSES.md' writing manifest file 'mmcv_full.egg-info/SOURCES.txt' running build_ext building 'mmcv._ext' extension creating /home/duxiaogang/mmcv/build creating /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6 creating /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/mmcv creating /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/mmcv/ops creating /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/mmcv/ops/csrc creating /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/mmcv/ops/csrc/pytorch creating /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/mmcv/ops/csrc/pytorch/cuda Emitting ninja build file /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/build.ninja... Compiling objects... Using envvar MAX_JOBS (4) as the number of workers... /home/duxiaogang/anaconda3/envs/mmcv/lib/python3.6/site-packages/torch/utils/cpp_extension.py:286: UserWarning:

                                   !! WARNING !!
    
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    Your compiler (c++) is not compatible with the compiler Pytorch was
    built with for this platform, which is g++ on linux. Please
    use g++ to to compile your extension. Alternatively, you may
    compile PyTorch from source using c++, and then you can also use
    c++ to compile your extension.
    
    See https://github.com/pytorch/pytorch/blob/master/CONTRIBUTING.md for help
    with compiling PyTorch from source.
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    
                                  !! WARNING !!
    
      platform=sys.platform))
    1.10.2
    creating build/lib.linux-x86_64-3.6
    creating build/lib.linux-x86_64-3.6/mmcv
    g++ -pthread -shared -B /home/duxiaogang/anaconda3/envs/mmcv/compiler_compat -L/home/duxiaogang/anaconda3/envs/mmcv/lib -Wl,-rpath=/home/duxiaogang/anaconda3/envs/mmcv/lib -Wl,--no-as-needed -Wl,--sysroot=/ /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/bbox_overlaps.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/border_align.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/box_iou_rotated.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/box_iou_rotated_cpu.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/carafe.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/carafe_naive.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cc_attention.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/contour_expand.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/corner_pool.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/deform_conv.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/deform_conv_cpu.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/deform_roi_pool.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/focal_loss.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/fused_bias_leakyrelu.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/info.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/masked_conv2d.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/modulated_deform_conv.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/modulated_deform_conv_cpu.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/ms_deform_attn.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/nms.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/nms_rotated.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/nms_rotated_cpu.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/pixel_group.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/psamask.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/pybind.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/roi_align.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/roi_align_cpu.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/roi_align_rotated.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/roi_align_rotated_cpu.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/roi_pool.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/sync_bn.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/tin_shift.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/upfirdn2d.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/bbox_overlaps_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/border_align_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/box_iou_rotated_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/carafe_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/carafe_naive_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/cc_attention_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/deform_conv_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/deform_roi_pool_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/focal_loss_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/fused_bias_leakyrelu_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/masked_conv2d_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/modulated_deform_conv_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/ms_deform_attn_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/nms_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/nms_rotated_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/psamask_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/roi_align_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/roi_align_rotated_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/roi_pool_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/sync_bn_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/tin_shift_cuda.o /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/upfirdn2d_kernel.o -L/home/duxiaogang/anaconda3/envs/mmcv/lib/python3.6/site-packages/torch/lib -L/usr/local/cuda-11.2/lib64 -lc10 -ltorch -ltorch_cpu -ltorch_python -lcudart -lc10_cuda -ltorch_cuda_cu -ltorch_cuda_cpp -o build/lib.linux-x86_64-3.6/mmcv/_ext.cpython-36m-x86_64-linux-gnu.so
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/bbox_overlaps.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/border_align.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/box_iou_rotated.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/box_iou_rotated_cpu.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/carafe.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/carafe_naive.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cc_attention.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/contour_expand.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/corner_pool.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/deform_conv.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/deform_conv_cpu.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/deform_roi_pool.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/focal_loss.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/fused_bias_leakyrelu.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/info.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/masked_conv2d.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/modulated_deform_conv.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/modulated_deform_conv_cpu.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/ms_deform_attn.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/nms.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/nms_rotated.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/nms_rotated_cpu.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/pixel_group.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/psamask.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/pybind.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/roi_align.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/roi_align_cpu.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/roi_align_rotated.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/roi_align_rotated_cpu.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/roi_pool.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/sync_bn.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/tin_shift.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/upfirdn2d.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/bbox_overlaps_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/border_align_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/box_iou_rotated_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/carafe_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/carafe_naive_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/cc_attention_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/deform_conv_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/deform_roi_pool_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/focal_loss_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/fused_bias_leakyrelu_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/masked_conv2d_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/modulated_deform_conv_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/ms_deform_attn_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/nms_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/nms_rotated_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/psamask_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/roi_align_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/roi_align_rotated_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/roi_pool_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/sync_bn_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/tin_shift_cuda.o: No such file or directory
    g++: error: /home/duxiaogang/mmcv/build/temp.linux-x86_64-3.6/./mmcv/ops/csrc/pytorch/cuda/upfirdn2d_kernel.o: No such file or directory
    error: command 'g++' failed with exit status 1
    

    ERROR: Command errored out with exit status 1: /home/duxiaogang/anaconda3/envs/mmcv/bin/python3.6 -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/duxiaogang/mmcv/setup.py'"'"'; file='"'"'/home/duxiaogang/mmcv/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' develop --no-deps Check the logs for full command output.

    everyone,a request for help for me. ths

    opened by zgsxwsdxg 15
  • Resume function for the build process.

    Resume function for the build process.

    Describe the feature As we can see, build the mmcv-full locally will take ten to dozens of ten minutes. Most of the time was spent on the compilation for the .cu file and .cpp file. When the build failed, we must fix some config and run the build process from scratch, so it will waste a lot of time. I wander if we can save the successful built file and restart from the failed one, this will save plenty of time.

    opened by DingYuan0118 0
  • [Feature]Support skip nms

    [Feature]Support skip nms

    Motivation

    Some users want to get raw results before the NMS of the model to do the ensemble, such as https://github.com/open-mmlab/mmdetection/issues/4840. After careful consideration, I believe we can control the NMS with nms in test_cfg, and you can set nms=None when you skip the nms.

    Modification

    Skip nms when nms_cfg is None in batched_nms

    BC-breaking (Optional)

    None

    Use cases (Optional)

    test_cfg=dict(
        nms_pre=1000,
        min_bbox_size=0,
        score_thr=0.05,
        nms=None,
        max_per_img=100)
    
    opened by jshilong 0
  • Does mmcv need to include pybind11 path when compiling?

    Does mmcv need to include pybind11 path when compiling?

    Hi,

    I compiled torch1.9 and install the compiled wheel on aarch64 platform.

    after that I tried to install mmcv-full==1.3.9 by pip, and it said that pybind11.h is not found.

    pybind11/pybind11.h: No such file or directory
    

    But I did install pybind11 by

    pip install pybind11
    

    So I tried to install mmcv from source and manually include pybind11 path in setup.py.

    I am not sure why I need to manually include the path.

    any idea?

    opened by twmht 4
  • [Fix] Fix checkpoint local files detect

    [Fix] Fix checkpoint local files detect

    Thanks for your contribution and we appreciate it a lot. The following instructions would make your pull request more healthy and more easily get feedback. If you do not understand some items, don't worry, just make the pull request and seek help from maintainers.

    Motivation

    Related Issue: https://github.com/open-mmlab/mmcv/issues/990 Detect checkpoint files more effectively.

    Modification

    Add support for local files with relative path detect.

    BC-breaking (Optional)

    Does the modification introduce changes that break the backward-compatibility of the downstream repositories? If so, please describe how it breaks the compatibility and how the downstream projects should modify their code to keep compatibility with this PR.

    Use cases (Optional)

    If this PR introduces a new feature, it is better to list some use cases here, and update the documentation.

    Checklist

    Before PR:

    • [x] I have read and followed the workflow indicated in the CONTRIBUTING.md to create this PR.
    • [x] Pre-commit or linting tools indicated in CONTRIBUTING.md are used to fix the potential lint issues.
    • [x] Bug fixes are covered by unit tests, the case that causes the bug should be added in the unit tests.
    • [x] New functionalities are covered by complete unit tests. If not, please add more unit test to ensure the correctness.
    • [x] The documentation has been modified accordingly, including docstring or example tutorials.

    After PR:

    • [x] If the modification has potential influence on downstream or other related projects, this PR should be tested with some of those projects, like MMDet or MMCls.
    • [x] CLA has been signed and all committers have signed the CLA in this PR.
    opened by teamwong111 0
  • TensorRT Plugins failed during compiling

    TensorRT Plugins failed during compiling

    Hello,

    I am trying to convert text recognition from ONNX to TensorRT. I was able to compile the ONNX runtime and convert the pytorch model to the onnx. But I'm facing a problem with compiling TensorRT Plugins. I tried several time and follow all the steps that written in this document https://github.com/open-mmlab/mmcv/blob/master/docs/deployment/tensorrt_plugin.md and the other documentation but no success.

    This is the error I get when i try this command MMCV_WITH_OPS=1 MMCV_WITH_TRT=1 pip install -e .

         command: /home/ /anaconda3/envs/mmlab/bin/python3.8 -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/ /Documents/Dev/mmcv/setup.py'"'"'; __file__='"'"'/home/ /Documents/Dev/mmcv/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps
             cwd: /home/ /Documents/Dev/mmcv/
        Complete output (461 lines):
        running develop
        running egg_info
        writing mmcv_full.egg-info/PKG-INFO
        writing dependency_links to mmcv_full.egg-info/dependency_links.txt
        writing requirements to mmcv_full.egg-info/requires.txt
        writing top-level names to mmcv_full.egg-info/top_level.txt
        reading manifest file 'mmcv_full.egg-info/SOURCES.txt'
        reading manifest template 'MANIFEST.in'
        adding license file 'LICENSE'
        adding license file 'LICENSES.md'
        writing manifest file 'mmcv_full.egg-info/SOURCES.txt'
        running build_ext
        building 'mmcv._ext_trt' extension
        creating build/temp.linux-x86_64-3.8/mmcv/ops/csrc/tensorrt
        creating build/temp.linux-x86_64-3.8/mmcv/ops/csrc/tensorrt/plugins
        /usr/local/cuda-11.4/bin/nvcc -DMMCV_WITH_CUDA -DMMCV_WITH_TRT -I/home/ /Documents/Dev/mmcv/mmcv/ops/csrc/common/cuda -I/home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt -I/home/ /Downloads/TensorRT-8.2.1.8/include -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include/TH -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include/THC -I/usr/local/cuda-11.4/include -I/home/ /anaconda3/envs/mmlab/include/python3.8 -c ./mmcv/ops/csrc/tensorrt/plugins/trt_nms_kernel.cu -o build/temp.linux-x86_64-3.8/./mmcv/ops/csrc/tensorrt/plugins/trt_nms_kernel.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options '-fPIC' -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE="_gcc" -DPYBIND11_STDLIB="_libstdcpp" -DPYBIND11_BUILD_ABI="_cxxabi1011" -DTORCH_EXTENSION_NAME=_ext_trt -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 -std=c++14
        /usr/local/cuda-11.4/bin/nvcc -DMMCV_WITH_CUDA -DMMCV_WITH_TRT -I/home/ /Documents/Dev/mmcv/mmcv/ops/csrc/common/cuda -I/home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt -I/home/ /Downloads/TensorRT-8.2.1.8/include -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include/TH -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include/THC -I/usr/local/cuda-11.4/include -I/home/ /anaconda3/envs/mmlab/include/python3.8 -c ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align_kernel.cu -o build/temp.linux-x86_64-3.8/./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align_kernel.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options '-fPIC' -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE="_gcc" -DPYBIND11_STDLIB="_libstdcpp" -DPYBIND11_BUILD_ABI="_cxxabi1011" -DTORCH_EXTENSION_NAME=_ext_trt -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 -std=c++14
        /usr/local/cuda-11.4/bin/nvcc -DMMCV_WITH_CUDA -DMMCV_WITH_TRT -I/home/ /Documents/Dev/mmcv/mmcv/ops/csrc/common/cuda -I/home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt -I/home/ /Downloads/TensorRT-8.2.1.8/include -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include/TH -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include/THC -I/usr/local/cuda-11.4/include -I/home/ /anaconda3/envs/mmlab/include/python3.8 -c ./mmcv/ops/csrc/tensorrt/plugins/trt_corner_pool_kernel.cu -o build/temp.linux-x86_64-3.8/./mmcv/ops/csrc/tensorrt/plugins/trt_corner_pool_kernel.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --compiler-options '-fPIC' -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE="_gcc" -DPYBIND11_STDLIB="_libstdcpp" -DPYBIND11_BUILD_ABI="_cxxabi1011" -DTORCH_EXTENSION_NAME=_ext_trt -D_GLIBCXX_USE_CXX11_ABI=0 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 -std=c++14
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h: In member function ‘virtual bool nvinfer1::IGpuAllocator::deallocate(void*)’:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:1484:18: warning: ‘virtual void nvinfer1::IGpuAllocator::free(void*)’ is deprecated [-Wdeprecated-declarations]
         1484 |         this->free(memory);
              |                  ^
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:1415:29: note: declared here
         1415 |     TRT_DEPRECATED virtual void free(void* const memory) noexcept = 0;
              |                             ^~~~
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h: At global scope:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:6664:84: warning: ‘IRNNv2Layer’ is deprecated [-Wdeprecated-declarations]
         6664 |         ITensor& input, int32_t layerCount, int32_t hiddenSize, int32_t maxSeqLen, RNNOperation op) noexcept
              |                                                                                    ^~~~~~~~
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:3252:22: note: declared here
         3252 | class TRT_DEPRECATED IRNNv2Layer : public ILayer
              |                      ^~~~~~~~~~~
        gcc -pthread -B /home/ /anaconda3/envs/mmlab/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DMMCV_WITH_CUDA -DMMCV_WITH_TRT -I/home/ /Documents/Dev/mmcv/mmcv/ops/csrc/common/cuda -I/home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt -I/home/ /Downloads/TensorRT-8.2.1.8/include -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include/torch/csrc/api/include -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include/TH -I/home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/include/THC -I/usr/local/cuda-11.4/include -I/home/ /anaconda3/envs/mmlab/include/python3.8 -c ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp -o build/temp.linux-x86_64-3.8/./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.o -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE="_gcc" -DPYBIND11_STDLIB="_libstdcpp" -DPYBIND11_BUILD_ABI="_cxxabi1011" -DTORCH_EXTENSION_NAME=_ext_trt -D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14
        cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h: In member function ‘virtual bool nvinfer1::IGpuAllocator::deallocate(void*)’:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:1484:26: warning: ‘virtual void nvinfer1::IGpuAllocator::free(void*)’ is deprecated [-Wdeprecated-declarations]
         1484 |         this->free(memory);
              |                          ^
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:1415:33: note: declared here
         1415 |     TRT_DEPRECATED virtual void free(void* const memory) noexcept = 0;
              |                                 ^~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h: At global scope:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:6664:101: warning: ‘IRNNv2Layer’ is deprecated [-Wdeprecated-declarations]
         6664 |         ITensor& input, int32_t layerCount, int32_t hiddenSize, int32_t maxSeqLen, RNNOperation op) noexcept
              |                                                                                                     ^~~~~~~~
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:3252:22: note: declared here
         3252 | class TRT_DEPRECATED IRNNv2Layer : public ILayer
              |                      ^~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:23:34: error: looser throw specifier for ‘virtual nvinfer1::IPluginV2DynamicExt* RoIAlignPluginDynamic::clone() const’
           23 |   nvinfer1::IPluginV2DynamicExt *clone() const override;
              |                                  ^~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:54,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntime.h:384:26: note: overridden function is ‘virtual nvinfer1::IPluginV2DynamicExt* nvinfer1::IPluginV2DynamicExt::clone() const noexcept’
          384 |     IPluginV2DynamicExt* clone() const noexcept override = 0;
              |                          ^~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:24:23: error: looser throw specifier for ‘virtual nvinfer1::DimsExprs RoIAlignPluginDynamic::getOutputDimensions(int, const nvinfer1::DimsExprs*, int, nvinfer1::IExprBuilder&)’
           24 |   nvinfer1::DimsExprs getOutputDimensions(
              |                       ^~~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:54,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntime.h:410:23: note: overridden function is ‘virtual nvinfer1::DimsExprs nvinfer1::IPluginV2DynamicExt::getOutputDimensions(int32_t, const nvinfer1::DimsExprs*, int32_t, nvinfer1::IExprBuilder&) noexcept’
          410 |     virtual DimsExprs getOutputDimensions(
              |                       ^~~~~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:27:8: error: looser throw specifier for ‘virtual bool RoIAlignPluginDynamic::supportsFormatCombination(int, const nvinfer1::PluginTensorDesc*, int, int)’
           27 |   bool supportsFormatCombination(int pos,
              |        ^~~~~~~~~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:54,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntime.h:451:18: note: overridden function is ‘virtual bool nvinfer1::IPluginV2DynamicExt::supportsFormatCombination(int32_t, const nvinfer1::PluginTensorDesc*, int32_t, int32_t) noexcept’
          451 |     virtual bool supportsFormatCombination(
              |                  ^~~~~~~~~~~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:30:8: error: looser throw specifier for ‘virtual void RoIAlignPluginDynamic::configurePlugin(const nvinfer1::DynamicPluginTensorDesc*, int, const nvinfer1::DynamicPluginTensorDesc*, int)’
           30 |   void configurePlugin(const nvinfer1::DynamicPluginTensorDesc *in,
              |        ^~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:54,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntime.h:493:18: note: overridden function is ‘virtual void nvinfer1::IPluginV2DynamicExt::configurePlugin(const nvinfer1::DynamicPluginTensorDesc*, int32_t, const nvinfer1::DynamicPluginTensorDesc*, int32_t) noexcept’
          493 |     virtual void configurePlugin(const DynamicPluginTensorDesc* in, int32_t nbInputs,
              |                  ^~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:34:10: error: looser throw specifier for ‘virtual size_t RoIAlignPluginDynamic::getWorkspaceSize(const nvinfer1::PluginTensorDesc*, int, const nvinfer1::PluginTensorDesc*, int) const’
           34 |   size_t getWorkspaceSize(const nvinfer1::PluginTensorDesc *inputs,
              |          ^~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:54,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntime.h:506:20: note: overridden function is ‘virtual size_t nvinfer1::IPluginV2DynamicExt::getWorkspaceSize(const nvinfer1::PluginTensorDesc*, int32_t, const nvinfer1::PluginTensorDesc*, int32_t) const noexcept’
          506 |     virtual size_t getWorkspaceSize(const PluginTensorDesc* inputs, int32_t nbInputs, const PluginTensorDesc* outputs,
              |                    ^~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:38:7: error: looser throw specifier for ‘virtual int RoIAlignPluginDynamic::enqueue(const nvinfer1::PluginTensorDesc*, const nvinfer1::PluginTensorDesc*, const void* const*, void* const*, void*, cudaStream_t)’
           38 |   int enqueue(const nvinfer1::PluginTensorDesc *inputDesc,
              |       ^~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:54,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntime.h:522:21: note: overridden function is ‘virtual int32_t nvinfer1::IPluginV2DynamicExt::enqueue(const nvinfer1::PluginTensorDesc*, const nvinfer1::PluginTensorDesc*, const void* const*, void* const*, void*, cudaStream_t) noexcept’
          522 |     virtual int32_t enqueue(const PluginTensorDesc* inputDesc, const PluginTensorDesc* outputDesc,
              |                     ^~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:44:22: error: looser throw specifier for ‘virtual nvinfer1::DataType RoIAlignPluginDynamic::getOutputDataType(int, const nvinfer1::DataType*, int) const’
           44 |   nvinfer1::DataType getOutputDataType(int index,
              |                      ^~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:731:32: note: overridden function is ‘virtual nvinfer1::DataType nvinfer1::IPluginV2Ext::getOutputDataType(int32_t, const nvinfer1::DataType*, int32_t) const noexcept’
          731 |     virtual nvinfer1::DataType getOutputDataType(
              |                                ^~~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:49:15: error: looser throw specifier for ‘virtual const char* RoIAlignPluginDynamic::getPluginType() const’
           49 |   const char *getPluginType() const override;
              |               ^~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:440:30: note: overridden function is ‘virtual const AsciiChar* nvinfer1::IPluginV2::getPluginType() const noexcept’
          440 |     virtual AsciiChar const* getPluginType() const noexcept = 0;
              |                              ^~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:50:15: error: looser throw specifier for ‘virtual const char* RoIAlignPluginDynamic::getPluginVersion() const’
           50 |   const char *getPluginVersion() const override;
              |               ^~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:454:30: note: overridden function is ‘virtual const AsciiChar* nvinfer1::IPluginV2::getPluginVersion() const noexcept’
          454 |     virtual AsciiChar const* getPluginVersion() const noexcept = 0;
              |                              ^~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:51:7: error: looser throw specifier for ‘virtual int RoIAlignPluginDynamic::getNbOutputs() const’
           51 |   int getNbOutputs() const override;
              |       ^~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:469:21: note: overridden function is ‘virtual int32_t nvinfer1::IPluginV2::getNbOutputs() const noexcept’
          469 |     virtual int32_t getNbOutputs() const noexcept = 0;
              |                     ^~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:52:7: error: looser throw specifier for ‘virtual int RoIAlignPluginDynamic::initialize()’
           52 |   int initialize() override;
              |       ^~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:558:21: note: overridden function is ‘virtual int32_t nvinfer1::IPluginV2::initialize() noexcept’
          558 |     virtual int32_t initialize() noexcept = 0;
              |                     ^~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:53:8: error: looser throw specifier for ‘virtual void RoIAlignPluginDynamic::terminate()’
           53 |   void terminate() override;
              |        ^~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:572:18: note: overridden function is ‘virtual void nvinfer1::IPluginV2::terminate() noexcept’
          572 |     virtual void terminate() noexcept = 0;
              |                  ^~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:54:10: error: looser throw specifier for ‘virtual size_t RoIAlignPluginDynamic::getSerializationSize() const’
           54 |   size_t getSerializationSize() const override;
              |          ^~~~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:620:20: note: overridden function is ‘virtual size_t nvinfer1::IPluginV2::getSerializationSize() const noexcept’
          620 |     virtual size_t getSerializationSize() const noexcept = 0;
              |                    ^~~~~~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:55:8: error: looser throw specifier for ‘virtual void RoIAlignPluginDynamic::serialize(void*) const’
           55 |   void serialize(void *buffer) const override;
              |        ^~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:635:18: note: overridden function is ‘virtual void nvinfer1::IPluginV2::serialize(void*) const noexcept’
          635 |     virtual void serialize(void* buffer) const noexcept = 0;
              |                  ^~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:56:8: error: looser throw specifier for ‘virtual void RoIAlignPluginDynamic::destroy()’
           56 |   void destroy() override;
              |        ^~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:645:18: note: overridden function is ‘virtual void nvinfer1::IPluginV2::destroy() noexcept’
          645 |     virtual void destroy() noexcept = 0;
              |                  ^~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:57:8: error: looser throw specifier for ‘virtual void RoIAlignPluginDynamic::setPluginNamespace(const char*)’
           57 |   void setPluginNamespace(const char *pluginNamespace) override;
              |        ^~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:677:18: note: overridden function is ‘virtual void nvinfer1::IPluginV2::setPluginNamespace(const AsciiChar*) noexcept’
          677 |     virtual void setPluginNamespace(AsciiChar const* pluginNamespace) noexcept = 0;
              |                  ^~~~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:58:15: error: looser throw specifier for ‘virtual const char* RoIAlignPluginDynamic::getPluginNamespace() const’
           58 |   const char *getPluginNamespace() const override;
              |               ^~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:687:30: note: overridden function is ‘virtual const AsciiChar* nvinfer1::IPluginV2::getPluginNamespace() const noexcept’
          687 |     virtual AsciiChar const* getPluginNamespace() const noexcept = 0;
              |                              ^~~~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:11:7: error: ‘virtual bool nvinfer1::IPluginV2DynamicExt::canBroadcastInputAcrossBatch(int32_t) const’ is private within this context
           11 | class RoIAlignPluginDynamic : public nvinfer1::IPluginV2DynamicExt {
              |       ^~~~~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:54,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntime.h:564:10: note: declared private here
          564 |     bool canBroadcastInputAcrossBatch(int32_t) const noexcept override final
              |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:11:7: error: ‘virtual void nvinfer1::IPluginV2DynamicExt::configurePlugin(const Dims*, int32_t, const Dims*, int32_t, const nvinfer1::DataType*, const nvinfer1::DataType*, const bool*, const bool*, nvinfer1::PluginFormat, int32_t)’ is private within this context
           11 | class RoIAlignPluginDynamic : public nvinfer1::IPluginV2DynamicExt {
              |       ^~~~~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:54,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntime.h:544:10: note: declared private here
          544 |     void configurePlugin(Dims const*, int32_t, Dims const*, int32_t, DataType const*, DataType const*, bool const*,
              |          ^~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:11:7: error: ‘virtual int32_t nvinfer1::IPluginV2DynamicExt::enqueue(int32_t, const void* const*, void* const*, void*, cudaStream_t)’ is private within this context
           11 | class RoIAlignPluginDynamic : public nvinfer1::IPluginV2DynamicExt {
              |       ^~~~~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:54,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntime.h:574:13: note: declared private here
          574 |     int32_t enqueue(int32_t, const void* const*, void* const*, void*, cudaStream_t) noexcept override final
              |             ^~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:11:7: error: ‘virtual nvinfer1::Dims nvinfer1::IPluginV2DynamicExt::getOutputDimensions(int32_t, const Dims*, int32_t)’ is private within this context
           11 | class RoIAlignPluginDynamic : public nvinfer1::IPluginV2DynamicExt {
              |       ^~~~~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:54,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntime.h:554:10: note: declared private here
          554 |     Dims getOutputDimensions(int32_t, Dims const*, int32_t) noexcept override final
              |          ^~~~~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:11:7: error: ‘virtual size_t nvinfer1::IPluginV2DynamicExt::getWorkspaceSize(int32_t) const’ is private within this context
           11 | class RoIAlignPluginDynamic : public nvinfer1::IPluginV2DynamicExt {
              |       ^~~~~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:54,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntime.h:569:12: note: declared private here
          569 |     size_t getWorkspaceSize(int32_t) const noexcept override final
              |            ^~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:11:7: error: ‘virtual bool nvinfer1::IPluginV2DynamicExt::isOutputBroadcastAcrossBatch(int32_t, const bool*, int32_t) const’ is private within this context
           11 | class RoIAlignPluginDynamic : public nvinfer1::IPluginV2DynamicExt {
              |       ^~~~~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:54,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntime.h:559:10: note: declared private here
          559 |     bool isOutputBroadcastAcrossBatch(int32_t, bool const*, int32_t) const noexcept override final
              |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:11:7: error: ‘virtual bool nvinfer1::IPluginV2DynamicExt::supportsFormat(nvinfer1::DataType, nvinfer1::PluginFormat) const’ is private within this context
           11 | class RoIAlignPluginDynamic : public nvinfer1::IPluginV2DynamicExt {
              |       ^~~~~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:54,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntime.h:549:10: note: declared private here
          549 |     bool supportsFormat(DataType, PluginFormat) const noexcept override final
              |          ^~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:86:15: error: looser throw specifier for ‘virtual const char* RoIAlignPluginDynamicCreator::getPluginName() const’
           86 |   const char *getPluginName() const override;
              |               ^~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:1134:30: note: overridden function is ‘virtual const AsciiChar* nvinfer1::IPluginCreator::getPluginName() const noexcept’
         1134 |     virtual AsciiChar const* getPluginName() const noexcept = 0;
              |                              ^~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:88:15: error: looser throw specifier for ‘virtual const char* RoIAlignPluginDynamicCreator::getPluginVersion() const’
           88 |   const char *getPluginVersion() const override;
              |               ^~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:1148:30: note: overridden function is ‘virtual const AsciiChar* nvinfer1::IPluginCreator::getPluginVersion() const noexcept’
         1148 |     virtual AsciiChar const* getPluginVersion() const noexcept = 0;
              |                              ^~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:90:42: error: looser throw specifier for ‘virtual const nvinfer1::PluginFieldCollection* RoIAlignPluginDynamicCreator::getFieldNames()’
           90 |   const nvinfer1::PluginFieldCollection *getFieldNames() override;
              |                                          ^~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:1160:42: note: overridden function is ‘virtual const nvinfer1::PluginFieldCollection* nvinfer1::IPluginCreator::getFieldNames() noexcept’
         1160 |     virtual PluginFieldCollection const* getFieldNames() noexcept = 0;
              |                                          ^~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:92:24: error: looser throw specifier for ‘virtual nvinfer1::IPluginV2* RoIAlignPluginDynamicCreator::createPlugin(const char*, const nvinfer1::PluginFieldCollection*)’
           92 |   nvinfer1::IPluginV2 *createPlugin(
              |                        ^~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:1171:24: note: overridden function is ‘virtual nvinfer1::IPluginV2* nvinfer1::IPluginCreator::createPlugin(const AsciiChar*, const nvinfer1::PluginFieldCollection*) noexcept’
         1171 |     virtual IPluginV2* createPlugin(AsciiChar const* name, PluginFieldCollection const* fc) noexcept = 0;
              |                        ^~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:95:24: error: looser throw specifier for ‘virtual nvinfer1::IPluginV2* RoIAlignPluginDynamicCreator::deserializePlugin(const char*, const void*, size_t)’
           95 |   nvinfer1::IPluginV2 *deserializePlugin(const char *name,
              |                        ^~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:1182:24: note: overridden function is ‘virtual nvinfer1::IPluginV2* nvinfer1::IPluginCreator::deserializePlugin(const AsciiChar*, const void*, size_t) noexcept’
         1182 |     virtual IPluginV2* deserializePlugin(AsciiChar const* name, void const* serialData, size_t serialLength) noexcept
              |                        ^~~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:99:8: error: looser throw specifier for ‘virtual void RoIAlignPluginDynamicCreator::setPluginNamespace(const char*)’
           99 |   void setPluginNamespace(const char *pluginNamespace) override;
              |        ^~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:1197:18: note: overridden function is ‘virtual void nvinfer1::IPluginCreator::setPluginNamespace(const AsciiChar*) noexcept’
         1197 |     virtual void setPluginNamespace(AsciiChar const* pluginNamespace) noexcept = 0;
              |                  ^~~~~~~~~~~~~~~~~~
        In file included from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:101:15: error: looser throw specifier for ‘virtual const char* RoIAlignPluginDynamicCreator::getPluginNamespace() const’
          101 |   const char *getPluginNamespace() const override;
              |               ^~~~~~~~~~~~~~~~~~
        In file included from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferLegacyDims.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInfer.h:53,
                         from /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferPlugin.h:53,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_plugin_helper.hpp:5,
                         from /home/ /Documents/Dev/mmcv/mmcv/ops/csrc/tensorrt/trt_roi_align.hpp:9,
                         from ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:2:
        /home/ /Downloads/TensorRT-8.2.1.8/include/NvInferRuntimeCommon.h:1211:30: note: overridden function is ‘virtual const AsciiChar* nvinfer1::IPluginCreator::getPluginNamespace() const noexcept’
         1211 |     virtual AsciiChar const* getPluginNamespace() const noexcept = 0;
              |                              ^~~~~~~~~~~~~~~~~~
        ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp: In member function ‘virtual int RoIAlignPluginDynamic::enqueue(const nvinfer1::PluginTensorDesc*, const nvinfer1::PluginTensorDesc*, const void* const*, void* const*, void*, cudaStream_t)’:
        ./mmcv/ops/csrc/tensorrt/plugins/trt_roi_align.cpp:125:27: warning: pointer of type ‘void *’ used in arithmetic [-Wpointer-arith]
          125 |       argmax_x = argmax_y + output_size * word_size;
              |                  ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
        /home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/setuptools/installer.py:27: SetuptoolsDeprecationWarning: setuptools.installer is deprecated. Requirements should be satisfied by a PEP 517 installer.
          warnings.warn(
        /home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/setuptools/command/easy_install.py:156: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
          warnings.warn(
        /home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
          warnings.warn(
        /home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/torch/utils/cpp_extension.py:370: UserWarning: Attempted to use ninja as the BuildExtension backend but we could not find ninja.. Falling back to using the slow distutils backend.
          warnings.warn(msg.format('we could not find ninja.'))
        error: command 'gcc' failed with exit status 1
        ----------------------------------------
      Rolling back uninstall of mmcv-full
      Moving to /home/ /anaconda3/envs/mmlab/lib/python3.8/site-packages/mmcv-full.egg-link
       from /tmp/pip-uninstall-ncp_gm3j/mmcv-full.egg-link
    ERROR: Command errored out with exit status 1: /home/ /anaconda3/envs/mmlab/bin/python3.8 -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/ /Documents/Dev/mmcv/setup.py'"'"'; __file__='"'"'/home/ /Documents/Dev/mmcv/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps Check the logs for full command output.
    
    

    I tried to compile the new version of tensortrt 8.2.1.8 instead of tensorrt version 7 since I have linux 20.

    OS: Ubuntu 20.04.3 LTS GPU: RTX 3090 CUDA: 11.3 Pytorch: 1.10

    TensorRT 
    opened by Auth0rM0rgan 4
  • [Feature] Detect anomalous parameters

    [Feature] Detect anomalous parameters

    Motivation

    Sometimes there are some anomalous parameters in the training phase, mainly two cases

    • Some parameters are not be used in a forward pass due to our wrong implementation, which causes the error when doing loss.backward()
    • Some parameters are not be used to produce loss, which causes the deadlock when doing loss.backward()

    In both cases,anomalous parameters are not included in the computational graph that is with loss as the root.

    Modification

    I add a debug option named detect_anomalous_params to OptimizerHook, which can help you find anomalous parameters

    BC-breaking (Optional)

    None

    opened by jshilong 1
  • Confusion about details of roi_algin code

    Confusion about details of roi_algin code

    Checklist

    1. I have searched related issues but cannot get the expected help.
    2. I have read the FAQ documentation but cannot get the expected help.

    Hi, I read the roi_align code recently, but one detail confused me. Line 27 in https://github.com/open-mmlab/mmcv/blob/master/mmcv/ops/csrc/common/cuda/deform_roi_pool_cuda_kernel.cuh The following code: " T roi_start_w = offset_rois[1] * spatial_scale - 0.5; T roi_start_h = offset_rois[2] * spatial_scale - 0.5; T roi_end_w = offset_rois[3] * spatial_scale - 0.5; T roi_end_h = offset_rois[4] * spatial_scale - 0.5;" Why minus 0.5? Experience? Looking forward to your recovery!

    opened by Mrxiaofei 0
  • [Feature] Add aws s3 file backend to FileClient

    [Feature] Add aws s3 file backend to FileClient

    Thanks for your contribution and we appreciate it a lot. The following instructions would make your pull request more healthy and more easily get feedback. If you do not understand some items, don't worry, just make the pull request and seek help from maintainers.

    Motivation

    The motivation of the PR is allow FileClient to support aws s3 file backend, and when the prefix is '​​s3', the installed backend can be automatically selected.

    Modification

    1. AWSBackend
      • Add a new Class AWSBackend to support reading/writing data from aws s3. Its interface is the same as PetrelBackend.
    2. FileClient
      • Add 'aws' to Attribute _backends.
      • Modify _prefix_to_backends to support multi file backend (PetrelBackend、CephBackend and AWSBackend).
      • Modify __new__ method to support when the prefix is '​​s3', the installed backend can be automatically selected.
    3. load_from_ceph
      • Modify try excpet, when backend import error, use prefix to Instantiate FileClient.
    4. test_fileio.py
      • Add AWSBackend unittest.

    BC-breaking (Optional)

    No

    Use cases (Optional)

    1. It relies on awscli and boto3, you must install and run aws configure in advance to use AWSBackend.
    import mmcv
    
    s3_path = 's3://bucket/object_name'
    client = mmcv.FileClient(backend='aws')
    client = mmcv.FileClient(prefix='s3')
    client = mmcv.FileClient.infer_client(uri=s3_path)
    

    Test

    • [x] The method of AWSBackend are all tested on aws s3, works as expected.
    • [x] __new__ of FileClient works as expected.
    • [x] load_from_ceph works as expected.

    Checklist

    Before PR:

    • [x] I have read and followed the workflow indicated in the CONTRIBUTING.md to create this PR.
    • [x] Pre-commit or linting tools indicated in CONTRIBUTING.md are used to fix the potential lint issues.
    • [x] Bug fixes are covered by unit tests, the case that causes the bug should be added in the unit tests.
    • [x] New functionalities are covered by complete unit tests. If not, please add more unit test to ensure the correctness.
    • [x] The documentation has been modified accordingly, including docstring or example tutorials.

    After PR:

    • [x] If the modification has potential influence on downstream or other related projects, this PR should be tested with some of those projects, like MMDet or MMCls.
    • [x] CLA has been signed and all committers have signed the CLA in this PR.
    opened by 274869388 0
  • [Feature] Add ModuleDict inherited from BaseModule and ModuleDict

    [Feature] Add ModuleDict inherited from BaseModule and ModuleDict

    Thanks for your contribution and we appreciate it a lot. The following instructions would make your pull request more healthy and more easily get feedback. If you do not understand some items, don't worry, just make the pull request and seek help from maintainers.

    Motivation

    Add ModuleDict base module.

    Modification

    mmcv/runner/init.py mmcv/runner/base_module.py docs/understand_mmcv/cnn.md docs_zh_CN/understand_mmcv/cnn.md mmcv/tests/test_runner/test_basemodule.py

    BC-breaking (Optional)

    Does the modification introduce changes that break the backward-compatibility of the downstream repositories? If so, please describe how it breaks the compatibility and how the downstream projects should modify their code to keep compatibility with this PR.

    Use cases (Optional)

    If this PR introduces a new feature, it is better to list some use cases here, and update the documentation.

    Checklist

    Before PR:

    • [x] I have read and followed the workflow indicated in the CONTRIBUTING.md to create this PR.
    • [x] Pre-commit or linting tools indicated in CONTRIBUTING.md are used to fix the potential lint issues.
    • [x] Bug fixes are covered by unit tests, the case that causes the bug should be added in the unit tests.
    • [x] New functionalities are covered by complete unit tests. If not, please add more unit test to ensure the correctness.
    • [x] The documentation has been modified accordingly, including docstring or example tutorials.

    After PR:

    • [ ] If the modification has potential influence on downstream or other related projects, this PR should be tested with some of those projects, like MMDet or MMCls.
    • [ ] CLA has been signed and all committers have signed the CLA in this PR.
    opened by LutingWang 2
  • Support `collect_env` on Windows

    Support `collect_env` on Windows

    As the following code shows, tail command can not be executed on Windows. https://github.com/open-mmlab/mmcv/blob/9fa5de8b9b393340c5a1fe5166725dfcb229dfe0/mmcv/utils/env.py#L60

    15:52:32  C:\Users\user\miniconda3\envs\mmcvv1.4.0_cuda111_py36_torch1.8.0\lib\site-packages\wheel\bdist_wheel.py:87: RuntimeWarning: Config variable 'WITH_PYMALLOC' is unset, Python ABI tag may be incorrect
    15:52:32    sys.version_info < (3, 8))) \
    15:52:38  1.8.0
    15:52:38  1.4.0
    15:53:06  'tail' 不是内部或外部命令,也不是可运行的程序
    15:53:06  或批处理文件。
    15:53:06  'gcc' 不是内部或外部命令,也不是可运行的程序
    15:53:06  或批处理文件。
    
    opened by del-zhenwu 0
Releases(v1.4.0)
  • v1.4.0(Dec 3, 2021)

    😀 We are glad to announce that we are providing the mmcv pre-built packages on Windows starting from v1.4.0.

    # pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html
    pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu102/torch1.10.0/index.html
    

    Improvements

    • Replace the third-party markdownlint hook with the official (#1535)
    • Add the CircleCI to test the unit tests of CUDA (#1540)
    • Skip CI when some specific files were changed (#1533)

    Bug fixes

    • Fix the python bind of iou3d (#1524)
    • Fix a compiled error on Windows (#1526, #1543)
    • Fix a compiled error on Linux with cuda9.0 (#1525)
    • Fix an undefined symbol error when installing from pip (#1544)

    Notes

    Since PyTorch 1.10.0 has been released and we have provided the mmcv-full pre-compiled packages for it, we no longer provide them compiled with PyTorch 1.3 & 1.4 since v1.3.17. You can find previous versions compiled with PyTorch 1.3 & 1.4 here. The compatibility is still ensured in our CI, but we will discard the support of PyTorch 1.3 & 1.4 next year.

    Contributors

    A total of 5 developers contributed to this release.

    @grimoire @teamwong111 @zhouzaida @ZwwWayne @wangruohui @del-zhenwu

    Source code(tar.gz)
    Source code(zip)
  • v1.3.18(Nov 25, 2021)

    New features

    • Add group_points, iou3d, roiaware_pool3d and voxelize in parrots (#1504)

    Improvements

    • Refactor csrc with device dispatcher (#1463)
    • Update MMCls models in model_zoo/mmcls.json (#1513)
    • Improve .gitignore about datasets and logs and checkpoints (#1477)

    Bug fixes

    • Fix compiled error on Windows (#1510)
    • Fix the unit test of Deform Conv (#1490)
    • Fix train example (#1502)
    • Fix ops links in LICENSES (#1517)
    • Skip the checking of LOCAL_RANK when loading checkpoint from HTTP or HTTPS (#1396)
    • Add load_url to handle incompatibility of PyTorch versions (#1377)

    Docs

    • Add a script to check the installation of mmcv-full (#1474)
    • Add the URL of pre-built packages built with CUDA 11.3 (#1489)
    • Fix grammatical error in Register docs (#1516)
    • Add the link and introduction of MMFlow in README (#1506)

    Notes

    Since PyTorch 1.10.0 has been released and we have provided the mmcv-full pre-compiled packages for it, we no longer provide them compiled with PyTorch 1.3 & 1.4 since v1.3.17. You can find previous versions compiled with PyTorch 1.3 & 1.4 here. The compatibility is still ensured in our CI, but we will discard the support of PyTorch 1.3 & 1.4 next year.

    Contributors

    A total of 13 developers contributed to this release.

    @grimoire @lzhangzz @RunningLeon @zhouzaida @ZwwWayne @teamwong111 @MeowZheng @luopeichao @mzr1996 @vansin @tobiasfshr @innerlee @ly015

    Source code(tar.gz)
    Source code(zip)
  • v1.3.17(Nov 11, 2021)

    Improvements

    • Improve the log when loading checkpoints (#1446)

    Bug fixes

    • Fix the wrong weight reference in BaseTransformerLayer (#1418)
    • Sleep 2 seconds to prevent deadlock in IterBasedRunner (#1422)
    • Fix deform conv by adding an extra argument im2col_step (#1459)
    • Print a warning log if eval_res is an empty dict (#1398)
    • Rename the init parameter task to name in PaviLoggerHook (#1438)
    • Update the test data of test_tin_shift (#1426)

    Docs

    • Add ops definition (#1434)
    • Fix invalid symbols in docstring (#1466)
    • Update the table of pre-built packages in README (#1433)

    Notes

    Since PyTorch 1.10.0 has been released and we have provided the mmcv-full pre-compiled packages for it, we no longer provide them compiled with PyTorch 1.3 & 1.4 since v1.3.17. You can find previous versions compiled with PyTorch 1.3 & 1.4 here. The compatibility is still ensured in our CI, but we will discard the support of PyTorch 1.3 & 1.4 next year.

    Contributors

    A total of 12 developers contributed to this release.

    @grimoire @gaotongxiao @zhouzaida @ZwwWayne @teamwong111 @MeowZheng @ly015 @nbei @RangiLyu @Junjun2016 @hhaAndroid @RunningLeon

    Source code(tar.gz)
    Source code(zip)
  • v1.3.16(Oct 25, 2021)

    New features

    • Add 4 detection3d related CUDA operators, which are voxel op, roiaware pool3d op, iou3d op and group points op (#1381, #1382, #1356, #1415)
    • Power FileClient and make it support more file interfaces (#1330)
    • Support uploading (loading) checkpoints to (from) different backends (#1375)

    Improvements

    • Add CI for PyTorch 1.10 (#1431)
    • Add case_sensitive argument in scandir (#1389)

    Bug fixes

    • Add DeviceGuard for ms_deform_attn_forward (#1402)
    • Fix config parsing error caused by non-ascii characters (#1410)
    • Fix error when building pdf documentaiton (#1414)
    • Update test data for test_iou3d (#1427)

    Docs

    • Polish the documentation (#1411)

    Notes

    Since PyTorch 1.10.0 has been released and we have provided the pre-compiled packages for it, we plan to end the support for PyTorch 1.3 and 1.4 in future releases. We will still provide pre-compiled packages of these two versions for three months, but the reliability and technical support are not guaranteed.

    Contributors

    A total of 11 developers contributed to this release.

    @jshilong , @bobo0810 , @ly015 , @zhouzaida , @Ezra-Yu , @DCNSW, @grimoire , @luopeichao , @ZwwWayne , @nbei , @mzr1996

    Source code(tar.gz)
    Source code(zip)
  • v1.3.15(Oct 16, 2021)

    New features

    • Add seven detection3d related CUDA operators, which are FurthestPointSample, KNN, GatherPoints, ThreeInterpolate, ThreeNN, AssignScoreWithK and RoIPointPool3d (#1337, #1354, #1338, #1355, #1357, #1358, )
    • Add Deformable Conv CustomOp for onnxruntime (#1343)

    Improvements

    • Switch the CUDA CI to the docker image provided by PyTorch (#1376)
    • Add code spell hook to pre-commit and fix typos (#1384)
    • Remove some obsolete code (#1370)

    Bug fixes

    • Fix the weight initialization of deform conv (#1262)
    • Revise the unit test of correlation (#1368)
    • Fix the unrecognized symbol in correlation.cpp (#1372)
    • Fix a potential bug in deprecated_api_warning (#1395)
    • Add error handler when getting host failed (#1374)
    • Fix the infernence issue of MultiScaleDeformableAttention on CPU device (#1223)
    • Add a condition to disable invalid memory write by furthest_sample_point (#1405)
    • Reduce the test memory usage of ms_deformable_attn (#1407)

    Docs

    • Add the Chinese documentation for CNN, ONNX, TensorRT, Build mmcv-full from source and contributing (#1246, #1331, #1336, #1353, #1351)
    • Add a note for installing mmcv-full (#1320)

    Notes

    Since PyTorch 1.9 has been released, we plan to end the support for PyTorch 1.3 and 1.4 in future releases. We will still provide pre-compiled packages of these two versions for three months, but the reliability and technical support are not guaranteed. In addition, starting from this version, we provide pre-compiled packages for Python 3.9.

    Contributors

    A total of 12 developers contributed to this release.

    @bofen97, @grimoire, @zhouzaida, @ZwwWayne, @MeowZheng, @Fu0511, @hhaAndroid, @eugene123tw, @DCNSW, @del-zhenwu, @ZhichengHuang, @jshilong

    Source code(tar.gz)
    Source code(zip)
  • v1.3.14(Sep 24, 2021)

    New features

    • Add two CUDA OPs BallQuery and Correlation (#1332, #1361 )
    • Support loading optical flow data from bytes (#1362)
    • Support empty tensor in MMSyncBN (#1205)

    Docs

    • Replace the default theme of documentation with PyTorch Sphinx Theme (#1321)
    • Add the Chinese documentation for registry.md, config.md, ops.md and visualization.md (#1204, #1349, #1350)

    Notes

    Since PyTorch 1.9 has been released, we plan to end the support for PyTorch 1.3 and 1.4 in future releases. We will still provide pre-compiled packages of these two versions for three months, but the reliability and technical support are not guaranteed.

    Contributors

    A total of 8 developers contributed to this release.

    @AluminiumOxide, @MeowZheng, @zhouzaida, @grimoire, @ZwwWayne, @nbei, @DCNSW, @luopeichao

    Source code(tar.gz)
    Source code(zip)
  • v1.3.13(Sep 10, 2021)

    New features

    • Add the CPU implementation of DCN and Modulated DCN (#1278)
    • Add the revert_sync_batchnorm function to convert SyncBN in any model to BN (#1253)
    • Add python3.9 in CI to verify the support for python3.9 (#1291)

    Improvements

    • Reimplement cc_attention using pure PyTorch (#1201)
    • Enhance the output of exception (#1309)
    • Restrict the warning message (#1267)

    Bug fixes

    • Fix missing state_dict._metadata when saving and loading checkpoints (#1294)
    • Fix typo about installation (#1313)
    • Fix sphinx version (#1301)

    Docs

    • Add the Chinese documentation for faq.md (#1252)

    Notes

    Since PyTorch 1.9 has been released, we plan to end the support for PyTorch 1.3 and 1.4 in future releases. We will still provide pre-compiled packages of these two versions for three months, but the reliability and technical support are not guaranteed.

    Contributors

    A total of 13 developers contributed to this release.

    @Leojc @eugene123tw @weiji14 @mzr1996 @zhouzaida @yyz561 @gaotongxiao @EricKani @MeowZheng @ZwwWayne @xvjiarui @Junjun2016 @grimoire

    Source code(tar.gz)
    Source code(zip)
  • v1.3.12(Aug 24, 2021)

    New features

    • Add a GradientCumulativeOptimizerHook for training model with a larger batch size (#1221)
    • Add a DefaultRunnerConstructor for extending existing Runner(#1296)
    • Add modulated_deform_conv to support onnxruntime (#1281)

    Improvements

    • Add mmcv namespace for custom onnx ops (#1254)
    • Compile mmcv with all available CPUs (#1046)
    • Support deprecation information in Config (#1275)
    • Add windows CI (#1023)

    Bug fixes

    • Fix the nms implementation of CPU (#1244)
    • Remove the duplicate files in mmcv/ops/csrc (#1284)
    • Upgrade the version of ONNX Runtime (#1290)

    Docs

    • Use myst-parser extension for sphinx and make the style more beautiful (#1287)
    • Add the Chinese documentation for utils.md and runner.md (#1232, #1202)

    Notes

    Since PyTorch 1.9 has been released, we plan to end the support for PyTorch 1.3 and 1.4 in future releases. We will still provide pre-compiled packages of these two versions for three months, but the reliability and technical support are not guaranteed.

    Contributors

    A total of 11 developers contributed to this release.

    @innerlee, @grimoire, @zhouzaida, @raoshenglong, @jiang1997, @ZhiyuanChen, @mzr1996, @PeiqiWang, @hhaAndroid, @ZwwWayne, @densechen

    Source code(tar.gz)
    Source code(zip)
  • v1.3.11(Aug 12, 2021)

    Improvements

    • Refactor the directory of csrc (#1206)
    • Add PR document (#1209)
    • Speed up mmcv import (#1249)
    • Do not depend on setuptools>=52 (#1235)

    Bug Fixes

    • Fix the bug that the training log and evaluating log are mixed (#1252)
    • Fix dcn forward and backward when batch size is larger than im2col_step (#1212)
    • Fix potential bugs of basemodule when record the initilization information (#1217)

    Notes

    Since PyTorch 1.9 has been released, we plan to end the support for PyTorch 1.3 and 1.4 in the future releases. We will still provide pre-compiled packages of these two versions for three months, but the reliability and technical support are not guaranteed.

    Contributors

    A total of 12 developers contributed to this release.

    @hellock, @xvjiarui, @jshilong, @ZwwWayne, @MeowZheng, @innerlee, @zhouzaida, @kennymckormick, @grimoire, @nbei, @dreamerlin, @Junjun2016

    Source code(tar.gz)
    Source code(zip)
  • v1.3.10(Jul 24, 2021)

    New Features

    • Register CrissCrossAttention into plugin layers (#1189)
    • Support custom hooks in IterBasedRunner (#1193)
    • Add ONNX export support to torch.roll (#1194)
    • Add flat cosine lr updater (#1066)
    • Add logger for initialization of parameters (#1150)

    Improvements

    • Add is_tracing to wrap torch.jit.is_tracing in different versions of pytorch #1187
    • Revise the interface of upfirdn2d function (#1195)
    • Improve digit_version (#1185)
    • Add TERMINOLOGY.md (#895)

    Bug Fixes

    • Fix potential integer overflow in imequalize (#1198)
    • Fix floor/ceil error in deform_attn for windows (#1037)
    • Resolves the duplicate logs issue (#1164)
    • Fix example (#1074)
    • Prevent kernel_normalizer to change mask dtype (#1210)

    Notes

    Since PyTorch 1.9 has been released, we plan to end the support for PyTorch 1.3 and 1.4 in the future releases. We will still provide pre-compiled packages of these two versions for three months, but the reliability and technical support are not guaranteed.

    Contributors

    A total of 19 developers contributed to this release.

    @yeliudev, @007gzs, @wangg12, @qizhuli, @ddonatien, @mzr1996, @Junjun2016, @grimoire, @nbei, @dreamerlin, @jshilong, @kennymckormick, @zhouzaida, @ZwwWayne, @hellock, @MeowZheng, @innerlee, @xvjiarui, @RunningLeon

    Source code(tar.gz)
    Source code(zip)
  • v1.3.9(Jul 10, 2021)

    New Features

    • Support building MMCV with ROCm (#1022)
    • Support tensorrt custom plugin MMCVCornerPool (#1179)

    Improvements

    • Use LooseVersion for version checking (#1158)
    • Refactor structure of documentation (#1102)
    • Build Chinese documentation (#1073)

    Bug Fixes

    • Fix SyncBN in PyTorch 1.9 (#1138)
    • Fix saconv in PyTorch 1.9 (#1147)
    • Fix unittest in PyTorch 1.9 (#1146)
    • Fix missing check of directory in scandir (#1110)
    • Change dict update order to fix bug of resumed checkpoint (#1108)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.8(Jun 26, 2021)

    New Features

    • Add TensorRT support to modulated deformable conv ops (#1078)
    • Support variables in base files for configs (#1083)

    Improvements

    • Delete the warning report of BaseInit (#1126)
    • Add to_ntuple() helper function (#1125)
    • Support resize or rescale an image to multiple (#1121)
    • Refine the EvalHook to meet the demand for the downstream codebases (#1076)
    • Refine default hooks and custom hooks priority rank (#1120)
    • Refine the PyTorch CUDA implementation for Criss Cross Attention (#1143)
    • Support image reading while ignoring EXIF orientation info (#1091)
    • Support print hooks before running (#1123)

    Bug Fixes

    • Fix the dimension of getOutputDimensions (#1117)
    • Fix the backward-compatible of empty tensor inference (#1131)
    • Fix the permission denied error on windows (#1077)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.7(Jun 17, 2021)

    Improvements

    • Add a return value in TextLoggerHook.log() (#1040)

    Bug Fixes

    • Avoid bc-breaking when importing MultiScaleDeformableAttention (#1100)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.6(Jun 12, 2021)

    New Features

    • Add DvcliveLoggerHook (#1075)
    • Enable exporting to ONNX for PointRend (#953)
    • Support resuming loss scaler for FP16 training (#1013)

    Backwards Incompatible Changes

    • In PR #978, MultiScaleDeformableAttention has been moved to mmcv/ops/multi_scale_deform_attn.py. So the import source has been changed from mmcv.cnn.bricks.transformer to mmcv.ops.multi_scale_deform_attn. See the example of migration in https://github.com/open-mmlab/mmdetection/pull/5338.

    Improvements

    • Add segmentation keys for greater_keys in EvalHook (#1060)
    • Improve windows support for list_from_file() (#1043)
    • Add runner tutorial (#1082)
    • Refactor the base class related to transformer (#978)
    • Add support for score_threshold and max_num for NMS operation when exporting to ONNX (#957)
    • Support using the name of the base classes in init_cfg (#1057)

    Bug Fixes

    • Fix link of checkpoints for mmcls (#1067)
    • Fix the docstring for initializers (#1071)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.5(May 26, 2021)

    New Features

    • Add NeptuneLoggerHook (#1025)
    • Add truncated normal weight init (#935)
    • Add cummax/cummin tensorrt plugin (#1031)
    • Add cuda version BorderAlign module (#1021)
    • Add TensorRT InstanceNormalization plugin (#1034)

    Improvements

    • Support amp (pytorch >= 1.6.0) on DCN and DCNv2 (#1029)

    Bug Fixes

    • Fix a bug when two or more loggers were set (#1015)
    • Fix generalized attention fp16 (#1036)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.4(May 14, 2021)

    New Features

    • Support corner_pool related custom operators for onnxruntime (#997)
    • Support custom operators cummax and cummin for onnxruntime (#1010)
    • Add StepMomentumUpdaterHook (#1011)
    • Add pixel group and contour expand ops (#993)
    • Add custom hook by config file (#970)

    Improvements

    • Add test util for checking stand-alone python scripts (#1007)
    • Add triangular policy in CyclicLrUpdaterHook (#1001)
    • Load hook_msgs when resume checkpoint (#962)
    • Update weight initialization in cnn.md (#912)

    Bug Fixes

    • Fix DCN fp16 (#1014)
    • Fix basemodule (#1018)
    • Fix softnms (#1019)
    • Fix wrong iter number and progress number in the logging during val/test time #914
    • Read in rb mode then decode (#983)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.3(Apr 30, 2021)

  • v1.3.2(Apr 30, 2021)

    New Features

    • Add Rotated ROI align op for pytorch and onnxruntime (cpu) (#933)
    • Support Multi-Scale-DeformAttention in deformable-detr (#878)
    • Support CPU training with MMDataParallel (#972)
    • Support auto_fp16 using torch.cuda.amp when PyTorch >= 1.6.0 (#951)
    • Add PyTorch Profiler to analyze training process (#937)

    Improvements

    • Remove redundant self.init_cfg (#959)
    • Refactor init cfg (#958)
    • Refactor readme.md (#984)
    • Use Sequential rather than nn.Sequential in build_model_from_cfg (#992)
    • Use len(result) as batch size in engine/test.py (#987)
    • Support clipping min_lr in StepLrUpdaterHook #995

    Bug Fixes

    • Fix compile without cuda (#945)
    • Rename init_weight to init_weights (#971)
    • Incorrect citation in transformer documentation (#974)
    • Fix data type in fused-bias-leakyrelu for apex fp16 training (#981)
    • Fix raise error bug in registering multiple names (#949)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Apr 16, 2021)

    New Features

    • Add OneCycleLrUpdaterHook (#906)
    • Add onnxruntime custom op grid_sample (#916)
    • Add EvalHook which will be used in downstream projects (#739)
    • Add model registry (#760)

    Improvements

    • Add more detail of warning in basemodule (#899)
    • Remove deprecated onnx-simplify source code (#927)
    • Add total_steps attribute for OneCycleLrUpdaterHook (#929)
    • Add docstring for DeformConv (#921)
    • Revise init_weight in BaseModule (#905)
    • Add document for TensorRT and onnxruntime custom ops (#920)
    • Add init_cfg in transformer base classes (#946)

    Bug Fixes

    • Fix initialization bug of override cfg (#918)
    • Fix typo in build_conv_layer docstring (#928)
    • Fix onnx interpolate conversion (#917)
    • Fix bug of lr updater hook (#907)
    • Fix wandb logger drop result bug (#913)
    • Revise override in init_cfg (#930)
    • Fix cuda compile error on visual studio 16.9 (#891)
    • Fix DeformConv2d bias error and add tests (#940)
    • Fix train error in EpochBasedRunner (#942)
    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Apr 4, 2021)

    New Features

    • Add cutout and lighting (#909)
    • Add transformer base class (#892)
    • Add Caffe2Xavier Initializer (#902)
    • Add cuda ops: UpFirDn2d and fused_bias_leakyrelu (#900)
    • Support to calculate FLOPs of GN, IN, LN (#897)
    • Add Sequential with init_weight (#884)
    • Add tifffile backend support for image io (#868)
    • Add Deformable Conv2d TensorRT Plugin (#858)
    • Support auto contrast (#881)
    • Add adjust sharpness (#864)
    • Add HTTP backend (#860)
    • Add NonMaxSuppression TensorRT Plugin (#787)
    • Add GELU activation function (#843)
    • Add readme of chinese version (#846)

    Improvements

    • Revise function of layers and override keys in init_cfg (#893)
    • Revise function of is_init flag in BaseModule (#898)
    • Support revise_keys in load_checkpoint()(#829)
    • Support save last checkpoint (#853)
    • Update video/io.py (#856)
    • Add docstring for DistSamplerSeedHook (#850)

    Bug Fixes

    • Fix bug of convmodule (#889)
    • Fix scatter in pytorch18 (#882)
    • Fix test unit of nms and batched_nms for tensorrt (#872)
    • Fix bugs in some photometric transforms (#863)
    • Fix pytorch2onnx failed for interpolate op with PyTorch==1.6.0 (#848)
    • Fix the iter error when the number of GPUs is different during resume (#844)
    • Fix typo in README (#852)
    • Fix document in cnn.md (#841)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.7(Feb 20, 2021)

    New Features

    • Add initializers and BaseModule for unified parameter initialization (#780, #825)
    • Add ort nms op (#803)

    Improvements

    • Add register_itertimer_hook function (#838)
    • Add more error info in build_from_cfg (#834)
    • Add map_location parameter for all checkpoint load functions (#826)
    • Add file mode parameter for logger to support customized mode (#808)
    • Polish CONTRIBUTING for all OpenMMLab projects (#807)
    • Add a short document for TensorRT plugins in mmcv (#797)
    • Refactor _load_checkpoint function (#790)

    Bug Fixes

    • Fix BaseRunner hook registry bug (#840)
    • Fix no torch.no_grad decorator for val in IterBasedRunner (#835)
    • Fix weight shape mismatch bug of DCN when batch size larger than 64 (#819)
    • Fix imshow_bboxes with incontiguous img (#823)
    • Fix header file for std::iota(#803) in nms op (#820)
    • Parse scales of list when PyTorch==1.7.0 (#815)
    • Fix misleading tutorial document in io.md (#813)
    • Hande exif orientation with pillow backend in imread (#805)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.6(Jan 21, 2021)

    New Features

    • Add custom operator support for TensorRT. (#786)
    • Allow register multi-name for a module simultaneously. (#775)
    • Support load checkpoint from ceph. (#778)
    • Add common testing functions to OpenMMLab repos. (#743)
    • Add ScatterND TensorRT Plugin. (#786)

    Improvements

    • Set installation of onnx simplify's related packages to optional. (#799)
    • Add torch.no_grad() decorator to the whole val workflow. (#777)
    • Add dataset classes name info to meta when saving checkpoints. (#776)
    • Support not to register lr scheduler hook. (#774)

    Bug Fixes

    • Fix copy source file path for Windows. (#796)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.5(Jan 4, 2021)

    New Features

    • Add custom op roialign for onnxruntime. (#724)
    • Add onnx-simplify. (#751)

    Bug Fixes

    • Fix MMDistributedDataParallel when pytorch>=1.7. (#769)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.4(Dec 28, 2020)

  • v1.2.3(Dec 26, 2020)

    New Features

    • Add custom operators support for onnxruntime. (#612)
    • Support mpi launcher. (#726)

    Improvements

    • Add 'iof' mode and 'aligned' mode for box_iou_rotated. (#726, #753)
    • Refactor mmcv-full installation to fit pip>=20.3 and follow PEP440. (#748)
    • Add model links (MobileNet-V3, ResNet18-V1c). (#755, #757)
    • Allow to replace nested tuple and list via options in Config. (#731)
    • Support mmcv bricks in flops compuation. (#715)

    Bug Fixes

    • Fix mmcls related models and links. (#741, #745)
    • Fix grad_output uncontiguous. (#737)
    • Avoid recursion error when using customized norm layer without _abbr_. (#732)
    • Minor bug fixes, docs, unit tests related to nms. (#728, #733)
    • Fix checkpoint key error. (#722)
    • Fix comments of init_weights in ConvModule (#730)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.2(Dec 16, 2020)

    New Features

    • Add clamp activation layer. (#685)

    Improvements

    • Refactor flow_warp and remove its C implementation. (#707)
    • LossScaler: Allow the initial value to be set in dynamic mode. (#692)
    • Add installation instructions for mmcv-full build on Windows. (#663)
    • Allow list index keys in Config.merge_from_dict. (#696)

    Bug Fixes

    • Check MASTER_ADDR in the environment variable before assignment. (#705)
    • Fix mmcv-full installation using pip 20.3. (#703)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.1(Nov 26, 2020)

    New Features

    • Add box_iou_rotated, ml_nms_rotated and nms_rotated. (#625)
    • Add wrappers for Conv3d, MaxPool3d and ConvTranspose3d. (#652)
    • Add onnx support to roi_align and roi_pool. (#593)
    • Add more transforms: LUT(#646) and CLAHE(#647).

    Improvements

    • Better support of pytorch2onnx for detection models. (#648)
    • Add documentation for registry. (#656)
    • Refactor logger. (#659)
    • Enhance hsigmoid: support more parameters. (#657)

    Bug Fixes

    • Fix rotated NMS. (#668)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Nov 9, 2020)

    New Features

    • Support PyTorch 1.7. (#631)
    • Add dynamic scale that manages loss scaling in mixed precision training. (#585)

    Improvements

    • Add hook message for checkpoint hook (#635)

    Bug Fixes

    • Fix bug in logger hooks. (#634, #637)
    • Update lr_updater to correct period index computation. (#574)
    • Fix missing arguments when converting DCN to ONNX. (#624)
    Source code(tar.gz)
    Source code(zip)
  • v1.1.6(Oct 28, 2020)

    New Features

    • New method import_modules_from_strings for import customized modules when loading config from file. (#606)
    • Add switch for onnx exporter to get different ONNX model according to the backend. (#607)
    • Add Sync buffer in CheckpointHook. (#588)

    Improvements

    • Refactor logger hooks. (#605)
    • Skip opencv requirement if it's already installed in the env. (#616)
    • Serveral updates regarding Windows and unittests. (#586)

    Bug Fixes

    • Fix bug in resuming dict version of optimizers when using epoch based runner. (#610)
    • Fix iter-time-hook bug when meeting iter-based runner. (#623)
    Source code(tar.gz)
    Source code(zip)
  • v1.1.5(Oct 9, 2020)

    Bug Fixes

    • Fix wrappers version comparison bug. (#602)
    • Revert DCN to fix the bug introduced in https://github.com/open-mmlab/mmcv/pull/565. (#597)
    Source code(tar.gz)
    Source code(zip)
OpenMMLab Detection Toolbox and Benchmark

MMDetection is an open source object detection toolbox based on PyTorch. It is a part of the OpenMMLab project.

OpenMMLab 17.4k Dec 2, 2021
OpenMMLab Semantic Segmentation Toolbox and Benchmark.

Documentation: https://mmsegmentation.readthedocs.io/ English | 简体中文 Introduction MMSegmentation is an open source semantic segmentation toolbox based

OpenMMLab 2.8k Dec 2, 2021
OpenMMLab Image and Video Editing Toolbox

Introduction MMEditing is an open source image and video editing toolbox based on PyTorch. It is a part of the OpenMMLab project. The master branch wo

OpenMMLab 2.6k Nov 26, 2021
OpenMMLab's Next Generation Video Understanding Toolbox and Benchmark

Introduction English | 简体中文 MMAction2 is an open-source toolbox for video understanding based on PyTorch. It is a part of the OpenMMLab project. The m

OpenMMLab 1.5k Nov 26, 2021
OpenMMLab Pose Estimation Toolbox and Benchmark.

Introduction English | 简体中文 MMPose is an open-source toolbox for pose estimation based on PyTorch. It is a part of the OpenMMLab project. The master b

OpenMMLab 1.4k Dec 4, 2021
MIM: MIM Installs OpenMMLab Packages

MIM provides a unified API for launching and installing OpenMMLab projects and their extensions, and managing the OpenMMLab model zoo.

OpenMMLab 154 Dec 3, 2021
Open source Python module for computer vision

About PCV PCV is a pure Python library for computer vision based on the book "Programming Computer Vision with Python" by Jan Erik Solem. More details

Jan Erik Solem 1.8k Nov 29, 2021
PyTorchCV: A PyTorch-Based Framework for Deep Learning in Computer Vision.

PyTorchCV: A PyTorch-Based Framework for Deep Learning in Computer Vision @misc{CV2018, author = {Donny You ([email protected])}, howpubl

Donny You 33 Aug 5, 2021
Build fully-functioning computer vision models with PyTorch

Detecto is a Python package that allows you to build fully-functioning computer vision and object detection models with just 5 lines of code. Inferenc

Alan Bi 517 Nov 24, 2021
Implementation of self-attention mechanisms for general purpose. Focused on computer vision modules. Ongoing repository.

Self-attention building blocks for computer vision applications in PyTorch Implementation of self attention mechanisms for computer vision in PyTorch

AI Summer 644 Nov 24, 2021
Datasets, Transforms and Models specific to Computer Vision

torchvision The torchvision package consists of popular datasets, model architectures, and common image transformations for computer vision. Installat

null 10.4k Dec 4, 2021
Repository providing a wide range of self-supervised pretrained models for computer vision tasks.

Hierarchical Pretraining: Research Repository This is a research repository for reproducing the results from the project "Self-supervised pretraining

Colorado Reed 39 Nov 20, 2021
A PyTorch-Based Framework for Deep Learning in Computer Vision

TorchCV: A PyTorch-Based Framework for Deep Learning in Computer Vision @misc{you2019torchcv, author = {Ansheng You and Xiangtai Li and Zhen Zhu a

Donny You 2.2k Dec 2, 2021
Open Source Differentiable Computer Vision Library for PyTorch

Kornia is a differentiable computer vision library for PyTorch. It consists of a set of routines and differentiable modules to solve generic computer

kornia 5.4k Nov 29, 2021
Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition

Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition

null 82 Nov 15, 2021
This project demonstrates the use of neural networks and computer vision to create a classifier that interprets the Brazilian Sign Language.

LIBRAS-Image-Classifier This project demonstrates the use of neural networks and computer vision to create a classifier that interprets the Brazilian

Aryclenio Xavier Barros 23 Jun 27, 2021
[CVPR 2021] "The Lottery Tickets Hypothesis for Supervised and Self-supervised Pre-training in Computer Vision Models" Tianlong Chen, Jonathan Frankle, Shiyu Chang, Sijia Liu, Yang Zhang, Michael Carbin, Zhangyang Wang

The Lottery Tickets Hypothesis for Supervised and Self-supervised Pre-training in Computer Vision Models Codes for this paper The Lottery Tickets Hypo

VITA 37 Nov 18, 2021
A framework for analyzing computer vision models with simulated data

3DB: A framework for analyzing computer vision models with simulated data Paper Quickstart guide Blog post Installation Follow instructions on: https:

3DB 81 Sep 16, 2021
It's final year project of Diploma Engineering. This project is based on Computer Vision.

Face-Recognition-Based-Attendance-System It's final year project of Diploma Engineering. This project is based on Computer Vision. Brief idea about ou

Neel 8 Nov 28, 2021