MMDetection3D:新一代通用3D目标检测平台

本文转载自知乎,已获作者授权转载。

https://zhuanlan.zhihu.com/p/165647329

更多关于OpenMMlab开源技术的信息请点击:

港中文-商汤OpenMMLab开源全景图!

伴随着自动驾驶科技的飞速发展和激光雷达的普及,3D目标检测近年来逐渐成为业界和学术界的研究热点。然而,目前在3D目标检测领域却不像2D目标检测那样,有着像MMDetection这样简单通用的代码库和benchmark。所以,我们决定发布MMDetection3D(简称MMDet3D)来弥补这一空白。今天,很高兴MMDetection3D 和大家见面了,希望大家喜欢。

太长不看版:

  • MMDetection3D 支持了VoteNet, MVXNet, Part-A2,PointPillars等多种算法,覆盖了单模态和多模态检测,室内和室外场景SOTA; 还可以直接使用训练MMDetection里面的所有300+模型和40+算法,支持算法的数量和覆盖方向为3D检测代码库之最。

  • MMDetection3D 支持了SUN RGB-D, ScanNet, nuScenes, Lyft, 和KITTI共5个主流数据集,支持的数据集数量为3D检测代码库之最。

  • MMDetection3D 拥有最快的训练速度,支持pip install一键安装,简单易用。

下面简单介绍下 MMDetection3D,更具体的细节见文档。

https://mmdetection3d.readthedocs.io/en/latest/

支持多模态/单模态3D检测

3D检测领域的多套codebase大多聚焦在基于点云的单模态检测上,而多模态检测的代码库也不怎么支持单模态的检测。由于多模态3D检测任务的重要性愈发凸显,我们在MMDetection3D里面支持了多模态(图像+点云)的3D检测,目前已经支持了MVX-Net在KITTI 上的模型。从此,新的工作可以基于MMDetection3D和其他单模态或者多模态方法进行直接的比较,减轻了不少codebase迁移和文章复现等带来的负担。

支持室内/室外主流数据集

由于室内和室外3D检测数据集的差异性,一直以来很少有工作会同时在这两类数据集上进行实验和比较,因此目前也没有codebase能较好地同时支持室内外的数据集及相关方法。MMDetection3D目前支持了ScanNet和SUNRGBD两个主流室内数据集,还同时支持了KITTI,nuScenes和Lyft三个室外数据集。在模型层面,我们复现了VoteNet 这一室内数据集中的state of the art,以及PartA2-Net,PointPillars 等室外数据集中的常见方法。MMDetection3D将室内外数据集的预处理流程抽象成了一套data pipeline,同时在模型层面已经实现了部分model是与坐标系无关的。我们的目标是以后新的工作可以较轻松地同时在室内和室外数据集上进行试验和比较,以验证方法的普适性并提高其影响力。

直接支持MMDetection的model zoo

目前,还没有哪套3D检测的codebase可以直接在自己的codebase里支持2D检测的SOTA,但MMDetection3D 就做到了这一点。MMDetection3D基于MMDetection和MMCV,使用了和MMDetection一致的外层API并直接使用了很多MMDetection的代码(例如,训练相关的hook都实现在MMCV里面了,而train_detector等函数因为都是检测所以MMDetection3D 压根不用写),所以只要有正确的config文件, MMDetection model zoo里的300+模型和40+算法都可以在MMDetection3D里面正常使用(考虑到MMDetection不支持3D检测,MMDetection3D支持的模型和算法其实比MMDetection多,MMDetection3D可以claim是目前圈内最大、最全的检测算法库了嗯…)。

这样带来的好处有至少以下两点:

  1. 以后大家要尝试多模态的检测算法可以复用几乎所有MMDetection里的2D检测器和实例分割模型,选项多多,排列组合多多。

  2. MMDetection和MMCV里实现了很多通用的模块,如GCBlock,DCN,FPN,FocalLoss等,也可以直接在MMDetection3D里面拿来使用(现在就是这么做的),减小了2D检测和3D检测之间的gap。也欢迎大家以后在尝试新的通用检测技术时(如Loss,神经网络模块等)可以来MMDetection3D里试一锤子,说不定也是work的,这样实验也会更加solid。

最快的训练速度

我们和已开源的多个3D检测代码库都进行了比较,在VoteNet,SECOND,PointPillars等模型上的训练速度都比其他代码库要快。在8卡分布式训练并使用相同超参的情况下,训练速度(样本数/秒)的对比如下图;其他codebase中不支持的对应模型我们就打了x。

简单易用

除了上述优势以外,由于MMDetection3D的实现基于MMDetection,设计上的思路也是一脉相承,比如config系统和MMDetection一致,modular design等也像MMDetection一样是codebase的标配,大家要上手MMDetection3D应该都很简单。MMDetection3D也支持像MMDetection 或者detectron2那样作为一个package来使用,因此也方便大家基于MMDetection3D 快速启动一个新的project。直接 pip install mmdet3d 就可以安装最新release 的MMDetection3D,在新的project里面直接 import mmdet3d 就可以轻松使用mmdet3d 的所有功能。

MMDetection3D在工程上也做了不少优化。众所周知,最初的SECOND.Pytorch在Target assign等方面都使用NumPy算子,并且将很多运算放进了Dataloader里面,既不高效也不灵活。MMDetection3D直接使用了MMDetection里的assigner等模块(是的,MMDetection3D并不需要实现这些函数),基于PyTorch将这些复杂的计算放到了CUDA上进行,这大概也是MMDetection3D更快的原因。在其他codebase中,安装spconv也时常是一大障碍,现在spconv也被直接集成进了MMDetection3D的自定义算子里,使得MMDetection3D的安装流程和MMDetection一样流畅。

MMDetection3D 要刷到SOTA 的方式也非常简单。比如我们在nuscenes上使用PointPillars + RegNet3.2GF + FPN + FreeAnchor + Test-time augmentation,不需要使用CBGS 或GT-sampling,只使用普通的数据增强,就能够达到NDS 65, mAP 57,是榜单上LiDAR单模态单模型第一的结果。这个模型在release的时候就在我们的 model zoo 里。

https://github.com/open-mmlab/mmdetection3d/tree/master/configs/free_anchor

总结:

MMDetection3D填补了目前3D检测领域codebase的一些空白,支持多种多模态/单模态检测器和室内/室外数据集SOTA,为community未来的free style提供了一个强大易用的codebase。欢迎大家前来fork,star,体验,开发,提PR。

项目地址:

https://github.com/open-mmlab/mmdetection3d/

备注:目标检测

目标检测交流群

2D、3D目标检测等最新资讯,若已为CV君其他账号好友请直接私信。

我爱计算机视觉

微信号:aicvml

QQ群:805388940

微博知乎:@我爱计算机视觉

投稿:amos@52cv.net

网站:www.52cv.net

在看,让更多人看到  

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页