在真实场景中,我们见到的图像不都是方方正正的,比如扫描的图书和遥感图像,需要检测的目标通常是有一定旋转角度的。这时候就需要用到旋转目标检测方法,对目标进行精确的定位,方便后面的识别、分析等高级任务。
所谓旋转目标检测(Rotated Object Detection),又称为有向目标检测(Oriented Object Detection),试图在检测出目标位置的同时得到目标的方向信息。它通过重新定义目标表示形式,以及增加回归自由度数量的操作,实现旋转矩形、四边形甚至任意形状的目标检测。旋转目标检测在人脸识别、场景文字、遥感影像、自动驾驶、医学图像、机器人抓取等领域都有广泛应用。
遗憾的是,现有的开源旋转目标检测代码库,往往支持的方法较少,角度定义法各不相同,并且不同代码库所依赖的关键算子、深度学习算法框架不一致。这给代码复现、借鉴、公平对比都带来了很大的困难。
为了解决这些问题,今天,OpenMMLab 正式开源了 MMRotate!这是一个专注于旋转目标检测的工具箱,它提供了高效、强大的基准模型!
GitHub 链接:
https://github.com/open-mmlab/mmrotate
(文章末尾阅读原文可直达)
欢迎大家来Star~
MMRotate 有三大特点
为当下流行的基于深度学习的旋转目标检测算法提供了统一的训练、推理、评估的算法框架
简洁的用户接口与高效、强大的基准模型,部分实现精度超出官方版本
延续了 OpenMMLab 系列的模块化风格,继承了高度灵活 config 功能
首个统一的旋转目标检测工具箱
MMRotate 中包含了 15 种旋转目标检测算法,从之前 Tensorflow 独占的 GWD、KLD,到目前在 DOTA 数据集上达到 SOTA 的 ReDet、Oriented RCNN 都有实现。
目前支持的算法一览:
- 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)
- KFIoU (arXiv)
- G-Rep (stay tuned)
此外,MMRotate支持 OpenCV、长边135°、长边90° 3 种角度定义法,也支持 DOTA、SSDD、HRSID 3 个遥感数据集。
在 OpenMMLab 的 MMCV 中,实现了 RiRoIAlignRotated, RotatedFeatureAlign 等高性能旋转框 CUDA 算子,因此 MMRotate 无愧是真正的史上最全、最统一的旋转目标检测算法框架。
高效强大的基准模型
在 MMRotate 中,我们复现了大量旋转目标检测算法,部分模型在 DOTA v1.0 数据集上甚至超越了官方公布的精度。
模块化设计和丰富灵活的配置文件
同 OpenMMLab 其他算法库一样,我们使用统一框架和模块化设计实现了各个算法。一方面可以尽量实现代码复用,另一方面,方便大家基于此框架实现新的算法。
以下是 MMRotate 的大致框架:
MMRotate 主要由 4 个部分组成,datasets、models、core 和 apis 。
datasets 用于数据集加载和预处理,其中包含训练所需的数据集,旋转框数据增广的 pipelines,和加载数据时的 samplers 。
models 是最关键的部分,包括旋转检测模型和损失函数。
在 apis 中,我们为模型训练、测试和推理提供一键启动的接口。
core 中实现了用于模型训练的评估工具和定制的 hooks 。
另外,得益于 OpenMMLab 强大的且高度灵活的 config 模式和注册器机制, MMRotate 可以做到不改动代码只编辑配置文件便能自由切换不同的旋转框定义法。
MMRotate 作为 OpenMMLab 的一员,会逐渐地完善并不断修复 issues,持续添加新方法并支持更多的数据集。欢迎大家一起参与完善 MMRotate!