VoxelNet->SECOND->PointPillars
相比于图像,激光点云数据是 3D 的,且有稀疏性,所以对点云的前期编码预处理尤其重要,目前大多数算法都是在鸟瞰图下进行点云物体检测,由此对点云的编码预处理主要有两大类方法:
以一定的分辨率将点云体素化,每个垂直列中的体素集合被编码成一个固定长度,手工制作的特征,最终形成一个三维的伪图像,以此为代表的方法有 MV3D,AVOD,PIXOR,Complex YOLO;
PointNet 无序点云处理方式,以此为代表的方法 Frustum PointNet[1], VoxelNet[2],SECOND[3],后两者是在鸟瞰图下进行编码的,需要 3D 卷积运算;
本文提出的 PointPillar[4] 是延续 VoxelNet,SECOND 的工作,VoxelNet 将 PointNet(PointNet-系列论文详读) 思想引入体素化后的体素特征编码中,然后采用 3D 卷积做特征提取,再用传统的 2D 卷积进行目标检测;SECOND 则考虑到点云特征的稀疏性,用 2D 稀疏卷积代替传统卷积,速度得到了很大的提示。而 PointPillar 则在体素的垂直列上不做分割,从而移除了 3D 卷积的操作,其优点有:
无手工编码的过程,利用了点云的所有信息,且无需要调节的参数;
运算均为 2D 卷积,高效;
可迁移至其它点云数据;
这三篇工作框架结构基本一致,由三部分组成:
特征编码网络(Encoder,作特征编码),在鸟瞰图下,将点云编码为稀疏的伪图像;
卷积中间网络(Middle,作特征提取),将伪图像用 backbone 网络进行特征提取;
区域生成网络(RPN),也可以是 SSD FPN 等检测头的改进,用于分类和回归 3D 框,与图像检测不一样的地方是,点云鸟瞰图下的最后一层特征层不能很小;
如图 1. 所示,本文 Pointpillar 主要的工作集中在特征编码网络,所以以下主要介绍其特征编码网络方式,以及实现细节。
特征编码
实现细节
特征编码
只取有点的柱子,所以 P<H×W
计算量较大,需要并行加速,我复现的时候是将柱子信息离线存下来的
pointpillar 方式可能只比高度体素采样方式效果高一点
训练
针对不同的类别设定唯一尺寸的 anchor,角度上旋转 90 度,所以每个点上每个类别是有两个 anchor
正负样本严重不均衡,所以需要 OHEM 或者 focalloss 技术