其他分享
首页 > 其他分享> > 《论文阅读》Unsupervised Learning of Lidar Features for Use in a Probabilistic Trajectory Estimator

《论文阅读》Unsupervised Learning of Lidar Features for Use in a Probabilistic Trajectory Estimator

作者:互联网

留个笔记自用

Unsupervised Learning of Lidar Features for Use in a Probabilistic Trajectory Estimator

做什么

Lidar Odometry激光雷达里程计,里程计作为移动机器人相对定位的有效传感器,为机器人提供了实时的位姿信息。移动机器人里程计模型决定于移动机器人结构和运动方式,即移动机器人运动学模型。
简单来说,里程计是一种利用从移动传感器获得的数据来估计物体位置随时间的变化而改变的方法
在这里插入图片描述
用建图的方式来理解,要实现机器人的定位与导航,就需要知道机器人走了多远,往哪走,也就是初始位姿和终点位姿,只有知道了里程计,才能准确将机器人扫描出来的数据进行构建。

做了什么

在这里插入图片描述
这里提出了一个无监督的点云特征学习器,针对观察到的数据似然性进行了优化,利用批处理轨迹估计和深度学习的现代进展对其进行了改进,取得了较好的效果
这篇主要是从数学的角度出发进行的构造,先要理解一下数学方面的相关知识
首先是最大似然估计问题
在这里插入图片描述
这里的z是输入的点云,θ是神经网络的参数,这是一个后验概率,是要最大化的
在这里插入图片描述
简单来说,就是构造一个网络参数,使其p(z|θ)最大化,就是定义一个LOSS去最小化这个L
这里采用了EM分解将这个概率式子分解
在这里插入图片描述
看L这个很长的EM分解,第一项要用到前面的后验概率p(z|θ),所以无法进行优化,而可以优化第二项,将这里的第二项改写成
在这里插入图片描述
在这里插入图片描述
这里的E是期望算子
将轨迹odometry近似成一个多元高斯分布
在这里插入图片描述
上面的Σ就是方差
于是,我们需要优化的就是这一项V(q|θ),就是用EM算法了,E步参数不变优化后验估计,M步反之,最终优化的需求就是这里的后验概率p(z|θ),输入点云,经过神经网络的参数θ计算得到的概率

怎么做

首先是问题定义,就是激光雷达里程计的问题定义,有些许不同
定义时间tk的状态为xk
在这里插入图片描述
其中Tk,0是k时间相对0时间就是初始的位姿转换∈SE(3),Bk是物体中心速度∈R6,这个东西不是很了解,文中也没相似说明,暂且跳过
然后是优化目标
在这里插入图片描述
这里假设优化窗口大小为w,即只针对w长度的点云序列
在这里插入图片描述
初始pose锁定,并且作为关键帧进行匹配,只优化后续的状态x
回到上式,这里的zkl是第k帧点云的第l个关键点,也就是把位姿矩阵求解任务转换成匹配任务,这个很常见,前面的多篇文章也有CAE-LO
然后是这里的两个函数φ,这俩在第一张图中有展示
在这里插入图片描述
这里的φp是一个先验因子,这里采用了一个什么安德森和巴福特的加速度白噪声先验
在这里插入图片描述
说白了就是对两个状态x加一个高斯噪声,然后是φm,这个复杂一点,是是由激光雷达关键点测量定义的测量因子
在这里插入图片描述
这里的Wkl是对应的z的协方差矩阵,g是网络代表的函数,具体内容在后面网络部分解释
总的来说,这里就是构造了两个优化因子,去优化前面两个因子在一起的这个联合似然概率,这个联合似然是帧相关于前后帧的一个状态代表
然后是具体的网络部分
在这里插入图片描述
这里的结构是借鉴了Unet,图像分割的经典结构,不过这里U的上采样部分有两路
然后是细节,输入是激光雷达帧点云(添加了一个强度通道或者说只有强度通道,这其实有点奇怪,为什么没有坐标只有强度?),编码器也就是绿色部分的每一层都是由KPConv变体和ResNet块组成
这里的KPConv以前遇到过,这里直接截一个知乎大佬说的
在这里插入图片描述
总结一下核心点卷积的大概思路:
以点x为球心确定一个球体;
在球体内确定若干个核心点,每个核心点带一个权重矩阵;
对于落在球体范围内的任意点,用核函数,计算出该点的权重矩阵,用该矩阵对这个点的feature进行变换;
对于落在球体内的每个点,都用上一步的方法,得出一个新的feature,最后将feature累加起来,作为点x的feature。
至于Resnet块就不看了,这个太常见了,至于解码器,也就是橙色部分,首先先是一个像unet一样的upsample,然后再和上面一样的KPConv+ResBlock,同样的,encoder和decoder之间也用了skip connection
在这里插入图片描述
然后这两路decoder分别用1×1卷积down channel,得到两个输出,一个叫Inverse Covariance(逆协方差),一个叫Detector Score(检测器分数)
这里的协方差就用在前面的φm,是一个6通道的输出,然后用矩阵的LDU分解去进行分解
在这里插入图片描述
这里(l1,l2,l3,d1,d2,d3)就是6通道的输出,一个逐点的6D向量,这里的目的就是为了得到前面φm中的协方差矩阵W
然后是detector score
在这里插入图片描述
这里就是这个检测器分数的可视图,简单来说就是判断每个点是否是关键点,突出一些墙角或者角点,或者可以说突出动态点和非地面点,做法是将点云voxel(体素)化,然后逐体素根据score求关键点
在这里插入图片描述
这里的s就是逐voxel的score,p是逐点的三维坐标,这里的目的就是为了得到前面φm中的关键点Zk
在这里插入图片描述
除此之外这里还构造了一个Descriptor
在这里插入图片描述
这个构造是由encoder的每一层skip过来后concat起来的,这里的vector是逐点的描述符,是用来进行关键匹配的,也就是特征匹配,将帧点云中的点属性和初始点云进行匹配,这也是计算里程计的常见做法
在这里插入图片描述
这里的dkl是关键点zkl的描述符也就是特征向量,后面N个点是第一帧参考帧中所有点的描述符,这里的操作是直接点乘起来,然后softmax求一个权重
在这里插入图片描述
这里的意思就是得到关键点和参考帧中所有点的对应权重,以做一个match工作
然后就可以用这些输出改写因子
在这里插入图片描述

总结

1.这篇的做法并不是一个端到端的做法,用了EM优化,一个无监督的方法,这篇是学生最佳论文,确实足够牛逼,通篇数学但似乎对我来说启发并不大。
2.文章最后说的未来工作的是创造一个实时的KPConv来嵌入其他工作,这方面属于模型换头的方面,这个确实可行但感觉意义也不大

标签:Use,这里,Unsupervised,里程计,点云,关键点,优化,就是,Features
来源: https://blog.csdn.net/qq_43310834/article/details/118762077