3D Point Cloud Processing and Learning for Autonomous Driving(自动驾驶中的3D点云处理与学习)论文笔记

原文链接:https://arxiv.org/pdf/2003.00601.pdf

I. 概述

3D Point Cloud Processing and Learning for Autonomous Driving(自动驾驶中的3D点云处理与学习)论文笔记_第1张图片

        上图为自动驾驶系统框图,主要涉及到两种点云:激光雷达实时扫描点云离线点云地图。本文重点关注与点云密切相关的建图、定位和感知部分,包含点云处理点云学习两个大方向。

II. 点云的特点、表达和方法

A. 特点

        激光雷达每个点包含距离强度GPS时间戳信息;点的密度随距离变化;点近似于分布在2D网格上,但由于各激光器之间的不同步,并不是完美分布的。

B. 矩阵表达

        Raw points、体素化、range view、BEV,各有优缺点,用处也不同。

3D Point Cloud Processing and Learning for Autonomous Driving(自动驾驶中的3D点云处理与学习)论文笔记_第2张图片

        例如,raw points常用于定位环节,精度高;后三者可用于感知环节,可以使用现成的方法如CNN网络,但都舍弃了点云的部分信息且有量化误差,需要平衡存储空间与分辨率;range-view中不同距离物体大小不同,也不利于学习。

C. 方法

        重点关注深度学习方法,包括:

        (1)卷积神经网络处理:离散化丢失信息,但CNN考察空间关系且技术成熟;

        (2)PointNet网络处理:permutation invariant;

        (3)基于图的处理:在原始3D空间内考虑点的关系,建立图结构;用邻接矩阵表示图。可以用graph filter或图卷积网络处理;有以上两种方法的优点,但不够成熟,且建图需要额外算力。

III. 建图

A. 综述

        离线地图分为两层:点云地图和交通规则语义特征图。建图分为两个步骤:3D点云拼接和语义特征提取。

3D Point Cloud Processing and Learning for Autonomous Driving(自动驾驶中的3D点云处理与学习)论文笔记_第3张图片

B. 3D点云拼接

        需要及时创建和更新高精度地图,所以需要高效而鲁棒性强的拼接。

        激光雷达的姿态是地图全局坐标系和激光雷达坐标系之间的变换,可用SLAM来估计。SLAM分为基于滤波器的SLAM和基于图的SLAM,后者通过建立姿态图来建模激光雷达姿态关系,往往效果更好。

        SLAM目标函数如下:

\mathrm{argmin}_p\left [ \sum_{p_i}\sum_{p_j}h_{S_i,S_j}(p_i,p_j)+g(p_i)\right ]

        p_i是第i个激光雷达的姿态,函数h是负对数似然函数,函数g是衡量预测姿态与GPS测量之间的负对数似然函数。

        实际中往往采用graph-based SLAM with hierarchical refinements,以为优化提供好的初始值,从而提高效率和鲁棒性。

C. 语义特征提取

        通常有两个步骤:机器学习自动提取和人工监测。机器学习步骤依靠语义分割CNN,输入点云地图的BEV以及图像,输出为分割后的BEV或图像。之后被映射回点云地图中,并拟合为曲线或折线,得到语义特征图。

D. 挑战

        全局精度难以保证;目前复杂语义特征的提取在很大程度上依赖人工。

IV. 定位

A. 综述

        定位即是在地图中找到自车位置,标准方法是结合多传感器信息融合的基于地图的定位。

3D Point Cloud Processing and Learning for Autonomous Driving(自动驾驶中的3D点云处理与学习)论文笔记_第4张图片

B. 基于地图的定位

        通过匹配激光雷达实时扫描与点云地图,确定激光雷达的姿态,同时结合其余传感器信息来使结果鲁棒。

        分为两步:激光雷达与点云地图配准估计姿态,以及多传感器融合估计最终姿态。

        (1)激光雷达到点云地图的配准:目标函数

\mathrm{argmin}_p\left [ \sum_{x_i\in S}g\left (f_p(x_i),S^{\mathrm{(map)}}_{i^*} \right )\right ]

        p是激光雷达姿态,函数f处理坐标变换,x_i是激光雷达扫描中的第i个点,S^{\mathrm{(map)}}_{i^*}是地图点云中对应x_i的点,通常选择为最小欧式距离的点。函数g衡量激光雷达扫描与点云地图的错位程度。 

        两种方法:基于几何的匹配和激光反射强度的匹配。

        前者基于ICP(迭代最近点)算法,通常在复杂交通环境和恶劣天气下效果好,因为点云地图有丰富的几何信息;但在隧道、桥、高速路等缺乏几何信息的地方,算法会发散。

        后者可采用密集二维图像匹配方法(根据反射强度转化为BEV的2D灰度图,在图像上匹配,只能计算水平面姿态;其余姿态根据地图中的地形信息获得)或基于特征提取的ICP匹配方法(先根据反射强度提取出感兴趣物体的区域,再用ICP进行匹配从而计算姿态)。这种方法与上一种方法适用的地方互补。

        两种方法通常结合使用,但极端情况下配准可能失效,需要结合其余传感器信息。

        (2)多传感器融合:使用Kalman滤波器等迭代地预测和修正各状态。

C. 挑战

        极端情况下,如果配准失效持续了几分钟,将导致滤波结果漂移。

V. 感知

A. 综述

        输入为各传感器采集的信息,以及定位结果;输出为红绿灯状态以及周围物体的边界框和轨迹。

        多传感器融合分为早期融合和晚期融合。

        晚期融合先分别处理每个传感器。处理步骤包含(a)目标检测,用于给出物体边界框;以及(b)关联跟踪,根据连续帧边界框分配实例id。最后将多个传感器的结果整合输出。

3D Point Cloud Processing and Learning for Autonomous Driving(自动驾驶中的3D点云处理与学习)论文笔记_第5张图片

         早期融合使用早期融合检测器从所有传感器获取物体边界框信息,再根据连续帧边界框分配实例id。红绿灯状态估计器根据地图指示的位置,从图像提取相应的红绿灯区域,并用机器学习方法获得红绿灯状态。

3D Point Cloud Processing and Learning for Autonomous Driving(自动驾驶中的3D点云处理与学习)论文笔记_第6张图片

        晚期融合比早期融合更加成熟,容易设计和调试;但早期融合有更大的潜力,因为多种感知信息可以相互促进。

        为实现鲁棒的感知,需要车道检测、2D目标检测、3D目标检测、语义分割、目标跟踪等多种方法。重点关注3D目标检测。

B. 3D目标检测

        3D目标检测输出每个物体的类别和边界框。

        (1)基于激光雷达的3D目标检测:

        目标检测的方法随着3D点云的表达方式不同而不同。例如

  • PointRCNN使用PointNet++处理原始点云;
    • 3D FCN将点云体素化,并用3D卷积处理;
      • PIXOR使用BEV表达,并用2D卷积处理;
        • FVNet、VeloFCN和LaserNet使用range-view表达,并用2D卷积处理;
          • VoxelNet(以及后来的Part-A2和SECOND)将点云体素化,并在每个体素内使用PointNet提取特征,最后用3D卷积处理;
            • PointPillars使用BEV表达,其中每个像素对应3D空间的一个柱体,使用PointNet提取每个柱体内的特征,然后使用2D卷积提取全局特征。

        上述模型除了PointRCNN、FVNet以及Part-A2为两阶段目标检测外,均为一阶段目标检测。

        一阶段目标检测网络包括主干网络(金字塔结构、深层聚合)和检测头(single shot detector或小型CNN)。

        两阶段目标检测先提取可能包含物体的提案区域(提案生成阶段),再从提案区域中确定物体精确位置(边界框预测阶段)。

  • PointRCNN使用bin-based定位方法,即先找到与物体中心位置相关联的bin,再回归得到边界框;
    • FVNet使用截断距离来参数化提案区域;
      • 这两种方法都使用正则变换对齐提案区域中的点,然后用PointNet估计边界框。

        一般来说,一阶段目标检测简单快速,查全率更高,但二阶段目标检测查准率更高。

        (2)基于融合的3D目标检测:

        现有的早期融合方法有MV3D、AVOD、F-PointNet、PointFusion、ContinuousConvolution、MMF和LaserNet++。

        一阶段检测:

  • PointFusion先分别使用CNN和PointNet从图像和点云提取特征,然后用深度融合网络将两个特征拼接起来;
    • ContinuousConvolution提出连续融合层,可以将图像特征与不同分辨率的BEV特征融合,即找到BEV中每个像素对应的3D点,投影到图像上并从图像对应像素获取特征;
      • LaserNet++使用range-view表达,建立图像与range-view表达像素之间的对应关系,将对应位置的特征融合,输入到LaserNet中。

        两阶段检测:

  • MV3D输入为图像、激光雷达BEV表达和range-view表达,使用深度融合网络,实现不同视图下中间层特征的交互。融合的特征被用于估计物体的类别和边界框;
    • AVOD输入为图像和激光雷达BEV;
      • F-PointNet从图像中提取2D边界框并投影到3D空间中得到提案区域,然后用PointNet在每个区域中分割实例、估计边界框;
        • MMF类似ContinuousConvolution,并提出深度补全促进跨传感器特征表示。

        目前早期融合的研究都是关于如何融合特征的,没有关于传感器之间不同步的研究。

C. 挑战

        费用高(需要GPU)、准确率和速度难以平衡,等等。

附录——基本任务

        重建、识别和分割属于学习方法,去噪、上/下采样、配准属于处理方法。

(1)3D点云重建

        找到一个3D点云的紧凑表达,使得可以通过这个表达重建3D点云。可以节省点云地图的存储空间。

\begin{aligned} c&=\Psi(S) \in \mathbb{R}^C\\ \hat{S}&=\Phi(c) \end{aligned}

        其中S为原始3D点云(N个点,3个坐标维度),\hat{S}为重建点云(点数可能与原来不同),c为紧凑表达,其维度C\ll 3N\Psi\Phi分别为编码器和解码器。目标是优化使得尽可能接近S

        两种衡量重建效果的距离:

        a.推土机距离EMD:用最少的代价将一个集合移动到另一个集合(下式\phi是双射):

d_{\mathrm{EMD}}(S,\hat{S})=\min_{\phi:S\rightarrow \hat{S}} \sum_{x\in S}\left \| x-\phi(x) \right \|_2

        b.倒角距离CH:一个集合中每一个点与其在另一集合中的最近点距离之和:

d_{\mathrm{CH}}(S,\hat{S})=\frac{1}{N}\sum_{x\in S}\min_{\hat{x}\in \hat{S}} \left \| x-\hat{x} \right \|_2+\frac{1}{M}\sum_{\hat{x}\in \hat{S}}\min_{x\in S} \left \| \hat{x}-x \right \|_2

        通常来说,使用推土机距离重建比使用倒角距离效果好,但使用倒角距离更加高效。

        设置:通常使用ShapeNet数据集,使用泊松圆盘采样算法在物体表面采样,并将采样点云缩放到一个单位立方体内,其中心为立方体中心。

        方法

        编码器需要保留点云尽可能多信息的全局特征向量。如latentGAN网络直接使用PointNet提取的全局特征向量编码点云。

        解码器需要将特征向量里的信息尽可能转化到3D空间内,最简单的方法是使用全连接网络,但其需要大量参数来很好地实现小型3D点云的重建。FoldingNet和AtlasNet认为解码是将2D网格折叠为3D表面的过程:先从2D网格均匀采样M个点,再使用双层MLP来折叠:

\hat{x}_i=g_c(z_i)=\mathrm{MLP}([\mathrm{MLP}([z_i,c],c)]])\in \mathbb{R}^3

        其中z_iZ的第i行,ZM行2列)是2D采样点的矩阵表示,与原始点云无关;[a,b]表示拼接ab

        Point cloud neural transform(PCT)结合体素化和学习,使用神经网络紧凑地表达每个体素内的3D点,可以减小形状变化带来的影响。

(2)3D点云识别(分类)

        设置:通常使用ModelNet40数据集。从网格面均匀采样3D点,并放缩到单位球内。评估指标是分类准确率。

        方法:对每个点提取局部特征,聚合为全局特征,使用全局特征分类。包含监督学习方法(基于PointNet的方法和基于图的方法)和非监督学习方法(编码器-解码器训练和分类器训练两个阶段分别使用不同的数据集;效果略差但泛化性能更好,因为特征不是直接用标签训练的)。

(3)3D点云分割

        含部件分割和场景分割。

        设置:部件分割的数据集为ShapeNet部件数据集,评价指标为mIoU;场景分割的数据集为Stanford Large-Scale 3D Indoor Spaces Dataset (S3DIS),评价指标为mIoU和分类准确率。

        方法:对每个点提取局部特征,聚合为全局特征,与局部特征拼接后对每个点分类。

(4)3D点云去噪

        去除点云中的噪声,恢复原始点云。若h为去噪函数,S为无噪声点云,S^{(\epsilon)}为噪声点云,则目标为优化h使得\hat{S}S接近(接近程度用均方误差衡量),其中

\hat{S}=h(S^{(\epsilon)})

        方法:基于滤波器的方法和基于优化的方法。一般来说后者效果好于前者,但可能会平滑掉物体轮廓和边缘。

        (a)基于滤波器的方法使用每个点邻域内点坐标加权和替代这个点的坐标。典型例子是双边滤波(经典图像去噪算法,使用非线性平滑滤波器)。要在3D点云上使用双边滤波,需要建立网格面,并通过网格面的连接来定义邻域。

\hat{x}_i=\frac{\sum_{j\in N_i}w_{i,j}x_j}{\sum_{j\in N_i}w_{i,j}}

其中w_{i,j}是第i个点和第j个点之间的权重,可灵活设置。标准的设置可以基于高斯核

w_{i,j}=\exp\left ( -\left \| x_i-x_j \right \| _2^2 / \sigma^2\right )

        为了解决过度平滑的问题,可以使用非局部均值去噪,以保持边缘的方式自适应滤波。

        (b)基于优化的方法从图像的total-variation正则化去噪获得启发,引入正则函数J来促进平滑,并通过解决正则优化问题来获得全局最优解。通常形式为

\arg\min_{\hat{X}}\left \| \hat{X}-X_\epsilon \right \|_F^2+\lambda J(\hat{X})

J的具体形式不一,可以为基于偏微分方程的正则项和基于图拉普拉斯算子的正则化。

        (c)基于深度学习的去噪,如neural projection denoising (NPD)是两阶段的去噪算法(主干网络为PointNet),先估计每个点的参考平面,再将含噪声的点投影到参考平面上以实现去噪。属于加权多投影的深度学习方式。

(5)3D点云下采样

        从原始点云中选择子集,保留代表性的信息。

        设置:常用的评价指标是将下采样点云输入模型,解决下游问题并评估性能。

        方法:三种采样方法,即最远点采样,基于学习的采样,和非均匀随机抽样。

        (a)最远点采样(FPS)比非均匀随机抽样的覆盖范围更广,但和下游任务无关。

        (b)S-NET是一种基于学习的采样,为后续任务生成一个最优的下采样点云。结构与点云重建网络latentGAN类似,区别是重建时只重建固定点数而非所有点。损失包含重建损失和后续任务的损失。为了保证下采样为原始点云的子集,对每一个重建点使用最近邻居法寻找原始点云中的对应点。但将S-NET应用于大规模的3D点云上训练和操作困难,导致其在自动驾驶中不太实用。

        (c)非均匀随机抽样高效而且适应后续任务,每一个点的抽样概率\pi_i不相同。最优的抽样概率分布为

\pi_i^*\propto \left \| H_i \right \|_2

H_i为点的下游任务特征向量,可通过图滤波得到。

(6)3D点云上采样

        从低分辨率(稀疏)点云生成高分辨率(密集)点云,描述场景或物体的几何信息。上采样是下采样的逆过程,上采样后的点云包含原始点云。

        设置:通常使用现有数据集生成上采样任务的数据集。常用的评价指标与重建类似,如推土机距离和倒角距离。

        方法:基于图像超分辨率方法。

        (a)传统算法依赖于局部几何先验;基于全局光滑性的假设,一些算法还存在多尺度结构保留的问题。

        (b)深度学习算法

  • PU-Net基于PointNet++提取多尺度特征,结构与latentGAN类似,重建时重建更多的点;损失函数包含重建损失和排斥损失(使生成的点尽可能均匀分布)。
    • patch-based progressive使用多步上采样策略,将上采样网络分为多个子网络,每个子网络关注特定层次的细节。
      • EC-Net提出edge-aware loss,能够处理尖锐的边缘,并提供更精确的三维重建。

(7)3D点云配准

        将点从激光雷达坐标系转化为标准化全局坐标系。关键是在跨帧中寻找相对应的点,并找到一个使对齐误差最小化的转换。

        设S=\{S_i\}K个点云的集合,每个点云S_i包含N_i个点。P=\{P_i\}为传感器姿态集合,其中p_i为第i个传感器姿态。目标为优化下式:

\hat{P}=\arg\min_P L_S(P)

其中L_S为损失函数,\hat{P}为估计的姿态。

        设置:常用数据集为KITTI,Oxford RobotCar,ETH ASL;单个点云配准,评价指标为位置和姿态的误差;评估点云序列的配准情况,常用绝对轨迹误差(ATE),即通过全局刚性变换将估计轨迹和实际轨迹对齐后,位置残差向量的长度。

        方法:迭代地交替进行对应关系搜索和对齐,直到对齐误差小于给定的阈值。

        (a)经典配准方法包括逐对局部配准、逐对全局配准、多重配准。

        逐对配准仅考虑相邻两帧的配准。

        局部配准要求存在粗糙的初始对齐,通过迭代地更新变换来细化配准,例如迭代最近点(ICP)算法和基于概率的算法。

        逐对全局配准不要求粗糙的初始对齐。RANSAC等鲁棒估计可以用于处理不正确的对应关系。多数全局配准方法从两个点云中提取特征描述子,以建立对应关系,从而估计相对姿态。特征描述子可以是手工的,如FPFH,SHOT,PFH,spin-images等;也可以是学习到的,如3DMatch,PPFNet,3DFeatNet等。

        多重配准逐一向之前所有点云配准的模型加入新来的点云。缺点是配准误差会积累。这种偏移可以通过优化所有传感器姿态图上的全局代价函数来减轻。

        (b)深度学习配准方法。一些图像配准方法基于非监督学习来利用深度和运动之间的内在关系,这一方法被推广到视觉里程计和SLAM问题上:可使用一系列深度图像和循环神经网络(RNN)来建模环境。

  • MAP-Net开发了一个用于RGB-D SLAM的RNN,摄像机在离散空间域中使用深度模板匹配来配准。
  • DeepMapping在配准优化问题中使用深度神经网络作为辅助函数,通过非监督地训练网络来求解。free-space consistency损失函数使其比ICP有更好的性能。

你可能感兴趣的:(自动驾驶3D目标检测综述类文章,深度学习,自动驾驶)