Releases: open-mmlab/mmrotate
v0.3.4
Improvements
- Use iof for RRandomCrop validation (#660)
- Upgrade e2cnn version (#713)
- Support empty patch in Rotate Transform (#712)
Bug Fixes
- Fix scikit-learn installation (#658)
- Fix deprecated np.bool (#685)
- Fix using multiprocessing when formatting (#679)
Documentations
- Minor correction in the documentation (#643)
Contributors
A total of 3 developers contributed to this release.
Thanks @nijkah, @jistiak, @RangiLyu
New Contributors
Full Changelog: v0.3.3...v0.3.4
MMRotate v1.0.0rc1 Release
Highlights
- Support RTMDet rotated object detection models. The technical report of RTMDet is on arxiv (#662)
- Support H2RBox. (#644)
New Features
- Support PSC (#617)
- Add
projects/
folder and give an example for communities to contribute their projects. (#627) - Support DIOR Dataset. (#639)
Bug Fixes
Improvements
- Deprecating old type alias due to new version of numpy (#674)
- Use iof in RRandomCrop. (#660)
- Modify keys in dataset.metainfo to lower case. (#654)
- Add torch 1.13 in CI. (#661)
- Add dockerfile in 1.x. (#631)
- Use mmengine in torchserve deployment. (#616)
- Add
.pre-commit-config-zh-cn.yaml
. (#630)
Contributors
A total of 11 developers contributed to this release.
Thanks @yxzhao2022 @yuyi1005 @YanxingLiu @nijkah @RangeKing @austinmw @liuyanyi @yangxue0827 @zytx121 @RangiLyu @ZwwWayne
New Contributors
- @yuyi1005 made their first contribution in #617
- @yxzhao2022 made their first contribution in #639
- @YanxingLiu made their first contribution in #631
Full Changelog: v1.0.0rc0...v1.0.0rc1
MMRotate v1.0.0rc0 Release
We are excited to announce the release of MMRotate 1.0.0rc0.
MMRotate 1.0.0rc0 is the first version of MMRotate 1.x, a part of the OpenMMLab 2.0 projects.
Built upon the new training engine, MMRotate 1.x unifies the interfaces of dataset, models, evaluation, and visualization with faster training and testing speed.
Highlights
-
New engines. MMRotate 1.x is based on MMEngine, which provides a general and powerful runner that allows more flexible customizations and significantly simplifies the entrypoints of high-level interfaces.
-
Unified interfaces. As a part of the OpenMMLab 2.0 projects, MMRotate 1.x unifies and refactors the interfaces and internal logics of train, testing, datasets, models, evaluation, and visualization. All the OpenMMLab 2.0 projects share the same de# those interfaces and logics to allow the emergence of multi-task/modality algorithms.
-
New BoxType design. We support data structures RotatedBoxes and QuadriBoxes 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 MMDetection 3.x and MMRotate 1.x to simplify the implementation and reduce redundant codes.
-
Stronger visualization. We provide a series of useful tools which are mostly based on brand-new visualizers. As a result, it is more convenient for the users to explore the models and datasets now.
Breaking Changes
We briefly list the major breaking changes here.
We will update the migration guide to provide complete details and migration instructions.
Dependencies
- MMRotate 1.x relies on MMEngine to run. MMEngine is a new foundational library for training deep learning models in OpenMMLab 2.0 models. The dependencies of file IO and training are migrated from MMCV 1.x to MMEngine.
- MMRotate 1.x relies on MMCV>=2.0.0rc2. Although MMCV no longer maintains the training functionalities since 2.0.0rc0, MMRotate 1.x relies on the data transforms, CUDA operators, and image processing interfaces in MMCV. Note that the package
mmcv
is the version that provide pre-built CUDA operators andmmcv-lite
does not since MMCV 2.0.0rc0, whilemmcv-full
has been deprecated. - MMRotate 1.x relies on MMDetection>=3.0.0rc2.
Training and testing
- MMRotate 1.x uses Runner in MMEngine rather than that in MMCV. The new Runner implements and unifies the building logic of dataset, model, evaluation, and visualizer. Therefore, MMRotate 1.x no longer maintains the building logics of those modules in
mmrotate.train.apis
andtools/train.py
. Those code 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 as 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 scheduling has been migrated from
Hook
toParameter 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 structures to ease the understanding of the components in runner. Users can 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.
Dataset
The Dataset classes implemented in MMRotate 1.x all inherits from the BaseDataset in MMEngine.
- All the datasets support to serialize the data list to reduce the memory when multiple workers are built to accelerate data loading.
Data Transforms
The data transforms in MMRotate 1.x all inherits from those in MMCV>=2.0.0rc2, which follows a new convention in OpenMMLab 2.0 projects.
The changes are listed as below:
- The interfaces are also changed. Please refer to the API Reference
- The functionality of some data transforms (e.g.,
Rotate
) are decomposed into several transforms.
Model
The models in MMRotate 1.x all inherits from BaseModel
in MMEngine, which defines a new convention of models in OpenMMLab 2.0 projects. Users can refer to the tutorial of 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 MMRotate 1.x. Specifically, all the input data in training and testing are packed into
inputs
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 and model predictions. In this way, different tasks in MMRotate 1.x can share the same input arguments, which makes the models more general and suitable for multi-task learning. - The model has a data preprocessor module, which is used to pre-process the input data of model. In MMRotate 1.x, the data preprocessor usually does 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 model have been changed. In MMRotate 0.x, model used
forward_train
andsimple_test
to deal with different model forward logics. In MMRotate 1.x and OpenMMLab 2.0, the forward function has three modes:loss
,predict
, andtensor
for training, inference, and tracing or other purposes, respectively. The forward function callsself.loss()
,self.predict()
, andself._forward()
given the modesloss
,predict
, andtensor
, respectively.
Evaluation
MMRotate 1.x mainly implements corresponding metrics for each task, which are manipulated by Evaluator to complete the evaluation.
In addition, users can build evaluator in MMRotate 1.x to conduct offline evaluation, i.e., evaluate predictions that may not produced by MMRotate, prediction follows our dataset conventions. More details can be find in the Evaluation Tutorial in MMEngine.
Visualization
The functions of visualization in MMRotate 1.x are removed. Instead, in OpenMMLab 2.0 projects, we use Visualizer to visualize data. MMRotate 1.x implements RotLocalVisualizer
to allow visualization of ground truths, model predictions, and feature maps, etc., at any place. It also supports to dump the visualization data to any external visualization backends such as Tensorboard and Wandb.
Improvements
- Support quadrilateral box detection (#520)
- Support RotatedCocoMetric (#557)
- Support COCO style annotations (#582)
- Support two new SAR datasets: RSDD and SRSDD (#591)
Ongoing changes
- Test-time augmentation: is not implemented yet in this version due to limited time slot. We will support it in the following releases with a new and simplified design.
- Inference interfaces: a unified inference interfaces will be supported in the future to ease the use of released models.
- Interfaces of useful tools that can be used in notebook: more useful tools that implemented in the
tools/
directory will have their python interfaces so that they can be used through notebook and in downstream libraries. - 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 MMRotate 1.x.
Contributors
A total of 8 developers contributed to this release.
Thanks @DonggeunYu @k-papadakis @liuyanyi @yangxue0827 @jbwang1997 @zytx121 @RangiLyu @ZwwWayne
New Contributors
- @DonggeunYu made their first contribution in #571
- @k-papadakis made their first contribution in #531
Full Changelog: v0.3.3...v1.0.0rc0
v0.3.3
Bug Fixes
- Fix reppoint bug fix when negative image training (#396)
- Fix bug in oriented_reppoints_head.py (#424)
- Fix mmcv-full version (#423)
Improvements
Documentations
Contributors
A total of 5 developers contributed to this release.
Thanks @yangxue0827, @ZwwWayne, @MinkiSong, @zytx121, @RangiLyu
v0.3.2
Changelog
v0.3.2 (6/7/2022)
Highlight
New Features
- Support RMosaic. (#344)
Bug Fixes
- Fix max_coordinate in multiclass_nms_rotated. (#346)
- Fix bug in PolyRandomRotate. (#366)
- Fix memory shortage when using huge_image_demo.py (#368)
Improvements
- Update README.md and INSTALL.md. (#342)
- Fix typo in rotated_fcos_head. (#354)
- Update checkpoint and eval interval of base config. (#347)
- Fix mdformat version to support python3.6 & Add mim to extras_require in setup.py (#359)
- Add mim test in CI (#374)
Contributors
A total of 9 developers contributed to this release.
Thanks @LiWentomng @heiyuxiaokai @JinYuannn @sltlls @liuyanyi @yangxue0827 @jbwang1997 @zytx121 @ZwwWayne
New Contributors
- @LiWentomng made their first contribution in #286
- @JinYuannn made their first contribution in #354
- @sltlls made their first contribution in #368
Full Changelog: v0.3.1...v0.3.2
v0.3.1
Highlight
- Support Rotated FCOS, which relies on the Differentiable rotated IoU in MMCV. (#223)
New Features
- Update PolyRandomRotate to support discrete angle value. (#281)
- Support RRandomCrop. (#322)
- Support mask in merge_results and huge_image_demo.py. (#280)
- Support don't filter images without ground truths. (#323)
- Add MultiImageMixDataset in build_dataset. (#331)
Bug Fixes
- Fix error in Windows CI. (#324)
- Fix data path error in config files. (#328)
- Fix bug when visualize the HRSC2016 detect results. (#329)
Improvements
- Add torchserve doc in zh_cn. (#287)
- Fix doc typo in README. (#284)
- Configure Myst-parser to parse anchor tag (#305 #308)
- Replace markdownlint with mdformat for avoiding installing ruby. (#306)
- Fix typo about split gap of multi scale. (#272)
Contributors
A total of 7 developers contributed to this release.
Thanks @liuyanyi @nijkah @remi-or @yangxue0827 @jbwang1997 @zytx121 @ZwwWayne
New Contributors
Full Changelog: v0.3.0...v0.3.1
v0.3.0
Highlight
New Features
-
Update performance of ReDet on HRSC2016. (#203)
-
Upgrage visualization to custom colors of different classes. This requires mmdet>=2.22.0. (#187, #267, #270)
-
Update Stable KLD, which solve the Nan issue of KLD training. (#183)
-
Support setting dataloader arguments in config and add functions to handle config compatibility. (#215)
The comparison between the old and new usages is as below.Before v0.2.0 Since v0.3.0 data = dict( samples_per_gpu=2, workers_per_gpu=2, 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=2, workers_per_gpu=2), val_dataloader=dict(samples_per_gpu=4, workers_per_gpu=4), test_dataloader=dict(samples_per_gpu=4, workers_per_gpu=4), ) # Old style still works but allows to set more arguments about data loaders data = dict( samples_per_gpu=2, # only works for train_dataloader workers_per_gpu=2, # 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=4, workers_per_gpu=4), test_dataloader=dict(samples_per_gpu=4, workers_per_gpu=4), )
Bug Fixes
- Fix bug about rotated anchor inside flags. (#197)
- Fix Nan issue of GWD. (#206)
- Fix bug in eval_rbbox_map when labels_ignore is None. (#209)
- Fix bug of 'RoIAlignRotated' object has no attribute 'output_size' (#213)
- Fix bug in unit test for datasets. (#222)
- Fix bug in rotated_reppoints_head. (#246)
- Fix GPG key error in CI and docker. (#269)
Improvements
- Update citation of mmrotate in README.md (#263)
- Update the introduction of SASM (AAAI'22) (#184)
- Fix doc typo in Config File and Model Zoo. (#199)
- Unified RBox definition in doc. (#234)
Contributors
A total of 8 developers contributed to this release.
Thanks @nijkah @GamblerZSY @liuyanyi @yangxue0827 @grimoire @jbwang1997 @zytx121 @ZwwWayne
New Contributors
- @nijkah made their first contribution in #209
- @GamblerZSY made their first contribution in #197
- @grimoire made their first contribution in #264
Full Changelog: v0.2.0...v0.3.0
MMRotate V0.2.0 Release
New Features
- Support Circular Smooth Label (CSL, ECCV'20) (#153)
- Support multiple machines dist_train (#143)
- Add browse_dataset tool (#98)
- Add gather_models script (#162)
Bug Fixes
- Remove in-place operations in rbbox_overlaps (#155)
- Fix bug in docstring. (#137)
- Fix bug in HRSCDataset with
clasesswise=ture
(#175)
Improvements
- Add Chinese translation of
docs/zh_cn/tutorials/customize_dataset.md
(#65) - Add different seeds to different ranks (#102)
- Update from-scratch install script in install.md (#166)
- Improve the arguments of all mmrotate scripts (#168)
Contributors
A total of 6 developers contributed to this release.
Thanks @zytx121 @yangxue0827 @ZwwWayne @jbwang1997 @canoe-Z @matrixgame2018
New Contributors
- @canoe-Z made their first contribution in #98
- @matrixgame2018 made their first contribution in #65
Full Changelog: v0.1.1...v0.2.0
MMRotate V0.1.1 Release
New Features
- Support huge image inference (#34)
- Support HRSC Dataset (#96)
- Support mixed precision training (#72)
- Add colab tutorial for beginners (#66)
- Add inference speed statistics tool (#86)
- Add confusion matrix analysis tool (#93)
Bug Fixes
- Fix URL error of Swin pretrained model (#111)
- Fix bug for SASM during training (#105)
- Fix rbbox_overlaps abnormal when the box is too small (#61)
- Fix bug for visualization (#12, #81)
- Fix stuck when compute mAP (#14, #52)
- Fix 'RoIAlignRotated' object has no attribute 'out_size' bug (#51)
- Add missing init_cfg in dense head (#37)
- Fix install an additional mmcv (#17)
- Fix typos in docs (#3, #11, #36)
Improvements
- Move
eval_rbbox_map
frommmrotate.datasets
tommrotate.core.evaluation
(#73) - Add Windows CI (#31)
- Add copyright commit hook (#30)
- Add Chinese translation of
docs/zh_cn/get_started.md
(#16) - Add Chinese translation of
docs/zh_cn/tutorials/customize_runtime.md
(#22) - Add Chinese translation of
docs/zh_cn/tutorials/customize_config.md
(#23) - Add Chinese translation of
docs/zh_cn/tutorials/customize_models.md
(#27) - Add Chinese translation of
docs/zh_cn/model_zoo.md
(#28) - Add Chinese translation of
docs/zh_cn/faq.md
(#33)
Contributors
A total of 13 developers contributed to this release.
Thanks @zytx121 @yangxue0827 @jbwang1997 @liuyanyi @DangChuong-DC @RangeKing @liufeinuaa @np-csu @akmalulkhairin @SheffieldCao @BrotherHappy @Abyssaledge @q3394101
New Contributors
- @jbwang1997 made their first contribution in #12
- @liufeinuaa made their first contribution in #17
- @triple-Mu made their first contribution in #16
- @np-csu made their first contribution in #20
- @SheffieldCao made their first contribution in #22
- @Abyssaledge made their first contribution in #27
- @BrotherHappy made their first contribution in #33
- @liuyanyi made their first contribution in #37
- @yangxue0827 made their first contribution in #36
- @RangeKing made their first contribution in #23
- @DangChuong-DC made their first contribution in #52
- @akmalulkhairin made their first contribution in #93
- @lalalagogogochong made their first contribution in #105
- @heiyuxiaokai made their first contribution in #86
- @ZwwWayne made their first contribution in #135
Full Changelog: v0.1.0...v0.1.1
MMRotate V0.1.0 Release
Initial Release of MMRotate, support the following algorithms
- Rotated RetinaNet-OBB/HBB (ICCV'2017)
- Rotated FasterRCNN-OBB (TPAMI'2017)
- Rotated RepPoints-OBB (ICCV'2019)
- RoI Transformer (CVPR'2019)
- Gliding Vertex (TPAMI'2020)
- R3Det (AAAI'2021)
- S2A-Net (TGRS'2021)
- ReDet (CVPR'2021)
- Beyond Bounding-Box (CVPR'2021)
- Oriented R-CNN (ICCV'2021)
- GWD (ICML'2021)
- KLD (NeurIPS'2021)
- SASM (AAAI'2022)
- KFIoU (arXiv)
- G-Rep (stay tuned)