[2019]Semantic Monocular Visual Localization and Mapping Based on Deep Learning Dynamic environment
[2019]Semantic Monocular Visual Localization and Mapping Based on Deep Learning in Dynamic environment1.作者Linhui Xiao, Jinge Wang, Xiaosong Qiu, Zheng Rong, Xudong Zou2.时间20193.整体结构运动目标检测线程使用SSD目标检测网络
[2019]Semantic Monocular Visual Localization and Mapping Based on Deep Learning in Dynamic environment
1.作者
Linhui Xiao, Jinge Wang, Xiaosong Qiu, Zheng Rong, Xudong Zou
2.时间
2019
3.整体结构


- 运动目标检测线程使用SSD目标检测网络去计算目标的分类和位置。
- 通过语义校正线程将目标分为静止的或者运动的。
- 追踪线程可以提供动态目标的位置。
4.整体思想
1.漏检补偿算法
目标检测可以用精度(P)和查全率(recall)来衡量,作者认为对于动态SLAM系统查全率更加重要:

在SSD中添加了一个L1平滑损失项:

这里给出了一个假设:在短时间内,运动目标的速度趋近于一个常量,也就是说加速度为0。
其中,运动目标在像素平面上的速度为:v,加速度的阈值为a_max,则满足如下关系:

运动速度v用运动目标几帧之间的运动位移来表示,在实际中,在视频序列中相邻两帧的时间差异非常小,动态目标的运动位移变换不明显。
通过如下公式预测第K帧bounding box的位置:
- bounding box:

- 当前K帧中心点的位置=上一帧中心点的位置+前几帧该物体位移的平均值

- 目标存在的可能区域如下:由a_max确定。

- 目标存在的可能区域的中心点位置=上一帧物体位置+前几帧该物体位移的平局值±最大加速度阈值

算法1:遍历当前帧中上一帧出现过的物体的bounding box的list,预测这些物体在当前帧中可能存在的区域A,然后遍历当前帧所有实际检测到的bounding box判断是否在A中,如果在A中,计算中心位移,否则预测D,然后将D的结果添加到当前帧中的D_K中去,更新D_k。
- 这里最开始判断当前帧实际检测到的bounding box是否落在上一帧通过预测后得到的区域中,如果这些框没有落在我预测的区域中,那么就根据上一帧的中心点直接预测,换句话说,先检测实际的,不行就自己预测。

漏检补偿算法的效果,对追踪目标非常重要。

2.基于先验信息判断动态目标
根据人的先验信息,生活中一般物体运动的分数:

这是一个最大后验概率问题,当前一帧的bounding box被检测为运动的,那么当前帧也会被重复检测为运动的(这没太看懂,好像初始化的时候用的)
根据贝叶斯公式得到:

然后第K帧由前K-L帧决定,由此扩展条件概率公式:

3.目标检测和追踪

并不是所有特点都可用于追踪,但也并不是所有运动目标上的特征点不能用于追踪,这里有两种特殊情况:
- 是潜在运动目标,但是没有动,比如停放的车辆。
- 运动目标占据了视野的大半部分。
首先,将动态目标区域的mask设置为1,静止区域设置为0:

计算静止点的平局位移S_L(u,v):

接着计算潜在运动区域的位移,判断是否超过S_L(u,v)

算法2:选择跟踪算法,遍历当前帧所有的特征点,计算静止点的平均位移,对于潜在运动的区域通过和其静止点的平均位移进行比较,判断是否为动态的点。

对于静止的点,使用PnP求解位姿Pose,然后使用BA最小化重投影误差:

5.结果
1.SSD的校正

在TUM RGB-D benchmark的walking_rpy的序列中,和原SSD进行召回率对比:
| 方法 | 召回率 | 漏检率 |
|---|---|---|
| 原方法 | 82.3% | 17.3% |
| 改进后 | 99.8% | 0.2% |
实验表明,漏检补偿算法能够提高目标检测的召回率。
2.与原ORB_SLAM2对比
- 图7表示,本文的方法和原ORB_SLAM2提取特征点差异性

- 图8表示,两种方法建图的效果,ORB_slam2在经过一定的移动后,就停止了,尺度发生严重的漂移,红色的地图点不在更新,如图8左。

- 图9表示,场景中静止点和运动点数量的比例,其中每帧大约3090个特征点,动态的点大约占74.11%,比静止的特征点多47.93%。

3.初始化测试
当相机固定,在初始化时测试动态目标的影响,可以看出ORB_SLAM2不能在动态环境下分辨前景目标和背景目标。反而,Dynamic-slam 能够检测动态目标的位置并且避免错误的初始化。

接下来,相机轻微的摆动,而且人与相机的位置不断改变,重复20次,结果显示,ORB_SLAM2能够初始化15次,成果比例为75%,而Dynamic-SLAM能够初始化19次,成功率为95%,这个方法提高了在动态环境下的初始化,因为动态目标被先验知识和训练网络检测到了。
4.在室内Tum数据集上测试
- 效果

- 精度的对比

- 时间的对比




5.在室外数据集上测试



6.真实数据采集
- 平台


- 实验

6.结论
这是一篇利用深度学习去提高SLAM在动态环境下性能的工作,主要采用的单目视觉,有以下贡献:
- 在低召回率的目标检测网络下,提出了漏检补偿算法(基于速度不变性)。
- 提出了一种简单有效的选择性追踪算法,能够提高系统的精度和鲁棒性。
- 结合先验知识和深度学习去检测动态目标,实现语义级的检测。
更多推荐



所有评论(0)