Highlights
- Support new methods: [YOLACT](https://arxiv.org/abs/1904.02689), [CentripetalNet](https://arxiv.org/abs/2003.09119).
- Add more documentations for easier and more clear usage.
Backwards Incompatible Changes
**FP16 related methods are imported from mmcv instead of mmdet. (3766, 3822)**
Mixed precision training utils in `mmdet.core.fp16` are moved to `mmcv.runner`, including `force_fp32`, `auto_fp16`, `wrap_fp16_model`, and `Fp16OptimizerHook`. A deprecation warning will be raised if users attempt to import those methods from `mmdet.core.fp16`, and will be finally removed in V2.8.0.
**[0, N-1] represents foreground classes and N indicates background classes for all models. (3221)**
Before v2.5.0, the background label for RPN is 0, and N for other heads. Now the behavior is consistent for all models. Thus `self.background_labels` in `dense_heads` is removed and all heads use `self.num_classes` to indicate the class index of background labels.
This change has no effect on the pre-trained models in the v2.x model zoo, but will affect the training of all models with RPN heads. Two-stage detectors whose RPN head uses softmax will be affected because the order of categories is changed.
**Only call `get_subset_by_classes` when `test_mode=True` and `self.filter_empty_gt=True` (3695)**
Function `get_subset_by_classes` in dataset is refactored and only filters out images when `test_mode=True` and `self.filter_empty_gt=True`.
In the original implementation, `get_subset_by_classes` is not related to the flag `self.filter_empty_gt` and will only be called when the classes is set during initialization no matter `test_mode` is `True` or `False`. This brings ambiguous behavior and potential bugs in many cases. After v2.5.0, if `filter_empty_gt=False`, no matter whether the classes are specified in a dataset, the dataset will use all the images in the annotations. If `filter_empty_gt=True` and `test_mode=True`, no matter whether the classes are specified, the dataset will call ``get_subset_by_classes` to check the images and filter out images containing no GT boxes. Therefore, the users should be responsible for the data filtering/cleaning process for the test dataset.
New Features
- Test time augmentation for single stage detectors (3844, 3638)
- Support to show the name of experiments during training (3764)
- Add `Shear`, `Rotate`, `Translate` Augmentation (3656, 3619, 3687)
- Add image-only transformations including `Constrast`, `Equalize`, `Color`, and `Brightness`. (3643)
- Support [YOLACT](https://arxiv.org/abs/1904.02689) (#3456)
- Support [CentripetalNet](https://arxiv.org/abs/2003.09119) (#3390)
- Support PyTorch 1.6 in docker (3905)
Bug Fixes
- Fix the bug of training ATSS when there is no ground truth boxes (3702)
- Fix the bug of using Focal Loss when there is `num_pos` is 0 (3702)
- Fix the label index mapping in dataset browser (3708)
- Fix Mask R-CNN training stuck problem when ther is no positive rois (3713)
- Fix the bug of `self.rpn_head.test_cfg` in `RPNTestMixin` by using `self.rpn_head` in rpn head (3808)
- Fix deprecated `Conv2d` from mmcv.ops (3791)
- Fix device bug in RepPoints (3836)
- Fix SABL validating bug (3849)
- Use `https://download.openmmlab.com/mmcv/dist/index.html` for installing MMCV (#3840)
- Fix nonzero in NMS for PyTorch 1.6.0 (3867)
- Fix the API change bug of PAA (3883)
- Fix typo in bbox_flip (3886)
- Fix cv2 import error of ligGL.so.1 in Dockerfile (3891)
Improvements
- Change to use `mmcv.utils.collect_env` for collecting environment information to avoid duplicate codes (3779)
- Update checkpoint file names to v2.0 models in documentation (3795)
- Update tutorials for changing runtime settings (3778), modifing loss (3777)
- Improve the function of `simple_test_bboxes` in SABL (3853)
- Convert mask to bool before using it as img's index for robustness and speedup (3870)
- Improve documentation of modules and dataset customization (3821)
New Contributors
* jd730 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/3741
* yl-1993 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/3840
* chongzhou96 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/3456
* LabMemNo003 made their first contribution in https://github.com/open-mmlab/mmdetection/pull/3876
**Full Changelog**: https://github.com/open-mmlab/mmdetection/compare/v2.4.0...v2.5.0