paper: https://www.mdpi.com/1424-8220/18/10/3337
code: https://github.com/traveller59/second.pytorch
spconv: https://github.com/traveller59/spconv
pillar的方法算是为了速度在精度上的妥协,目前很多bev的方法还是用voxel的backbone,以SECOND为代表的voxel方向的方法非常值得一看。
一、创新点
用稀疏卷积处理3D信息,提高了训练和推理的速度,并提出了稀疏卷积的优化算法;
提出了一种新颖的angle loss的计算方法
提出了一种适用于点云数据的数据增强方法,提高了训练的收敛速度和模型的精度;
二、精度和速度
又快又好,精度基本上和image+lidar的方法一致
三、实现
3.1 网络结构
3.1.1 点云分组(体素化)
空间画3D格子,把每个点assign到格子格子里面;
3.1.2 单个体素特征提取(Voxelwise Feature Extractor, VFE)
详细说明参考voxel net,这部分的完整结构参考下面左图:每个voxel内,通过多个VFE layer后,用fcn过一遍然后做channel方向的max-pool形成这个体素的feature
单个VFE layer的结构如下面右图。
3.1.3 用稀疏卷积进行特征提取
稀疏卷积参考这个:https://zhuanlan.zhihu.com/p/382365889
middle layer 结构如下图
3.1.4 Region Proposal Network(RPN)
类似于SSD:
3.1.5 anchor的训练和训练target的产生
还是常规的assign的方式,根据iou确定是前景框/背景框/忽略框,然后产生一个相对的回归target:
3.2 训练和推理
3.2.1 loss
分类误差L_cls是focal loss
几何形状相关的误差是smoothL1, 角误差加了sin;
然后用方向误差L_dir是softmax, 用来区分是0和180°的情况;
3.2.2数据增强
复制黏贴,增加gt框和点云的数量,用碰撞测试去除物理上不可能的黏贴
单个物体上的噪声:逐个对gt框及其点云进行朝向和位置的抖动,使得网络适应
全局噪声:全局旋转并对尺度做缩放
四、重要参考文献
VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection
Spatially-sparse convolutional neural networks
Submanifold Sparse Convolutional Networks
3D Semantic Segmentation with Submanifold Sparse Convolutional Networks