
源码:https://github.com/nutonomy/second.pytorch
PointPillars是对VoxelNet的改进,将VoxelNet中体素z轴的离散单位变成了整个z轴——柱,也就是说原来VoxelNet中体素是一个个格子,长宽高各有若干个,提取每个体素特征后得到一个3D特征tensor,而PointPillar的离散后单位是一个个立在x,y平面的柱,高为整个z轴,提取每个柱的特征后得到的是一个2Dtensor。于是,和VoxelNet相比,PointPillars就只需要用2DCNN对编码的tensor卷积,而不是计算量极大的3DCNN,从而极大的节约了时间。此外,作者在编码的适合增强每个点特征,除了有原来坐标信息外,还增加了 每个点相对柱中所有点中心点的位置(与其他点相关),以及相对柱的位置(与其它点无关)。使他既有局部特征又具有鲁棒性,不会因为采样时选取体素内不同点而得到不同结果。
VoxelNet中应用PointNet提取体素特征,然后将特征传入一系列3D卷积层,接着用2D骨干网处理,最后将骨干网输出的特征图传入检测头做最终的任务。这也实现了end-to-end学习,但是严重依赖3D卷积,速度很慢,推断时需要225ms,即4.4HZ。而其改进版本SECOND应用了稀疏卷积后速度仍然只有20Hz。PointPillars在速度和精度上都超过了他们,达到了62Hz,更快的版本能达到105Hz。
该工作的重要贡献就是编码部分,提出柱的编码方式,使得所有柱上的操作都能被变为密集的2D卷积从而加速计算。具体而言,这种方式的好处如下:
- 不用考虑每个bin的垂直单位;
- 基于柱提取得到的特征最后使用2D卷积计算,从而能够在GPU上高效计算;
- 不许多余调参来适应不同设备的点云。
PointPillars Network

PointPillars以点云为输入,能够预测有方向的3D边框。由3各部分组成(如上图所示):
- 一个特征编码网络,能够将点云转换为稀疏伪图像。
- 一个2D卷积骨干网将上一步编码得到的伪图像处理成一个高维度表示。
- 一个检测头,检测和回归3D边框。
下面分别介绍这三部分。
Pointcloud to Pseudo-Image
用lll指代点云中每个点,它有x,y,z三个维度。首先将点云在x,y平面上离散化为等距的格子,得到一个柱子的集合P。一个柱实际上就是一个z轴高度无限的体素,所以不需要参数限制z维。点云中每个点增强得到r,xc,yc,zc,xp,ypr, x_c, y_c, z_c, x_p, y_pr,xc,<

本文解析了PointPillars如何改进VoxelNet,通过柱状编码和2D卷积降低计算复杂度,实现62Hz的高精度3D目标检测。重点介绍了编码过程、网络结构和实验结果,展示了在速度和准确性方面的优势。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



