目录
前言
由于3D传感器(激光雷达等)的兴起,点云数据库逐渐完备,这也引起人们对点云数据处理技术的探究。尽管2D目标检测工作基于CNN的帮助下趋于成熟,但由于输入模式不同,2D目标检测技术并不能直接用于3D目标检测。同时,目前已有的3D目标检测技术(VoxelNet等)存在算力及内存成本高,仅适用于单一模态(点云)等缺点。因此,人们在VoxelNet的基础上提出了MVX-Net,利用PointFusion或VoxelFusion对多模态信息进行早期融合。
一、MMDetection3D环境配置及数据集
1.相关环境
Linux:Ubuntu(双系统)
深度学习(nvidia+cuda+cudnn+pytorch)
编译(anaconda+pycharm)
MMdetection3D:
2.Kitti数据集
Kitti数据集包括了点云数据与RGB数据,适用于多模态3D数据检测。
二、MVX-Net
本次多模态3D目标检测实验中采用VoxelFusion对数据进行融合,模型框架如下:
VoxelNet:(1)特征学习:[等间距体素划分点云分组
体素特征编码(VFE)]
(2)卷积中间层:扩展体素特征
(3)RPN:提取候选框
(一)体素特征
1.体素索引位置
对实际图像划分体素(单位网格):在3个维度(D×H×W)上进行划分,规定维度范围及体素在该维度上的单位距离即可确定体素个数。在Kitti数据集默认整个体素范围为[-3,1]×[-40,40]×[0,70.4](ZYX)。
对体素进行初始化(Voxelization)并确定体素的索引,以将点云置于对应的体素中。voxelization返回的coors中三维向量即为体素索引。
2.体素特征提取
点云原始特征 pi = [xi, yi, zi, ri]T,其中x,y,z为点云的位置坐标,r为点云的反射率。
得到所有非空体素的特征及索引,根据索引确定点云所在的体素,并规定体素内所有点云的特征相同(等于当前体素特征)。点云特征减去点云原始特征得到点云特征偏移,点云特征减去点云原始位置坐标得到点云位置偏移。因此,每个点云对应一个十维向量。
特征偏移
位置偏移
3.全局体素提取
通过VFE将十维的特征向量升维至64维。将体素中每一个点云自身特征与体素全局特征进行拼接(模型框架中彩色特征与灰色特征拼接),二者拼接后得到128维点云特征向量。
接下来,将点云数据与图像数据对齐,并根据对齐后点云位置坐标将多层级图像特征与该点云自身特征相融合。
(二)输出层预测结果
预测7个值(x,y,z,l,w,h, θ),其中x,y,z表示中心点的位置坐标,l,w,h表示体素的长宽高, θ表示中心点与z轴的偏转角度。并计算损失函数。