MMDetection3D 支持任务:点云 3D 检测、单目 3D 检测、多模态 3D 检测和点云 3D 语义分割等。
3D 目标检测按照输入数据模态划分可以分为:
① 点云 3D 检测
② 纯视觉 3D 检测
③ 多模态 3D 检测(点云+图片)。
环境安装参见:MMDetection3D 1.3.0 文档
点云 3D 检测:雷达点云数据实现3D目标检测训练。
(1)…。
(2)激光雷达坐标系(LiDAR):室外场景点云检测采用激光雷达设备的坐标系。
(1)MMDetection3D在训练前会借助 pkl 文件的信息进一步提取 reduced_point_cloud 和gt_database。 reduced_point_cloud是仅包含前方视野的点云文件; gt_database则是将包含在训练数据集的每个 3D 边界框中的点云数据分别提取出来得到的各个物体的点云文件,常用来在数据增强时使用。
(2)MMDetection3D 对于点云 3D 检测的相关模块:
① GlobalRotScaleTrans(点云的旋转缩放);
② PointsRangeFilter / ObjectRangeFilter(限定了点云和物体的范围);
③ PointShuffle(打乱点云数据)。
在 3D 目标检测中,框 Box 通常表示为:(x, y, z, x_size, y_size, z_size, yaw)。其中 (x, y, z) 表示框的位置 ,(x_size, y_size, z_size) 表示框的尺寸,yaw 表示框的朝向角。
假设物体的长宽高分别为 l, w, h。 该物体底部中心点坐标为 (l/2, w/2, 0) ,朝向和 x 轴的夹角为 0,即 yaw 角为 0,此时沿着x-y-z三个轴方向的长度即 x_size, y_size, z_size 分别为 l、w、h,所以该坐标系下 Box 的值为 (l/2, w/2, 0, l, w, h, 0)。注意其存储的 Box 位置是底部中心的位置,而非几何中心位置。
算法模型支持 :
one-stage: PointPillars、SSN、3DSSD、
two-stage:CenterPoint、PointRCNN
3D 检测器通常也包含:Backbone 提取特征、Neck 进行特征融合和增强、Head 输出结果。
目标检测中的数据的尺寸可能无法保持一致(如点云中点的数量、真实标注框的尺寸等),在 MMCV 中引入一个 DataContainer
类型,来帮助收集和分发不同尺寸的数据。
pointPillar:点云到伪图像的转换。(截取和补齐使得点云聚集在尺寸为 (DxNxP) 的 Tensor 上。)
CenterPoint:不同点云数据格式的转换
在检测任务中非常常见的一个现象就是模型最后输出的 bboxes 数目比较多,而且存在一些重叠的 bboxes 现象。
对于点云 3D 检测任务,模型直接输出 3D 空间中的检测得到的 bboxes 的位置、长宽高和朝向等信息。通常在 3D 空间中进行 3D NMS,将检测结果投影到 BEV 视角下进行后处理。相关的代码在 mmdet3d/core/post_processing/box3d_nms.py 下
pointPillar:anchor-based
CenterPoint:anchor-free
configs中包含的模型有:3dssd、benchmark、centerpoint、cylinder3d、fcaf3d、point_rcnn、pointpillars、regnet、second、votenet等
MMDetection3D :openmmlab环境搭建及模拟kitti数据集跑pointpillars模型