3D目标检测框架综述(OpenPCDet、mmdet3d、Det3D、Paddle3D)

作者 | 双愚  编辑 | 汽车人

原文链接:https://zhuanlan.zhihu.com/p/569189196

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心技术交流群

后台回复【标定工具】获取2D检测/分割/关键点,3D点云检测分割标注工具!

38610801e0069390e64e1194ff9ae61e.png

3D目标检测示例(from Paddle3D)

2D目标检测是一个比较成熟的领域,相关的目标检测框架非常多,比如Detection2,MMDetection等。研究人员基于这些目标检测可以快速实现自己的想法,而不需要耗费大量的精力在工程开发,极大地降低了开发成本。

随着3D目标检测算法的逐渐增多,3D目标检测算法还处于一个比较混乱的状态,使得相关研究者难以在一个统一的框架下进行各种研究组合实验。具体表现在:

  • 很多3D数据集没有统一的接口API,KITTI,nuScenes,Waymo,Lyft等不同数据集之间的数据格式,坐标定义,采集方式,评价指标等差别都很大,

  • 3D数据的与预处理方式比2D图片预处理要复杂,比如数据增广,调整参数等入门门槛较高

  • 没有预训练模型,训练速度慢,评价指标不统一等问题都不利于3D目标检测的发展。

为了有效降低相关研究人员的科研和工程开发成本,建立统一的3D目标检测算法框架变得越来越重要。目前3D目标检测框架主要有4个,分别是:OpenPCDet, mmdetection3d, Det3D, Paddle3D

老规矩,先放一下4个3D目标检测框架对应的github官方链接:

  • OpenPCDet:https://github.com/open-mmlab/OpenPCDet

    • 个人代码注解笔记:https://github.com/HuangCongQing/pcdet-note

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

    • 官方文档:https://mmdetection3d.readthedocs.io/

    • 个人代码注解笔记:https://github.com/HuangCongQing/mmdetection3d-note

  • Det3D:https://github.com/poodarchu/Det3D

    • 个人代码笔记:TODO

  • Paddle3D:https://github.com/PaddlePaddle/Paddle3D

    • 个人代码笔记::TODO

小结

这4种目标检测框架算是都接触过,但实际场景中个人主要接触的是OpenPCDet和mmdetection3d,算是更熟悉些。下面说下对各个框架的使用感受,以期对大家入门学习3D目标检测,选择3D检测框架时提供些许帮助!

1.OpenPCDet

链接:https://github.com/open-mmlab/OpenPCDet

  • 社区活跃

  • 代码轻量化,而且可读性强(近些年的顶刊论文有些是基于这个框架开发的)

  • 部署方便相比其他框架方便些,而且有现成的一些部署实现。比如,pointpillars部署可以参考下面一些部署方案:

  • https://github.com/NVIDIA-AI-IOT/CUDA-PointPillars

  • https://github.com/hova88/PointPillars_MultiHead_40FPS

  • https://github.com/hova88/OpenPCDet

  • 【建议】个人认为如果初学者要学习目标检测框架,优先学OpenPCDet

2.mmdetection3d

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

  • 社区活跃

  • 有官方文档,便于上手

  • 相比于OpenPCDet,mmdetection3d包含场景更多,包括图像、点云、多模态数据源的3D检测以及分割等。

  • 代码封装比较好,但入门相对OpenPCDet困难些,codeview比较吃力(近些年的顶刊论文有些是基于这个框架开发的)

  • 模型部署工具仍在试验阶段

  • 【建议】对3D目标检测比较熟悉了之后,再尝试看mmdetection3d,里面内容更丰富,能学到不少东西。

3.Det3D

链接:https://github.com/poodarchu/Det3D

  • 很早之前看过 ,但后面开发的时候没怎么用过,了解的同学可以评论下,我会选取有用的信息放在这里,会标注出知乎ID和链接的哈

  • 和OpenPCDet框架类似,也比较轻量,但缺点是最近不怎么更新了

  • 也有一些已有的基于此框架的部署方案,比如CenterPoint的部署:https://github.com/CarkusL/CenterPoint

  • 【建议】学习优先级低于OpenPCDet和mmdetection3d

  1. Paddle3D:https://github.com/PaddlePaddle/Paddle3D

  • (2022年8月份)刚开源出来,暂时不清楚效果

  • 前面三种框架都是基于Pytorch,Paddle3D是基于PaddlePaddle框架,适合学过熟悉PaddlePaddle的同学

  • 【建议】先观望下吧~

Plus:

  • 里面OpenPCDet,mmdetection3d,Det3D都和港中文有关系,确实强啊。而且从每年的CVPR等订刊也能看到3D目标检测论文里面港中文占了很大比重啊!

  • Paddle3D是百度(飞桨携手Apollo)开发的框架。了解自动驾驶的同学都知道,工业上,百度是国内最早发展自动驾驶的企业。

1 OpenPCDet

代码链接:https://github.com/open-mmlab/OpenPCDet

个人代码笔记:https://github.com/HuangCongQing/pcdet-note

记得最开始2020年接触这个框架,还是Shaoshuai Shi(港中文)github下的仓库,后面才整体搬迁到OpenMMLab 下。下面介绍下OpenPCDet。知乎上有一个Shaoshuai Shi博士写的入门文档,还是比较清楚,大家可以主要看下这个文档:https://zhuanlan.zhihu.com/p/152120636。

下面截取一部分介绍:

OpenPCDet旨在为学术界和工业界提供一个更灵活、全面、高效的3D目标检测框架。其主要开发人员是PointRCNN,Part-A^2 Net,PV-RCNN论文作者。OpenPCDet基于PyTorch实现,主要特点如下。

  • 数据-模型分类的顶层代码框架设计思想:PCDet定义了统一的规范化的3D坐标,并贯穿着整个数据模型中,研究人员无需关心不同数据集的坐标差异,接口差异,可以直接在PCDet中使用统一的数据集接口进行开发,省时高效。

  • 统一的3D目标检测定义:不同的3D目标检测数据集在坐标系基准和3D框的定义上都有所不同,PCDet将不同点云数据集坐标系和3D框进行转化,定义为统一的坐标系标准和3D框。便于研究人员开发。

  • 灵活全面的模块化模型拓扑设计:PCDet定义了一个config文件,开发人员只需要在config文件中定义自己所需要的模块,PCDet就会根据定义的模块组合为合适的目标检测框架,可以快速训练和测试。

整体框架

下面两张图可以宏观了解下OpenPCDet整体框架:

72245e7e3e6fcff7b13483b879029f05.png
PCDet模块化的3D目标检测框架,支持不同类型的3D目标检测算法。
5958f746db8e92100a547ec223c99d72.png
PCDet模块化设计可以支持多种3D目标检测框架。

Model Zoo(支持模型)

30d7b12a9be8003fd6bfe27e901dd8b9.png
支持KITTI的Model ZOO,更多其他数据集支持模型,请访问Github README:https://github.com/open-mmlab/OpenPCDet

【入门推荐】pcdet系列笔记:https://blog.csdn.net/w1995s/category_10872025.html

2 mmdetection3d

代码链接:https://github.com/open-mmlab/mmdetection3d

个人代码笔记:https://github.com/HuangCongQing/mmdetection3d-note

文档链接:https://mmdetection3d.readthedocs.io/

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一键安装,简单易用。

OpenPCDet 和 mmdetection3d 区别

下面选取OpenMMLab官方介绍的OpenPCDet 和 mmdetection3d 区别

OpenPCDet 和 mmdetection3d 是两个不同的团队开发和维护的。

从功能角度上讲,mmdet3d 支持的场景和任务更多(包含室内室外场景的物体检测和点云分割),各种模态设定更全面(多模态,以及点云或图像的单模态),总体支持的模型数量更多,覆盖面更广,可以适应不同用户多样的使用和研发需求。OpenPCDet 主要聚焦在基于点云的 3D 目标检测这一种设定上,代码结构相对简单轻量一些。从更新维护的频率上看,MMDet3D 的更新和维护更加频繁,保持了月度的版本更新。

ce52028116a728b493fbd4bd036fa8b5.png
OpenPCDet 和 mmdetection3d 区别

Model Zoo(支持模型)

eb3df985a18de650cd04cd89852e938d.png
Benchmark and model zoo

3 Det3D

代码链接:https://github.com/poodarchu/Det3D

Det3D,这个框架算是我知道最早出来的 3D 目标检测框架了(2020 年初)。很早之前看过 ,但后面开发的时候没怎么用过。这个框架,在知乎上作者【id: 我不寻衅滋事】(才发现也是港中文的同学)也写了一个入门文档,我贴在这里了https://zhuanlan.zhihu.com/p/101346137。

Det3D被认为首个通用的3D目标检测框架,Det3D基于PyTorch实现,代码借鉴了second.pytorch、maskrcnn、benchmark、mmDetection以及mmcv 等开源框架的的设计思路。

目前,Det3D支持的数据集包括KITTI ,nuScenes ,Lyft 三种主流目标检测数据集,支持的模型包括VoxelNet,SECOND,CBGS ,Point Pillars,PIXOR,PointNet++,Point RCNN等目标检测模型。Det3D主要特点包括,支持多GPU支持训练统一的数据集API,训练流程,数据增强pipeline,完备的可视化功能和提供地平面检测等辅助模块。

Model Zoo(支持模型)

7b869420f5a033ee23aa232b77c1e069.png
Benchmark and model zoo

4 Paddle3D

代码链接:https://github.com/PaddlePaddle/Paddle3D

Paddle3D是最近(2022年8月)才推出来的3D目标检测框架,目前只有基础的数据集(KITTI,NuScenes和SemanticKITTI)和模型(pointpillars和centerpoint),相信后面更新迭代会比较快。具体后面会发展如何,不好说,先观望一阵吧。

不过特别需要说的一点是其是基于深度学习框架PaddlePaddle开发的,特别适合熟悉PaddlePaddle的同学。

这里介绍就主要选取一段官方的介绍:

飞桨携手Apollo开放平台基于大量业务实践经验,针对自动驾驶感知模块提供了一系列能力。其中3D视觉能力是本次发布的重点,飞桨3D视觉开发套件Paddle3D不仅覆盖了单目、点云等多种模态以及检测、分割等多种任务类型,同时支持模型一键预测部署,并与Apollo开放平台实现训练部署无缝衔接,使开发者使用更便捷!

整体框架

68dd41e42a5ba394d0fed759a31f68fa.png
Paddle3D全景图
d255a17d6acb5ef3d4c225d11f53b212.png
自动驾驶环境感知能力全景

Model Zoo(支持模型)

b20bc6b2b0b001f151e8de7684bc0434.png
Model Zoo

最后,大家有问题,欢迎在评论区评论,我看到都会及时回复的。我特别佩服有能力并且善良乐于帮助的人,我也希望成为这样的人ヾ(◍°∇°◍)ノ゙。希望能带大家少走一些弯路,也共同进步~

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、多传感器融合、SLAM、光流估计、轨迹预测、高精地图、规划控制、AI模型部署落地等方向;

加入我们:自动驾驶之心技术交流群汇总!

自动驾驶之心【知识星球】

想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!

7002f2a09de5e46612879aead34e6695.jpeg

  • 6
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值