[阅读]PointPillars: Fast Encoders for Object Detection from Point Clouds

摘要

点云编码成合适的格式。
目前的两种编码器:固定的速度快精度低,学习数据的精度高速度低。
新颖编码器利用PointNet学习pillar格式的点云。
编码特征可以用2D网络来做检测,但是我们提出了更好的网络
大量实验表明很快很精准,优于其他的。
62Hz,最快105Hz,点云较好的编码器,适合工程化。
code:https://github.com/nutonomy/second.pytorch

1介绍

传统激光雷达检测通过背景去除、时空聚类和分类。
深度学习方法,3D点云并不适合标准图像的卷积管道。
形式有3D卷积、投影图像、俯视图(鸟瞰图)等。

鸟瞰图稀疏,卷积无效。→划分栅格10*10cm,栅格内点手工特征编码。无法推广到其他新工程。PointNet的提出,VoxelNet的代表性,性能强,但速度慢4.4Hz,无法实时部署。Second提升了VoxelNet的速度,但是3D卷积仍然存在瓶颈。

PointPillars:3D的OD,端到端,使用2D卷积层。新编码器学习pillars的特征,预测3Dbbox。第一,学习特征而不是固定编码,可利用点云表达全部信息;第二,不是voxel方法,Pillars方法不需要调整垂直方向的分隔。第三,pillars高效,为2D卷积设计。第四,PointPillars可以适配不同配置的点云,可合并多个激光雷达,雷达。

1.1文献综述

1.1.1 CNNs OD

图像的检测发展史

1.1.2 Lidar点云 OD

3D卷积很慢,投影到地平面或者图像平面,voxel化特征编码成伪图像,MV3D,AVOD融合二阶段检测,PIXOR和Complex YOLO单级检测。

PointNet提出。VoxelNet利用PointNets部署OD,3D卷积(耗时)→2D backbone+detection head;F-PointNet投影图像框的锥形3D区域,分割和分类点云,多阶段不适合端到端。SECOND改进VoxelNet,速度20Hz,3D卷积层计算成本大。

1.2贡献

新点云编码和PointPillars网络,端到端,62Hz,KITTI验证。

2 PointPillars网络

输入点云,输出车、行人、自行车的3D bbox。

三个主要模块
①特征编码网络–转换点云为稀疏伪图像
②2D卷积backbone处理为高层表示
③detection head检测和回归3D框

2.1 点云-伪图像

划分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)

2.2 主干网络

[阅读]PointPillars: Fast Encoders for Object Detection from Point Clouds_第1张图片
backbone两个子网络:卷积、反卷积并连接,如图。

2.3 Detection Head

SSD,目标高度和z 单独回归

3 实现细节

3.1 网络

权重随机使用一个均匀分布。C=64
car的S=2,pedestrian/cyclist的S=1。

3.2 Loss

损失函数和SECOND一样
旋转角度无法区分运动方向,用softmax分类loss学习航向。
focal loss分类。

优化Loss函数:Adam优化器(初始学习率2*10-4,15个epoch衰减0.8倍),训练160epoch。
验证集2,测试集4

4 实验

KITTI,3712训练,3769验证,784mini验证,6733测试

4.3 数据增强

真值查找表,关联真值3D box内的点云。随机真值点云插入到当前点云中,旋转和平移变换。
两组全局扩展,沿X轴随机镜像翻转、旋转、缩放。N(0,0.2)全局平移建立噪声。

6 实时性分析

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%

7 讨论

小Pillar更好的定位,更多的特征。大Pillar更快。pillar大小0.12,0.16,0.2,0.24,0.28。pillar最大数量16000,12000,12000,8000,8000.下图。最快0.28时有105Hz,AP下降主要是因为行人和自行车类,点云较小。
[阅读]PointPillars: Fast Encoders for Object Detection from Point Clouds_第2张图片
直接翻译了==
[阅读]PointPillars: Fast Encoders for Object Detection from Point Clouds_第3张图片

表4有几个有趣的方面。
首先,尽管在最初的论文中提到他们的编码器只适用于汽车,我们发现MV3D[2]和PIXOR[30]编码器可以很好地学习行人和骑自行车的人。
其次,我们的实现大大超过了各自发布的结果。
虽然这不是一个完全一致的比较,因为我们只使用了各自的编码器,而不是完整的网络架构,性能差异是值得注意的。
我们看到了几个潜在的原因。对于VoxelNet和SECOND,我们怀疑性能的提高来自于7.2节中讨论的改进的数据增强超参数。在固定的编码器中,大约一半的性能提高可以解释为引入了ground truth数据库采样[28],我们发现它将mAP提高了大约3%。其余的差异可能是由于多个超参数的组合,包括网络设计(层的数量,层的类型,是否使用特征金字塔);锚箱设计(或缺少锚箱[30]);3D和角度的定位损失;分类损失;优化器选择(SGD vs Adam,批大小);和更多。
然而,需要更仔细的研究来分离出每个原因和结果。

你可能感兴趣的:(人工智能,卷积)