Det3D

背景介绍

应用于自动驾驶、室内导航等领域的 3D 检测是近一段时间比较热门的一个研究方向。其数据格式包括 image、point cloud、RGBD、mesh 等。

作为对比,2D 检测目前是一个非常成熟的领域,各种优秀的框架(Detectron2 / mmDetection, etc)不计其数,研究人员基于某一个框架,可以快速验证想法,而不需要去关心如何适配某种数据集、如何做增强、如何给数据加速等等,大大节省了做 research 的工程成本。

很可惜,迄今为止(2020 年初),3D 目标检测目前还处于一个群魔乱舞的年代。具体表现为:

3D 数据集很难有一个通用的格式或者 API 来读取,比如 KITTI 和近期新出的 nuScenes,Waymo,Lyft 等数据集格式差异很大;每种数据集的数据采集方式、坐标系定义、包含的数据类型,甚至评价指标都有很大区别。 与 2D 图片不同的是,3D 数据的预处理也是一个很大的瓶颈。很多时候,光是如何做数据增强,如何加快数据预处理的速度,让自己的模型在尽可能短的时间内出结果等等工程问题就导致很多人在想要研究自己感兴趣的问题之前,就已经卡壳很久了。 现有各种方法的训练速度都非常慢,一方面是大部分模型的 code 都是单卡版本,另一方面是 3D 检测依赖一些比较 heavy 的模块。 类似的问题还有很多,比如没有 pretrain 的模型、评价指标混乱,算法复现困难等等,这些都会制约该领域的发展。

为了使 3D 检测领域能够有一个像 mmDetection 等相对完备的检测框架,减少研究人员在数据和其他工程问题上耗费的经历,也为了能够让大家的方法能像 2D 检测领域一样够快速的复现、分享,我们开源了 Det3D,据我所知这是业界首个通用的 3D 目标检测框架。

Det3D (based on PyTorch)

https://github.com/poodarchu/Det3D ​ github.com 首先介绍一下 Det3D 支持的数据集:

KITTI http://www.cvlibs.net/datasets/kitti/ nuScenes https://www.nuscenes.org/ Lyft https://level5.lyft.com/dataset/ … 以及目前支持的模型:

VoxelNet SECOND CBGS Class-balanced Grouping and Sampling for Point Cloud 3D Object Detection Point Pillars PIXOR PointNet++ Point RCNN (即将 release) … 以及 Det3D 的一些新特性:

多 GPU 训练 Distributed Data Parallel 统一的数据集 API 统一的 config 统一的训练流程 统一的数据增强 pipeline 支持灵活的扩展 支持 sync bn state of the art 的性能(CBGS) 完备的可视化功能(数据、label、feature map、多视图、3D) 提供地平面检测等辅助模块 基于 Det3D,我们取得了 nuScenes 3D Detection Challenge 的第一名,以及 LYFT 3D Detection Challenge 的第三名。

更多细节以及详细的用法,请查看 Det3D 的 readme。

未来计划

目前 Det3D 仍旧存在很多不完善的地方,比如 pre-train 模块目前并没有提供。因此,写这篇文章的目的,一是想让更多人知道 Det3D;二是希望 Det3D 可以给各位做 3D 检测的同学一个工具,提高其工作效率。Release Code 远远不是结束,我们希望越来越多的人能够持续反馈和 contribute,共同将 Det3D 打造成一个更加丰富、高效的 codebase,进而继续回馈社区。

致谢

在开发 Det3D 的过程中,我们参考了 maskrcnn_benchmark、mmDetection、mmcv 以及 second.pytorch 的设计思路和实现,在此对其作者表示感谢。