DeepPCO:End-to-End Point Cloud Odometry through Deep ParallelNeural Network 2020 论文笔记

In this paper, we investigate two key issues which impact the performance of PCO using end-to-end deep learning. The first is the representation (encoding) of the point cloud itself. This ranges from the raw point cloud to various approaches to projecting it to a 2-D scene. The second issue comes from the choice of the model architecture itself. In particular,we consider estimating the 6-DOF pose (translation andorientation) in a single regression network, or splitting thetranslation and orientation estimation tasks and regressingthem in two sub-networks.

超越DL-based, 与传统方法相当的性能.探索了点云的多种表示方法,将并行的思想用于网络设计,本质上是各个模块各司其职,然后在最后输出的结果中各取所长。

首先是讨论点云的几种表示形式的优劣:

  1. 2D表示:
    根据投影视角的不同有前视图,俯视图,以及全景视图.
    作者通过实验发现其中全景视图的性能表现最好,因此采用全景深度视图来表示点云:
    方 位 角 θ = arctan ⁡ 2 ( y , x ) 方位角\theta=\arctan 2(y, x) θ=arctan2(y,x)
    俯 仰 角 ϕ = arcsin ⁡ ( z / x 2 + y 2 + z 2 ) 俯仰角\phi=\arcsin \left(z / \sqrt{x^{2}+y^{2}+z^{2}}\right) ϕ=arcsin(z/x2+y2+z2 )
    r = ⌊ θ / Δ θ ⌋ r=\lfloor\theta / \Delta \theta\rfloor r=θ/Δθ
    c = ⌊ ϕ / Δ ϕ ⌋ c=\lfloor\phi / \Delta \phi\rfloor c=ϕ/Δϕ
    (也就是range image?.)
  2. 3D表示
    voxel思想耗费内存,计算量大
    pointnet方法主要用于分类和分割,且其内的T-Net会影响里程计需要的位姿信息.因此在对比实验中作者使用了去除T-Net的pointnet.
    PointGrid 3D结合了点云和网格的优点,以更好地表示局部几何图形,因此也是候选项之一.

网络结构

并行的思想,使用两个独立的网络分别对输入前后帧的点云进行平移量估计和旋转量估计.
DeepPCO:End-to-End Point Cloud Odometry through Deep ParallelNeural Network 2020 论文笔记
其中ijk代表预测的旋转量.
由于FlowNet能够基于光流信息有效的捕获几何特征,估计旋转量的网络直接使用了 FlowNet.(“Our intuition totake advantage of FlowNet is that it is constructed uponoptical flow, which is heavily used in VO tasks to attain goodrotation performance”)

此外,网络中没有使用maxpooling以及BN层,实验发现这两种网络层会使性能下降.
两个子网络均使用了两个分支的全连接层,通过6D位姿进行联合优化
(“our experiment empirically proves that such a setting of fully connectedlayers has the best performance for PCO.”)

在训练时,要求两个子网络对平移量和旋转量均进行预测,原因在于有论文证明将二者分开同时进行训练会损失性能。

总结,两个子网络分别对位姿进行预测,然后只取各自输出中的一个作为最终输出。网络结构简单,卷积层和全连接层较少,训练相对容易。

网络使用Euler角作为旋转量表示。(四元数额外的单位长度约束影响了网络的优化)

Loss

L = ∥ p − p ^ ∥ 2 2 + k ∗ ∥ q − q ^ ∥ 2 2 k = 100 L=\|\mathbf{p}-\hat{\mathbf{p}}\|_{2}^{2}+k *\|\mathbf{q}-\hat{\mathbf{q}}\|_{2}^{2}\\ k=100 L=pp^22+kqq^22k=100
根据网络图,这个Loss应该是对两个子网络分别计算的

实验结果

论文探究了几种不同的网络性能:

  • two-stream:《Deep Learning for Laser Based Odometry Estimation》
  • DeepVO和ResNet18:使用了2D全景map作为点云表示的里程计网络
  • PointNet,PointGrid:本文方法,使用3D点云的里程计网络变种

DeepPCO:End-to-End Point Cloud Odometry through Deep ParallelNeural Network 2020 论文笔记

ResNet18的结果说明较深的网络对里程计任务没有帮助,
对于3D点云表示,pointGrid相比于pointnet是更加合适的方式。
相比于two-stream和DCP(本文方法,DCP借鉴了two-stream的思路,使用两个分开的全连接网络进行预测),不同之处在于卷积部分DCP使用了更多的卷积核来提取特征。说明特征提取对里程计任务的作用很关键。

轨迹跟踪:

DeepPCO:End-to-End Point Cloud Odometry through Deep ParallelNeural Network 2020 论文笔记

DeepPCO:End-to-End Point Cloud Odometry through Deep ParallelNeural Network 2020 论文笔记

200m后出现了大的漂移,通过进一步实验研究发现,大的空旷区域会在某种程度上降低姿态预测的准确性。论文指出结合惯性测量可以克服其中的一些问题。

与传统方法的比较:

For a fair comparison, we did not use anyIMU data, and we employed the official evaluation toolreleased for KITTI to examine these two approaches. We takesequence 04 as an example.

The percentage of translation error and deg/m of rotation error of LOAM are 2.3245%and 0.0108, while the results of DeepPCO are 3.1012%and 0.0177 respectively.
整体接近SOTA,作者认为使用geometric awareness可能会提升网络的精度

消失实验

DeepPCO结构这么简单,但是精度依然很高,到底是网络哪个部分起到了关键作用呢
网络的“并行”体现在两个方面,

  1. 两个独立的子网络分别预测平移量和旋转量
  2. 每个子网络的全连接网络都使用了two-stream的方式,与常见的FC不同
    作者分别设计了这两个部分为独立结构的版本(非并行):
    DeepPCO:End-to-End Point Cloud Odometry through Deep ParallelNeural Network 2020 论文笔记

对比其性能:
DeepPCO:End-to-End Point Cloud Odometry through Deep ParallelNeural Network 2020 论文笔记

可以看出Translation Sub-Network的平移误差小,Orientation Sub-Network的旋转误差小。
DeepPCO:End-to-End Point Cloud Odometry through Deep ParallelNeural Network 2020 论文笔记

可以看出将旋转量和平移量分开来训练精度更高。