点云编码成合适的格式。
目前的两种编码器:固定的速度快精度低,学习数据的精度高速度低。
新颖编码器利用PointNet学习pillar格式的点云。
编码特征可以用2D网络来做检测,但是我们提出了更好的网络
大量实验表明很快很精准,优于其他的。
62Hz,最快105Hz,点云较好的编码器,适合工程化。
code:https://github.com/nutonomy/second.pytorch
传统激光雷达检测通过背景去除、时空聚类和分类。
深度学习方法,3D点云并不适合标准图像的卷积管道。
形式有3D卷积、投影图像、俯视图(鸟瞰图)等。
鸟瞰图稀疏,卷积无效。→划分栅格10*10cm,栅格内点手工特征编码。无法推广到其他新工程。PointNet的提出,VoxelNet的代表性,性能强,但速度慢4.4Hz,无法实时部署。Second提升了VoxelNet的速度,但是3D卷积仍然存在瓶颈。
PointPillars:3D的OD,端到端,使用2D卷积层。新编码器学习pillars的特征,预测3Dbbox。第一,学习特征而不是固定编码,可利用点云表达全部信息;第二,不是voxel方法,Pillars方法不需要调整垂直方向的分隔。第三,pillars高效,为2D卷积设计。第四,PointPillars可以适配不同配置的点云,可合并多个激光雷达,雷达。
图像的检测发展史
3D卷积很慢,投影到地平面或者图像平面,voxel化特征编码成伪图像,MV3D,AVOD融合二阶段检测,PIXOR和Complex YOLO单级检测。
PointNet提出。VoxelNet利用PointNets部署OD,3D卷积(耗时)→2D backbone+detection head;F-PointNet投影图像框的锥形3D区域,分割和分类点云,多阶段不适合端到端。SECOND改进VoxelNet,速度20Hz,3D卷积层计算成本大。
新点云编码和PointPillars网络,端到端,62Hz,KITTI验证。
输入点云,输出车、行人、自行车的3D bbox。
三个主要模块:
①特征编码网络–转换点云为稀疏伪图像
②2D卷积backbone处理为高层表示
③detection head检测和回归3D框
划分x-y等距网格,创建一组pillars P。不需要对Z轴进行限定和划分(区别于Voxel)
(Xc,Yc,Zc)表示pillar内所有点的平均值,(Xp,Yp)表示利pillar中心的偏移量。
点L(X,Y,Z,r,Xc,Yc,Zc,Xp,Yp)D=9
通常是空pillar,非空有少数的点云。0.16平方米bin,Velodyne64线,有6k-9k非空pillars。
稀疏性用来限制非空pillar数量P和每个pillar内的点N。稠密张量(D,P,N),P或者N的数据太多就随机抽样,太少使用0填充。P=12000,N=100。
简化PointNet,线性层→Batch-Norm→ReLu,生成(C,P,N)张量。
创建伪图像(C,H,W)
SSD,目标高度和z 单独回归
权重随机使用一个均匀分布。C=64
car的S=2,pedestrian/cyclist的S=1。
损失函数和SECOND一样
旋转角度无法区分运动方向,用softmax分类loss学习航向。
focal loss分类。
优化Loss函数:Adam优化器(初始学习率2*10-4,15个epoch衰减0.8倍),训练160epoch。
验证集2,测试集4
KITTI,3712训练,3769验证,784mini验证,6733测试
真值查找表,关联真值3D box内的点云。随机真值点云插入到当前点云中,旋转和平移变换。
两组全局扩展,沿X轴随机镜像翻转、旋转、缩放。N(0,0.2)全局平移建立噪声。
I7 CPU,1080ti GPU
点云加载和裁剪 1.4ms
点转成pillar 2.7ms
张量上传GPU 2.9ms
编码 1.3ms
伪图像 0.1ms
网络 7.7ms
NMS on CPU 0.1
= 16.2ms(62Hz)
一个PointNet,VoxelNet用了2个连续的。第一个block是64,很小。输出128维,小。不影响性能。
TensorRT 处理网络,优化GPU性能的,提升了Pytorch45.5%
小Pillar更好的定位,更多的特征。大Pillar更快。pillar大小0.12,0.16,0.2,0.24,0.28。pillar最大数量16000,12000,12000,8000,8000.下图。最快0.28时有105Hz,AP下降主要是因为行人和自行车类,点云较小。
直接翻译了==
表4有几个有趣的方面。
首先,尽管在最初的论文中提到他们的编码器只适用于汽车,我们发现MV3D[2]和PIXOR[30]编码器可以很好地学习行人和骑自行车的人。
其次,我们的实现大大超过了各自发布的结果。
虽然这不是一个完全一致的比较,因为我们只使用了各自的编码器,而不是完整的网络架构,性能差异是值得注意的。
我们看到了几个潜在的原因。对于VoxelNet和SECOND,我们怀疑性能的提高来自于7.2节中讨论的改进的数据增强超参数。在固定的编码器中,大约一半的性能提高可以解释为引入了ground truth数据库采样[28],我们发现它将mAP提高了大约3%。其余的差异可能是由于多个超参数的组合,包括网络设计(层的数量,层的类型,是否使用特征金字塔);锚箱设计(或缺少锚箱[30]);3D和角度的定位损失;分类损失;优化器选择(SGD vs Adam,批大小);和更多。
然而,需要更仔细的研究来分离出每个原因和结果。