OpenMMLab Detection Toolbox and Benchmark

Overview

News: We released the technical report on ArXiv.

Documentation: https://mmdetection.readthedocs.io/

Introduction

English | 简体中文

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

The master branch works with PyTorch 1.3+. The old v1.x branch works with PyTorch 1.1 to 1.4, but v2.0 is strongly recommended for faster speed, higher performance, better design and more friendly usage.

demo image

Major features

  • Modular Design

    We decompose the detection framework into different components and one can easily construct a customized object detection framework by combining different modules.

  • Support of multiple frameworks out of box

    The toolbox directly supports popular and contemporary detection frameworks, e.g. Faster RCNN, Mask RCNN, RetinaNet, etc.

  • High efficiency

    All basic bbox and mask operations run on GPUs. The training speed is faster than or comparable to other codebases, including Detectron2, maskrcnn-benchmark and SimpleDet.

  • State of the art

    The toolbox stems from the codebase developed by the MMDet team, who won COCO Detection Challenge in 2018, and we keep pushing it forward.

Apart from MMDetection, we also released a library mmcv for computer vision research, which is heavily depended on by this toolbox.

License

This project is released under the Apache 2.0 license.

Changelog

v2.10.0 was released in 01/03/2021. Please refer to changelog.md for details and release history. A comparison between v1.x and v2.0 codebases can be found in compatibility.md.

Benchmark and model zoo

Results and models are available in the model zoo.

Supported backbones:

  • ResNet (CVPR'2016)
  • ResNeXt (CVPR'2017)
  • VGG (ICLR'2015)
  • HRNet (CVPR'2019)
  • RegNet (CVPR'2020)
  • Res2Net (TPAMI'2020)
  • ResNeSt (ArXiv'2020)

Supported methods:

Some other methods are also supported in projects using MMDetection.

Installation

Please refer to get_started.md for installation.

Getting Started

Please see get_started.md for the basic usage of MMDetection. We provide colab tutorial, and full guidance for quick run with existing dataset and with new dataset for beginners. There are also tutorials for finetuning models, adding new dataset, designing data pipeline, customizing models, customizing runtime settings and useful tools.

Please refer to FAQ for frequently asked questions.

Contributing

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

Acknowledgement

MMDetection is an open source project that is contributed by researchers and engineers from various colleges and companies. We appreciate all the contributors who implement their methods or add new features, as well as users who give valuable feedbacks. We wish that the toolbox and benchmark could serve the growing research community by providing a flexible toolkit to reimplement existing methods and develop their own new detectors.

Citation

If you use this toolbox or benchmark in your research, please cite this project.

@article{mmdetection,
  title   = {{MMDetection}: Open MMLab Detection Toolbox and Benchmark},
  author  = {Chen, Kai and Wang, Jiaqi and Pang, Jiangmiao and Cao, Yuhang and
             Xiong, Yu and Li, Xiaoxiao and Sun, Shuyang and Feng, Wansen and
             Liu, Ziwei and Xu, Jiarui and Zhang, Zheng and Cheng, Dazhi and
             Zhu, Chenchen and Cheng, Tianheng and Zhao, Qijie and Li, Buyu and
             Lu, Xin and Zhu, Rui and Wu, Yue and Dai, Jifeng and Wang, Jingdong
             and Shi, Jianping and Ouyang, Wanli and Loy, Chen Change and Lin, Dahua},
  journal= {arXiv preprint arXiv:1906.07155},
  year={2019}
}

Projects in OpenMMLab

  • MMCV: OpenMMLab foundational library for computer vision.
  • 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.
Comments
  • ModuleNotFoundError: No module named 'mmcv._ext'

    ModuleNotFoundError: No module named 'mmcv._ext'

    Someone has already post this issue earlier, and I just wanna say I got the same issue. I'm using mmedetection on colab. I installed the program as usual, but when I tried to import inference_detector from mmdet.apis, I got the error as described in the title which I've never met before. I thought it may because some updates on your side were on progress, but I wasn't sure. Any suggestion? Thank you.

    installation/env 
    opened by ahchang2 59
  • Pytorch2onnx

    Pytorch2onnx

    Support convert RetinaNet from Pytorch to ONNX. We can verify the computation results between Pytorch and ONNX. We do several things in this PR: [1] Replace some Pytorch op that are not supported by ONNX [2] Replace some dynamic shape by static shape, as ONNX only support constant shape in some case [3] Fix some bugs in Pytorch1.3 while converting to ONNX, which may cause numerical error while running by onnxruntime [4] Update tool/pytorch2onnx.py file with our new API

    opened by drcut 51
  • YOLOv3 - Continue on #1695

    YOLOv3 - Continue on #1695

    Hi all,

    @WenqiangX and I are glad to help implement YOLOv3, and perhaps v4 as well, if everything goes on well. We are from (MVIG, SJTU)[http://mvig.sjtu.edu.cn] and have spent quite a little time surveying all kinds of YOLOv3 implementation in PyTorch. Also, we have spent a lot of time working on the gluon-cv version of YOLOv3, which relays on mxnet. So, we are familiar with it.

    Months ago, @wuhy08 has contributed a lot (#1695), but there are still some problems to be solved. I have tested his implementation and found it can be trained using one vid card and achieve ~38 mAP in (618, 618) resolution, which is pretty good. However, it fails to train on multiple cards and achieves very low mAP even with find_unused_parameters=True. Still, great thanks to him and Western Digital.

    Basically, we aim to complete the following list:

    • [x] Merge @wuhy08 's code with mm-detection 2.0
    • [x] And test it!
    • [x] Move some hyper-params to the config file
    • [x] Refactor the backbone with your new ConvModule (as mentioned in #1695 (comment))
    • [x] Refactor the backbone and neck to support other modules
    • [x] Introduce some great ideas from gluon-cv
    • [x] Convert the darknet pretrained file (May have difficulty and help is needed)
    • [x] Fix the labels +1 / -1 problem

    If you have any suggestions, feel free to comment.

    Also, I hope that the authors of this project can manage your time to review the code to see if there is any major problems so that we can save some time.

    This pr is still in an early stage, but is expected to finish by the end of July.

    If everything is good, could you please close the original pr so that we can continue to work here?

    opened by ElectronicElephant 50
  • ImportError: libtorch_cpu.so: cannot open shared object file: No such file or directory

    ImportError: libtorch_cpu.so: cannot open shared object file: No such file or directory

    when I run "python tools/test.py configs/faster_rcnn_r50_fpn_1x.py checkpoints/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth" there are some errors Traceback (most recent call last): File "tools/test.py", line 8, in from tools.fuse_conv_bn import fuse_module File "/mnt/WXRG0349/zhuoli/mmdetection/tools/fuse_conv_bn.py", line 7, in from mmdet.apis import init_detector File "/mnt/WXRG0349/zhuoli/mmdetection/mmdet/apis/init.py", line 1, in from .inference import (async_inference_detector, inference_detector, File "/mnt/WXRG0349/zhuoli/mmdetection/mmdet/apis/inference.py", line 11, in from mmdet.core import get_classes File "/mnt/WXRG0349/zhuoli/mmdetection/mmdet/core/init.py", line 7, in from .post_processing import * # noqa: F401, F403 File "/mnt/WXRG0349/zhuoli/mmdetection/mmdet/core/post_processing/init.py", line 1, in from .bbox_nms import multiclass_nms File "/mnt/WXRG0349/zhuoli/mmdetection/mmdet/core/post_processing/bbox_nms.py", line 3, in from mmdet.ops.nms import nms_wrapper File "/mnt/WXRG0349/zhuoli/mmdetection/mmdet/ops/init.py", line 19, in from .utils import get_compiler_version, get_compiling_cuda_version File "/mnt/WXRG0349/zhuoli/mmdetection/mmdet/ops/utils/init.py", line 2, in from .compiling_info import get_compiler_version, get_compiling_cuda_version ImportError: libtorch_cpu.so: cannot open shared object file: No such file or directory

    Environment pytorch1.4.0+python3.7.0 use "pip" install the pytorch

    opened by interestingzhuo 48
  • Errors with vfnet and htc pretrained models

    Errors with vfnet and htc pretrained models

    I call mmdetection from the mmpose in docker, that was made by mmpose docker/Dockerfile . Requirements were installed with pip and apt tools. I run with the following command:

    python demo/top_down_video_demo_with_mmdet.py --device=cpu output/mmdetection/configs/vfnet/vfnet_x101_32x4d_fpn_mdconv_c3-c5_mstrain_2x_coco.py https://openmmlab.oss-cn-hangzhou.aliyuncs.com/mmdetection/v2.0/vfnet/vfnet_x101_32x4d_fpn_mdconv_c3-c5_mstrain_2x_coco/vfnet_x101_32x4d_fpn_mdconv_c3-c5_mstrain_2x_coco_20201027pth-d300a6fc.pth configs/top_down/hrnet/coco-wholebody/hrnet_w48_coco_wholebody_384x288.py https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w48_coco_wholebody_384x288-6e061c6a_20200922.pth --video-path output/input/input.mkv --out-video-root output/hrnet_w48_coco_wholebody_384x288/

    The most interesting here is vfnet_x101_32x4d_fpn_mdconv_c3-c5_mstrain_2x_coco.py and vfnet_x101_32x4d_fpn_mdconv_c3-c5_mstrain_2x_coco_20201027pth-d300a6fc.pth .

    That command returns error:

        main()
      File "demo/top_down_video_demo_with_mmdet.py", line 63, in main
        args.det_config, args.det_checkpoint, device=args.device)
      File "/opt/conda/lib/python3.7/site-packages/mmdet/apis/inference.py", line 41, in init_detector
        checkpoint = load_checkpoint(model, checkpoint, map_location=map_loc)
      File "/opt/conda/lib/python3.7/site-packages/mmcv/runner/checkpoint.py", line 247, in load_checkpoint
        checkpoint = _load_checkpoint(filename, map_location)
      File "/opt/conda/lib/python3.7/site-packages/mmcv/runner/checkpoint.py", line 219, in _load_checkpoint
        checkpoint = load_url_dist(filename)
      File "/opt/conda/lib/python3.7/site-packages/mmcv/runner/checkpoint.py", line 111, in load_url_dist
        checkpoint = model_zoo.load_url(url, model_dir=model_dir)
      File "/opt/conda/lib/python3.7/site-packages/torch/hub.py", line 490, in load_state_dict_from_url
        raise RuntimeError('Only one file(not dir) is allowed in the zipfile')
    RuntimeError: Only one file(not dir) is allowed in the zipfile
    

    The same problem with mmdetection/configs/htc/htc_x101_64x4d_fpn_16x1_20e_coco.py and mmdetection/configs/htc/htc_x101_32x4d_fpn_16x1_20e_coco.py .

    At that, some detectors work fine, for example mmdetection/configs/cascade_rcnn/cascade_rcnn_r101_fpn_1x_coco.py with http://download.openmmlab.com/mmdetection/v2.0/cascade_rcnn/cascade_rcnn_r101_fpn_1x_coco/cascade_rcnn_r101_fpn_1x_coco_20200317-0b6a2fbf.pth model. I didn't remember exact names, but a lot of others detectors work also.

    opened by ioctl-user 47
  • [Feature] Support automatically scaling LR according to GPU number and samples per GPU

    [Feature] Support automatically scaling LR according to GPU number and samples per GPU

    Motivation

    Support automatically scaling LR according to GPU number and samples per GPU

    Modification

    • Add scale_lr before build_optimizer in function train_detector.
    • Add default_batch_size = 16 ,which means (8 GPUs) x (2 samples per GPU) or (4 GPUs) x (4 samples per GPU), in configs/_base_/default_runtime.py.

    image

    • Add mmdet_official_batch_size in the config file which is not using the default setting.

    image

    • print original LR and scaled LR to the terminal log after scaled the LR.

    image

    • Using the flag --auto-scale-lr to enable this featrure
    python tools/train.py configs/balloon/mask_rcnn_r50_caffe_fpn_mstrain-poly_1x_balloon.py --auto-scale-lr
    
    • Add Automatically scaling LR in the doc

    Checklist

    • [x] Pre-commit or other linting tools are used to fix the potential lint issues.
    • [ ] The modification is covered by complete unit tests. If not, please add more unit test to ensure the correctness.
    • [x] If the modification has potential influence on downstream projects, this PR should be tested with downstream projects, like MMDet or MMCls.
    • [x] The documentation has been modified accordingly, like docstring or example tutorials.
    size/XXL 
    opened by PeterH0323 46
  • [Enhance] Mask2Former Instance Segm Only

    [Enhance] Mask2Former Instance Segm Only

    Motivation

    MaskFormer and Mask2Former currently support panoptic segmentation, but not instance segmentation only. Minor changes enable training and evaluation using base/datasets/coco_instance.py.

    Modification

    detectors/maskformer.py:

    • returns list of tuples typical of instance segm only methods when num_stuff_classes == 0
    • renames pan specific show_result method to _show_pan_result and overrides base class show_result() only when num_stuff_classes > 0
    • gt_semantic_seg argument in forward_train() is made optional and defaults to None

    dense_heads/maskformer_head.py:

    • img_metas added to preprocess_gt() arguments
    • preprocess_gt() adjusted to expand gt_semantic_seg to list of None(s) when None to work with multi_apply()

    models/utils/panoptic_gt_processing.py:

    • accepts additional img_metas argument
    • pads gt_masks with pad shape taken from img_metas rather than gt_semantic_seg
    • returns early when gt_semantic_seg == None

    configs/mask2former/:

    • two coco_instance.py based configs included for mask2former
    size/XS 
    opened by PeterVennerstrom 44
  • Out of memory when training on custom dataset

    Out of memory when training on custom dataset

    I was trying to train a retinanet model on some custom dataset (e.g. WIDER face) and I've encountered consistent out of memory issue after several hundred (or thousand) iteration. The error messages are like the followings:

      File "/root/mmdetection/mmdet/core/bbox/assigners/max_iou_assigner.py", line 72, in assign
        overlaps = bbox_overlaps(bboxes, gt_bboxes)
      File "/root/mmdetection/mmdet/core/bbox/geometry.py", line 59, in bbox_overlaps
        ious = overlap / (area1[:, None] + area2 - overlap)
    RuntimeError: CUDA error: out of memory
    

    or

      File "/root/mmdetection/mmdet/core/bbox/assigners/max_iou_assigner.py", line 72, in assign
        overlaps = bbox_overlaps(bboxes, gt_bboxes)
      File "/root/mmdetection/mmdet/core/bbox/geometry.py", line 51, in bbox_overlaps
        wh = (rb - lt + 1).clamp(min=0)  # [rows, cols, 2]
    RuntimeError: CUDA error: out of memory
    

    The training machine has 2 x 1080 Ti and the OOM happens no matter imgs_per_gpu is 2 or 1. In fact, even if the initial memory consumption reduces to around 3~4G when imgs_per_gpu=1, it quickly grows to around 8G and fluctuate for a while until finally OOM. I've tried both distributed and non-distributed training and both suffer OOM.

    BTW, the machine has the following software configurations:

    • Pytorch = 0.4.1
    • CUDA = 9
    • Cudnn = 7

    Is this normal?

    opened by pkdogcom 40
  • [NEW PR] Dedicated WandbLogger for MMDetection

    [NEW PR] Dedicated WandbLogger for MMDetection

    This PR is opened to sign the CLA agreement. The previous PR #7413 is closed in favor of this. You can check that PR for initial discussion.

    The details of the feature can be found in this issue #7391.

    size/XS 
    opened by ayulockin 39
  • [Bug] AttributeError: 'ConfigDict' object has no attribute 'log_level'

    [Bug] AttributeError: 'ConfigDict' object has no attribute 'log_level'

    Prerequisite

    Task

    I have modified the scripts/configs, or I'm working on my own tasks/models/datasets.

    Branch

    master branch https://github.com/open-mmlab/mmdetection

    Environment

    I have installed all of the required packages that are required to run mmDetection. I have also tried reinstalling packages, setting up new Conda environments and reinstalling mmDetection. I am currently working on training mmDetection with a custom dataset using the tutorial on the official mmLab website, however something has gone wrong. I try to run the programme using the command at the bottom of the tutorial however it does not work.

    Reproduces the problem - code sample

    # The new config inherits a base config to highlight the necessary modification
    base_ = 'configs/mask_rcnn/mask_rcnn_r50_caffe_fpn_1x_coco.py'
    
    # We also need to change the num_classes in head to match the dataset's annotation
    # dict is a python dictionary object which is used to save or load models from PyTorch
    
    model=dict(
        roi_head=dict(
            # defining the number of classes a bounding box can go around
            bbox_head=dict(num_classes=1),
                # 
            mask_head=dict(num_classes=1)))
    
    
        # Modify dataset related settings
    dataset_type = 'COCODataset'
        #Defining the classes
    classes = ('Pantograph')
        #grabbing the dataset so it can read the classes and train off the dataset
    data=dict(
        train=dict(
            dataset=dict(
                img_prefix='balloon/train',
                classes=classes,
                ann_file='balloon/train/Pan2_COCO.json'),
        val=dict(
            img_prefix='balloon/val',
            classes=classes,
            ann_file='balloon/val/Pan2_COCO.json'),
        test=dict(
            img_prefix='balloon/val',
            classes=classes,
            ann_file='val/Pan2_COCO.json')))
    
    # We can use the pre-trained Mask RCNN model to obtain higher performance
    load_from = 'checkpoints/mask_rcnn_r50_caffe_fpn_mstrain-poly_3x_coco_bbox_mAP-0.408__segm_mAP-0.37_20200504_163245-42aa3d00.pth'
    

    Reproduces the problem - command or script

    python tools/train.py configs/balloon/mask_rcnn_r50_caffe_fpn_mstrain-poly_1x_balloon.py
    

    Reproduces the problem - error message

    Traceback (most recent call last):
      File "tools/train.py", line 244, in <module>
        main()
      File "tools/train.py", line 184, in main
        logger = get_root_logger(log_file=log_file, log_level=cfg.log_level)
      File "/home/dtl-admin/miniconda3/envs/mmdet/lib/python3.8/site-packages/mmcv/utils/config.py", line 519, in __getattr__
        return getattr(self._cfg_dict, name)
      File "/home/dtl-admin/miniconda3/envs/mmdet/lib/python3.8/site-packages/mmcv/utils/config.py", line 50, in __getattr__
        raise ex
    AttributeError: 'ConfigDict' object has no attribute 'log_level'
    

    Additional information

    No response

    opened by IECCLES4 35
  • RuntimeError:Expected to have finished reduction in the prior iteration before starting a new one

    RuntimeError:Expected to have finished reduction in the prior iteration before starting a new one

    Thanks for your error report and we appreciate it a lot.

    Checklist

    1. I have searched related issues but cannot get the expected help.
    2. The bug has not been fixed in the latest version.

    Describe the bug A clear and concise description of what the bug is.

    Reproduction

    1. What command or script did you run? I have change the config name from faster_rcnn_r50_fpn_1x.py to element.py
    CUDA_VISIBLE_DEVICES=1,2,3 ./tools/dist_train.sh configs/element.py 3 --autoscale-lr
    
    1. Did you make any modifications on the code or config? Did you understand what you have modified? only num_classes and work_dir in config

    2. What dataset did you use? my own dataset which is made the same as VOC format Environment image

    3. Please run python mmdet/utils/collect_env.py to collect necessary environment infomation and paste it here.

    4. You may add addition that may be helpful for locating the problem, such as

      • How you installed PyTorch [e.g., pip, conda, source]
      • Other environment variables that may be related (such as $PATH, $LD_LIBRARY_PATH, $PYTHONPATH, etc.)

    Error traceback

    RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one. This error indicates that your module has parameters that were not used in producing its output (the return value of `forward`). You can enable unused parameter detection by passing the keyword argument `find_unused_parameters=True` to `torch.nn.parallel.DistributedDataParallel`. If you already have this argument set, then the distributed data parallel module wasn't able to locate the output tensors in the return value of your module's `forward` function. Please include the structure of the return value of `forward` of your module when reporting this issue (e.g. list, dict, iterable). (prepare_for_backward at /pytorch/torch/csrc/distributed/c10d/reducer.cpp:408)
    frame #0: std::function<std::string ()>::operator()() const + 0x11 (0x7f92f4501441 in /usr/local/lib/python3.6/dist-packages/torch/lib/libc10.so)
    frame #1: c10::Error::Error(c10::SourceLocation, std::string const&) + 0x2a (0x7f92f4500d7a in /usr/local/lib/python3.6/dist-packages/torch/lib/libc10.so)
    frame #2: c10d::Reducer::prepare_for_backward(std::vector<torch::autograd::Variable, std::allocator<torch::autograd::Variable> > const&) + 0x5ec (0x7f92f4de983c in /usr/local/lib/python3.6/dist-packages/torch/lib/libtorch_python.so)
    frame #3: <unknown function> + 0x6c52bd (0x7f92f4ddf2bd in /usr/local/lib/python3.6/dist-packages/torch/lib/libtorch_python.so)
    frame #4: <unknown function> + 0x130cfc (0x7f92f484acfc in /usr/local/lib/python3.6/dist-packages/torch/lib/libtorch_python.so)
    frame #5: _PyCFunction_FastCallKeywords + 0x1ac (0x4b33ec in /usr/local/bin/python)
    frame #6: /usr/local/bin/python() [0x544be8]
    frame #7: _PyEval_EvalFrameDefault + 0x102d (0x546e9d in /usr/local/bin/python)
    frame #8: /usr/local/bin/python() [0x544a85]
    frame #9: _PyFunction_FastCallDict + 0x12a (0x54d9aa in /usr/local/bin/python)
    frame #10: _PyObject_FastCallDict + 0x1e0 (0x4570c0 in /usr/local/bin/python)
    frame #11: _PyObject_Call_Prepend + 0xca (0x4571ba in /usr/local/bin/python)
    frame #12: PyObject_Call + 0x5c (0x456d9c in /usr/local/bin/python)
    frame #13: _PyEval_EvalFrameDefault + 0x2d2a (0x548b9a in /usr/local/bin/python)
    frame #14: /usr/local/bin/python() [0x544a85]
    frame #15: _PyFunction_FastCallDict + 0x12a (0x54d9aa in /usr/local/bin/python)
    frame #16: _PyObject_FastCallDict + 0x1e0 (0x4570c0 in /usr/local/bin/python)
    frame #17: _PyObject_Call_Prepend + 0xca (0x4571ba in /usr/local/bin/python)
    frame #18: PyObject_Call + 0x5c (0x456d9c in /usr/local/bin/python)
    frame #19: /usr/local/bin/python() [0x4cf4bf]
    frame #20: PyObject_Call + 0x5c (0x456d9c in /usr/local/bin/python)
    frame #21: _PyEval_EvalFrameDefault + 0x2d2a (0x548b9a in /usr/local/bin/python)
    frame #22: /usr/local/bin/python() [0x544a85]
    frame #23: PyEval_EvalCodeEx + 0x3e (0x54599e in /usr/local/bin/python)
    frame #24: /usr/local/bin/python() [0x489dd6]
    frame #25: PyObject_Call + 0x5c (0x456d9c in /usr/local/bin/python)
    frame #26: _PyEval_EvalFrameDefault + 0x2d2a (0x548b9a in /usr/local/bin/python)
    frame #27: /usr/local/bin/python() [0x544a85]
    frame #28: _PyFunction_FastCallDict + 0x12a (0x54d9aa in /usr/local/bin/python)
    frame #29: _PyObject_FastCallDict + 0x1e0 (0x4570c0 in /usr/local/bin/python)
    frame #30: _PyObject_Call_Prepend + 0xca (0x4571ba in /usr/local/bin/python)
    frame #31: PyObject_Call + 0x5c (0x456d9c in /usr/local/bin/python)
    frame #32: _PyEval_EvalFrameDefault + 0x2d2a (0x548b9a in /usr/local/bin/python)
    frame #33: /usr/local/bin/python() [0x544a85]
    frame #34: /usr/local/bin/python() [0x544d37]
    frame #35: _PyEval_EvalFrameDefault + 0x102d (0x546e9d in /usr/local/bin/python)
    frame #36: /usr/local/bin/python() [0x544a85]
    frame #37: /usr/local/bin/python() [0x544d37]
    frame #38: _PyEval_EvalFrameDefault + 0xc9b (0x546b0b in /usr/local/bin/python)
    frame #39: /usr/local/bin/python() [0x544a85]
    frame #40: /usr/local/bin/python() [0x544d37]
    frame #41: _PyEval_EvalFrameDefault + 0xc9b (0x546b0b in /usr/local/bin/python)
    frame #42: /usr/local/bin/python() [0x5440e1]
    frame #43: /usr/local/bin/python() [0x544f91]
    frame #44: _PyEval_EvalFrameDefault + 0x102d (0x546e9d in /usr/local/bin/python)
    frame #45: /usr/local/bin/python() [0x544a85]
    frame #46: PyEval_EvalCode + 0x23 (0x545913 in /usr/local/bin/python)
    frame #47: PyRun_FileExFlags + 0x16f (0x42b41f in /usr/local/bin/python)
    frame #48: PyRun_SimpleFileExFlags + 0xec (0x42b64c in /usr/local/bin/python)
    frame #49: Py_Main + 0xd85 (0x43fa15 in /usr/local/bin/python)
    frame #50: main + 0x162 (0x421b62 in /usr/local/bin/python)
    frame #51: __libc_start_main + 0xf0 (0x7f92f8173830 in /lib/x86_64-linux-gnu/libc.so.6)
    frame #52: _start + 0x29 (0x421c39 in /usr/local/bin/python)
    
    Traceback (most recent call last):
      File "./tools/train.py", line 142, in <module>
        main()
      File "./tools/train.py", line 138, in main
        meta=meta)
      File "/detect/ww_detection/mmdetection_v2/mmdet/apis/train.py", line 102, in train_detector
        meta=meta)
      File "/detect/ww_detection/mmdetection_v2/mmdet/apis/train.py", line 171, in _dist_train
        runner.run(data_loaders, cfg.workflow, cfg.total_epochs)
      File "/usr/local/lib/python3.6/dist-packages/mmcv/runner/runner.py", line 371, in run
        epoch_runner(data_loaders[i], **kwargs)
      File "/usr/local/lib/python3.6/dist-packages/mmcv/runner/runner.py", line 275, in train
        self.model, data_batch, train_mode=True, **kwargs)
      File "/detect/ww_detection/mmdetection_v2/mmdet/apis/train.py", line 75, in batch_processor
        losses = model(**data)
      File "/usr/local/lib/python3.6/dist-packages/torch/nn/modules/module.py", line 493, in __call__
        result = self.forward(*input, **kwargs)
      File "/usr/local/lib/python3.6/dist-packages/torch/nn/parallel/distributed.py", line 392, in forward
        self.reducer.prepare_for_backward([])
    RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one. This error indicates that your module has parameters that were not used in producing its output (the return value of `forward`). You can enable unused parameter detection by passing the keyword argument `find_unused_parameters=True` to `torch.nn.parallel.DistributedDataParallel`. If you already have this argument set, then the distributed data parallel module wasn't able to locate the output tensors in the return value of your module's `forward` function. Please include the structure of the return value of `forward` of your module when reporting this issue (e.g. list, dict, iterable). (prepare_for_backward at /pytorch/torch/csrc/distributed/c10d/reducer.cpp:408)
    frame #0: std::function<std::string ()>::operator()() const + 0x11 (0x7fcaf0f72441 in /usr/local/lib/python3.6/dist-packages/torch/lib/libc10.so)
    frame #1: c10::Error::Error(c10::SourceLocation, std::string const&) + 0x2a (0x7fcaf0f71d7a in /usr/local/lib/python3.6/dist-packages/torch/lib/libc10.so)
    frame #2: c10d::Reducer::prepare_for_backward(std::vector<torch::autograd::Variable, std::allocator<torch::autograd::Variable> > const&) + 0x5ec (0x7fcaf185a83c in /usr/local/lib/python3.6/dist-packages/torch/lib/libtorch_python.so)
    frame #3: <unknown function> + 0x6c52bd (0x7fcaf18502bd in /usr/local/lib/python3.6/dist-packages/torch/lib/libtorch_python.so)
    frame #4: <unknown function> + 0x130cfc (0x7fcaf12bbcfc in /usr/local/lib/python3.6/dist-packages/torch/lib/libtorch_python.so)
    frame #5: _PyCFunction_FastCallKeywords + 0x1ac (0x4b33ec in /usr/local/bin/python)
    frame #6: /usr/local/bin/python() [0x544be8]
    frame #7: _PyEval_EvalFrameDefault + 0x102d (0x546e9d in /usr/local/bin/python)
    frame #8: /usr/local/bin/python() [0x544a85]
    frame #9: _PyFunction_FastCallDict + 0x12a (0x54d9aa in /usr/local/bin/python)
    frame #10: _PyObject_FastCallDict + 0x1e0 (0x4570c0 in /usr/local/bin/python)
    frame #11: _PyObject_Call_Prepend + 0xca (0x4571ba in /usr/local/bin/python)
    frame #12: PyObject_Call + 0x5c (0x456d9c in /usr/local/bin/python)
    frame #13: _PyEval_EvalFrameDefault + 0x2d2a (0x548b9a in /usr/local/bin/python)
    frame #14: /usr/local/bin/python() [0x544a85]
    frame #15: _PyFunction_FastCallDict + 0x12a (0x54d9aa in /usr/local/bin/python)
    frame #16: _PyObject_FastCallDict + 0x1e0 (0x4570c0 in /usr/local/bin/python)
    frame #17: _PyObject_Call_Prepend + 0xca (0x4571ba in /usr/local/bin/python)
    frame #18: PyObject_Call + 0x5c (0x456d9c in /usr/local/bin/python)
    frame #19: /usr/local/bin/python() [0x4cf4bf]
    frame #20: PyObject_Call + 0x5c (0x456d9c in /usr/local/bin/python)
    frame #21: _PyEval_EvalFrameDefault + 0x2d2a (0x548b9a in /usr/local/bin/python)
    frame #22: /usr/local/bin/python() [0x544a85]
    frame #23: PyEval_EvalCodeEx + 0x3e (0x54599e in /usr/local/bin/python)
    frame #24: /usr/local/bin/python() [0x489dd6]
    frame #25: PyObject_Call + 0x5c (0x456d9c in /usr/local/bin/python)
    frame #26: _PyEval_EvalFrameDefault + 0x2d2a (0x548b9a in /usr/local/bin/python)
    frame #27: /usr/local/bin/python() [0x544a85]
    frame #28: _PyFunction_FastCallDict + 0x12a (0x54d9aa in /usr/local/bin/python)
    frame #29: _PyObject_FastCallDict + 0x1e0 (0x4570c0 in /usr/local/bin/python)
    frame #30: _PyObject_Call_Prepend + 0xca (0x4571ba in /usr/local/bin/python)
    frame #31: PyObject_Call + 0x5c (0x456d9c in /usr/local/bin/python)
    frame #32: _PyEval_EvalFrameDefault + 0x2d2a (0x548b9a in /usr/local/bin/python)
    frame #33: /usr/local/bin/python() [0x544a85]
    frame #34: /usr/local/bin/python() [0x544d37]
    frame #35: _PyEval_EvalFrameDefault + 0x102d (0x546e9d in /usr/local/bin/python)
    frame #36: /usr/local/bin/python() [0x544a85]
    frame #37: /usr/local/bin/python() [0x544d37]
    frame #38: _PyEval_EvalFrameDefault + 0xc9b (0x546b0b in /usr/local/bin/python)
    frame #39: /usr/local/bin/python() [0x544a85]
    frame #40: /usr/local/bin/python() [0x544d37]
    frame #41: _PyEval_EvalFrameDefault + 0xc9b (0x546b0b in /usr/local/bin/python)
    frame #42: /usr/local/bin/python() [0x5440e1]
    frame #43: /usr/local/bin/python() [0x544f91]
    frame #44: _PyEval_EvalFrameDefault + 0x102d (0x546e9d in /usr/local/bin/python)
    frame #45: /usr/local/bin/python() [0x544a85]
    frame #46: PyEval_EvalCode + 0x23 (0x545913 in /usr/local/bin/python)
    frame #47: PyRun_FileExFlags + 0x16f (0x42b41f in /usr/local/bin/python)
    frame #48: PyRun_SimpleFileExFlags + 0xec (0x42b64c in /usr/local/bin/python)
    frame #49: Py_Main + 0xd85 (0x43fa15 in /usr/local/bin/python)
    frame #50: main + 0x162 (0x421b62 in /usr/local/bin/python)
    frame #51: __libc_start_main + 0xf0 (0x7fcaf4be4830 in /lib/x86_64-linux-gnu/libc.so.6)
    frame #52: _start + 0x29 (0x421c39 in /usr/local/bin/python)
    
    ^CTraceback (most recent call last):
      File "/usr/lib/python3.6/runpy.py", line 193, in _run_module_as_main
        "__main__", mod_spec)
      File "/usr/lib/python3.6/runpy.py", line 85, in _run_code
        exec(code, run_globals)
      File "/usr/local/lib/python3.6/dist-packages/torch/distributed/launch.py", line 235, in <module>
        main()
      File "/usr/local/lib/python3.6/dist-packages/torch/distributed/launch.py", line 228, in main
        process.wait()
      File "/usr/lib/python3.6/subprocess.py", line 1457, in wait
        (pid, sts) = self._try_wait(0)
      File "/usr/lib/python3.6/subprocess.py", line 1404, in _try_wait
        (pid, sts) = os.waitpid(self.pid, wait_flags)
    KeyboardInterrupt
    root@83403c5335c7:mmdetection_v2# ^C
    
    

    Bug fix If you have already identified the reason, you can provide the information here. If you are willing to create a PR to fix it, please also leave a comment here and that would be much appreciated!

    awaiting response 
    opened by vincentwei0919 33
  • Project/Centernet2

    Project/Centernet2

    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

    Please describe the motivation of this PR and the goal you want to achieve through this PR.

    Modification

    Please briefly describe what modification is made in this PR.

    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.
    WIP 
    opened by zytx121 0
  • Jupyter Notebook training is giving

    Jupyter Notebook training is giving " SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated "

    Discussed in https://github.com/open-mmlab/mmdetection/discussions/9490

    Originally posted by AbdulAhad10 December 14, 2022 Hello All, I am trying to train on my custom dataset. The training works fine when I the code on Google Colab but it keeps on giving the SyntaxError: (Unicode error) when I am trying to run the code on my local system with Jupyter Notebook.

    The mask_rcnn_r50_caffe_fpn_mstrain-poly_1x_balloon.py file looks something like this. I have given the path to my COCO format dataset images and json file.

    Modify dataset-related settings data = dict( train=dict( img_prefix=r"C:\Users\AbdulAhad\Downloads\project-113-at-2022-11-28-16-05-66835454\images", classes=classes, ann_file=r"C:\Users\AbdulAhad\Downloads\project-113-at-2022-11-28-16-05-66835454\result.json"), val=dict( img_prefix=r"C:\Users\AbdulAhad\Downloads\project-113-at-2022-11-28-16-05-66835454\images", classes=classes, ann_file=r"C:\Users\AbdulAhad\Downloads\project-113-at-2022-11-28-16-05-66835454\result.json"), test=dict( img_prefix=r"C:\Users\AbdulAhad\Downloads\project-113-at-2022-11-28-16-05-66835454\images", classes=classes, ann_file=r"C:\Users\AbdulAhad\Downloads\project-113-at-2022-11-28-16-05-66835454\result.json"))

    The error that is being given on Jupyter Notebook is - C:\Users\AbdulAhad\anaconda3\envs\image_segmentation_mmdetection\lib\site-packages\mmcv_init_.py:20: UserWarning: On January 1, 2023, MMCV will release v2.0.0, in which it will remove components related to the training process and add a data transformation module. In addition, it will rename the package names mmcv to mmcv-lite and mmcv-full to mmcv. See https://github.com/open-mmlab/mmcv/blob/master/docs/en/compatibility.md for more details. warnings.warn( c:\users\abdulahad\mmdetection\mmdetection\mmdet\utils\setup_env.py:38: UserWarning: Setting OMP_NUM_THREADS environment variable for each process to be 1 in default, to avoid your system being overloaded, please further tune the variable for optimal performance in your application as needed. warnings.warn( c:\users\abdulahad\mmdetection\mmdetection\mmdet\utils\setup_env.py:48: UserWarning: Setting MKL_NUM_THREADS environment variable for each process to be 1 in default, to avoid your system being overloaded, please further tune the variable for optimal performance in your application as needed. warnings.warn( Traceback (most recent call last): File "C:\Users\AbdulAhad\anaconda3\envs\image_segmentation_mmdetection\lib\site-packages\yapf\yapflib\verifier.py", line 43, in VerifyCode compile(textwrap.dedent(code).encode('UTF-8'), '', 'exec') File "", line 8 'C:\Users\AbdulAhad\Downloads\project-113-at-2022-11-28-16-05-66835454\result.json', ^ SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "C:\Users\AbdulAhad\anaconda3\envs\image_segmentation_mmdetection\lib\site-packages\yapf\yapflib\verifier.py", line 46, in VerifyCode ast.parse(textwrap.dedent(code.lstrip('\n')).lstrip(), '', 'exec') File "C:\Users\AbdulAhad\anaconda3\envs\image_segmentation_mmdetection\lib\ast.py", line 50, in parse return compile(source, filename, mode, flags, File "", line 7 'C:\Users\AbdulAhad\Downloads\project-113-at-2022-11-28-16-05-66835454\result.json', ^ SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "C:\Users\AbdulAhad\anaconda3\envs\image_segmentation_mmdetection\lib\site-packages\yapf\yapflib\verifier.py", line 50, in VerifyCode compile(normalized_code.encode('UTF-8'), '', 'exec') File "", line 7 'C:\Users\AbdulAhad\Downloads\project-113-at-2022-11-28-16-05-66835454\result.json', ^ SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "C:\Users\AbdulAhad\mmdetection\mmdetection\tools\train.py", line 244, in main() File "C:\Users\AbdulAhad\mmdetection\mmdetection\tools\train.py", line 180, in main cfg.dump(osp.join(cfg.work_dir, osp.basename(args.config))) File "C:\Users\AbdulAhad\anaconda3\envs\image_segmentation_mmdetection\lib\site-packages\mmcv\utils\config.py", line 596, in dump f.write(self.pretty_text) File "C:\Users\AbdulAhad\anaconda3\envs\image_segmentation_mmdetection\lib\site-packages\mmcv\utils\config.py", line 508, in pretty_text text, _ = FormatCode(text, style_config=yapf_style, verify=True) File "C:\Users\AbdulAhad\anaconda3\envs\image_segmentation_mmdetection\lib\site-packages\yapf\yapflib\yapf_api.py", line 188, in FormatCode reformatted_source = FormatTree( File "C:\Users\AbdulAhad\anaconda3\envs\image_segmentation_mmdetection\lib\site-packages\yapf\yapflib\yapf_api.py", line 151, in FormatTree return reformatter.Reformat(_SplitSemicolons(llines), verify, lines) File "C:\Users\AbdulAhad\anaconda3\envs\image_segmentation_mmdetection\lib\site-packages\yapf\yapflib\reformatter.py", line 105, in Reformat return _FormatFinalLines(final_lines, verify) File "C:\Users\AbdulAhad\anaconda3\envs\image_segmentation_mmdetection\lib\site-packages\yapf\yapflib\reformatter.py", line 413, in _FormatFinalLines verifier.VerifyCode(formatted_code[-1]) File "C:\Users\AbdulAhad\anaconda3\envs\image_segmentation_mmdetection\lib\site-packages\yapf\yapflib\verifier.py", line 52, in VerifyCode raise InternalError(sys.exc_info()[1]) yapf.yapflib.verifier.InternalError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape (, line 7)

    The solution that I have tried so far - Double Backslash in the path Raw String (r) in front of the path But both didn't work

    Environment sys.platform: win32 Python: 3.10.8 | packaged by conda-forge | (main, Nov 4 2022, 13:42:51) [MSC v.1916 64 bit (AMD64)] CUDA available: True GPU 0: NVIDIA GeForce GTX 1660 Ti CUDA_HOME: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6 NVCC: Cuda compilation tools, release 11.6, V11.6.55 MSVC: Microsoft (R) C/C++ Optimizing Compiler Version 19.34.31935 for x64 GCC: n/a PyTorch: 1.13.0 PyTorch compiling details: PyTorch built with:

    C++ Version: 199711 MSVC 192829337 Intel(R) Math Kernel Library Version 2020.0.2 Product Build 20200624 for Intel(R) 64 architecture applications Intel(R) MKL-DNN v2.6.0 (Git Hash 52b5f107dd9cf10910aaa19cb47f3abf9b349815) OpenMP 2019 LAPACK is enabled (usually provided by MKL) CPU capability usage: AVX2 CUDA Runtime 11.6 NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_80,code=sm_80;-gencode;arch=compute_86,code=sm_86;-gencode;arch=compute_37,code=compute_37 CuDNN 8.3.2 (built against CUDA 11.5) Magma 2.5.4 Build settings: BLAS_INFO=mkl, BUILD_TYPE=Release, CUDA_VERSION=11.6, CUDNN_VERSION=8.3.2, CXX_COMPILER=C:/cb/pytorch_1000000000000/work/tmp_bin/sccache-cl.exe, CXX_FLAGS=/DWIN32 /D_WINDOWS /GR /EHsc /w /bigobj -DUSE_PTHREADPOOL -openmp:experimental -IC:/cb/pytorch_1000000000000/work/mkl/include -DNDEBUG -DUSE_KINETO -DLIBKINETO_NOCUPTI -DUSE_FBGEMM -DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE -DEDGE_PROFILER_USE_KINETO, LAPACK_INFO=mkl, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, TORCH_VERSION=1.13.0, USE_CUDA=ON, USE_CUDNN=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=OFF, USE_NNPACK=OFF, USE_OPENMP=ON, USE_ROCM=OFF, TorchVision: 0.14.0 OpenCV: 4.6.0 MMCV: 1.7.0 MMCV Compiler: MSVC 192930137 MMCV CUDA Compiler: 11.6 MMDetection: 2.25.3+

    Additional information The dataset that I am using is in COCO format and the annotation tool that I used is Label-Studio for annotating the image dataset.

    Note The same training file with same annotation file and images work completely fine on Google Colab.

    Please suggest me a solution for this.

    opened by AbdulAhad10 0
  • [Feature] Support MMDetInferencer

    [Feature] Support MMDetInferencer

    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

    Please describe the motivation of this PR and the goal you want to achieve through this PR.

    Modification

    Please briefly describe what modification is made in this PR.

    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 hhaAndroid 1
  • Fix master circle ci

    Fix master circle ci

    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

    Please describe the motivation of this PR and the goal you want to achieve through this PR.

    Modification

    Please briefly describe what modification is made in this PR.

    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 RangiLyu 1
  • [Fix] albu augmentation post process with masks

    [Fix] albu augmentation post process with masks

    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 using albu augmentations with masks, post_process function don't deal with masks.

    opened by JosonChan1998 0
Releases(v3.0.0rc5)
  • v3.0.0rc5(Dec 27, 2022)

    Highlights

    New Features

    Bug Fixes

    • Fix CondInst predict error when batch_size is greater than 1 in inference (#9400)
    • Fix the bug of visualization when the dtype of the pipeline output image is not uint8 in browse dataset (#9401)
    • Fix analyze_logs.py to plot mAP and calculate train time correctly (#9409)
    • Fix backward inplace error with PAFPN (#9450)
    • Fix config import links in model converters (#9441)
    • Fix DeformableDETRHead object has no attribute loss_single (#9477)
    • Fix the logic of pseudo bboxes predicted by teacher model in SemiBaseDetector (#9414)
    • Fix demo API in instance segmentation tutorial (#9226)
    • Fix analyze_results (#9380)
    • Fix the error that Readthedocs API cannot be displayed (#9510)

    Improvements

    • Remove legacy builder.py (#9479)
    • Make sure the pipeline argument shape is in (width, height) order (#9324)
    • Add .pre-commit-config-zh-cn.yaml file (#9388)
    • Refactor dataset metainfo to lowercase (#9469)
    • Add PyTorch 1.13 checking in CI (#9478)
    • Adjust FocalLoss and QualityFocalLoss to allow different kinds of targets (#9481)
    • Refactor setup.cfg (#9370)
    • Clip saturation value to valid range [0, 1] (#9391)
    • Only keep meta and state_dict when publishing model (#9356)
    • Add segm evaluator in ms-poly_3x_coco_instance config (#9524)
    • Update deployment guide (#9527)
    • Update zh_cn faq.md (#9396)
    • Update get_started (#9480)
    • Update the zh_cn user_guides of useful_tools.md and useful_hooks.md (#9453)
    • Add type hints for bfp and channel_mapper (#9410)
    • Add type hints of several losses (#9397)
    • Add type hints and update docstring for task modules (#9468)

    Contributors

    A total of 20 developers contributed to this release.

    Thanks @liuyanyi, @RangeKing, @lihua199710, @MambaWong, @sanbuphy, @Xiangxu-0103, @twmht, @JunyaoHu, @Chan-Sun, @tianleiSHI, @zytx121, @kitecats, @QJC123654, @JosonChan1998, @lvhan028, @Czm369, @BIGWangYuDong, @RangiLyu, @hhaAndroid, @ZwwWayne

    New Contributors

    • @lihua199710 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9388
    • @twmht made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9450
    • @tianleiSHI made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9453
    • @kitecats made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9481
    • @QJC123654 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9468

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v3.0.0rc4...v3.0.0rc5

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0rc4(Nov 25, 2022)

    Highlights

    • Support CondInst
    • Add projects/ folder, which will be a place for some experimental models/features.
    • Support SparseInst in projects

    New Features

    • Support CondInst (#9223)
    • Add projects/ folder, which will be a place for some experimental models/features (#9341)
    • Support SparseInst in projects (#9377)

    Bug Fixes

    • Fix pixel_decoder_type discrimination in MaskFormer Head. (#9176)
    • Fix wrong padding value in cached MixUp (#9259)
    • Rename utils/typing.py to utils/typing_utils.py to fix collect_env error (#9265)
    • Fix resume arg conflict (#9287)
    • Fix the configs of Faster R-CNN with caffe backbone (#9319)
    • Fix torchserve and update related documentation (#9343)
    • Fix bbox refine bug with sigmooid activation (#9538)

    Improvements

    • Update the docs of GIoU Loss in README (#8810)
    • Handle dataset wrapper in inference_detector (#9144)
    • Update the type of counts in COCO’s compressed RLE (#9274)
    • Support saving config file in print_config (#9276)
    • Update docs about video inference (#9305)
    • Update guide about model deployment (#9344)
    • Fix doc typos of useful tools (#9177)
    • Allow to resume from specific checkpoint in CLI (#9284)
    • Update FAQ about windows installation issues of pycocotools (#9292)

    Contributors

    A total of 13 developers contributed to this release.

    Thanks @JunyaoHu, @sanbuphy, @Czm369, @Daa98, @jbwang1997, @BIGWangYuDong, @JosonChan1998, @lvhan028, @RunningLeon, @RangiLyu, @Daa98, @ZwwWayne, @hhaAndroid

    New Contributors

    • @Daa98 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9274
    • @lvhan028 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9344
    • @JunyaoHu made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9383

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v3.0.0rc3...v3.0.0rc4

    Source code(tar.gz)
    Source code(zip)
  • v2.26.0(Nov 23, 2022)

    Highlights

    • Support training on NPU (#9267)

    Bug Fixes

    • Fix RPN visualization (#9151)
    • Fix readthedocs by freezing the dependency versions (#9154)
    • Fix device argument error in MMDet_Tutorial.ipynb (#9112)
    • Fix solov2 cannot dealing with empty gt image (#9185)
    • Fix random flipping ratio comparison of mixup image (#9336)

    Improvements

    • Complement necessary argument of seg_suffix of cityscapes (#9330)
    • Support copy paste based on bbox when there is no gt mask (#8905)
    • Make scipy as a default dependency in runtime (#9186)

    Documents

    • Delete redundant Chinese characters in docs (#9175)
    • Add MMEval in README (#9217)

    Contributors

    A total of 11 developers contributed to this release. Thanks @wangjiangben-hw, @motokimura, @AdorableJiang, @BainOuO, @JarvisKevin, @wanghonglie, @zytx121, @BIGWangYuDong, @hhaAndroid, @RangiLyu, @ZwwWayne

    New Contributors

    • @JarvisKevin made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8905
    • @BainOuO made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9175
    • @wangjiangben-hw made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9267
    • @AdorableJiang made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9330
    • @motokimura made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9336

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.25.3...v2.26.0

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0rc3(Nov 5, 2022)

    Highlights

    • Support CrowdDet and EIoU Loss
    • Support training detection models in Detectron2
    • Refactor Fast R-CNN
    • Note: In this version, we upgrade the minimum version requirement of MMEngine to 0.3.0 to use ignore_key of ConcatDataset for training VOC datasets (#9058)

    New Features

    • Support CrowdDet (#8744)
    • Support training detection models in Detectron2 with examples of Mask R-CNN, Faster R-CNN, and RetinaNet (#8672)
    • Support EIoU Loss (#9086)

    Bug Fixes

    • Fix XMLDataset image size error (#9216)
    • Fix bugs of empty_instances when predicting without nms in roi_head (#9015)
    • Fix the config file of DETR (#9158)
    • Fix SOLOv2 cannot dealing with empty gt image (#9192)
    • Fix inference demo (#9153)
    • Add ignore_key in VOC ConcatDataset (#9058)
    • Fix dumping results issue in test scripts. (#9241)
    • Fix configs of training coco subsets on MMDet 3.x (#9225)
    • Fix corner2hbox of HorizontalBoxes for supporting empty bboxes (#9140)

    Improvements

    • Refactor Fast R-CNN (#9132)
    • Clean requirements of mmcv-full due to SyncBN (#9207)
    • Support training detection models in detectron2 (#8672)
    • Add box_type support for DynamicSoftLabelAssigner (#9179)
    • Make scipy as a default dependency in runtime (#9187)
    • Update eval_metric (#9062)
    • Add seg_map_suffix in BaseDetDataset (#9088)

    New Contributors

    Contributors

    A total of 13 developers contributed to this release.

    Thanks @wanghonglie, @Wwupup, @sanbuphy, @BIGWangYuDong, @liuyanyi, @cxiang26, @jbwang1997, @ZwwWayne, @yuyoujiang, @RangiLyu, @hhaAndroid, @JosonChan1998, @Czm369

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v3.0.0rc2...v3.0.0rc3

    Source code(tar.gz)
    Source code(zip)
  • v2.25.3(Oct 25, 2022)

    Bug Fixes

    • Skip remote sync when wandb is offline (#8755)
    • Fix jpg to png bug when using seg maps (#9078)

    Improvements

    • Fix typo in warning (#8844)
    • Fix CI for timm, pycocotools, onnx (#9034)
    • Upgrade pre-commit hooks (#8964)

    Documents

    • Update BoundedIoULoss config in readme (#8808)
    • Fix Faster R-CNN Readme (#8803)
    • Update location of test_cfg and train_cfg (#8792)
    • Fix issue template (#8966)
    • Update random sampler docstring (#9033)
    • Fix wrong image link (#9054)
    • Fix FPG readme (#9041)

    Contributors

    A total of 13 developers contributed to this release. Thanks @Zheng-LinXiao, @i-aki-y, @fbagci, @sudoAimer, @Czm369, @DrRyanHuang, @RangiLyu, @wanghonglie, @shinya7y, @Ryoo72, @akshaygulabrao, @gy-7, @Neesky

    New Contributors

    • @i-aki-y made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8755
    • @sudoAimer made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8803
    • @DrRyanHuang made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8792
    • @Ryoo72 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9033
    • @akshaygulabrao made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9054
    • @gy-7 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9041

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.25.2...v2.25.3

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0rc2(Oct 21, 2022)

    Highlights

    New Features

    • Support imagenet pre-training for RTMDet's backbone (#8887)
    • Add CrowdHumanDataset and Metric (#8430)
    • Add FixShapeResize to support resize of fixed shape (#8665)

    Bug Fixes

    • Fix ConcatDataset Import Error (#8909)
    • Fix CircleCI and readthedoc build failed (#8980, #8963)
    • Fix bitmap mask translate when out_shape is different (#8993)
    • Fix inconsistency in Conv2d weight channels (#8948)
    • Fix bugs when plotting loss curve by analyze_logs.py (#8944)
    • Fix type change of labels in albumentations (#9074)
    • Fix some docs and types error (#8818)
    • Update memory occupation of RTMDet in metafile (#9098)
    • Fix wrong arguments of OpenImageMetrics in the config (#9061)

    Improvements

    • Refactor standard roi head with box type (#8658)
    • Support mask concatenation in BitmapMasks and PolygonMasks (#9006)
    • Update PyTorch and dependencies' version in dockerfile (#8845)
    • Update robustness_eval.py and print_config (#8452)
    • Make compatible with ConfigDict and dict in dense_heads (#8942)
    • Support logging coco metric copypaste (#9012)
    • Remove Normalize transform (#8913)
    • Support jittering the color of different instances of the same class (#8988)
    • Add assertion for missing key in PackDetInputs (#8982)

    Contributors

    A total of 13 developers contributed to this release.

    Thanks @RangiLyu, @jbwang1997, @wanghonglie, @Chan-Sun, @RangeKing, @chhluo, @MambaWong, @yuyoujiang, @hhaAndroid, @sltlls, @Nioolek, @ZwwWayne, @wufan-tb

    New Contributors

    • @Chan-Sun made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8909
    • @MambaWong made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8913
    • @yuyoujiang made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8437
    • @sltlls made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8944
    • @Nioolek made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8845
    • @wufan-tb made their first contribution in https://github.com/open-mmlab/mmdetection/pull/9061

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v3.0.0rc1...v3.0.0rc2

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0rc1(Sep 26, 2022)

    Highlights

    • Release a high-precision, low-latency single-stage object detector RTMDet.

    Bug Fixes

    • Fix UT to be compatible with PyTorch 1.6 (#8707)
    • Fix NumClassCheckHook bug when model is wrapped (#8794)
    • Update the right URL of R-50-FPN with BoundedIoULoss (#8805)
    • Fix potential bug of indices in RandAugment (#8826)
    • Fix some types and links (#8839, #8820, #8793, #8868)
    • Fix incorrect background fill values in FSAF and RepPoints Head (#8813)

    Improvements

    • Refactored anchor head and base head with box type (#8625)
    • Refactored SemiBaseDetector and SoftTeacher (#8786)
    • Add list to dict keys to avoid modify loss dict (#8828)
    • Update analyze_results.py , analyze_logs.py and loading.py (#8430, #8402, #8784)
    • Support dump results in test.py (#8814)
    • Check empty predictions in DetLocalVisualizer._draw_instances (#8830)
    • Fix floordiv warning in SOLO (#8738)

    Contributors

    A total of 16 developers contributed to this release.

    Thanks @ZwwWayne, @jbwang1997, @Czm369, @ice-tong, @Zheng-LinXiao, @chhluo, @RangiLyu, @liuyanyi, @wanghonglie, @levan92, @JiayuXu0, @nye0, @hhaAndroid, @xin-li-67, @shuxp, @zytx121

    New Contributors

    • @YvesXu made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8871
    • @xin-li-67 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8868

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v3.0.0rc0...v3.0.0rc1

    Source code(tar.gz)
    Source code(zip)
  • v2.25.2(Sep 16, 2022)

    Bug Fixes

    • Fix DyDCNv2 RuntimeError (#8485)
    • Fix repeated import of CascadeRPNHead (#8578)
    • Fix absolute positional embedding of swin backbone (#8127)
    • Fix get train_pipeline method of val workflow (#8575)

    Improvements

    • Upgrade onnxsim to at least 0.4.0 (#8383)
    • Support tuple format in analyze_results script (#8549)
    • Fix floordiv warning (#8648)

    Documents

    • Fix typo in HTC link (#8487)
    • Fix docstring of BboxOverlaps2D (#8512)
    • Added missed Chinese tutorial link (#8564)
    • Fix mistakes in gaussian radius formula (#8607)
    • Update config documentation about how to Add WandB Hook (#8663)
    • Add mmengine link in readme (#8799)
    • Update issue template (#8802)

    Ongoing changes

    • Support training YOLOv3 on IPU #8552
    • Support RF-NeXt #8191

    Contributors

    A total of 16 developers contributed to this release. Thanks @daquexian, @lyq10085, @ZwwWayne, @fbagci, @BubblyYi, @fathomson, @ShunchiZhang, @ceasona, @Happylkx, @normster, @chhluo, @Lehsuby, @JiayuXu0, @Nourollah, @hewanru-bit, @RangiLyu

    New Contributors

    • @RockeyCoss made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8733
    • @hewanru-bit made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8799

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.25.1...v2.25.2

    Source code(tar.gz)
    Source code(zip)
  • v3.0.0rc0(Sep 1, 2022)

    We are excited to announce the release of MMDetection 3.0.0rc0. MMDet 3.0.0rc0 is the first version of MMDetection 3.x, a part of the OpenMMLab 2.0 projects. Built upon the new training engine, MMDet 3.x unifies the interfaces of the dataset, models, evaluation, and visualization with faster training and testing speed. It also provides a general semi-supervised object detection framework and strong baselines.

    Highlights

    1. New engine. MMDet 3.x is based on MMEngine, which provides a universal and powerful runner that allows more flexible customizations and significantly simplifies the entry points of high-level interfaces.

    2. Unified interfaces. As a part of the OpenMMLab 2.0 projects, MMDet 3.x unifies and refactors the interfaces and internal logic of training, testing, datasets, models, evaluation, and visualization. All the OpenMMLab 2.0 projects share the same design in those interfaces and logic to allow the emergence of multi-task/modality algorithms.

    3. Faster speed. We optimize the training and inference speed for common models and configurations, achieving faster or similar speed in comparison with Detection2. Model details of benchmark will be updated in this note.

    4. General semi-supervised object detection. Benefitting from the unified interfaces, we support a general semi-supervised learning framework that works with all the object detectors supported in MMDet 3.x. Please refer to semi-supervised object detection for details.

    5. Strong baselines. We release strong baselines of many popular models to enable fair comparisons among state-of-the-art models.

    6. New features and algorithms:

    7. More documentation and tutorials. We add a bunch of documentation and tutorials to help users get started more smoothly. Read it here.

    Breaking Changes

    MMDet 3.x has gone through big changes to have better design, higher efficiency, more flexibility, and more unified interfaces. Besides the changes in API, we briefly list the major breaking changes in this section. We will update the migration guide to provide complete details and migration instructions. Users can also refer to the API doc for more details.

    Dependencies

    • MMDet 3.x runs on PyTorch>=1.6. We have deprecated the support of PyTorch 1.5 to embrace mixed precision training and other new features since PyTorch 1.6. Some models can still run on PyTorch 1.5, but the full functionality of MMDet 3.x is not guaranteed.
    • MMDet 3.x relies on MMEngine to run. MMEngine is a new foundational library for training deep learning models of OpenMMLab and is the core dependency of OpenMMLab 2.0 projects. The dependencies of file IO and training are migrated from MMCV 1.x to MMEngine.
    • MMDet 3.x relies on MMCV>=2.0.0rc0. Although MMCV no longer maintains the training functionalities since 2.0.0rc0, MMDet 3.x relies on the data transforms, CUDA operators, and image processing interfaces in MMCV. Note that the package mmcv is the version that provides pre-built CUDA operators and mmcv-lite does not since MMCV 2.0.0rc0, while mmcv-full has been deprecated since 2.0.0rc0.

    Training and testing

    • MMDet 3.x uses Runner in MMEngine rather than that in MMCV. The new Runner implements and unifies the building logic of the dataset, model, evaluation, and visualizer. Therefore, MMDet 3.x no longer maintains the building logic of those modules in mmdet.train.apis and tools/train.py. Those codes have been migrated into MMEngine. Please refer to the migration guide of Runner in MMEngine for more details.
    • The Runner in MMEngine also supports testing and validation. The testing scripts are also simplified, which has similar logic to that in training scripts to build the runner.
    • The execution points of hooks in the new Runner have been enriched to allow more flexible customization. Please refer to the migration guide of Hook in MMEngine for more details.
    • Learning rate and momentum schedules have been migrated from Hook to Parameter Scheduler in MMEngine. Please refer to the migration guide of Parameter Scheduler in MMEngine for more details.

    Configs

    • The Runner in MMEngine uses a different config structure to ease the understanding of the components in the runner. Users can read the config example of MMDet 3.x or refer to the migration guide in MMEngine for migration details.
    • The file names of configs and models are also refactored to follow the new rules unified across OpenMMLab 2.0 projects. The names of checkpoints are not updated for now as there is no BC-breaking of model weights between MMDet 3.x and 2.x. We will progressively replace all the model weights with those trained in MMDet 3.x. Please refer to the user guides of config for more details.

    Dataset

    The Dataset classes implemented in MMDet 3.x all inherit from the BaseDetDataset, which inherits from the BaseDataset in MMEngine. In addition to the changes in interfaces, there are several changes in Dataset in MMDet 3.x.

    • All the datasets support serializing the internal data list to reduce the memory when multiple workers are built for data loading.
    • The internal data structure in the dataset is changed to be self-contained (without losing information like class names in MMDet 2.x) while keeping simplicity.
    • The evaluation functionality of each dataset has been removed from the dataset so that some specific evaluation metrics like COCO AP can be used to evaluate the prediction on other datasets.

    Data Transforms

    The data transforms in MMDet 3.x all inherits from BaseTransform in MMCV>=2.0.0rc0, which defines a new convention in OpenMMLab 2.0 projects. Besides the interface changes, there are several changes listed below:

    • The functionality of some data transforms (e.g., Resize) are decomposed into several transforms to simplify and clarify the usages.
    • The format of data dict processed by each data transform is changed according to the new data structure of dataset.
    • Some inefficient data transforms (e.g., normalization and padding) are moved into the data preprocessor of the model to improve data loading and training speed.
    • The same data transforms in different OpenMMLab 2.0 libraries have the same augmentation implementation and the logic given the same arguments, i.e., Resize in MMDet 3.x and MMSeg 1.x will resize the image in the exact same manner given the same arguments.

    Model

    The models in MMDet 3.x all inherit from BaseModel in MMEngine, which defines a new convention of models in OpenMMLab 2.0 projects. Users can refer to the tutorial of the model in MMengine for more details. Accordingly, there are several changes as the following:

    • The model interfaces, including the input and output formats, are significantly simplified and unified following the new convention in MMDet 3.x. Specifically, all the input data in training and testing are packed into inputs and data_samples, where inputs contains model inputs like a list of image tensors, and data_samples contains other information of the current data sample such as ground truths, region proposals, and model predictions. In this way, different tasks in MMDet 3.x can share the same input arguments, which makes the models more general and suitable for multi-task learning and some flexible training paradigms like semi-supervised learning.
    • The model has a data preprocessor module, which is used to pre-process the input data of the model. In MMDet 3.x, the data preprocessor usually does the necessary steps to form the input images into a batch, such as padding. It can also serve as a place for some special data augmentations or more efficient data transformations like normalization.
    • The internal logic of the model has been changed. In MMdet 2.x, model uses forward_train, forward_test, simple_test, and aug_test to deal with different model forward logics. In MMDet 3.x and OpenMMLab 2.0, the forward function has three modes: 'loss', 'predict', and 'tensor' for training, inference, and tracing or other purposes, respectively. The forward function calls self.loss, self.predict, and self._forward given the modes 'loss', 'predict', and 'tensor', respectively.

    Evaluation

    The evaluation in MMDet 2.x strictly binds with the dataset. In contrast, MMDet 3.x decomposes the evaluation from the dataset so that all the detection datasets can evaluate with COCO AP and other metrics implemented in MMDet 3.x. MMDet 3.x mainly implements corresponding metrics for each dataset, which are manipulated by Evaluator to complete the evaluation. Users can build an evaluator in MMDet 3.x to conduct offline evaluation, i.e., evaluate predictions that may not produce in MMDet 3.x with the dataset as long as the dataset and the prediction follow the dataset conventions. More details can be found in the tutorial in mmengine.

    Visualization

    The functions of visualization in MMDet 2.x are removed. Instead, in OpenMMLab 2.0 projects, we use Visualizer to visualize data. MMDet 3.x implements DetLocalVisualizer to allow visualization of ground truths, model predictions, feature maps, etc., at any place. It also supports sending the visualization data to any external visualization backends such as Tensorboard.

    Improvements

    • Optimized training and testing speed of FCOS, RetinaNet, Faster R-CNN, Mask R-CNN, and Cascade R-CNN. The training speed of those models with some common training strategies is also optimized, including those with synchronized batch normalization and mixed precision training.
    • Support mixed precision training of all the models. However, some models may get Nan results due to some numerical issues. We will update the documentation and list the results (accuracy of failure) of mixed precision training.
    • Release strong baselines of some popular object detectors. Their accuracy and pre-trained checkpoints will be released.

    Bug Fixes

    • DeepFashion dataset: the config and results have been updated.

    New Features

    1. Support a general semi-supervised learning framework that works with all the object detectors supported in MMDet 3.x. Please refer to semi-supervised object detection for details.
    2. Enable all the single-stage detectors to serve as region proposal networks. We give an example of using FCOS as RPN.
    3. Support a semi-supervised object detection algorithm: SoftTeacher.
    4. Support the updated CenterNet.
    5. Support data structures HorizontalBoxes and BaseBoxes to encapsulate different kinds of bounding boxes. We are migrating to use data structures of boxes to replace the use of pure tensor boxes. This will unify the usages of different kinds of bounding boxes in MMDet 3.x and MMRotate 1.x to simplify the implementation and reduce redundant codes.

    Planned changes

    We list several planned changes of MMDet 3.0.0rc0 so that the community could more comprehensively know the progress of MMDet 3.x. Feel free to create a PR, issue, or discussion if you are interested, have any suggestions and feedback, or want to participate.

    1. Test-time augmentation: which is supported in MMDet 2.x, is not implemented in this version due to the limited time slot. We will support it in the following releases with a new and simplified design.
    2. Inference interfaces: unified inference interfaces will be supported in the future to ease the use of released models.
    3. Interfaces of useful tools that can be used in Jupyter Notebook or Colab: more useful tools that are implemented in the tools directory will have their python interfaces so that they can be used in Jupyter Notebook, Colab, and downstream libraries.
    4. Documentation: we will add more design docs, tutorials, and migration guidance so that the community can deep dive into our new design, participate the future development, and smoothly migrate downstream libraries to MMDet 3.x.
    5. Wandb visualization: MMDet 2.x supports data visualization since v2.25.0, which has not been migrated to MMDet 3.x for now. Since WandB provides strong visualization and experiment management capabilities, a DetWandbVisualizer and maybe a hook are planned to fully migrate those functionalities from MMDet 2.x.
    6. Full support of WiderFace dataset (#8508) and Fast R-CNN: we are verifying their functionalities and will fix related issues soon.
    7. Migrate DETR-series algorithms (#8655, #8533) and YOLOv3 on IPU (#8552) from MMDet 2.x.

    Contributors

    A total of 11 developers contributed to this release. Thanks @shuxp, @wanghonglie, @Czm369, @BIGWangYuDong, @zytx121, @jbwang1997, @chhluo, @jshilong, @RangiLyu, @hhaAndroid, @ZwwWayne

    New Contributors

    • @shuxp made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8612

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.25.0...v3.0.0rc0

    Source code(tar.gz)
    Source code(zip)
  • v2.25.1(Jul 28, 2022)

    Bug Fixes

    • Fix single GPU distributed training of cuda device specifying (#8176)
    • Fix PolygonMask bug in FilterAnnotations (#8136)
    • Fix mdformat version to support python3.6 (#8195)
    • Fix GPG key error in Dockerfile (#8215)
    • Fix WandbLoggerHook error (#8273)
    • Fix Pytorch 1.10 incompatibility issues (#8439)

    Improvements

    • Add mim to extras_require in setup.py (#8194)
    • Support get image shape on macOS (#8434)
    • Add test commands of mim in CI (#8230 & #8240)
    • Update maskformer to be compatible when cfg is a dictionary (#8263)
    • Clean Pillow version check in CI (#8229)

    Documents

    • Change example hook name in tutorials (#8118)
    • Update projects (#8120)
    • Update metafile and release new models (#8294)
    • Add download link in tutorials (#8391)

    Contributors

    A total of 15 developers contributed to this release. Thanks @ZwwWayne, @ayulockin, @Mxbonn, @p-mishra1, @Youth-Got, @MiXaiLL76, @chhluo, @jbwang1997, @atinfinity, @shinya7y, @duanzhihua, @STLAND-admin, @BIGWangYuDong, @grimoire, @xiaoyuan0203

    New Contributors

    • @p-mishra1 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8118
    • @MiXaiLL76 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8136
    • @atinfinity made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8215
    • @duanzhihua made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8263
    • @STLAND-admin made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8370
    • @xiaoyuan0203 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/8391

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.25.0...v2.25.1

    Source code(tar.gz)
    Source code(zip)
  • v2.25.0(Jun 1, 2022)

    Highlights

    Backwards incompatible changes

    • Rename config files of Mask2Former (#7571)

      before v2.25.0 after v2.25.0
      • mask2former_xxx_coco.py represents config files for panoptic segmentation.
      • mask2former_xxx_coco.py represents config files for instance segmentation.
      • mask2former_xxx_coco-panoptic.py represents config files for panoptic segmentation.

    New Features

    Bug Fixes

    • Enable YOLOX training on different devices (#7912)
    • Fix the log plot error when evaluation with interval != 1 (#7784)
    • Fix RuntimeError of HTC (#8083)

    Improvements

    • Support dedicated WandbLogger hook (#7459)

      Users can set

      cfg.log_config.hooks = [
        dict(type='MMDetWandbHook',
             init_kwargs={'project': 'MMDetection-tutorial'},
             interval=10,
             log_checkpoint=True,
             log_checkpoint_metadata=True,
             num_eval_images=10)]
      

      in the config to use MMDetWandbHook. Example can be found in this colab tutorial

    • Add AvoidOOM to avoid OOM (#7434, #8091)

      Try to use AvoidCUDAOOM to avoid GPU out of memory. It will first retry after calling torch.cuda.empty_cache(). If it still fails, it will then retry by converting the type of inputs to FP16 format. If it still fails, it will try to copy inputs from GPUs to CPUs to continue computing. Try AvoidOOM in code to make the code continue to run when GPU memory runs out:

      from mmdet.utils import AvoidCUDAOOM
      
      output = AvoidCUDAOOM.retry_if_cuda_oom(some_function)(input1, input2)
      

      Users can also try AvoidCUDAOOM as a decorator to make the code continue to run when GPU memory runs out:

      from mmdet.utils import AvoidCUDAOOM
      
      @AvoidCUDAOOM.retry_if_cuda_oom
      def function(*args, **kwargs):
          ...
          return xxx
      
    • Support reading gpu_collect from cfg.evaluation.gpu_collect (#7672)

    • Speedup the Video Inference by Accelerating data-loading Stage (#7832)

    • Support replacing the ${key} with the value of cfg.key (#7492)

    • Accelerate result analysis in analyze_result.py. The evaluation time is speedup by 10 ~ 15 times and only tasks 10 ~ 15 minutes now. (#7891)

    • Support to set block_dilations in DilatedEncoder (#7812)

    • Support panoptic segmentation result analysis (#7922)

    • Release DyHead with Swin-Large backbone (#7733)

    • Documentations updating and adding

      • Fix wrong default type of act_cfg in SwinTransformer (#7794)
      • Fix text errors in the tutorials (#7959)
      • Rewrite the installation guide (#7897)
      • Useful hooks (#7810)
      • Fix heading anchor in documentation (#8006)
      • Replace markdownlint with mdformat for avoiding installing ruby (#8009)

    Contributors

    A total of 20 developers contributed to this release.

    Thanks @ZwwWayne, @DarthThomas, @solyaH, @LutingWang, @chenxinfeng4, @Czm369, @Chenastron, @chhluo, @austinmw, @Shanyaliux @hellock, @Y-M-Y, @jbwang1997, @hhaAndroid, @Irvingao, @zhanggefan, @BIGWangYuDong, @Keiku, @PeterVennerstrom, @ayulockin

    New Contributors

    • @DarthThomas made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7794
    • @solyaH made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7912
    • @chenxinfeng4 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7832
    • @Chenastron made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7959
    • @austinmw made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7937
    • @Shanyaliux made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7812
    • @Irvingao made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7279
    • @zhanggefan made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7441
    • @ayulockin made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7459

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.24.1...v2.25.0

    Source code(tar.gz)
    Source code(zip)
  • v2.24.1(Apr 30, 2022)

    What's Changed

    • [Fix] Fix no attribute 'samples_per_gpu' bug in auto_scale_lr by @jbwang1997 in https://github.com/open-mmlab/mmdetection/pull/7862
    • [Fix] Fix KeyError: 'ori_filename' when using --show-dir with centernet_resnet18_dcnv2_140e_coco.py by @jbwang1997 in https://github.com/open-mmlab/mmdetection/pull/7865
    • [Fix] Fix the configs of simplecopypaste by @Czm369 in https://github.com/open-mmlab/mmdetection/pull/7864
    • [Docs] Update readme by @chhluo in https://github.com/open-mmlab/mmdetection/pull/7867

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.24.0...v2.24.1

    Source code(tar.gz)
    Source code(zip)
  • v2.24.0(Apr 26, 2022)

    Highlights

    New Features

    • Support Simple Copy-Paste is a Strong Data Augmentation Method for Instance Segmentation, see example configs (#7501)

    • Support Class Aware Sampler, users can set

      data=dict(train_dataloader=dict(class_aware_sampler=dict(num_sample_class=1))))
      

      in the config to use ClassAwareSampler. Examples can be found in the configs of OpenImages Dataset. (#7436)

    • Support automatically scaling LR according to GPU number and samples per GPU. (#7482) In each config, there is a corresponding config of auto-scaling LR as below,

      auto_scale_lr = dict(enable=True, base_batch_size=N)
      

      where N is the batch size used for the current learning rate in the config (also equals to samples_per_gpu * gpu number to train this config). By default, we set enable=False so that the original usages will not be affected. Users can set enable=True in each config or add --auto-scale-lr after the command line to enable this feature and should check the correctness of base_batch_size in customized configs.

    • Support setting dataloader arguments in config and add functions to handle config compatibility. (#7668) The comparison between the old and new usages is as below.

      Before v2.24.0 Since v2.24.0
      data = dict(
          samples_per_gpu=64, workers_per_gpu=4,
          train=dict(type='xxx', ...),
          val=dict(type='xxx', samples_per_gpu=4, ...),
          test=dict(type='xxx', ...),
      )
      
      # A recommended config that is clear
      data = dict(
          train=dict(type='xxx', ...),
          val=dict(type='xxx', ...),
          test=dict(type='xxx', ...),
          # Use different batch size during inference.
          train_dataloader=dict(samples_per_gpu=64, workers_per_gpu=4),
          val_dataloader=dict(samples_per_gpu=8, workers_per_gpu=2),
          test_dataloader=dict(samples_per_gpu=8, workers_per_gpu=2),
      )
      
      # Old style still works but allows to set more arguments about data loaders
      data = dict(
          samples_per_gpu=64,  # only works for train_dataloader
          workers_per_gpu=4,  # only works for train_dataloader
          train=dict(type='xxx', ...),
          val=dict(type='xxx', ...),
          test=dict(type='xxx', ...),
          # Use different batch size during inference.
          val_dataloader=dict(samples_per_gpu=8, workers_per_gpu=2),
          test_dataloader=dict(samples_per_gpu=8, workers_per_gpu=2),
      )
      
    • Support memory profile hook. Users can use it to monitor the memory usages during training as below (#7560)

      custom_hooks = [
          dict(type='MemoryProfilerHook', interval=50)
      ]
      
    • Support to run on PyTorch with MLU chip (#7578)

    • Support re-spliting data batch with tag (#7641)

    • Support the DiceCost used by K-Net in MaskHungarianAssigner (#7716)

    • Support splitting COCO data for Semi-supervised object detection (#7431)

    • Support Pathlib for Config.fromfile (#7685)

    • Support to use file client in OpenImages dataset (#7433)

    • Add a probability parameter to Mosaic transformation (#7371)

    • Support specifying interpolation mode in Resize pipeline (#7585)

    Bug Fixes

    • Avoid invalid bbox after deform_sampling (#7567)
    • Fix the issue that argument color_theme does not take effect when exporting confusion matrix (#7701)
    • Fix the end_level in Necks, which should be the index of the end input backbone level (#7502)
    • Fix the bug that mix_results may be None in MultiImageMixDataset (#7530)
    • Fix the bug in ResNet plugin when two plugins are used (#7797)

    Improvements

    • Enhance load_json_logs of analyze_logs.py for resumed training logs (#7732)
    • Add argument out_file in image_demo.py (#7676)
    • Allow mixed precision training with SimOTAAssigner (#7516)
    • Updated INF to 100000.0 to be the same as that in the official YOLOX (#7778)
    • Add documentations of:
      • how to get channels of a new backbone (#7642)
      • how to unfreeze the backbone network (#7570)
      • how to train fast_rcnn model (#7549)
      • proposals in Deformable DETR (#7690)
      • from-scratch install script in get_started.md (#7575)
    • Release pre-trained models of
      • Mask2Former (#7595, #7709)
      • RetinaNet with ResNet-18 and release models (#7387)
      • RetinaNet with EfficientNet backbone (#7646)

    Contributors

    A total of 27 developers contributed to this release. Thanks @jovialio, @zhangsanfeng2022, @HarryZJ, @jamiechoi1995, @nestiank, @PeterH0323, @RangeKing, @Y-M-Y, @mattcasey02, @weiji14, @Yulv-git, @xiefeifeihu, @FANG-MING, @meng976537406, @nijkah, @sudz123, @CCODING04, @SheffieldCao, @Czm369, @BIGWangYuDong, @zytx121, @jbwang1997, @chhluo, @jshilong, @RangiLyu, @hhaAndroid, @ZwwWayne

    New Contributors

    • @nestiank made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7591
    • @PeterH0323 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7482
    • @mattcasey02 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7610
    • @weiji14 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7516
    • @Yulv-git made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7679
    • @xiefeifeihu made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7701
    • @SheffieldCao made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7732
    • @jovialio made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7778
    • @zhangsanfeng2022 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7578

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.23.0...v2.24.0

    Source code(tar.gz)
    Source code(zip)
  • v2.23.0(Mar 30, 2022)

    Highlights

    New Features

    • Support Mask2Former(#6938)(#7466)(#7471)
    • Support EfficientNet (#7514)
    • Support setting data root through environment variable MMDET_DATASETS, users don't have to modify the corresponding path in config files anymore. (#7386)
    • Support setting different seeds to different ranks (#7432)
    • Update the dist_train.sh so that the script can be used to support launching multi-node training on machines without slurm (#7415)
    • Find a good recipe for fine-tuning high precision ResNet backbone pre-trained by Torchvision (#7489)

    Bug Fixes

    • Fix bug in VOC unit test which removes the data directory (#7270)
    • Adjust the order of get_classes and FileClient (#7276)
    • Force the inputs of get_bboxes in yolox_head to float32 (#7324)
    • Fix misplaced arguments in LoadPanopticAnnotations (#7388)
    • Fix reduction=mean in CELoss. (#7449)
    • Update unit test of CrossEntropyCost (#7537)
    • Fix memory leaking in panpotic segmentation evaluation (#7538)
    • Fix the bug of shape broadcast in YOLOv3 (#7551)

    Improvements

    • Add Chinese version of onnx2tensorrt.md (#7219)
    • Update colab tutorials (#7310)
    • Update information about Localization Distillation (#7350)
    • Add Chinese version of finetune.md (#7178)
    • Update YOLOX log for non square input (#7235)
    • Add nproc in coco_panoptic.py for panoptic quality computing (#7315)
    • Allow to set channel_order in LoadImageFromFile (#7258)
    • Take point sample related functions out of mask_point_head (#7353)
    • Add instance evaluation for coco_panoptic (#7313)
    • Enhance the robustness of analyze_logs.py (#7407)
    • Supplementary notes of sync_random_seed (#7440)
    • Update docstring of cross entropy loss (#7472)
    • Update pascal voc result (#7503)
    • We create How-to documentation to record any questions about How to xxx. In this version, we added
      • How to use Mosaic augmentation (#7507)
      • How to use backbone in mmcls (#7438)
      • How to produce and submit the prediction results of panoptic segmentation models on COCO test-dev set (#7430))

    Contributors

    A total of 27 developers contributed to this release. Thanks @ZwwWayne, @haofanwang, @shinya7y, @chhluo, @yangrisheng, @triple-Mu, @jbwang1997, @HikariTJU, @imflash217, @274869388, @zytx121, @matrixgame2018, @jamiechoi1995, @BIGWangYuDong, @JingweiZhang12, @Xiangxu-0103, @hhaAndroid, @jshilong, @osbm, @ceroytres, @bunge-bedstraw-herb, @Youth-Got, @daavoo, @jiangyitong, @RangiLyu, @CCODING04, @yarkable

    New Contributors

    • @triple-Mu made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7219
    • @yangrisheng made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7180
    • @imflash217 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7398
    • @osbm made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7498
    • @ceroytres made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7510
    • @bunge-bedstraw-herb made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7507
    • @Youth-Got made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7521
    • @CCODING04 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7386

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.22.0...v2.23.0

    Source code(tar.gz)
    Source code(zip)
  • v2.22.0(Feb 26, 2022)

    Breaking Changes

    In order to support the visualization for Panoptic Segmentation, the num_classes can not be None when using the get_palette function to determine whether to use the panoptic palette.

    Highlights

    New Features

    Bug Fixes

    • Fix bug for the best checkpoints can not be saved when the key_score is None (#7101)
    • Fix MixUp transform filter boxes failing case (#7080)
    • Add missing properties in SABLHead (#7091)
    • Fix bug when NaNs exist in confusion matrix (#7147)
    • Fix PALETTE AttributeError in downstream task (#7230)

    Improvements

    • Speed up SimOTA matching (#7098)
    • Add Chinese translation of docs_zh-CN/tutorials/init_cfg.md (#7188)

    Contributors

    A total of 20 developers contributed to this release. Thanks @ZwwWayne, @hhaAndroid, @RangiLyu, @AronLin, @BIGWangYuDong, @jbwang1997, @zytx121, @chhluo, @shinya7y, @LuooChen, @dvansa, @siatwangmin, @del-zhenwu, @vikashranjan26, @haofanwang, @jamiechoi1995, @HJoonKwon, @yarkable, @zhijian-liu, @RangeKing

    New Contributors

    • @LuooChen made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7101
    • @dvansa made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7080
    • @siatwangmin made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6476
    • @vikashranjan26 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7091
    • @RangeKing made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7215
    • @zhijian-liu made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7175
    • @HJoonKwon made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7187
    • @yarkable made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7188

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.21.0...v2.22.0

    Source code(tar.gz)
    Source code(zip)
  • v2.21.0(Feb 8, 2022)

    Breaking Changes

    To standardize the contents in config READMEs and meta files of OpenMMLab projects, the READMEs and meta files in each config directory have been significantly changed. The template will be released in the future, for now, you can refer to the examples of README for algorithm, dataset and backbone. To align with the standard, the configs in dcn are put into to two directories named dcn and dcnv2.

    New Features

    • Allow to customize colors of different classes during visualization (#6716)
    • Support CPU training (#7016)
    • Add download script of COCO, LVIS, and VOC dataset (#7015)

    Bug Fixes

    • Fix weight conversion issue of RetinaNet with Swin-S (#6973)
    • Update __repr__ of Compose (#6951)
    • Fix BadZipFile Error when build docker (#6966)
    • Fix bug in non-distributed multi-gpu training/testing (#7019)
    • Fix bbox clamp in PyTorch 1.10 (#7074)
    • Relax the requirement of PALETTE in dataset wrappers (#7085)
    • Keep the same weights before reassign in the PAA head (#7032)
    • Update code demo in doc (#7092)

    Improvements

    • Speed-up training by allow to set variables of multi-processing (#6974, #7036)
    • Add links of Chinese tutorials in readme (#6897)
    • Disable cv2 multiprocessing by default for acceleration (#6867)
    • Deprecate the support for "python setup.py test" (#6998)
    • Re-organize metafiles and config readmes (#7051)
    • Fix None grad problem during training TOOD by adding SigmoidGeometricMean (#7090)

    Contributors

    A total of 26 developers contributed to this release. Thanks @del-zhenwu, @zimoqingfeng, @srishilesh, @imyhxy, @jenhaoyang, @jliu-ac, @kimnamu, @ShengliLiu, @garvan2021, @ciusji, @DIYer22, @kimnamu, @q3394101, @zhouzaida, @gaotongxiao, @topsy404, @AntoAndGar, @jbwang1997, @nijkah, @ZwwWayne, @Czm369, @jshilong, @RangiLyu, @BIGWangYuDong, @hhaAndroid, @AronLin

    New Contributors

    • @srishilesh made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6936
    • @imyhxy made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6867
    • @jliu-ac made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6725
    • @ShengliLiu made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6973
    • @garvan2021 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6951
    • @nijkah made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6956
    • @ciusji made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7033
    • @DIYer22 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6966
    • @topsy404 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7124
    • @AntoAndGar made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7095
    • @zimoqingfeng made their first contribution in https://github.com/open-mmlab/mmdetection/pull/7032

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.20.0...v2.21.0

    Source code(tar.gz)
    Source code(zip)
  • v2.20.0(Dec 30, 2021)

    New Features

    • Support TOOD: Task-aligned One-stage Object Detection (ICCV 2021 Oral) (#6746)
    • Support resuming from the latest checkpoint automatically (#6727)

    Bug Fixes

    • Fix wrong bbox loss_weight of the PAA head (#6744)
    • Fix the padding value of gt_semantic_seg in batch collating (#6837)
    • Fix test error of lvis when using classwise (#6845)
    • Avoid BC-breaking of get_local_path (#6719)
    • Fix bug in sync_norm_hook when the BN layer does not exist (#6852)
    • Use pycocotools directly no matter what platform it is (#6838)

    Improvements

    • Add unit test for SimOTA with no valid bbox (#6770)
    • Use precommit to check readme (#6802)
    • Support selecting GPU-ids in non-distributed testing time (#6781)

    Contributors

    A total of 16 developers contributed to this release. Thanks @ZwwWayne, @Czm369, @jshilong, @RangiLyu, @BIGWangYuDong, @hhaAndroid, @jamiechoi1995, @AronLin, @Keiku, @gkagkos, @fcakyon, @www516717402, @vansin, @zactodd, @kimnamu, @jenhaoyang

    New Contributors

    • @jamiechoi1995 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6795
    • @Keiku made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6865
    • @gkagkos made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6744
    • @vansin made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6858
    • @zactodd made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6764
    • @kimnamu made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6906
    • @jenhaoyang made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6881

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.19.1...v2.20.0

    Source code(tar.gz)
    Source code(zip)
  • v2.19.1(Dec 15, 2021)

  • v2.19.0(Nov 30, 2021)

    Highlights

    New Features

    Bug Fixes

    • Fix repeatedly output warning message (#6584)
    • Avoid infinite GPU waiting in dist training (#6501)
    • Fix SSD512 config error (#6574)
    • Fix MMDetection model to ONNX command (#6558)

    Improvements

    • Refactor configs of FP16 models (#6592)
    • Align accuracy to the updated official YOLOX (#6443)
    • Speed up training and reduce memory cost when using PhotoMetricDistortion. (#6442)
    • Make OHEM work with seesaw loss (#6514)

    Documents

    • Update README.md (#6567)

    Contributors

    A total of 11 developers contributed to this release. Thanks @FloydHsiu, @RangiLyu, @ZwwWayne, @AndreaPi, @st9007a, @hachreak, @BIGWangYuDong, @hhaAndroid, @AronLin, @chhluo, @vealocia, @HarborYuan, @st9007a, @jshilong

    New Contributors

    • @FloydHsiu made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6546
    Source code(tar.gz)
    Source code(zip)
  • v2.18.1(Nov 15, 2021)

    Highlights

    • Release QueryInst pre-trained weights (#6460)
    • Support plot confusion matrix (#6344)

    New Features

    • Release QueryInst pre-trained weights (#6460)
    • Support plot confusion matrix (#6344)

    Bug Fixes

    • Fix aug test error when the number of prediction bboxes is 0 (#6398)
    • Fix SpatialReductionAttention in PVT (#6488)
    • Fix wrong use of trunc_normal_init in PVT and Swin-Transformer (#6432)

    Improvements

    • Save the printed AP information of COCO API to logger (#6505)
    • Always map location to cpu when load checkpoint (#6405)
    • Set a random seed when the user does not set a seed (#6457)

    Documents

    Contributors

    A total of 11 developers contributed to this release. Thanks @st9007a, @hachreak, @HarborYuan, @vealocia, @chhluo, @AndreaPi, @AronLin, @BIGWangYuDong, @hhaAndroid, @RangiLyu, @ZwwWayne

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.18.0...v2.18.1

    Source code(tar.gz)
    Source code(zip)
  • v2.18.0(Oct 28, 2021)

    Highlights

    • Support QueryInst (#6050)
    • Refactor dense heads to decouple onnx export logics from get_bboxes and speed up inference (#5317, #6003, #6369, #6268, #6315)

    New Features

    • Support QueryInst (#6050)
    • Support infinite sampler (#5996)

    Bug Fixes

    • Fix init_weight in fcn_mask_head (#6378)
    • Fix type error in imshow_bboxes of RPN (#6386)
    • Fix broken colab link in MMDetection Tutorial (#6382)
    • Make sure the device and dtype of scale_factor are the same as bboxes (#6374)
    • Remove sampling hardcode (#6317)
    • Fix RandomAffine bbox coordinate bug (#6293)
    • Fix initialization bug of final cls/reg layer in convfc head (#6279)
    • Fix img_shape broken in auto_augment (#6259)
    • Fix kwargs parameter missing error in two stage detector (#6256)

    Improvements

    • Unify the interface of stuff head and panoptic head (#6308)
    • Polish readme (#6243)
    • Add code-spell pre-commit hook and fix a typo (#6306)
    • Fix typos (#6245, #6190)
    • Fix sampler unit test (#6284)
    • Fix forward_dummy of YOLACT to enable get_flops (#6079)
    • Fix link error in the config documentation (#6252)
    • Adjust the order to beautify the document (#6195)

    Refactors

    • Refactor one-stage get_bboxes logic (#5317)
    • Refactor ONNX export of One-Stage models (#6003, #6369)
    • Refactor dense heads and speed-up (#6268)
    • Migrate to use prior_generator in the training of dense heads (#6315)

    Contributors

    A total of 18 developers contributed to this release. Thanks @Boyden, @onnkeat, @st9007a, @vealocia, @yhcao6, @DapangpangX, @yellowdolphin, @cclauss, @kennymckormick, @pingguokiller, @collinzrj, @AndreaPi, @AronLin, @BIGWangYuDong, @hhaAndroid, @jshilong, @RangiLyu, @ZwwWayne

    New Contributors

    • @AndreaPi made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6252
    • @pingguokiller made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6256
    • @kennymckormick made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6245
    • @yellowdolphin made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6259
    • @DapangpangX made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6293
    • @vealocia made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6050
    • @st9007a made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6374
    • @onnkeat made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6382
    • @Boyden made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6378

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.17.0...v2.18.0

    Source code(tar.gz)
    Source code(zip)
  • v2.17.0(Sep 28, 2021)

    Highlights

    • Support PVT and PVTv2
    • Support SOLO
    • Support large scale jittering and New Mask R-CNN baselines
    • Speed up YOLOv3 inference

    New Features

    • Support PVT and PVTv2 (#5780)
    • Support SOLO (#5832)
    • Support large scale jittering and New Mask R-CNN baselines (#6132)
    • Add a general data structrue for the results of models (#5508)
    • Added a base class for one-stage instance segmentation (#5904)
    • Speed up YOLOv3 inference (#5991)
    • Release Swin Transformer pre-trained models (#6100)
    • Support mixed precision training in YOLOX (#5983)
    • Support val workflow in YOLACT (#5986)
    • Add script to test torchserve (#5936)
    • Support onnxsim with dynamic input shape (#6117)

    Bug Fixes

    • Fix the function naming errors in model_wrappers (#5975)
    • Fix regression loss bug when the input is an empty tensor (#5976)
    • Fix scores not contiguous error in centernet_head (#6016)
    • Fix missing parameters bug in imshow_bboxes (#6034)
    • Fix bug in aug_test of HTC when the length of det_bboxes is 0 (#6088)
    • Fix empty proposal errors in the training of some two-stage models (#5941)
    • Fix dynamic_axes parameter error in ONNX dynamic shape export (#6104)
    • Fix dynamic_shape bug of SyncRandomSizeHook (#6144)
    • Fix the Swin Transformer config link error in the configuration (#6172)

    Improvements

    • Add filter rules in Mosaic transform (#5897)
    • Add size divisor in get flops to avoid some potential bugs (#6076)
    • Add Chinese translation of docs_zh-CN/tutorials/customize_dataset.md (#5915)
    • Add Chinese translation of conventions.md (#5825)
    • Add description of the output of data pipeline (#5886)
    • Add dataset information in the README file for PanopticFPN (#5996)
    • Add extra_repr for DropBlock layer to get details in the model printing (#6140)
    • Fix CI out of memory and add PyTorch1.9 Python3.9 unit tests (#5862)
    • Fix download links error of some model (#6069)
    • Improve the generalization of XML dataset (#5943)
    • Polish assertion error messages (#6017)
    • Remove opencv-python-headless dependency by albumentations (#5868)
    • Check dtype in transform unit tests (#5969)
    • Replace the default theme of documentation with PyTorch Sphinx Theme (#6146)
    • Update the paper and code fields in the metafile (#6043)
    • Support to customize padding value of segmentation map (#6152)
    • Support to resize multiple segmentation maps (#5747)

    Contributors

    A total of 24 developers contributed to this release. Thanks @morkovka1337, @HarborYuan, @guillaumefrd, @guigarfr, @www516717402, @gaotongxiao, @ypwhs, @MartaYang, @shinya7y, @justiceeem, @zhaojinjian0000, @VVsssssk, @aravind-anantha, @wangbo-zhao, @czczup, @whai362, @czczup, @marijnl, @AronLin, @BIGWangYuDong, @hhaAndroid, @jshilong, @RangiLyu, @ZwwWayne

    New Contributors

    • @www516717402 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5975
    • @gaotongxiao made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6017
    • @MartaYang made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6034
    • @justiceeem made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5915
    • @zhaojinjian0000 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5897
    • @VVsssssk made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5936
    • @aravind-anantha made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6104
    • @czczup made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5780
    • @marijnl made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5886
    • @HarborYuan made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5747
    • @morkovka1337 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6172
    • @guillaumefrd made their first contribution in https://github.com/open-mmlab/mmdetection/pull/6140

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.16.0...v2.17.0

    Source code(tar.gz)
    Source code(zip)
  • v2.16.0(Aug 31, 2021)

    Highlights

    New Features

    • Support Panoptic FPN and release models (#5577, #5902)
    • Support Swin Transformer backbone (#5748)
    • Release RetinaNet models pre-trained with multi-scale 3x schedule (#5636)
    • Add script to convert unlabeled image list to coco format (#5643)
    • Add hook to check whether the loss value is valid (#5674)
    • Add YOLO anchor optimizing tool (#5644)
    • Support export onnx models without post process. (#5851)
    • Support classwise evaluation in CocoPanopticDataset (#5896)
    • Adapt browse_dataset for concatenated datasets. (#5935)
    • Add PatchEmbed and PatchMerging with AdaptivePadding (#5952)

    Bug Fixes

    • Fix unit tests of YOLOX (#5859)
    • Fix lose randomness in imshow_det_bboxes (#5845)
    • Make output result of ImageToTensor contiguous (#5756)
    • Fix inference bug when calling regress_by_class in RoIHead in some cases (#5884)
    • Fix bug in CIoU loss where alpha should not have gradient. (#5835)
    • Fix the bug that multiscale_output is defined but not used in HRNet (#5887)
    • Set the priority of EvalHook to LOW. (#5882)
    • Fix a YOLOX bug when applying bbox rescaling in test mode (#5899)
    • Fix mosaic coordinate error (#5947)
    • Fix dtype of bbox in RandomAffine. (#5930)

    Improvements

    • Add Chinese version of data_pipeline and (#5662)
    • Support to remove state dicts of EMA when publishing models. (#5858)
    • Refactor the loss function in HTC and SCNet (#5881)
    • Use warnings instead of logger.warning (#5540)
    • Use legacy coordinate in metric of VOC (#5627)
    • Add Chinese version of customize_losses (#5826)
    • Add Chinese version of model_zoo (#5827)

    Contributors

    A total of 19 developers contributed to this release. Thanks @ypwhs, @zywvvd, @collinzrj, @OceanPang, @ddonatien, @@haotian-liu, @viibridges, @Muyun99, @guigarfr, @zhaojinjian0000, @jbwang1997,@wangbo-zhao, @xvjiarui, @RangiLyu, @jshilong, @AronLin, @BIGWangYuDong, @hhaAndroid, @ZwwWayne

    New Contributors

    • @zywvvd made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5756
    • @ddonatien made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5926
    • @viibridges made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5899
    • @haotian-liu made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5882
    • @Muyun99 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5973
    • @jbwang1997 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5827

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.15.1...v2.16.0

    Source code(tar.gz)
    Source code(zip)
  • v2.15.1(Aug 11, 2021)

    Highlights

    New Features

    • Support YOLOX(#5756, #5758, #5760, #5767, #5770, #5774, #5777, #5808, #5828, #5848)

    Bug Fixes

    • Update correct SSD models. (#5789)
    • Fix casting error in mask structure (#5820)
    • Fix MMCV deployment documentation links. (#5790)

    Improvements

    • Use dynamic MMCV download link in TorchServe dockerfile (#5779)
    • Rename the function upsample_like to interpolate_as for more general usage (#5788)

    Contributors

    A total of 14 developers contributed to this release. Thanks @HAOCHENYE, @xiaohu2015, @HsLOL, @zhiqwang, @Adamdad, @shinya7y, @Johnson-Wang, @RangiLyu, @jshilong, @mmeendez8, @AronLin, @BIGWangYuDong, @hhaAndroid, @ZwwWayne

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.15.0...v2.15.1

    Source code(tar.gz)
    Source code(zip)
  • v2.15.0(Aug 3, 2021)

    Highlights

    • Support adding MIM dependencies during pip installation
    • Support MobileNetV2 for SSD-Lite and YOLOv3
    • Support Chinese Documentation

    New Features

    • Add function upsample_like (#5732)
    • Support to output pdf and epub format documentation (#5738)
    • Support and release Cascade Mask R-CNN 3x pre-trained models (#5645)
    • Add ignore_index to CrossEntropyLoss (#5646)
    • Support adding MIM dependencies during pip installation (#5676)
    • Add MobileNetV2 config and models for YOLOv3 (#5510)
    • Support COCO Panoptic Dataset (#5231)
    • Support ONNX export of cascade models (#5486)
    • Support DropBlock with RetinaNet (#5544)
    • Support MobileNetV2 SSD-Lite (#5526)

    Bug Fixes

    • Fix the device of label in multiclass_nms (#5673)
    • Fix error of backbone initialization from pre-trained checkpoint in config file (#5603, #5550)
    • Fix download links of RegNet pretrained weights (#5655)
    • Fix two-stage runtime error given empty proposal (#5559)
    • Fix flops count error in DETR (#5654)
    • Fix unittest for NumClassCheckHook when it is not used. (#5626)
    • Fix description bug of using custom dataset (#5546)
    • Fix bug of multiclass_nms that returns the global indices (#5592)
    • Fix valid_mask logic error in RPNHead (#5562)
    • Fix unit test error of pretrained configs (#5561)
    • Fix typo error in anchor_head.py (#5555)
    • Fix bug when using dataset wrappers (#5552)
    • Fix a typo error in demo/MMDet_Tutorial.ipynb (#5511)
    • Fixing crash in get_root_logger when cfg.log_level is not None (#5521)
    • Fix docker version (#5502)
    • Fix optimizer parameter error when using IterBasedRunner (#5490)

    Improvements

    • Add unit tests for MMTracking (#5620)
    • Add Chinese translation of documentation (#5718, #5618, #5558, #5423, #5593, #5421, #5408. #5369, #5419, #5530, #5531)
    • Update resource limit (#5697)
    • Update docstring for InstaBoost (#5640)
    • Support key reduction_override in all loss functions (#5515)
    • Use repeatdataset to accelerate CenterNet training (#5509)
    • Remove unnecessary code in autoassign (#5519)
    • Add documentation about init_cfg (#5273)

    Contributors

    A total of 18 developers contributed to this release. Thanks @OceanPang, @AronLin, @hellock, @Outsider565, @RangiLyu, @ElectronicElephant, @likyoo, @BIGWangYuDong, @hhaAndroid, @noobying, @yyz561, @likyoo, @zeakey, @ZwwWayne, @ChenyangLiu, @johnson-magic, @qingswu, @BuxianChen

    New Contributors

    • @BuxianChen made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5511
    • @qingswu made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5521
    • @ChenyangLiu made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5555
    • @zeakey made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5592
    • @yyz561 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5546
    • @yingkaining made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5618
    • @likyoo made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5640
    • @Outsider565 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5718

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.14.0...v2.15.0

    Source code(tar.gz)
    Source code(zip)
  • v2.14.0(Jun 29, 2021)

    Highlights

    • Upgrade to use MMCV-full 1.3.8 to use the fix in https://github.com/open-mmlab/mmcv/pull/1120
    • Add simple_test to dense heads to improve the consistency of single-stage and two-stage detectors
    • Revert the test_mixins to single image test to improve efficiency and readability
    • Add Faster R-CNN and Mask R-CNN config using multi-scale training with 3x schedule

    New Features

    • Support pretrained models from MoCo v2 and SwAV (#5286)
    • Add Faster R-CNN and Mask R-CNN config using multi-scale training with 3x schedule (#5179, #5233)
    • Add reduction_override in MSELoss (#5437)
    • Stable support of exporting DETR to ONNX with dynamic shapes and batch inference (#5168)
    • Stable support of exporting PointRend to ONNX with dynamic shapes and batch inference (#5440)

    Bug Fixes

    • Fix size mismatch bug in multiclass_nms (#4980)
    • Fix the import path of MultiScaleDeformableAttention (#5338)
    • Fix errors in config of GCNet ResNext101 models (#5360)
    • Fix Grid-RCNN error when there is no bbox result (#5357)
    • Fix errors in onnx_export of bbox_head when setting reg_class_agnostic (#5468)
    • Fix type error of AutoAssign in the document (#5478)
    • Fix web links ending with .md (#5315)

    Improvements

    • Add simple_test to dense heads to improve the consistency of single-stage and two-stage detectors (#5264)
    • Add support for mask diagonal flip in TTA (#5403)
    • Revert the test_mixins to single image test to improve efficiency and readability (#5249)
    • Make YOLOv3 Neck more flexible (#5218)
    • Refactor SSD to make it more general (#5291)
    • Refactor anchor_generator and point_generator (#5349)
    • Allow to configure out the mask_head of the HTC algorithm (#5389)
    • Delete deprecated warning in FPN (#5311)
    • Move model.pretrained to model.backbone.init_cfg (#5370)
    • Make deployment tools more friendly to use (#5280)
    • Clarify installation documentation (#5316)
    • Add ImageNet Pretrained Models docs (#5268)
    • Add FAQ about training loss=nan solution and COCO AP or AR =-1 (# 5312, #5313)
    • Change all weight links of http to https (#5328)

    New Contributors

    • @hasanirtiza made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5302
    • @THU17cyz made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5315
    • @hokmund made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5218
    • @jiangwenj02 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5357
    • @Junjun2016 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5415
    • @shenyunhang made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5428
    • @MaximilianOtten made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5389
    • @Y-M-Y made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5479

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.13.0...v2.14.0

    Source code(tar.gz)
    Source code(zip)
  • v2.13.0(Jun 1, 2021)

    Highlights

    New Features

    Bug Fixes

    • Fix YOLOv3 FP16 training error (#5172)
    • Fix Cascade R-CNN TTA test error when det_bboxes length is 0 (#5221)
    • Fix iou_thr variable naming errors in VOC recall calculation function (#5195)
    • Fix Faster R-CNN performance dropped in ONNX Runtime (#5197)
    • Fix DETR dict changed error when using python 3.8 during iteration (#5226)

    Improvements

    • Refactor ONNX export of two-stage detector (#5205)
    • Replace MMDetection's EvalHook with MMCV's EvalHook for consistency (#4806)
    • Update RoI extractor for ONNX (#5194)
    • Use better parameter initialization in YOLOv3 head for higher performance (#5181)
    • Release new DCN models of Mask R-CNN by mixed-precision training (#5201)
    • Update YOLOv3 model weights (#5229)
    • Add DetectoRS ResNet-101 model weights (#4960)
    • Discard boxes with sizes equals to min_bbox_size (#5011)
    • Remove duplicated code in DETR head (#5129)
    • Remove unnecessary object in the class definition (#5180)

    New Contributors

    • @namihagi made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5121
    • @zlx-6 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5129
    • @haofanwang made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5147
    • @ijjustinKim made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5163
    • @liuhuiCNN made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5192
    • @SemyonBevzuk made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5197

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.12.0...v2.13.0

    Source code(tar.gz)
    Source code(zip)
  • v2.12.0(May 3, 2021)

    Highlights

    • Support new methods: AutoAssign, YOLOF, and Deformable DETR
    • Stable support of exporting models to ONNX with batched images and dynamic shape (#5039)

    Backwards Incompatible Changes

    MMDetection is going through big refactoring for more general and convenient usages during the releases from v2.12.0 to v2.15.0 (maybe longer). In v2.12.0 MMDetection inevitably brings some BC-breakings including the MMCV dependency, model initialization, model registry, and mask AP evaluation.

    • MMCV version. MMDetection v2.12.0 relies on the newest features in MMCV 1.3.3, including BaseModule for unified parameter initialization, model registry, and the CUDA operator MultiScaleDeformableAttn for Deformable DETR. Note that MMCV 1.3.2 already contains all the features used by MMDet but has known issues. Therefore, we recommend users to skip MMCV v1.3.2 and use v1.3.2, though v1.3.2 might work for most of the cases.
    • Unified model initialization (#4750). To unify the parameter initialization in OpenMMLab projects, MMCV supports BaseModule that accepts init_cfg to allow the modules' parameters to be initialized in a flexible and unified manner. Now the users need to explicitly call model.init_weights() in the training script to initialize the model (as in here, previously this was handled by the detector. The models in MMDetection have been re-benchmarked to ensure accuracy in PR #4750. The downstream projects should update their code accordingly to use MMDetection v2.12.0.
    • Unified model registry (#5059). To easily use backbones implemented in other OpenMMLab projects, MMDetection migrates to inherit the model registry created in MMCV (#760). In this way, as long as the backbone is supported in an OpenMMLab project and that project also uses the registry in MMCV, users can use that backbone in MMDetection by simply modifying the config without copying the code of that backbone into MMDetection.
    • Mask AP evaluation (#4898). In the previous version, the areas of masks are calculated through the bounding boxes when calculating the mask AP of small, medium, and large instances. To really use the area of masks, we pop the key bbox during mask AP calculation. This change does not affect the overall mask AP evaluation and aligns the mask AP of similar models in other repos like Detectron2.

    New Features

    Improvements

    • Use MMCV MODEL_REGISTRY (#5059)
    • Unified parameter initialization for more flexible usage (#4750)
    • Rename variable names and fix docstring in anchor head (#4883)
    • Support training with empty GT in Cascade RPN (#4928)
    • Add more details of usage of test_robustness in documentation (#4917)
    • Changing to use pycocotools instead of mmpycocotools to fully support Detectron2 and MMDetection in one environment (#4939)
    • Update torch serve dockerfile to support dockers of more versions (#4954)
    • Add check for training with the single class dataset (#4973)
    • Refactor transformer and DETR Head (#4763)
    • Update FPG model zoo (#5079)
    • More accurate mask AP of small/medium/large instances (#4898)

    Bug Fixes

    • Fix bug in mean_ap.py when calculating mAP by 11 points (#4875)
    • Fix error when key meta is not in old checkpoints (#4936)
    • Fix hanging bug when training with empty GT in VFNet, GFL, and FCOS by changing the place of reduce_mean (#4923, #4978, #5058)
    • Fix asyncronized inference error and provide related demo (#4941)
    • Fix IoU losses dimensionality unmatch error (#4982)
    • Fix torch.randperm whtn using PyTorch 1.8 (#5014)
    • Fix empty bbox error in mask_head when using CARAFE (#5062)
    • Fix supplement_mask bug when there are zero-size RoIs (#5065)
    • Fix testing with empty rois in RoI Heads (#5081)

    New Contributors

    • @ZephyrusKylin made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4875
    • @agim-a made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4936
    • @li-phone made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4889
    • @Adamdad made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4756
    • @hjin2902 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4943
    • @adursun made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5013
    • @quincylin1 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/5031

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.11.0...v2.12.0

    Source code(tar.gz)
    Source code(zip)
  • v2.11.0(Apr 2, 2021)

    Highlights

    New Features

    • Support localization distillation for object detection (#4758)
    • Support Pytorch2ONNX with batch inference and dynamic shape for Faster-RCNN and mainstream one-stage detectors (#4796)

    Improvements

    • Support batch inference in head of RetinaNet (#4699)
    • Add batch dimension in second stage of Faster-RCNN (#4785)
    • Support batch inference in bbox coder (#4721)
    • Add check for ann_ids in COCODataset to ensure it is unique (#4789)
    • support for showing the RPN results (#4716)
    • support dynamic shape for grid_anchor (#4684)
    • Support automatic statistical evaluation results and export them to EXCEL (#4693)
    • Move pycocotools version check to when it is used (#4880)

    Bug Fixes

    • Fix a bug of TridentNet when doing the batch inference (#4717)
    • Fix a bug of Pytorch2ONNX in FASF (#4735)
    • Fix a bug when show the image with float type (#4732)

    New Contributors

    • @tangyanf made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4685
    • @freepoet made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4701
    • @SeongjaeHong made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4770
    • @ShoufaChen made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4805
    • @tczhao made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4836
    • @HikariTJU made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4758
    • @ppwwyyxx made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4880
    • @hcy226 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4879

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.10.0...v2.11.0

    Source code(tar.gz)
    Source code(zip)
  • v2.10.0(Mar 2, 2021)

    Highlights

    • Support new methods: FPG
    • Support ONNX2TensorRT for SSD, FSAF, FCOS, YOLOv3, and Faster R-CNN.

    New Features

    • Support ONNX2TensorRT for SSD, FSAF, FCOS, YOLOv3, and Faster R-CNN (#4569)
    • Support Feature Pyramid Grids (FPG) (#4645)
    • Support video demo (#4420)
    • Add seed option for sampler (#4665)
    • Support to customize type of runner (#4570, #4669)
    • Support synchronizing BN buffer in EvalHook (#4582)
    • Add script for GIF demo (#4573)

    Bug Fixes

    • Fix ConfigDict AttributeError and add Colab link (#4643)
    • Avoid crash in empty gt training of GFL head (#4631)
    • Fix iou_thrs bug in RPN evaluation (#4581)
    • Fix syntax error of config when upgrading model version (#4584)

    Improvements

    • Refactor unit test file structures (#4600)
    • Refactor nms config (#4636)
    • Get loading pipeline by checking the class directly rather than through config strings (#4619)
    • Add doctests for mask target generation and mask structures (#4614)
    • Use deep copy when copying pipeline arguments (#4621)
    • Update documentations (#4642, #4650, #4620, #4630)
    • Remove redundant code calling import_modules_from_strings (#4601)
    • Clean deprecated FP16 API (#4571)
    • Check whether CLASSES is correctly initialized in the intialization of XMLDataset (#4555)
    • Support batch inference in the inference API (#4462, #4526)
    • Clean deprecated warning and fix 'meta' error (#4695)

    New Contributors

    • @CescMessi made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4584
    • @dave-andersen made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4462
    • @sleepfin made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4581
    • @YimianDai made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4620
    • @lml131 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4192
    • @steven0129 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/4420

    Full Changelog: https://github.com/open-mmlab/mmdetection/compare/v2.9.0...v2.10.0

    Source code(tar.gz)
    Source code(zip)
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 2.7k Jan 7, 2023
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 2.8k Dec 31, 2022
Mmrotate - OpenMMLab Rotated Object Detection Benchmark

OpenMMLab website HOT OpenMMLab platform TRY IT OUT ?? Documentation | ??️ Insta

OpenMMLab 1.2k Jan 4, 2023
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 3.9k Jan 4, 2023
Mixup for Supervision, Semi- and Self-Supervision Learning Toolbox and Benchmark

OpenSelfSup News Downstream tasks now support more methods(Mask RCNN-FPN, RetinaNet, Keypoints RCNN) and more datasets(Cityscapes). 'GaussianBlur' is

AI Lab, Westlake University 332 Jan 3, 2023
An open-access benchmark and toolbox for electricity price forecasting

epftoolbox The epftoolbox is the first open-access library for driving research in electricity price forecasting. Its main goal is to make available a

null 97 Dec 5, 2022
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 254 Jan 4, 2023
OpenMMLab Computer Vision Foundation

English | 简体中文 Introduction MMCV is a foundational library for computer vision research and supports many research projects as below: MMCV: OpenMMLab

OpenMMLab 4.6k Jan 9, 2023
Convert openmmlab (not only mmdetection) series model to tensorrt

MMDet to TensorRT This project aims to convert the mmdetection model to TensorRT model end2end. Focus on object detection for now. Mask support is exp

JinTian 4 Dec 17, 2021
Some pre-commit hooks for OpenMMLab projects

pre-commit-hooks Some pre-commit hooks for OpenMMLab projects. Using pre-commit-hooks with pre-commit Add this to your .pre-commit-config.yaml - rep

OpenMMLab 16 Nov 29, 2022
An example to implement a new backbone with OpenMMLab framework.

Backbone example on OpenMMLab framework English | 简体中文 Introduction This is an template repo about how to use OpenMMLab framework to develop a new bac

Ma Zerun 22 Dec 29, 2022
(JMLR'19) A Python Toolbox for Scalable Outlier Detection (Anomaly Detection)

Python Outlier Detection (PyOD) Deployment & Documentation & Stats Build Status & Coverage & Maintainability & License PyOD is a comprehensive and sca

Yue Zhao 6.6k Jan 3, 2023
LaneDet is an open source lane detection toolbox based on PyTorch that aims to pull together a wide variety of state-of-the-art lane detection models

LaneDet is an open source lane detection toolbox based on PyTorch that aims to pull together a wide variety of state-of-the-art lane detection models. Developers can reproduce these SOTA methods and build their own methods.

TuZheng 405 Jan 4, 2023
MMDetection3D is an open source object detection toolbox based on PyTorch

MMDetection3D is an open source object detection toolbox based on PyTorch, towards the next-generation platform for general 3D detection. It is a part of the OpenMMLab project developed by MMLab.

OpenMMLab 3.2k Jan 5, 2023
An Unsupervised Graph-based Toolbox for Fraud Detection

An Unsupervised Graph-based Toolbox for Fraud Detection Introduction: UGFraud is an unsupervised graph-based fraud detection toolbox that integrates s

SafeGraph 99 Dec 11, 2022
An open source object detection toolbox based on PyTorch

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

Bo Chen 24 Dec 28, 2022
OpenPCDet Toolbox for LiDAR-based 3D Object Detection.

OpenPCDet OpenPCDet is a clear, simple, self-contained open source project for LiDAR-based 3D object detection. It is also the official code release o

OpenMMLab 3.2k Dec 31, 2022