经典文献阅读之--Multi-modal Semantic SLAM(多模态语义SLAM)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
0. 简介
在复杂动态环境下如何去建立一个稳定的SLAM地图是至关重要的。但是现在当前的SLAM系统主要是面向静态场景。目前相较于点云的分类与分割而言。视觉的识别与分割会更加容易。这就可以根据语义信息提高对环境的理解。文章《Multi-modal Semantic SLAM for Complex Dynamic Environments》提出了一个鲁棒的多模态语义框架去解决slam在复杂和动态环境下的问题。同时该论文也在Github中开源了数据集和代码。
1. 文章贡献
文中提到为了减小深度学习分割结果不完整所带来的差异性文中建议学习更强大的对象特征并将两次查看和思考的机制部署到主干网络确保实例分割模型获得更好的识别结果。此外将纯几何聚类和视觉语义信息相结合以减少由于小尺度对象、遮挡和运动模糊导致的分割错误的影响。为此文中提出
- 设计一个强大且快速的多模态语义 SLAM 框架旨在解决复杂和动态环境中的 SLAM 问题。具体来说我们将仅几何聚类和视觉语义信息相结合以减少由于小尺度对象、遮挡和运动模糊导致的分割误差的影响。
- 学习更强大的对象特征表示并将三思机制部署到主干网络从而为我们的基线实例分割模型带来更好的识别结果。
2. 具体算法
从上图来看思路我们还是非常清晰方便理解的。下图为作者提出的多模态语义SLAM流程图它主要由四个模块组成即实例分割模块、多模态融合模块、定位模块和全局优化及建图模块。
2.1 实例分割模块
从第一幅图中我们可以大致理解整个实例分割模块的流程。即首先一张图片的实例分割结果可以用下面公式表示
{
C
i
,
M
i
}
i
=
1
n
\{C_i,M_i\}_{i=1}^n
{Ci,Mi}i=1n
其中
C
C
C代表实例分割的种类然后
M
M
M代表了Mask掩码信息n对应了当前图像中存在的物体数量。然后将整个图像中的空间分成
N
×
N
N × N
N×N 个网格单元。如果一个对象的中心落入一个网格单元该网格单元负责分别预测类别分支
B
c
B_c
Bc和掩码分支
P
m
P_m
Pm中对象的语义类别
C
i
j
C_{ij}
Cij和语义掩码
M
i
j
M_{ij}
Mij
下面式子中
λ
λ
λ 是类的数量。
φ
φ
φ 是网格单元的总数。通过这样的一个方式可以有效地避免实例分割漏分误分的问题。
文中提到为了降低实例分割的计算成本作者使用精度较低的轻量级版本SOLOv2来实现实时实例分割。同时为了提高分割精度作者将主干架构从最初的特征金字塔网络(FPN)修改为递归特征金字塔网络(RFP)。
从理论上讲RFP通过将来自FPN的额外反馈整合到自下而上的主干层中并灌输了两次或多次查看的思想。这递归地增强了现有的FPN并提供了越来越强的特征表示。
此外作者使用SAC (Switchable Atrous Convolution)代替主干架构中的卷积层。 SAC 作为软开关功能运行用于收集具有不同开口率的卷积计算的输出。因此能够从 SAC 中学习最优系数并且可以自适应地选择感受野的大小。这使得 SOLOv2 能够有效地提取重要的空间信息。
2.2 多模态融合模块
为了解决运动产生模糊导致的分割不准的情况作者首先进行形态学膨胀处理用于逐渐扩展动态对象的区域边界。形态学膨胀结果标记了动态对象周围的模糊边界。这一步虽然会影响到准确性但是也避免了重影带来的误检情况。
同时为了避免模糊像素会导致分割错误。因此作者结合点云聚类结果和分割结果来更好地细化动态对象。这一步通过欧几里得空间的连通性分析补偿了视觉膨胀造成的损失。结合点云聚类结果和分割结果来更好地细化动态对象。
同时提到为了提高分割网络的工作效率作者首先对激光雷达采集到的三维点云进行降维处理以减少数据规模并将其作为点云聚类的输入。然后将实例分割结果投影到点云坐标上标记每个点当大多数点(90%)是动态标记点时点云聚类将被视为动态聚类。当静态点靠近动态点聚类时静态点将被重新标记为动态标签。并且当附近没有动态点云时动态点将恢复为静态点。
2.3 定位与位姿估计
在经过多模态融合后算法将点云分为动态点云和静态点云其中静态点云被用于定位和建图模块。
对于每个静态点
p
k
∈
P
S
p_k ∈ P_S
pk∈PS 可以在欧几里得空间中通过半径搜索来搜索其附近的静态点集
S
k
S_k
Sk。让
∣
S
∣
|S|
∣S∣是集合
S
S
S的基数因此局部平滑度定义为
并根据附近的静态点集
S
k
S_k
Sk来综合计算出平滑度
σ
k
σ_k
σk来代表其中边缘特征的
σ
k
σ_k
σk更大平面特征的
σ
k
σ_k
σk更小。这也让我们不需要使用SIFT这类算子即可完成静态特征点选取。
然后就是通过最小二乘完成机器人位姿的估算通过最小化点到边缘和点到平面的距离来计算残差其中
p
ξ
p_\xi
pξ边缘特征点而
p
^
ξ
\hat{p}_\xi
p^ξ则代表了局部坐标系下的特征点通过
p
^
ξ
=
T
∗
p
ξ
\hat{p}_\xi=T*p_\xi
p^ξ=T∗pξ进行转化。
T
T
T表示为当前位姿而
p
ξ
1
p^1_\xi
pξ1与
p
ξ
2
p^2_\xi
pξ2代表了边缘特征图中最近的两个边缘特征。这样就可以定义出点到边缘的残差为
同理平面特征点也是类似的解法只是局部平面图中会搜索最近的三个点组成平面其中变量的定义和上面类似。其实个人感觉就是LOAM的变种思想基本还是一致的。