EfficientLO论文阅读

研0,前段时间开组会老师提到可以写blog记录自己的所想,所以刚开始尝试写blog,希望自己日后能坚持。

目录

零、序言

1、Introduction

2、Related Work

2.1 Efficient 3D Point Cloud Learning

2.2 Deep LiDAR Odometry

2.3 Deep Point Correlation

3 、PROJECTION-AWARE EFFICIENTLO-NET

3.1 Overview and Projection-Aware Representation of 3D Point Clouds

3.2 Projection-Aware Siamese Point Feature Pyramid(投影感知的孪生点特征金字塔)

3.3 Projection-Aware Attentive Cost Volume

3.4 Hierarchical Embedding Mask Optimization

3.5 Iterative Pose Warp-Refinement

 Projection-Aware Set Upconv Layer:

 Projection-Aware Pose Warping:

Embedding Feature and Embedding Mask Refinement:

Pose Refinement:

3.6 Training Loss

4、IMPLEMENTATION

4.1 Dataset Processing

Data Preprocessing

Data Augmentation(数据增强)

4.2 Parameters

5、EXPERIMENTAL RESULTS

5.1 Performance Evaluation

5.2 Ablation Study

5.2.1 Benefits of Embedding Mask.

5.2.2 Different Cost Volume

5.2.3 Effect of Pose Warp-Refinement.

5.2.4 Suitable Level for the First Embedding.

5.2.5 Removing or Reserving Ground

5.2.6 Stride-Based Sampling

5.2.7 Projection-Aware Grouping.

5.2.8 3D Distane-Based Filtering.

5.2.9 KNN Selecting or Random Selecting

5.2.10 Projection-Aware 3D Feature Learning

5.3 Visualization of Embedding Mask

5.4 Registration Visualization of Two Consecutive Frames

5.5 Experiments on Other Datasets

6、CONCLUSION


零、序言

强化学习的第一步,先进行特征提取等的阅读。

EfficientLO是2022年的一篇PAMI,实现了直接从3D点云学习里程计,至于为什么是直接从3D点云学习,后面会讲。

Abstract:

本文首次提出了一种适用于激光雷达里程计的高效三维点云学习架构EfficientLO-Net。在该体系结构中,提出了三维点云的投影感知表示,将原始的三维点云组织成有序的数据形式,以提高效率。激光雷达里程计任务的金字塔(Pyramid)、扭曲(Warping)和代价量(Cost volume)(即PWC)结构被构建,以一种从粗到细的方法分层次且高效地估计姿态并求精。本文建立了投影感知的注意代价量( projection-aware attentive cost volume),直接关联两个离散点云,获得嵌入运动模式。然后,提出了一种可训练的嵌入mask对局部运动模式进行加权,以回归整体姿态并过滤离群点。迭代使用可训练的位姿扭曲细化模块,并对嵌入mask进行层次优化,使位姿估计对异常值具有更强的鲁棒性。整个架构端到端的整体优化,实现cost volume和mask的自适应学习,所有涉及点云采样和分组的操作都通过投影感知的3D特征学习方法加速。最后本文在KITTI里程计数据集上验证了我们的激光雷达里程计体系结构的卓越性能。在大多数KITTI里程计数据集序列上,我们的方法优于所有最近的基于学习的方法,甚至优于基于几何的方法如带有建图优化的LOAM方法。

1、Introduction

之前的工作都是基于2D的里程计,或者是2D卷积在LiDAR的投影信息上(比如说深度图)。本文从3D点云直接学习到LiDAR odom。

但是出现了四个困难:

1) As the discrete LiDAR point data are obtained in two consecutive frames separately, it is hard to find a precise corresponding point pair between two frames.

难以找到两帧之间的精确对应点对;

2) Some points belonging to an object in a frame may not be seen in the other view if they are occluded by other objects or are not captured because of the limitation of LiDAR resolution.

Lidar的遮挡问题,导致前后对比特征消失;

3) Points belonging to dynamic objects are not suitable to be used for the pose estimation because these points have uncertainty motions of the dynamic objects.

dynamic objects不适合来位姿估计;

4) Learning from the raw 3D point cloud is often troubled by lower efficiency because of the irregularity and disorder of the raw point cloud.

学习效率低下,因为点云无序性。

对应的解决方法:

  1. 对于困难1:从软对应关系代价体直接回归整体位姿,不挨个计算
  2. 对于困难2+困难3:可训练mask,从成本体积中权衡局部运动模式来回归整体姿态。用训练得到mask来得到位姿,改变了传统的基于geometry的方法。 构建coarse-to-fine的PWC结构估计位姿。
  3. 对于困难4:提出了一种基于投影感知的三维点云表示方法 相应的特征学习方法,包括基于步长的采样策略、基于投影感知的高效分组策略和基于三维距离的过滤策略。

对于coarse-to-fine的PWC结构示意图:


 

2、Related Work

2.1 Efficient 3D Point Cloud Learning

过往方法的问题:

难以平衡体素分辨率和存储到体素的点的个数问题,所以无法适用于大场景的lidar datasets.

还有一个就是无序、非结构化、不均匀的三维点云分组过程计算量大的问题.

这篇文章提出:

受激光雷达扫描特性的启发,提出一种新的投影感知三维特征学习方法。

通过利用LiDAR数据本身的特性,可以加速经典的点云特征学习和帧间特征关联,避免使用三维体素和Grid - GCN [ 27 ]等复杂的数据结构设计。同时,保留原始三维点云以避免信息丢失。在此基础上,我们实现了20Hz的实时三维深度激光雷达里程计,并且由于使用了大规模的LiDAR点云,相比于我们之前的工作[ 39 ],每帧使用了8192个点,获得了更高的精度。

2.2 Deep LiDAR Odometry

主要介绍了先前的一些工作和方法。

  1. Nicolai et al. [10]使用2D深度图像来实现LiDAR odometry,但是效果not superior。
  2. [11]同样3D投影到2D,但是用了三个通道,分别是height,range,intensity,来回归姿态。这个方法对平移估计很好,对6-DOF的姿态估计不好。
  3. Wang et al. [12]投影点云到全景深度图,然后分别使用translation sub-network和FlowNet orientation sub-network来分别估计平移和旋转。
  4. Li et al. [13]使用cylindrical projection(柱面投影)来将3D信息预处理为2D。
  5. Zheng et al. [20]投影到2D球面深度图后,使用经典的检测和匹配算法提取关键点对。
  6. [14]用基于学习的网络来生成高置信度的匹配点对,然后用SVD分解获得6-DoF位姿。
  7. [43]无监督学习的LiDAR里程计。

2.3 Deep Point Correlation

FlowNet3D [18]提出了如何学习两个连续帧之间的对应点关系。

Wu et al. [21]提出了cost volume的方法,HALFlow [22]发展了注意力cost volume的方法。

但以上的cost volume的方法涉及到每个点的运动模式,不是每个点都适合用来回归位姿,比如说移动的点。

Su et al. [44], [45]提出了PWC(Pyramid, Warping, and Cost volume)结构,实现了一种coarse-to-fine的结构。

本文受PWC结构启发,首次构建适用于LiDAR odometry的PWC结构。


3 、PROJECTION-AWARE EFFICIENTLO-NET

3.1 Overview and Projection-Aware Representation of 3D Point Clouds

6-DOF pose transformation estimation的问题实际上是一个3D task。所以在3D空间中registration and pose regression是更直接的。

提出一个三维点云的投影感知表示,通过柱面投影先验将非结构化的三维数据组织成有序形式。柱面投影中,三维点云有序保持在二维柱面上,然后提出相对应的投影感知三维学习操作来处理三维坐标?

关于Fig2自己的解读

首先是作者自己的话,以往的基于投影的方法在深度图的二维坐标都是填充了depth values [10], [12], [20], the range and intensity values[11], the normal values[13], the range and reflectivity values[14],用2D卷积网络来学习一个LiDAR odometry。

本文与此不同,在2D坐标位置填充上了对应的原始3D点云坐标,这也就解释了为什么作者说这是第一个直接从3D点云中学习LiDAR odom的方法。

可以看Fig3,network的input是一个H × W × 3 with XYZ 3D coordinates的一个tensor,也可以就是说一个图,这个图横纵坐标为H和W,然后有三层,每一个像素包含xyz三个坐标值。

 接下来是对fig2的所有步骤的一个阐述

3.2 Projection-Aware Siamese Point Feature Pyramid(投影感知的孪生点特征金字塔)

首先要知道这个到底是为了干啥的:我认为是为了提特征的。作者说使用于编码和提取每个点云的分层特征。

对应于Fig2的左上和左下那一部分,如下图所示

由于点云是无序且稀疏的,一些处理算法耗时。提出了projection-aware set conv layer来取样中心点并且对近邻点有效分组。提出的projection-aware set conv layer包括4个组成部分:stride-based sampling;projection-aware grouping;3D distance-based filtering;feature aggregation。

Part1:Stride-Based Sampling(SBS) 基于步长的采样

类似于2D卷积核中心的选取。

采样点的索引由于步长确定,原始卷积核中心也确定了,所以可以直接生成采样点的索引。

这样可以使采样点在空间上分布更均匀。

Part2:Projection-Aware Grouping 投影感知分组

类似2D卷积,对每个采样的中心点设置一个固定大小的核,并将核中的点当作一个分组点。

但是有可能出现,在边缘位置前景和后景边缘引入距离较远的点。本文提出3D距离的滤波来处理这个问题。 

Part3:3D Distance-Based Filtering 基于3D距离的滤波

需要在过滤掉不合理点的同时保持所选点的数量不变,从而进行稳定的特征学习。

本文做法:首先过滤掉超过固定距离的点,然后从剩下的点中随机选择具有固定个数K的点。

对每个采样点进行投影感知分组和基于3D距离的滤波,并在GPU上并行计算。

Part4:Feature Aggregation 特征聚合

得到中心点和周围分组点之后,用MLP进行最大池化特征聚合。

3.3 Projection-Aware Attentive Cost Volume

在整个网络中的区域如下图所示

基本的cost volume如下图所示:

解释几个符号

x_i: 代表第i个采样点;

x_{i}^{k}:代表K points x_{i}^{k}(k=1,2,...,K) are selected by Random Selecting (RS) around x_i in a ball

f{_{i}^{c}} and f{_{i}^{k}} are the local features of x_i and x_{i}^{k}

f{_{i}} is the output feature located at the central point x_i

流程如下:从上往下看

输入:PC1和PC2的原始点云和两者对应的特征集合F1和F2。

步骤:

  1. PC2将PC1的每个点x_i作为中心点来进行分组。在这个过程中找x_i最近的K1个点。
  2. 进行基于注意力的特征关联聚合,得到位于PC1的第一个attentive flow embedding PE,这个PE位于PC1中。
  3. 以每个点x_i为中心对PE进行分组,然后再将第一次的x_{i}^{k}(即从PC2提出来的K个近邻点,在PC1中的投影)的PE点再进行聚合,得到最终的attentive flow embedding即e_i

 为解决KNN效率低的问题,将KNN限制在投影平面上固定大小的内核中进行。

主要改进是在2D投影面上的一个核范围内对邻域点进行分组。

对以x1为中心的PC2的第一次分组,在3D欧氏空间内查询最近邻点,但是搜索范围被限制在PC2投影面上的一个核内。

对于第一个attentive flow embedding PE,执行随机选择RS的ball query,同时分组的过程也被限制在PC1投影面上的一个核范围内。

3.4 Hierarchical Embedding Mask Optimization

上面操作已经得到特征集合E,现在需要将其转化为全局坐标系下的两帧之间的pose transformation。

为解决这个问题,采用以下方法:

输入:上一步得到的embedding features E(即图中跟在Set conv后面的E^{3})和PC1的features F1

所作操作:

  1. 输入到MLP层中,沿point dimension来进行softmax操作从而来获得嵌入掩码M。这个point dimension我觉得是一个点的特征属性的感觉。
  2. 掩码M所代表的是每个点的一个weight,范围在0-1。越小表示越需要被filtered。(学到一个新词,vice versa反之亦然。。)
  3. 接下来采用weighting embedding features来生成四元数q,采用FC layers来生成平移矩阵t。虽然都是在FC层来估计的,但是是分别估计的。
  4. 嵌入特征E和pose同时被传入到点云更密集的层。
  5. embedding mask M也在后续warp-refinement process进行细化

 

3.5 Iterative Pose Warp-Refinement

为解决由粗到精的细化过程而作。

主要包含4个关键部分:

  • projection-aware set upconv layer
  • projection-aware pose warping
  • embedding feature and embedding mask refinement
  • pose refinement

 Projection-Aware Set Upconv Layer:

目的:为了使得点云特征从sparse level 到 dense level而设立的。

与先前projection-aware set conv有点像,都是在2D平面上弄一个kernel来进行卷积处理。

都是分为四步,如下图所示。分别是为点云上采样指定中心点,projection-aware分组,基于3D距离滤波,最后特征聚合。

 Projection-Aware Pose Warping:

使用从(l+1)层下来的q^{l+1}t^{l+1}来对PC_{1}^{l}= \left \{ x_{i}^{l} | x_{i}^{l}\in \mathbb{R}^{c^{l}} \right \} _{i=1}^{n^{l}}进行warp(其实就是把q^{l+1}t^{l+1} apply到PC_{1}^{l}= \left \{ x_{i}^{l} | x_{i}^{l}\in \mathbb{R}^{c^{l}} \right \} _{i=1}^{n^{l}}上面去),生成一个PC_{1,warped}^{l}= \left \{ x_{i,wraped}^{l} | x_{i,wraped}^{l}\in \mathbb{R}^{c^{l}} \right \} _{i=1}^{n^{l}}。这个PC_{1,warped}^{l}与跟PC_1^l比起来,与PC_2^l更接近,这样就可以更好的计算估计第l层的运动的残差。得到的PC_{1,warped}^{l}按照3.1的方法去获取一个XYZ坐标图,这个坐标图更接近于PC_2^l。再算PC_2^lPC_{1,warped}^{l}的残差。最后在按照3.3的方法算一个embedding feature(3.3中最后的output E),记作RE_{}^{l}= \left \{ re_{i}^{l} | re_{i}^{l}\in \mathbb{R}^{c^{l}} \right \} _{i=1}^{n^{l}}

Embedding Feature and Embedding Mask Refinement:

由Embedding featuresE^{l+1}和embedding masksM^{l+1}和生成的coarse embedding featurece^l_i, Projection-Aware Pose Warping生成的re^l_i,和先前最原始的f^l_i以及PC_1^l。丢入MLO来获得一个E_{}^{l}= \left \{ e_{i}^{l} | e_{i}^{l}\in \mathbb{R}^{c^{l}} \right \} _{i=1}^{n^{l}}

这个东西可以这么理解:

e^l_i=MLP(ce^l_i\oplus re^l_i\oplus f^l_i )

这个e^l_ilth 层的embedding特征,不仅会参与接下来的位姿生成也是下一层的warp-refinement的输入。

在这个过程中还需要获得第l层的embedding mask

这个与本节上述embedding feature的道理一样。

用更新得到的embedding featuree^l_i和更新得到的coarse embedding maskcm_i^lPC^l_1的local feature f_i^l放到一个MLP里面去,再进行一个softmax的处理。

M^l=softmax(sharedMLP(E^l\oplus CM^l\oplus F^l ))

这样就更新得到embedding maskM_{}^{l}= \left \{ m_{i}^{l} | m_{i}^{l}\in \mathbb{R}^{c^{l}} \right \} _{i=1}^{n^{l}}

Pose Refinement:

 如下图所示,一共使用了三次warp-refinement的做法。每多做一次都会在点云更稠密,更精确。下图中,在第一次warp-refinement中,用了点云最少的PC_1^2,然后逐渐增多点云数量,直至用到PC_1^0(点云最稠密的PC)。先前在稀疏图中已经估计出了coarse inter-frame的点云对应关系和初始位姿估计,现在在稠密地图中逐渐细化这种位姿。其实这个原理也就是迭代的原理,如果一个初值很好的话,那么精化的时候耗时也更少,计算量也更小。

3.6 Training Loss

整个网络output四个不同点云等级产生的的四元数q和平移矩阵t。

每个等级的output都会进入一个loss function,这个loss function是每一个等级都有一个,最后再算一个sum up。

论文之前在related work里面提到过,translation vector t和quaternion q要分别估计,作者在这里确实设计的损失函数也是分开估计的,用了两个可学参数s_xs_q

single loss function:

\l l^l=\left \| t_{gt}-t_l \right \|exp(-s_x)+s_x +\left \| q_{gt}-\tfrac{q^l}{\left \| q^l \right \|} \right \|_{2}exp(-s_q)+s_q

 t_{gt}q_{gt}是groundtruth。

total loss function:

l=\sum_{l=1}^{L}\alpha ^ll^l

L是warp-refinement level的总数,\alpha ^l是一个hyperparameter,表示第l层的weight。


4、IMPLEMENTATION

4.1 Dataset Processing

Data Preprocessing

仅仅使用lidar的coordinates。

为提高点云质量,每帧点云只选取车周围30×30平方米的数据。

Data Augmentation(数据增强)

用变换矩阵T_{aug}来作用在数据集上,可以增强泛化能力。然后这个T由R和t组成,R是一个均值为0的高斯分布,随机产生欧拉角,t也是这么产生的。

直到这里我还在纳闷高斯分布少了参数,到后面parameter那里解释了,对于yaw-pitch-roll三个角,standard deviation分别为0.05°,0.01°和0.01°。相对应的XYZ的标准差是0.5m,0.1m,0.1m。

对于每个训练样本,我们可以使用旋转矩阵R_{aug}将其进行旋转变换,并使用平移向量t_{aug}进行平移变换。这样,通过应用增强矩阵T_{aug},我们可以生成具有不同姿态和位置的新样本,从而增加训练数据集的多样性。

T_{aug}用于PC_1得到一个新点云PC_{1,aug}

PC_{1,aug}=T_{aug}PC_1

相对应的gt transformation matrix可修改为:

T_{trans}=T_{aug}T_p

上式T_p表示PC_1PC_2的原始gt transformation matrix(这个在数据集里有)。此时得到的T_{trans}用来generate t_{gt}q_{gt}来监督网络的训练。

4.2 Parameters

input设置为:H×W×3。H=64, W=1800。

\alpha _1=1.6,\alpha _2=0.8,\alpha _3=0.4,L=4。这也好理解,权重越高,表示相对应的损失函数越大越需要被重视。

batch size=8。


5、EXPERIMENTAL RESULTS

定性定量实验->消融实验->效果展示

5.1 Performance Evaluation

验证说pose refinement target不仅仅在滤除动态点有效,处理各种outliers也很有效。

在一次端到端的网络中多次对估计的位姿进行修正,效果很好。

效果确实很好,TABLE 3的数值都降低了好几倍。

比起LOAM这类的算法,性能也更好。

5.2 Ablation Study

5.2.1 Benefits of Embedding Mask.

proposed embedding mask and its hierarchical optimization both contribute to better results.

该网络仅通过一次网络推理就达到了RANSAC的效果,无需迭代,省时省力。

5.2.2 Different Cost Volume

用了FlowNet3D,point cost volume [21] 和 the attentive cost volume [22]来进行对比。

具有double attentive的cost volume有最佳结果。

5.2.3 Effect of Pose Warp-Refinement.

验证了coarse-to-fine refinement的importance。

5.2.4 Suitable Level for the First Embedding.

由于较少的点具有较少的结构信息,因此需要决定使用哪个级别来首先关联两个点云并生成嵌入特征。

最适合第一次嵌入的级别是点特征金字塔中的倒数第二个级别。

5.2.5 Removing or Reserving Ground

一定是预留地面的性能最好的,因为地面点法向量关系和对应点关系很好。

实验也证明了这个道理。

5.2.6 Stride-Based Sampling

本文提出的基于步长的采样方法在每次采样后都保持了二维有序表示,因此我们提出的基于步幅的采样获得了最好的结果。

主要就是利用了三维激光扫描的characteristic。

5.2.7 Projection-Aware Grouping.

效率提升了,有用。

5.2.8 3D Distane-Based Filtering.

过滤掉了远点,保留和处理原始三维坐标,同时实现了激光雷达测距的高精度和高效率。

5.2.9 KNN Selecting or Random Selecting

我当时也纳闷为啥不用KNN,而用随机选取。

作者给的解释是虽然在训练集上KNN表现更好,但是在测试集上,RS表现更好。如果选用RS方法,网络还可以学习具有固定空间尺度的三维特征,泛化能力更好。

5.2.10 Projection-Aware 3D Feature Learning

加速网络中点云的全局采样和分组操作。

5.3 Visualization of Embedding Mask

上图证明了权重还是给对了,静态物体给了大权重,动态的小权重。

5.4 Registration Visualization of Two Consecutive Frames

从图上来说这个work还是蛮perfect的,除了d中由于动态物体太多没那么好之外。

5.5 Experiments on Other Datasets

其他的数据集也进行了验证


6、CONCLUSION

本文总结:

  1. the projection-aware representation of the 3D point cloud和corresponding projection-aware 3D learning operations来共同解决大场景下的lidar里程计。
  2. PWC结构来处理3D LiDAR的odom。
  3. hierarchical embedding mask optimization分层掩码器优化来解决离群点outliers。
  4. 对所有模块杂合到一起来optimize。

下一步就是配置环境看代码,我觉得这篇文章的意思我大概是get到了,但是有些小细节方面还需要看代码才知道,然后及时修改这篇blog。 

robotics虽然难,但是真的很有意思,加油干。

希望大佬们看到这篇文章多多指导,轻喷,转载请注明出处。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值