说明
本篇主要对基于LIDAR的3D目标检测算法PointPillars算法论文进行解析。
论文地址:https://arxiv.org/pdf/1812.05784.pdf
代码地址:https://github.com/open-mmlab/OpenPCDet
参考链接1:https://zhuanlan.zhihu.com/p/357626425
参考链接2:https://blog.csdn.net/Yong_Qi2015/article/details/119834000
参考链接3:https://blog.csdn.net/weixin_45080292/article/details/130217320
1.算法简介
核心思想: PointPillars算法从俯视图的角度将点云划分为一个个的柱状体(Pillar),等同于丢掉了高度信息,只保留水平方向上的xy坐标,每个柱状体(Pillar)等同于2D图像中的一个像素坐标。在得到伪图像之后使用常见2D网络进行特征的提取和学习,最后使用SSD检测头进行Bbox的回归。
PointPillar算法的网络框架如下图所示,算法的输入是原始点云数据,输出是3D目标检测框。整个算法包括以下几个模块:
- Voxel Feature Encoding (VFE)模块
- MAP_TO_BEV模块
- BACKBONE_2D模块
- 检测头(DENSE_HEAD)模块
- POST_PROCESSING模块
2.网络框架和算法流程
2.1 VFE模块
参考链接:https://blog.csdn.net/Jack_Man_N/article/details/134613118
PillarVFE模块是OpenPCDet(Open Point Cloud Detection)中的一个特征编码模块,用于将点云数据转换为结构化的特征表示。它是PointPillars算法中的关键组件。
PointPillars是一种基于单张俯视图的点云目标检测算法,它将点云数据投影到二维的俯视图平面上,并使用PillarVFE模块对每个投影区域(称为pillar)进行特征编码。PillarVFE模块的主要功能包括:
- 构建pillar:将点云数据投影到二维的俯视图平面,并将投影区域划分为多个小的正方形区域,称为pillar。每个pillar代表一个局部区域。
- 特征编码:对每个pillar中的点云数据进行特征编码。PillarVFE模块使用一个卷积神经网络(通常是多层的3D卷积操作)对每个pillar提取pillar内部的点云的特征表示。这些特征表示捕捉了点云数据的局部结构信息。
- 特征聚合:PillarVFE模块还执行特征聚合操作,将每个pillar的特征表示合并为一个全局的特征表示。这样可以利用全局特征进行目标检测和定位。
通过PillarVFE模块的特征编码和特征聚合操作,PointPillars算法能够有效地处理大规模点云数据并提取有用的特征表示,从而实现高效的点云目标检测。
2.1.1 构建pillar
通过激光雷达获取的一般是一个N*4
的点云向量,N指云点的数量,4指点云有xyzi
4个维度的信息。
第一步需要对点云进行张量化处理,将原始点云数据从俯视图的角度,根据点云的XY坐标信息将其划分为一个个垂直的网格。每个网格可以理解为一个长为n宽为n,高为h的体素。
图像参考链接:https://blog.csdn.net/ChuiGeDaQiQiu/article/details/118675912
每个点云用一个9维的向量表示: ( x , y , z , r , x c , y c , z c , x p , y p ) (x,y,z,r,x_c,y_c,z_c,x_p,y_p)