Releases: open-mmlab/mmdetection
MMDetection V3.0.0rc4 Release
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
toutils/typing_utils.py
to fixcollect_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 #9274
- @lvhan028 made their first contribution in #9344
- @JunyaoHu made their first contribution in #9383
Full Changelog: v3.0.0rc3...v3.0.0rc4
MMDetection V2.26.0 Release
Highlights
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
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 #8905
- @BainOuO made their first contribution in #9175
- @wangjiangben-hw made their first contribution in #9267
- @AdorableJiang made their first contribution in #9330
- @motokimura made their first contribution in #9336
Full Changelog: v2.25.3...v2.26.0
MMDetection V3.0.0rc3 Release
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
ofConcatDataset
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 VOCConcatDataset
(#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 forDynamicSoftLabelAssigner
(#9179) - Make scipy as a default dependency in runtime (#9187)
- Update eval_metric (#9062)
- Add
seg_map_suffix
inBaseDetDataset
(#9088)
New Contributors
- @Wwupup made their first contribution in #9086
- @sanbuphy made their first contribution in #9153
- @cxiang26 made their first contribution in #9158
- @JosonChan1998 made their first contribution in #9225
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: v3.0.0rc2...v3.0.0rc3
MMDetection V2.25.3 Release
Bug Fixes
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 #8755
- @sudoAimer made their first contribution in #8803
- @DrRyanHuang made their first contribution in #8792
- @Ryoo72 made their first contribution in #9033
- @akshaygulabrao made their first contribution in #9054
- @gy-7 made their first contribution in #9041
Full Changelog: v2.25.2...v2.25.3
MMDetection V3.0.0rc2 Release
Highlights
- Support imagenet pre-training for RTMDet's backbone
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
andreadthedoc
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
andPolygonMasks
(#9006) - Update PyTorch and dependencies' version in dockerfile (#8845)
- Update
robustness_eval.py
andprint_config
(#8452) - Make compatible with
ConfigDict
anddict
indense_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 #8909
- @MambaWong made their first contribution in #8913
- @yuyoujiang made their first contribution in #8437
- @sltlls made their first contribution in #8944
- @Nioolek made their first contribution in #8845
- @wufan-tb made their first contribution in #9061
Full Changelog: v3.0.0rc1...v3.0.0rc2
MMDetection V3.0.0rc1 Release
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
andRepPoints
Head (#8813)
Improvements
- Refactored anchor head and base head with
box type
(#8625) - Refactored
SemiBaseDetector
andSoftTeacher
(#8786) - Add list to dict keys to avoid modify loss dict (#8828)
- Update
analyze_results.py
,analyze_logs.py
andloading.py
(#8430, #8402, #8784) - Support dump results in
test.py
(#8814) - Check empty predictions in
DetLocalVisualizer._draw_instances
(#8830) - Fix
floordiv
warning inSOLO
(#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 #8871
- @xin-li-67 made their first contribution in #8868
Full Changelog: v3.0.0rc0...v3.0.0rc1
MMDetection V2.25.2 Release
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
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 #8733
- @hewanru-bit made their first contribution in #8799
Full Changelog: v2.25.1...v2.25.2
MMDetection V3.0.0rc0 Release
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
-
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.
-
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.
-
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.
-
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.
-
Strong baselines. We release strong baselines of many popular models to enable fair comparisons among state-of-the-art models.
-
New features and algorithms:
- Enable all the single-stage detectors to serve as region proposal networks
- SoftTeacher
- the updated CenterNet
-
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 andmmcv-lite
does not since MMCV 2.0.0rc0, whilemmcv-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
andtools/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 intoinputs
anddata_samples
, whereinputs
contains model inputs like a list of image tensors, anddata_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
, andaug_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 callsself.loss
,self.predict
, andself._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...
MMDetection V2.25.1 Release
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
toextras_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 #8118
- @MiXaiLL76 made their first contribution in #8136
- @atinfinity made their first contribution in #8215
- @duanzhihua made their first contribution in #8263
- @STLAND-admin made their first contribution in #8370
- @xiaoyuan0203 made their first contribution in #8391
Full Changelog: v2.25.0...v2.25.1
MMDetection V2.25.0 Release
Highlights
- Support dedicated
WandbLogger
hook - Support ConvNeXt, DDOD, SOLOv2
- Support Mask2Former for instance segmentation
- Rename config files of Mask2Former
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
- Support ConvNeXt (#7281)
- Support DDOD (#7279)
- Support SOLOv2 (#7441)
- Support Mask2Former for instance segmentation (#7571, #8032)
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 callingtorch.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
fromcfg.evaluation.gpu_collect
(#7672) -
Speedup the Video Inference by Accelerating data-loading Stage (#7832)
-
Support replacing the
${key}
with the value ofcfg.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
inDilatedEncoder
(#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
inSwinTransformer
(#7794) - Fix text errors in the tutorials (#7959)
- Rewrite the installation guide (#7897)
- Useful hooks (#7810)
- Fix heading anchor in documentation (#8006)
- Replace
markdownlint
withmdformat
for avoiding installing ruby (#8009)
- Fix wrong default type of
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 #7794
- @solyaH made their first contribution in #7912
- @chenxinfeng4 made their first contribution in #7832
- @Chenastron made their first contribution in #7959
- @austinmw made their first contribution in #7937
- @Shanyaliux made their first contribution in #7812
- @Irvingao made their first contribution in #7279
- @zhanggefan made their first contribution in #7441
- @ayulockin made their first contribution in #7459
Full Changelog: v2.24.1...v2.25.0