MMDet 3.0:目标检测新基准与前沿

时间:2022-10-22 07:56:31

时光荏苒,距离 MMDetection 上一个大版本 V2.0 的发布已经过去了两年。在这两年里,MMDetection 研发团队一直在追踪目标检测的进展,持续支持前沿 SOTA 算法并拓展代码库的功能,同时根据社区的需求和算法的进展,不断改进我们的设计,提升代码的拓展性和易用性。在大家的共同努力下,MMDetection 功能越来越完善,算法模型的支持越来越全面,也收获了大量的忠实用户和热情的社区开发者。

最近一年,跨模态和任务的感知算法逐渐成为计算机视觉领域新的研究趋势。其中,目标检测作为基础视觉任务之一,其突破往往能起到牵一发而动全身的效果(例如 Faster R-CNN,DETR和Pix2Seq 重塑了非常多任务的解决范式),这也对目标检测框架的扩展性和通用性提出了更高的要求。

因此,为了让 MMDetection 能够作为基准持续支持前沿算法,方便优秀 idea 的实现,经过半年的酝酿与设计,再经过半年的开发打磨,2022 年 9 月 1 日,MMDetection 3.0 终于和大家见面了。

谨以此文,向大家简单介绍一下。

太长不看版: 基于全新的训练引擎 MMEngine,MMDetection 3.0 和其它 OpenMMLab 2.0 的算法库彻底拉通了底层设计,并采用了统一的细粒度抽象与接口,使得训练流程更加灵活,架构更具扩展性。在此基础上,MMDetection 3.0 对模型的各个组件接口也进行了重构和简化,以支撑更加丰富的检测算法和下游应用。MMDetection 3.0 的运行速度和基准精度也得到了进一步优化,达到了现有框架的最优水平。另外,我们还研发了高精度模型 RTMDet,并和热情的社区开发者一起合作,开发了 MMYOLO 算法库。

家庭地位

在 OpenMMLab 2.0 算法库的大家庭中,检测相关算法库的架构层次如下图所示。MMDetection 3.0 作为通用目标检测的基础平台,是 3D 检测、旋转框检测、OCR 等算法库的核心依赖,当然也支持了MMYOLO 中 YOLO 系列算法库的功能。

同时,MMFewshot、MMAction2、MMTracking 、MMPose 中的检测组件也是基于 MMDetection 来搭建的。MMDetection 3.0 的家庭地位不言而喻,以后再也不敢(真的吗?)引入 BC-breaking 了QAQ。。。

MMDet 3.0:目标检测新基准与前沿

MMDetection 的家庭地位

新基准的自我修养

为了向检测社区提供完善强大的基准,MMDetection 3.0 主要在模型库、基准模型的速度与性能、用户与生态三个方向进行了努力。

全面的模型库

全面的模型库一方面可以向社区用户提供更多开箱即用的预训练模型,还能以统一的方式对各类算法进行速度和精度的比较和评估。算法实现细节的差异和 trick 也可以在算法配置和同类型抽象的横向对比中一览无余,快速为检测算法提供公平统一的基准。

目前 MMDetection 的官方模型库已经支持了 75 个主流和前沿模型,为用户提供了超过 350 个预训练模型。MMDetection 3.0 完整支持了各类检测器架构、支持使用各类流行的主干网络、高效支持了 Simple Copy Paste 和 Auto Augmentation 等数据增强技术。使得 MMDetection 3.0 既可以用作学术研究的标准 benchmark,也提供了各种刷(pai)分(lie)利(zu)器(he)。

MMDet 3.0:目标检测新基准与前沿

MMDetection 支持的各类方法示意图

MMDet 3.0:目标检测新基准与前沿

MMDetection 支持的各类模型

高性能基准模型

高效的训练推理有助于加速实验和模型生产的流程,高精度的基准模型能够为社区提供更多好用的模型。MMEngine 对数据加载和模型训练的性能与内存瓶颈进行了优化,在此基础上,MMDetection 3.0 进一步对检测模型的训练推理进行了分析优化,在 RetinaNet、FCOS、Faster R-CNN、Mask R-CNN 4 个常见基础模型的训练和测试速度上均有显著提升,超越了 Detectron2(Cascade Mask R-CNN 的实现也在优化中)。

MMDet 3.0:目标检测新基准与前沿

MMDetection 3.0 和 Detectron2 训练测试速度对比图

有了更快的训练速度,模型就可以使用更强的数据增强和更长的训练 schedule 了, MMDetection 3.0 为许多模型提供了一套更强的训练配置(Large-Scale Jittering 200e),并发布了一系列高精度模型,方便用户直接使用或作为性能对比。

MMDet 3.0:目标检测新基准与前沿

MMDetection 3.0 经典模型的精度提升

活跃的用户与生态

用户的体验一直是 MMDetection 关注提升的重点。因此,MMDetection 在关注代码质量和易用性的同时,提供了更加全面的文档和教程,并对文档结构进行了调整,拆分出了基础和进阶教程,希望能帮助用户快速上手 MMDetection 3.0。目前 MMDetection 3.0 还处在初期阶段,中英文文档和教程还有很多可以补充的地方,我们也邀请社区的同学们参与进来,共同完善 MMDetection 3.0 的文档和教程 。

用户文档链接:

https://mmdetection.readthedocs.io/en/3.x/overview.html

在文档与教程之外,MMDetection 3.0 支持了使用 MMClassification 和 TIMM 的模型作为 backbone,方便用户可以第一时间使用到最新的主干网络;目前我们正在支持通过 wrapper 来训练和测试 Detectron2 中的模型,以帮助社区减少跨算法库比较方法或者迁移代码的成本。

由于 License 的不同,MMDetection 的代码库不能直接支持 YOLO 算法。为了响应社区呼声,在热情的社区开发者的 carry 下,我们将 YOLO 系列算法实现进一个单独的算法库——MMYOLO 中。它可以为一系列 YOLO 算法提供公平便捷的基准,同时也能助力 YOLO 系列算法直接享受 OpenMMLab 其它算法库的加持,例如使用 MMRazor 中的轻量化算法和 MMDeploy 中完善的模型部署工具链。

让前沿成为习惯

技术的领先性一直是 MMDetection 乃至 OpenMMLab 各个算法库追求的目标。同时,OpenMMLab 还希望能够为研究员们提供施展拳脚的平台。最近一年,跨模态和任务的感知算法逐渐火热,Detection Transformer 和半监督检测的算法也在不断演进,MMDetection 3.0 也关注趋势,在上述方面进行了努力。

统一接口,灵活拓展

得益于 OpenMMLab 2.0 对训练流程的细粒度抽象和对各类抽象的统一接口设计,MMDetection 3.0 的拓展性大大提高,并进一步统一了各种检测算法的接口。

MMDetection 2.0 中不同任务算法的输入格式并不统一,导致数据流逻辑复杂,在用户希望增加一个输入接口的时候,几乎需要对所有模块的接口进行拓展,稍有不慎就容易出现数据漏传的问题。

MMDetection 3.0 统一了数据流,将所有的信息都放入 DataSample 中,将DataSample 作为数据、模型、评测和可视化之间的接口,同时用InstanceData 来对标注和预测结果中的框、分数、类别等信息进行统一封装。

MMDet 3.0:目标检测新基准与前沿

MMDetection 2.0(左侧) 和 3.0(右侧) 模块和数据流示意图对比

得益于统一的接口,MMDetection 3.0 支持了任意单阶段检测器作为 Region Proposal Network (RPN) ,用户只需要修改配置文件就可以进行尝试。使用 RetinaNet 作为单阶段检测器的配置如下所示:

MMDet 3.0:目标检测新基准与前沿

简单的 Detection Transformer

MMDetection 3.0 对 Detection Transformer 进行了重新设计,以减少过度封装和模块内的注册器使用。其中 Transformer Encoder、Transformer Decoder、和 Detection Head 属于同级抽象,显著减少了代码的跳转次数和封装层次,提高了代码的可读性和扩展性。

MMDet 3.0:目标检测新基准与前沿

MMDetection 3.0 中 Detection Transformer 逻辑图

通用的半监督训练

随着传统检测算法日趋成熟,无标签数据的利用对于模型性能的提升愈发关键。MMDetection 3.0 独家支持了通用半监督目标检测。用户只需要修改 Config 中的 model 或 dataset 就可以实现不同模型或数据集上的半监督训练,并且还支持加载预训练模型进行半监督微调和多源数据集的半监督训练。

同时,MMDetection 3.0 还支持了 SoftTeacher,用户可以基于 MMDetection 3.0 进行更多半监督检测方向的尝试。

MMDet 3.0:目标检测新基准与前沿

半监督训练流程示意图

高精度实时检测器

MMYOLO 对过往的 YOLO 系列算法进行了梳理和统一实现,提供了公平便捷的 benchmark ,而社区对高性能、低延时的目标检测器依旧呼声很高。结合过去两年计算机视觉领域的最新进展,MMDetection 团队也自研了一个全新的高精度、低延时的单阶段目标检测器 RTMDet。目前 RTMDet 的代码已经放出,敬请期待更加详细的解读。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZQPFEuMi-1666317680840)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b260cf639d234840999212eb1ac99795~tplv-k3u1fbpfcp-zoom-1.image)]

总结

在 MMDetection 2.0 发布时我们提到:“目标检测的代码框架不仅需要工程上稳定高效的实现,还需要保持灵活性来支持新方法。而 MMDetection 正是在朝着这个方向不断努力。

MMDetection 3.0 初心不改,一方面为社区持续提供强大、全面、高效、稳定的基准,另一方面在不断追踪和探索前沿,进行自我迭代和升级。

以 MMDetection 为代表的,OpenMMLab 2.0 所承载的全新的、开放的统一架构,蕴含了我们对未来算法演进的期待,也希望新的架构能够助力新算法的诞生。

后续规划

MMDetection 3.0 将持续更新,在支持更多前沿算法的同时不断提升易用性。目前,我们计划在 2023年 1 月 1 日正式发布 MMDetection 3.0.0 版本到 master 主分支,对新版本感兴趣的同学可以使用 3.x 或者 dev-3.x 分支来体验我们的全新版本。我们将在今年未来保持双分支的同时维护,主要维护时间线如下所示:

MMDet 3.0:目标检测新基准与前沿

最后,欢迎社区用户来试用 MMDet 3.0,通过提 PR、 issue 和 discussion 参与到 MMDet 3.0 的建设中,让我们一起把 MMDetection 变得更好。

视频讲解

OpenMMLab 2.0 讲解视频链接