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 operatorMultiScaleDeformableAttn
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 acceptsinit_cfg
to allow the modules' parameters to be initialized in a flexible and unified manner. Now the users need to explicitly callmodel.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
- Support paper AutoAssign: Differentiable Label Assignment for Dense Object Detection (#4295)
- Support paper You Only Look One-level Feature (#4295)
- Support paper Deformable DETR: Deformable Transformers for End-to-End Object Detection (#4778)
- Support calculating IoU with FP16 tensor in
bbox_overlaps
to save memory and keep speed (#4889) - Add
__repr__
in custom dataset to count the number of instances (#4756) - Add windows support by updating requirements.txt (#5052)
- Stable support of exporting models to ONNX with batched images and dynamic shape, including SSD, FSAF, FCOS, YOLOv3, RetinaNet, Faster R-CNN, and Mask R-CNN (#5039)
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 ofmmpycocotools
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 #4875
- @agim-a made their first contribution in #4936
- @li-phone made their first contribution in #4889
- @Adamdad made their first contribution in #4756
- @hjin2902 made their first contribution in #4943
- @adursun made their first contribution in #5013
- @quincylin1 made their first contribution in #5031
Full Changelog: v2.11.0...v2.12.0