百度自动驾驶部门
本文提出了用于点云配准的首个端到端可学习的网络,DeepICP。与现有基于几何方法的SOTA方法到达了相似的性能。
传统的点云配准过程包括:关键点检测,特征描述子提取,特征匹配,剔除离群点,估计变换矩阵。
传统点云配准方法尽管在一些场景取得了较好的性能,但是依然没有一种全场景通用的点云配准方法。
Deep ICP有个好处是他预测 的target点云的坐标是多个点加权得到的,而不是在target点云里面选一个。对于source 、target点云并不完全一致的情况(激光雷达的前后帧率)比较实用。
Deep ICP
点云特征提取:Feature Extraction (FE) Layer
输入:source点云(N1×4), target点云(N2×4)
输出:点云局部特征(N1×32,N2×32)
点云特征提取网络使用的是pointNet++
作者期望提取的点云特征具有特定的语义信息,能够帮助网络避免在动态目标上进行推理。
点云加权:Point Weighting
受到3DFeatNet 的启发,作者设计了点云加权层来学习每一个点的显著性。
作者认为在静态物体上的不变和具有辨识性的特征点应当被赋予更高的权重。
点云加权层以source点云的局部特征为输入,结构:MLP+3 FC+ top-K操作
最重要的N个点被选择出来作为关键点,用于接下来的处理
点云特征嵌入:Deep Feature Embedding(DFE) layer
DFE层的结构: mini-PointNet
有了N个关键点,DFE层用于给该N个关键点提取更加精细的局部领域特征:
首先将N个关键点邻域内的K个点的坐标进行归一化,和激光反射强度一起连接在其FE层提取的特征后面。
得到N×K×36的向量作为DFE层的输入,其输出为32维的向量,与之前的局部特征向量相同,只不过编码了更加精细的局部邻域细节在里面,有助于增加点云配准的精度。
生成对应点:corresponding point generation (CPG) layer
该层用于从提取的特征及其相似性度量中生成对应点(corresponding points )。
首先将N个关键点 x x x 根据预测的变换矩阵转换为target point cloud x ′ x' x′
对每个 x i ′ x'_i xi′,将其邻域体素化得到size为(2r/s+ 1,2r/s+1,2r/s+ 1)的3D voxel grid,其中r是搜索半径,s是voxel size
那么这些体素网格的中心点 { y ′ } \{y'\} {y′}就是候选的 x i x_i xi在target 点云中对应的点。
对每个体素的中心点提取DFE特征,编码邻域局部信息,得到N×C×32的张量(N个关键点转换到target点云,每个的邻域有C个体素中心)
计算权重:
将source和target点云输入到3DCNN中学习相似性度量,然后用softmax计算相似性矩阵(权重)。
计算加权和:
计算最终的target corresponding point y_i:
y
i
=
1
∑
j
=
1
C
w
j
∑
j
=
1
C
w
j
⋅
y
j
′
y_{i}=\frac{1}{\sum_{j=1}^{C} w_{j}} \sum_{j=1}^{C} w_{j} \cdot y_{j}^{\prime}
yi=∑j=1Cwj1j=1∑Cwj⋅yj′
这一步直接使用CNN对目标点云的位置进行预测,而不是在原来的点云中找一个,省去了RANSAC剔除离群点的操作,较少了处理时间。
损失函数
预测的target点云与GT之间的误差:
Loss
1
=
1
N
∑
i
=
1
N
∣
y
ˉ
i
−
y
i
∣
\operatorname{Loss}_{1}=\frac{1}{N} \sum_{i=1}^{N}\left|\bar{y}_{i}-y_{i}\right|
Loss1=N1i=1∑N∣yˉi−yi∣
然而该损失只能约束关键点匹配阶段局部邻域的上下文信息,因此引入了:
Loss
2
=
1
N
∑
i
=
1
N
∣
y
ˉ
i
−
(
R
x
i
+
T
)
∣
\operatorname{Loss}_{2}=\frac{1}{N} \sum_{i=1}^{N}\left|\bar{y}_{i}-\left(R x_{i}+T\right)\right|
Loss2=N1i=1∑N∣yˉi−(Rxi+T)∣
其中R T是根据给定的关键点对应关系{xi,yi},i= 1,···,N,使用SVD计算得到的相对位姿变换。
Loss
=
α
Loss
1
+
(
1
−
α
)
Loss
2
\operatorname{Loss}=\alpha \operatorname{Loss}_{1}+(1-\alpha) \operatorname{Loss}_{2}
Loss=αLoss1+(1−α)Loss2
网络在推理过程中,只需一次迭代就可以找到最优的对应关键点,进而估计变换矩阵。
实验分析
推理速度对比:
与其他方法相比速度很快。
精度对比:
与基于几何的方法相当,优于其他基于深度学习的方法。
总结
DeepICP 如何做到只检测显著性静态关键点和地面关键点, 而避开动态关键点的?
pointnet++提底层特征 + point weighting选取静态显著性关键点作为匹配依据
DeepICP是如何生成对应点的?
在source点云中选择64个关键点x, 然后根据预测的相对位姿将其转换到target点云中得到x’,那么x‘可以作为x的粗略对应点。
在此基础上,对x’的领域进行网格化,每一个x’可以得到一堆grids的中心,这些grids中心就是候选的x的对应点。
对这些候选对应点进行DFE领域特征编码,使用3D CNN + softmax预测相似性矩阵,以相似性矩阵作为权重计算最终对应点的坐标。