语义slam_语义SLAM论文阅读笔记1
《Semantic segmentation–aided visual odometry for urban autonomous driving》
International Journal of Advanced Robotic Systems,2017
----------------------------------------长文预警---------------------------------------------
摘要
基于特征的视觉里程计方法从可选的特征点里随机采样,基于对齐的视觉里程计方法考虑所有的像素,这些方法假设高质量的大部分候选视觉线索能够代表实际运动。但在真实的交通场景中会存在很多动态的物体,使得这种假设不成立。例如大卡车或者公交车占据了前视单目摄像机图像的大部分,这将导致错误的里程估计。在动态环境中找到可用的能代表真实运动视觉线索对于视觉里程计来说,是最重要和最难的事情。像素的语义贡献在这个时候会成为较好的选择。本文分析了所有视觉线索(在像素水平的语义信息的帮助下)的可行性,并提出了一个新的视觉里程方法,它将基于特征和基于对齐的视觉里程算法和一条优化流水线结合。我们用这种方法在开源数据集KITTI和自己的数据集进行实验,并与三种开源视觉里程计算法进行比较。实验结论证实,新的方法在复杂的动态环境中拥有显著的精度和鲁棒性改善。
关键词
Visual odometry , dynamic scene , semantic segmentation , deep learning
介绍
视觉里程计(Visual odometry,VO)是视觉SLAM(V-SLAM)最重要的部分,它已经广泛地被应用在光学鼠标、小型移动机器人和无人驾驶飞机(unmanned aerial vehicles,UAVs)上。而VO价格合理且轻量,它在基于视觉的自动驾驶汽车导航系统中越来越重要。
VO这个词在2004年被Nister第一次使用,虽然此领域相关的研究已经超过了30年。VO使用相机作为主要的传感器,并把当前图像帧作为输入,把它跟过去帧进行比较,然后估计相机的位姿转换和轨迹(比如车轮里程计)。Moravec提出了第一个视觉运动估计流程并与1980年用于美国宇航局火星探测器(NASA Mars rover)。Nister找到了高效的五点算法并构建了第一个实时的VO管道。一般的VO流程包括4步:捕捉capture,匹配matching,估计estimation,优化optimization或者滤波filtering。
capture:抓取并矫正从相机获取的图像;
matching:计算点状或块状对应。能够通过特征点级(feature point-level)的匹配或者直接使用原始像素/次区域(subregion)值来进行块对齐(patches alignment)。光流(Optical flow,OF)和跟踪方法也可以集成在这个步骤中来减少特征提取和匹配的计算量;
estimation:通常从解决PnP问题(perspective from n points problem)来恢复相机位姿转换和3-D点云结构;
optimization or filtering:恢复了局部轨迹的优化过程或滤波方法或者全局轨迹的优化过程和滤波方法。
大部分VO方法在静止的室内场景性能很好。但在室外环境,尤其是动态城市中,就会有很多影响VO精度和可行性的因素。大量的动态物体是最大的挑战。高级物体识别或分割方法能够为理解环境提供语义信息。这只能通过相机或者多传感器融合来进行。但一些距离传感器比如说声呐和雷达(sonar and lidar),需要累积大量数据帧才能进行有效识别,这就限制了它们在动态情景的鲁棒性。Buczko&Willert提出了一种特征自适应缩放方法来进行异常值去除。Engel提出了一种直接稀疏测径法(direct sparse odometry,DSO),能够共同优化所有模型参数的完全似然。这些方法仍然试图解决测量水平的问题。最近,深度信息在目标检测和图像语义分割和空间语义学习(spatial semantics learning)方面取得了很好的效果,这种语义信息能为视觉运动估计提供更多因果因素(causal factors)并协助改善复杂环境中的鲁棒性。Mohanty等提出了deep VO方法,通过训练好的卷积神经网络(convolutional neural network,CNN)来估计任意图像对之间的里程向量。这些举措将帮助更好地认识VO如何使用特征或者像素并为人们更好地理解VO的评估方法。
本文集中在城市自动驾驶车辆的动态场景VO问题。一个鲁棒的VO系统能够反映一个认知过程,就是如何正确理解动态场景并不仅仅从低级像素级匹配而是从高级语义理解来发现真实运动。本文从统计学角度分析了不同语义分割精确性和鲁棒性,深度信息神经网络被用来进行预处理像素的语义。这种语义信息能够用来选择可行的视觉线索并去除匹配步骤的异常点。我们还提出了一个新的VO流程,用来结合基于特征和基于对齐的VO方法。本文的贡献是提出了一个创新的语义辅助概率模型(semantic-aided probabilistic)来进行异常值去除和动态环境中的对齐块选择(alignment patches selection),以及一个结合了基于特征和基于对齐方法的VO处理流程。
文章结构:Related Work : 相关的VO工作;System overview:介绍深度信息网络进行语义分割的步骤并描述了我们的算法模型;Experimental results:在开源数据集Kitti和我们的数据集上评估了三种模型的精确度和鲁棒性;Conclusions:总结了本方案并列出了未来可进行的工作。
Related Work
大量的工作研究都集中在开放具有应用价值的VO系统上。
PTAM(parallel tracking and mapping)是第一个实时的基于特征的VO方法。它有两个平行进程,分别计算运动估计和建图。PTAM对所有关键帧(keyframe)都进行了有效的捆绑调整(bundle adjustment,BA),这使得它只能在小范围环境里使用。
EKF+RANSAC:Civera提出了基于EKF的单点RANSAC(random sample consensus),来减少数据子集的带下,将假设实例化到一个点。
DTAM(dense tracking and mapping):典型直接法,通过全图像与深度图对齐来计算位姿转换。
SVO(semi-direct visual odometry):半直接视觉里程计法,用基于稀疏模型的图像对齐算法来进行运动估计,追踪了一些角点,用角点周围4*4的块来进行直接对齐。
VISO:计算移动单目/双目相机的6自由度运动,并在Kitti数据集上测试。
DSO:将强度驻留、曝光时间、衰减和辐照度放在一个能量函数中,同时在一个联合框架中优化运动估计、集合和光度校准。
很多视觉SLAM系统都包含了视觉里程计。ORB_SLAM2包含一个基于特征的VO进程和一个回环检测,能在大范围环境中实时计算相机轨迹。
大部分成果的VO或者视觉SLAM系统关注于静态环境。在动态环境,移除异常点对于精确的运动估计来说至关重要。选择正确的像素或者关键点(能够包含真实的相机运动),能帮助改善VO在复杂环境中的鲁棒性。基于RANSAC的方法很普遍,常用于去除异常点。给定期望成功率P,那么迭代次数N可以表示为数据点的数量s和离群点/异常点率的函数:

其中离群点率越高,N越大,可能达到几千次。Preemptive RANSAC试图用运动假设来获取N。渐进样本一致性(progressive sample consensus)计算排序和采样对应的相似性来加快收敛过程。使用RANSAC来拒绝异常点是基于一个假设:噪声样本点远比正确的样本点小。它们仅仅试图通过不断迭代来找到一个概率稳定的内点组。在动态城市交通场景,这种假设不总是适用。一个具有有限视场(field-of-view,FOV)静态的前视单目相机可能会受到附件移动车辆的遮挡和干扰。基于RANSAC的方法不能保证选择到真实世界中的静态物体上的像素或者关键点,并会导致在动态复杂场景中运动估计的数据关联困难。最近,...提出了一个归一化再投影误差方法,显示异常值的误差增加和异常值的恒定偏移(?)。但这种方法主要集中在告诉场景上,假设旋转角度小,只进行纵向运动,不考虑所有点的语义属性。
一个动态场景中的鲁棒VO需要拥有识别静态和动态交通物体的能力。在语义层面,场景理解能够通过更高级的视觉线索选择过程来帮助VO。Civera等提出了一个使用单目扩展卡尔曼滤波的语义SLAM方法,并在集合地图里插入3D物体。Anand等训练了一个上下文引导语义标记的图形模型。Yang等提出了一个解决同步车辆距离估计和导航的方法,使用动态物体跟踪来把相机视场分为动态和静态部分。这种方法很难区分与观测者有相同速度的静态物体。Geiger等提出结合语义标签、占用网格、消失点和移动对象轨迹的概率模型,发现交集模型。语义标签提供了给道路布局的标签类的概率。本文的语义标签分为三类,前景,背景和天空,对运动估计贡献很小。Yang提出的Pop-up SLAM模型使用pop-up末端和大范围直接单目SLAM(large-scale direct monocular SLAM,LSD)去预测深度,证明了场景理解能够改善状态估计和稠密建图。
System overview
以下部分介绍语义分割辅助VO方法(semantic segmentation-aided VO,SAVO)。VO系统以单目RGB图像序列
在第k个时间点处的图像是

旋转

3D点表示:

投影函数把2D像素映射到3D点:

d是像素u的逆深度。如果d=1,则像素将投影到三维单位球体表面。
Semantic segmentation
语义分割在自动驾驶中被广泛应用于场景解析和理解。本工作使用了Badrinarayanan等人提出的一种改进的SegNet和预先训练的驾驶模型。 SegNet是一个深度学习编码器网络,具有13个卷积层的VGG16模型42,有12个分割类别,包括天空、建筑物、杆、道路标记、道路、路面、树、标志符号、栅栏、车辆、行人和自行车,这些类别信息为城市道路场景提供了一种语义理解,有助于我们区分对象是可移动的还是不可移动的。 在动态城市交通场景中,寻找静态像素是VO的一个重要因素。运动物体在运动估计过程中会带来太大的不确定性。 这项工作假设每个语义类别对VO有不同的贡献。 贡献与像素类别带来的运动估计误差有关。例如,在动态城市交通场景中,来自建筑物类别的像素可以比来自汽车的像素更可靠地用于运动估计,并且应该作为VO过程中概率更高的候选采样。

在本文中,类别



在一些开放的基准数据集中,提供了帧
Visual odometry
基于特征的方法
这一部分类似于传统的基于特征的方法。 在当前的图像帧
转换

)(图2).帧


帧

代价函数

用最小二乘(least-squares,LS)最小化方法求解了两个连续帧之间的每个变换

基于对齐的方法
该过程使用了半密图像对齐框架。 与传统的直接法相比,有三个主要区别:
1.首先,该方法不使用整个图像像素进行对齐,而只使用具有特定分割标签的部分图像。这些补丁具有语义先验知识,即它们是静止的物体。
2.其次,这些斑块表示了一组属于一个平面表面(planar surface)的物体,这是图像对齐的基本假设。
3.第三,这些候选块或单摄像机像素的深度应该很容易估计,并且可以用于LS最小化过程中剩余块的加权或排序。
在本工作中,选择标记为道路标记、道路和路面的像素进行间接VO估计。这些斑块的三维点被认为是静态的全局坐标系,并假定位于粗糙的道路平面上。属于

代价函数

并将变换

总的代价函数包括两部分:

其中

在

其中
Experimental results
Data Set
用来测试的Kitti odometry data set 包含20张校正的立体图像序列和校准文件,数据来源于一辆在城市街区旅行的汽车。我们选择了前11个序列,它们具有ground truth,并且只使用左摄像机的单目数据。 该方法还在我们的自主驾驶数据集上进行了测试。智能汽车平台由长安雷顿汽车改装而成,配备两台AVT®1394派克F-200c相机,捕捉前视立体图像,一台OxTS惯性IMU和NovatelRTK-GPS,以及VelodyneVLP-车辆的顶部。 我们收集了北京五环路约20公里的真实道路数据,具有不同的交通条件。
Semantic segmentation contribution analysis
选择Kitti测距数据集中的11个序列来评估语义分割的重投影误差。 首先,分割过程计算了所有Kitti测距数据集上每个像素的类别。 然后,在每个序列中,在每两个连续的图像帧之间使用ground truth姿态文件进行计算转换矩阵
在每个特征点上累积重投影误差,并按平面到图像中心的距离进行排序。如图3(A)所示,水平轴表示到图像中心的归一化距离,垂直坐标显示重投影误差的平均值。对于校正图像,这种平均误差随着距离的增加而增加。 一般来说,图像中的边界点总是有更大的误差。 离图像中心更近,误差也更小。 这些误差与相机镜头和成像传感器固有的物理特性有关,即使在图像校正后也很难消除。
图4(B)显示了归一化重投影误差和关键点计数约12个语义分割类别,如天空、建筑物、极点、道路标记、道路、路面、树木、标志符号、栅栏、车辆、行人和自行车。 关键点的计数越高,这一类别的图像块比其他类别具有更多的像素和更强的纹理。 重投影误差表示用于运动估计的每个patch的不确定性。 在图中,Building和Tree的类别具有更多的关键点和更小的误差。 在Kitti数据集中,建筑物和树木通常出现在图像的中间部分。它们还占据了更多的不同纹理的区域。 这些像素是静止的物体,它们没有停留在一个平面上。 因此,它们可以适用于基于特征的运动估计。 移动物体的类别,车辆,行人和自行车,也显示出较低的重新投影误差。原因是Kitti数据集中的大多数车辆是停泊的车,移动行人和自行车在大多数序列中没有出现。 自行车的速度比行人高,带来了更高的误差。 在动态的城市交通场景中,丢弃汽车、行人和自行车的像素将减少动态干扰,避免移动对象跟踪和运动判断的困难。 虽然道路像素是静态的,但它们很难提取特征点,并导致更高的误差。 相反,道路标记像素的误差较低,因为它们的角点比道路多,并且可以很容易地跟踪和匹配。
VO performance analysis
这项工作在两个数据集上进行了测试,并与VISO、DSO、VISO和orb_slam2进行了比较。 计算了FAST角点和SURF丰富的描述符。 比率检查阈值为0.7。 分段类别的贡献概率是按照“系统概述”一节给出的计算的,天空、车辆、行人和自行车的概率是调到零。 仅对单目VO性能测试,ORB_SLAM2的环路闭合线程被关闭,其特征号被设置为3000。 ORB_SLAM2使用默认词汇表。 将DSO设置为具有规则视场透镜的针孔模型,忽略了其伽马和Vignette配置。
Kitti odometry data set
所提出的方法对平均平移误差和旋转误差的结果如表1和表2所示。 ORB_SLAM2在大多数没有移动汽车或其他交通参与者的序列中显示出最好的旋转精度。 在序列01中,有几辆移动的汽车在相邻的车道上行驶。 所提出的方法比其他算法具有更好的鲁棒性和精度。图5显示了Kitti序列00中相对于行程距离和速度的旋转和平移误差。 所提出的方法在旋转和平移方面的误差最低。 关于评估方法的更多细节可以在VISO中找到。 29,43图6显示了一些最终轨迹。
Beijing Wuhuan data set.
...
Conclusions
本文提出了一种新的语义分割辅助VO流水线。 该方法利用深度学习网络对12个语义类别的输入图像进行分割。 然后,对每个像素计算了一个关于类别和重投影误差的概率模型,并用于基于特征的VO管道的像素候选点的称重和采样。语义分割结果也有助于选择基于对齐的VO管道的道路平面。 这两条管道分别带来了重投影的成本函数以及强度误差,并将其组合成运动估计过程中的联合优化。 这有助于VO减少运动物体的影响,并充分利用静止像素的几何形状和物理特征。 在动态城市交通场景数据集上的实验结果表明,与三种最先进的VO解决方案相比,新方法提供了更高的精度和鲁棒性。 为了提高管道的实时性能,并研究VO冲击分割过程将如何在未来有用。
Notes:这篇文章的思路很好理解,没什么生词,不足之处在于表达有点中式化。具体的技术细节(结合XXX法XXX法等SLAM经典方法)我并不了解,之后的努力方向便是学习文中出现的SLAM方法,争取早日完全理解并实现这篇文章说的内容。知乎写文章确实很方便,唯一的不便就是不能复制粘贴先前的公式。希望能通过做记录的方法熟悉知乎公式的使用和论文。
更多推荐
所有评论(0)