最近老师要做无人车的位姿估计,所谓的位姿估计就是估计某一刻车子的三个方位角和三个旋转角数据,位姿估计在无人驾驶中十分重要,是视觉里程碑的底层算法实现。老师让我在下面的毕业论文中选择一篇详细看,然后后天给老师报告。

  • 基于视觉里程计的无人驾驶车辆定位关键算法研究 南航 2017
  • 基于单目视觉几何的智能车辆位姿估计 2018 浙大
  • 基于道路标识牌的单目相机车辆位姿估计 2017 山东大学
  • 基于深度神经网络的视觉位姿估计方法研究2018 中科大

我大概粗略看了一下,前两篇都是基于几何建模的方式,进行位姿估计,中科大的是基于神经网络的,并且之后我去中科大的智能所夏令营,所以我便选择了这一片。

这篇论文首先介绍了基于几何方法建模不可以得到实际尺度的问题,尽管有解决实际尺度的方案,但是还是颇为麻烦,不能自适应的自动解决此问题。

基于几何算法计算相机位姿然后借助其他的优化策略(比如卡尔曼滤波等)算法调优。通过几何解算得到的位姿变化矩阵往往进行了标准化,真实尺度恢复问题是发展单目SLAM的阻碍,无法很好的解决(其实还是有解决方案的)

单目摄像头无法直接测量物体的距离,只能通过相关的几何关系推出像素的相对深度(无法得到场景的真实尺度)得到的运动轨迹都是在标准化或者缩放之后的结果,为了解决这个问题,研究者们在系统中增加IMU惯导。(这里需要问学长)

(论文1.3中)单目SLAM主要研究相机位姿和像素深度的估计和更新,非滤波算法克服了滤波算法的运算速度问题(不适用此前所有时刻的状态),仅需要利用部分图像帧的数据。目前基于优化理论的方法成为领域内的主流。

目前ORB-SLAM的性能在众多开源单目slam算法中领先。其真实尺度问题的解决徐要外部信息的辅助,有的使用IMU和视觉估计的结果进行融合提供真实尺度,加入回环检测提供优化,建立标准化后的尺度,减轻尺度漂移的干扰;有的直接通过外部参数提供尺度信息,总而言之,各种方法都没有办法自动的处理真实尺度估计问题。

下图是基于ORB-SLAM的图示,估计强强学长这一方面懂得更多。一些ORB-SLAM的连接-12

这篇论文在基于深度学习的位姿检测上进行了探索。卷积神经网络有很好的自动特征提取功能,本论文大多数结构是堆叠卷积层、池化层、BN等CNN中的层组成的。

传统SLAM算法的流程:

  • 前端的视觉里程技——计算位姿变化,估计相机的运动
  • 后端非线性优化——利用位姿向量和回环检测结果对运动轨迹优化,构建全局统一的地图(我们的网络没有后端优化)
  • 回环检测——根据图像判断轨迹是否在曾经到达过的位置出现闭环
  • 建图模块——通过位姿向量建图

 

而传统SLAM中位姿估计模型是基于几何模型的,几何模型有涉及到相机的内部参数矩阵。通过内部参数矩阵和位姿矩阵可以得到相机像素平面到世界坐标系的转换,所以我们一般会通过特征匹配算法计算匹配点,然后根据特征点和相机的几何性质约束得到本质矩阵(这个本质矩阵通过奇异值分解之后就可以得到位姿变换结果)

  1. 在1.3中提到了本质矩阵和基础矩阵F,这个地方我不懂,为什么出来一个基础矩阵,而且基础矩阵表达式中需要包含相机的内参数,文中说到本质矩阵本身有尺度等价性,分解得到的t,R也有一个尺度等价性,也就是说,分解过程中对t乘以任意非0数,对极几何的模型(,准确对于基础矩阵应该是)表达式均成立,所以一般对t进行归一化,t向量长度为一,就是此处的归一化导致了尺度不确定性。
  2. 文中提到1.3这种对极几何的2D-2D模型尺度归一化之后会导致计算任意相邻帧,虽然可以得到结果,但是他们的尺度都不一致,所以在单目SLAM中(我记得ORB-SLAM也是),这种方法仅仅作为单目SLAM的初始化,相当于固定尺度,之后采用3D-2D的PnP算法(知道多个3D空间点和对应的图像坐标时,求解相机位姿[位姿变换向量]的方法)
  3. 而后面的就有点难了,因为3D-2D的问题可以背构建成李群代数上的非线性最小二乘问题,详情请见论文2.2.3

所以!学习李群,进军ORB-SLAM!

在看到深度学习的在图像识别和分割等任务上的强大之后,论文也尝试使用AlexNet进行位姿估计,但是效果搞笑。原因是传统的图像识别任务中对图像卷积提取出来的特征为图案花纹特征,在位姿估计任务中,我们需要在图像中提取出几何匹配特征,才有助于帧间运动信息的学习。

所以作者采用了如下结构的神经网络

输入是两帧和两帧的光流图(堆叠卷积池化ReLU激活层,使用较大卷积核——一定粗粒度的特征融合更有助于位姿估计,BN[Batch Normalization]解决了梯度消失、扩散问题,以及Flatten层,最后通过FC对特征 融合  整合 得到回归的位姿向量)

由于使用了光流图(别的算法给的,比较精准)对特征的抽取的作用比较大,最后结果是 ORB-SLAM VISO2-M(几何视觉里程计) P-CNNVO(一种基于CNN的学习算法)还有我们的LearnVO-T(结合误差学习的LearnVO-T)的对比中,ORB-SLAM(这个包含回环检测和全局优化的完整SLAM系统)预测的精度最强(经过回环优化和相似变化之后,预测的轨迹几乎和真实轨迹重合——但是这样比较不太公平,ORB-SLAM这个完整的SLAM算法得到位姿向量之后还进行了很多优化,使得最后的结果当然比较稳定),而论文的方法结果和真实的相差相近,而且是未经过相似变化的,不需要特地去解决尺度问题。论文算法表现整体优于PCNN-VO,特别是在大量弯曲轨迹效果上更佳。

4.4.4说当预测坐标值和标准值误差到达5.0就修赞,最后效果不错……但是其实这种累计误差此论文没有给予解决,所以说了也就图个乐。

之后就搞了一个端到端学习的位姿估计,想的是用网络得到光流,融合送入位姿预测网络

前面的Optical Flow Extraction光流提取网络是前任FlowNet-S(针对自然场景效果好),但是结果不如Brox(非神经网络光流提取算法好)

特征优化网络利用自编码网络对光流特征进行在学习,压缩精炼特征(Pool2的输出),和最初的光流特征(CONV1/2/3之后的输出)共同构成位姿估计网络输入的特征向量,最后预测位姿变换向量(OFE可以作为可替换插件)

最后结果就是:ORB-SLAM还是好,而且这样端到端的训练貌似效果还没有前一种非端到端的训练好,但是很有学习意义!的确,现在虽然深度学习盛行,但是主流SLAM中的用于位姿估计的图像处理,仍然是抽取特征点然后pnp那一套。我读的只是一个硕士论文,接下来还是要去国外的期刊中看最新的位姿估计的论文,才能了解到国际前沿的发展趋势

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐