DeFlowSLAM - 基于自监督场景运动分解的动态稠密SLAM(DeFlowSLAM: Self-Supervised Scene Motion Decomposition for Dynamic Dense SLAM)

1. 摘要

我们提出了一种新颖的光流表示,它将光流分解为由相机运动引起的静态光流场和由场景中物体运动引起的另一个动态光流场。基于这种表示,我们提出了一种动态 SLAM,称为 DeFlowSLAM,它利用图像中的静态和动态像素来求解相机位姿,而不是像其他动态 SLAM 系统那样仅仅使用静态背景像素。我们提出了一个动态更新模块,以自监督的方式训练我们的 DeFlowSLAM,其中稠密的集束调整层接收估计的静态光流场和由动态掩码控制的权重,并输出优化的静态光流场的残差、相机位姿, 和逆深度。静态和动态光流场是通过将当前图像映射(warp)到相邻图像来估计的,并且可以通过将两个场相加来获得最终的光流场。大量实验表明,DeFlowSLAM 在静态和动态场景中表现出与最先进的 DROID-SLAM 相当的性能,同时在高动态环境中的性能明显优于 DROID-SLAM,因此它可以很好地推广到静态和动态场景。代码和数据可在项目网页上找到:https://zju3dv.github.io/deflowslam/。(注:目前尚未上传代码)

https://i-blog.csdnimg.cn/blog_migrate/05daaaaf9934cdd38024e6a9c5244b13.png

相比于DROID-SLAM对光流不加区分,DeFlowSLAM同时估计静态光流和动态光流,以及动态光流所对应的二值聚合掩码,0和1分别代表动态和静态光流。在估计相机位姿时,仅使用静态光流。下图展示了一个例子,如果场景中有动态物体,直接使用静态光流匹配像素会导致错误的结果,因而导致根据光度一致性构建的误差项无效。使用网络预测的聚合掩码,我们可以在几何光度损失中过滤掉这些无效像素(例如下图中的粉红色掩码)。

https://i-blog.csdnimg.cn/blog_migrate/9fd0a0e22bb31890f06dfa3f6362bf03.png

3.1. 整体系统框图

基于以上的光流表征,DeFlowSLAM 以图像序列为输入,提取特征构建4D图像关联体积(correlation volume),将其与初始静态光流、完整光流(静态光流与动态光流之和)、动态掩码一起输入入动态更新模块,迭代优化位姿残差、逆深度、静态光流和动态光流,最后输出估计。

https://i-blog.csdnimg.cn/blog_migrate/b8cc1fa2bd865850f985dd433e9a5eb8.png

3.2. 动态更新模块

与 DROID-SLAM中直接作用于光流修正项的更新模块不同,我们的动态更新模块分别作用于分解后的静态光流和动态光流。 静态光流的处理方式与 DROID-SLAM 类似;而对于动态光流,在每次迭代时通过动态光流的卷积层直接输出获得,同时,我们将其与静态光流相加以获得完整的光流,并输入到光流特征编码器中,用于下一次迭代优化。每次迭代都会更新隐藏状态,并额外产生一个位姿增量、深度增量、动态掩码增量和动态光流。位姿更新需要在SE3流形上操作,而深度、静态光流和动态掩码直接相加即可。通过多次迭代以上变量将逐步收敛至最佳值,以表征正确的三维重建结果。在训练初始化阶段,动态掩码和动态光流被初始化为0。

https://i-blog.csdnimg.cn/blog_migrate/88adbe90913abc627035c6e8043e050a.png

疑问:动态光流那一个分支好像对DBA没有什么贡献,加了这个分支为何会提升效果。自监督和半自监督的区别是什么。

DeFlowSLAM-基于自监督场景运动分解的动态稠密SLAM-CSDN博客

Idea:可否直接预测动态物体的运动,把刚性物体的运动作为一项约束加入进去?

Logo

聚焦RDK与具身智能,汇集机器人开发教程、开源案例和技术交流

更多推荐