当前位置: 首页 > news >正文

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

1. 摘要

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

代码和数据可在项目网页上找到:(注:目前尚未上传代码)

DeFlowSLAM: Self-Supervised Scene Motion Decomposition for Dynamic Dense SLAM

2. 主要贡献

  • 我们提出了一种新颖的双光流场景运动表示,将光流分解为静态光流场和动态光流场,从而具备了处理动态物体的能力。
  • 我们构建了一个动态密集 SLAM,DeFlowSLAM,它在动态场景中优于最先进的方法。
  • 我们提出了一种自监督的训练方法,而不是 DROID-SLAM 中的强监督学习。

3. 算法结构

注:本工作整体结构基于 DROID-SLAM,因此此处省略DROID-SLAM相关的算法结构解析,主要着重于介绍新增的算法模块。

将光流分解为静态背景的光流和动态物理的光流两部分

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

3.1. 整体系统框图

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

3.2. 动态更新模块

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

对于ConvGRU模块,相比于DROID-SLAM输出静态光流修正项和对应的关联置度,DeFlowSLAM又输出了两个新的项,分别为更新后的动态光流和动态掩码的增量。其他部分(包括DBA层)与DROID-SLAM基本一样,不再赘述。

3.3. 训练

与DROID-SLAM是supervised learning不同,DeFlowSLAM可以采用self-supervised learning或者semi-supervised learning两种模式来训练网络,具体区别见下。

3.3.1. 几何光度误差项

为了实现自监督学习,DeFlowSLAM采用了Digging into self-supervised monocular depth estimation论文中的方法。基本方法为:给定预测的位姿和深度值,我们可以找到图像 i 中的像素在图像j中的对应点坐标,再利用双线性采样对图像 j 进行采样,得到一个采样后的图像。然后再用原始图像与其一起构建几何光度误差项。

我们引入 L1 损失和 SSIM损失来构造我们的几何光度损失,并设置 α = 0.85。

在此基础上引入上文中提到的动态掩码,因此最终构建的误差项为:

其中 N' 表示动态掩码值为 1(即静态光流)的像素个数。

3.3.2. 光流光度误差项

与几何光度误差项类似,利用完整的光流可以将图像j映射到图像i,并以此构建误差项:

3.3.3. 动态掩码误差项

这里分为两种情况,如果数据集提供了GT的动态掩码,则可以采用简单的交叉熵来构建误差:

如果数据集不提供GT的动态掩码,则可以通过自监督的方式获得。由于我们可以通过两种方式(基于位姿和深度的投影,基于光流的映射)找到图像i的像素与图像 j 的像素之间的对应关系,

因此可以使用两者之间的差异来构建人工的动态掩码:

其中 μ 设置为 0.5。用此掩码来替代GT,因而可以构建损失项为:

3.4. 最终的误差项

根据以上公式,当使用self-supervised learning时,构建的完整误差项如下:

其中。当使用semi-supervised learning时,将Lart_mask改为Lgt_mask即可。

4. 主要结果

DeFlowSLAM 可以泛化到新的数据集。我们展示了来自 ETH3D、TUM RGB-D、ScanNet 和 Virtual KITTI2 的结果。

我们将 DeFlowSLAM 与 DROID-SLAM 的置信度进行可视化。我们的方法可以利用动态物体对应的像素来帮助求解相机位姿。颜色越深意味着置信度的权重越大。DeFlowSLAM 还利用有关路边停放车辆的更多信息。

http://www.jsqmd.com/news/772376/

相关文章:

  • Linux时间编程避坑指南:localtime线程安全问题与localtime_r的正确使用姿势
  • Unity点云数据处理完整实战指南:Pcx插件高效工作流解析
  • 从CPU到密码学:聊聊逻辑门(AND/OR/XOR)在真实项目里的那些“神操作”
  • 送你一份价值10W的非专业的面试技巧
  • ASUS Tinker Edge R开发板:边缘AI计算的硬件解析与实践
  • Windows Batch (.bat) 脚本语法详解:从入门到实战
  • 软件生命周期基本过程支持过程组织过程
  • BepInEx终极指南:5分钟学会安装和使用开源游戏插件框架
  • ConvNeXt 系列改进:无缝兼容下游:ConvNeXt + FPN 构建特征金字塔,直接用于实例分割
  • 探秘iPaaS:企业数字化转型的关键利器
  • Open Event Attendee Android数据库设计:Room持久化与本地缓存策略
  • snarkjs入门指南:从零开始构建你的第一个零知识证明电路
  • 2026年深圳办公室装修公司专业排名——八匹马装饰领跑行业 - GrowthUME
  • 缓存经典问题:缓存穿透和缓存雪崩
  • d2s-editor:暗黑破坏神2存档修改完整指南与终极教程
  • 告别卡顿!深度解析Snapd服务:为什么它会悄悄吃光你的CPU和磁盘
  • 月活3.45亿却零收入,豆包收费是无奈之举还是破局之路?
  • 2026数据科学技术趋势全解析:新兴领域与高效学习路径指南
  • 别再对PyTorch标量tensor用for循环了!一个.item()方法就能搞定
  • 如何在手机上高效完成Android内核刷入:终极完整指南
  • 全域数学公理体系:基于π本源的九层套娃宇宙演化模型
  • 为 Claude Code 配置 Taotoken 作为后端大模型服务
  • 负载均衡有哪些?
  • SAM2VideoX:基于目标跟踪的结构保持视频生成技术
  • Unlock-Music:打破音乐平台枷锁,让你的音乐真正属于你
  • 终极AIdea测试驱动开发指南:从零构建高质量Flutter应用
  • python系列【仅供参考】:JSON和JSON5的区别
  • 从零开始:全志F1C200S Melis2.0 SDK环境搭建与第一个Hello World应用实战
  • 2026年匠心独运:探访本地木把手加工厂的秘密 - GrowthUME
  • LiquidBounce战斗模块深度解析:从KillAura到CrystalAura