[论文笔记]Semantic Monocular SLAM for Highly Dynamic …
Semantic Monocular SLAM for Highly Dynamic Environments
该论文发表于International Conference on Intelligent Robots and Systems (IROS 2018)
来自于宝马和慕尼黑工业大学
摘要
结合了非直接法和直接法
为应对动态环境,提出了概率模型来提取相对静态物体来进行定位与建图。
1、引言
相比于双目和RGBD,单目具有廉价、易标定、没有深度范围限制等优点。
在单目SLMA中分为直接法与基于特征点的非直接法:非直接法对几何误差较为鲁邦,也就是特征点位置的偏移误差,该部分误差来源于相机内参,卷帘快门等。直接法对光度噪声较为鲁邦,该部分来源于运动模糊。
所有方法都是基于静态环境的,为处理动态环境,可以在优化中使用M-estimators (Turkey、Huber)或基于RANSAC。这些方法都要求大多数点是静态的。
现在,基于CNN的物品识别、分割可以帮助检测出可能动态物体,便不再追踪他们。本文中考虑所有帧的语义信息来估计每个地图点的语义。
3、概率语义SLAM
基于ORB-SLAM框架:
对每一帧,提取ORB特征并匹配,匀速运动模型初始化位姿。结合特征点法和直接法优化位姿。三角化计算特征深度。
A、位姿估计与建图
特征点(ORB)可以提高快读可靠的匹配、用于回环检测和重定位等。
直接法中不需要特征提取与匹配,但要求帧率较高或运动较慢。对局部光照变化较为敏感。但可以用在低特征环境,或较大运动模糊时。
所以将两者结合起来,尽量使用特征点,当没有足够特征时使用直接法。
不同于一般特征点法中的3D点描述,本文使用光度特征和逆深度信息。这样对两者可以使用同一个模型,方便联合优化。
B、Probabilistic outlier rejection
对每个地图点,估计一个静态率 \phi ,并在估计静态率时考虑到点的语义信息。
当观测到一个地图点后,估计其深度 d_i 与方差 \tau_i^2 ,匹配正确率 \alpha_i ,语义类概率 CNN(c_K|I_i) 。
匹配正确率:
特征点法: \alpha ^ { \text { descriptive } } : = 1 - \min \left( 1 , \frac { d \left( f _ { i } , f _ { j } \right) } { d _ { \max } } \right)
直接法: \alpha ^ { \text {direct} } : = 1 - \min \left( 1 , \frac { \Delta \Phi \left( x _ { i } , x _ { j } \right) } { \Delta \Phi _ { \max } } \right)
深度测量似然:
p \left( d _ { i } | d , \phi \right) : = \alpha _ { i } \left[ \phi \mathcal { N } \left( d _ { i } | d , \tau _ { i } ^ { 2 } \right) + \overline { \phi } \mathcal { U } \left( d _ { i } \right) \right] + \overline { \alpha } _ { i } \mathcal { U } \left( d _ { i } \right)\\
这里的 d 是均值, d_i 是某次观测。其含义是,如果该点是静态的,且匹配正确, \alpha_i 和 \phi 都接近于1,则分布为正态分布。否则为均匀分布,观测不为均值估计提供任何有用信息。所以静态率大的点深度收敛较快,静态率小的点无法计算出方差较小的深度,大概就剔除了。
类似的,对于语义: p \left( c _ { k } | I _ { i } \right) : = \alpha _ { i } C N N \left( c _ { k } | I _ { i } \right) + \overline { \alpha } _ { i } \mathcal { U } \left( c _ { k } \right)\\
定义静态率与语义的关系:
p ( \phi | c ) = \prod _ { k = 1 } ^ { K } \left( \frac { 1 } { B \left( A _ { k } , B _ { k } \right) } \phi ^ { A _ { k } - 1 } ( 1 - \phi ) ^ { B _ { k } - 1 } \right) ^ { c _ { k } }\\
其中 c 为语义类的独热编码, A_k 、 B_k 反应了某一语义静态或是动态的可能性。这是一个Beta分布,可以用来表示各种情况的先验分布。马同学:如何通俗理解 beta 分布?
一个地图点对应的几个关键量的关系:
现在后验:(=似然×先验)
\begin{array} { r } { p ( d , \phi | D , S ) = \mathcal { N } ( d | \mu , \sigma ^ { 2 } ) \operatorname { Beta } \left( \phi , a _ { o b s } , b _ { o b s } \right) } { \operatorname { Beta } \left( \phi , a _ { s e m } , b _ { s e m } \right) } \end{array}\\
第一项是逆深度的正态分布,第二项是静态率对深度观测量的Beta分布,第三项是静态率对语义的Beta分布。
其中: a _ { s e m } = \sum _ { k = 1 } ^ { K } A _ { k } p \left( c _ { k } | S \right) \\ b _ { s e m } = \sum _ { k = 1 } ^ { K } B _ { k } p \left( c _ { k } | S \right)
最后静态率可以表示为:
\phi = \frac { a _ { o b s } + a _ { s e m } } { a _ { o b s } + a _ { s e m } + b _ { o b s } + b _ { s e m } }\\